batch-file - 批处理文件/powershell : downloading and silent installing script

标签 batch-file powershell download installation

我正在尝试编写一个脚本,理想情况下,它会为不同的程序下载 .exe/.msi 文件,然后静默运行它们。这些安装通常需要输入,例如单击下一步或选中单选按钮。如果我知道我想要运行什么安装设置,我怎样才能让这些安装以我想要的方式运行它们,但是是静默的?使用批处理编程或使用 Powershell 编码会更简单吗? (我是两者的初学者,所以没有偏好。建议将不胜感激)。理想情况下,脚本会被打包到它自己的 .exe 文件中,以便在任何 Windows 计算机上运行。

最佳答案

下载安装程序

这是简单的部分。在 PowerShell 3 或更新版本中,您可以通过 Invoke-WebRequest 下载:

Invoke-WebRequest 'http://example.com/installer.exe' -OutFile 'installer.exe'

在早期版本中,您可以创建一个 WebClient 对象并使用其 DownloadFile 方法:

$Client = New-Object System.Net.WebClient
$Client.DownloadFile('http://example.com/installer.exe', 'installer.exe')

如果您有一个文本文件列出了您需要下载的所有安装程序,每行一个 URL,您可以像这样下载它们:

Get-Content 'installers.txt' | % { Invoke-WebRequest $_ -OutFile ($_ -replace '^.*?([^/]+$)', '$1') }

运行安装程序

这是困难的(呃)部分。自动化 UI 通常很困惑,而 PowerShell 不会竭尽全力支持它。它可以使用 .NET Framework 来完成,但 PowerShell 确实更适合直接操作数据。

不过,如果您必须进行 UI 自动化,我建议您使用 AutoIt 之类的替代方法. AutoIt 是一种 VBScript、PowerShell 和其他一些语言的混搭,可以轻松执行单击按钮和自动将文本输入文本框等操作。它通常用于自动化 GUI 安装。

或者,考虑在部署前将 EXE 安装程序重新打包为 MSI。 MSI 用于静默安装。它们的属性值可以是独立的(或存储在 MST 文件中),这样用户就不必在运行时输入它们,因此不需要自动化它们的 UI。 Smart Package Community Edition (以前称为 WinInstall LE)是免费软件,可以扫描安装程序创建的文件和注册表项,并为您将它们打包到 MSI 文件中。

希望这对您有所帮助!

关于batch-file - 批处理文件/powershell : downloading and silent installing script,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25078631/

相关文章:

java - 通过批处理脚本访问属性文件

linux - Powershell 从 Linux 客户端连接到 Windows 远程

batch-file - 检查进程是否正在运行?

batch-file - 遍历子目录批处理文件中的文件

powershell - 此 XML 管道中的 null 项是什么?

python - 我正在尝试在 powershell 中使用 python

ios - iPad 应用程序可检测并下载数据更新以供离线使用

python - 使用Chrome驱动程序通过python和selenium在指定位置下载文件

c# - 无法访问文件 - WebClient.DownloadFile

windows - 用于监视某个程序的 CPU 使用率并对其使用react的批处理脚本