批处理文件/ powershell:下载和静默安装脚本

时间:2014-08-01 10:51:08

标签: batch-file powershell download installation

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

2 个答案:

答案 0 :(得分:4)

下载安装程序

这很容易。在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文件。

希望这有帮助!

答案 1 :(得分:0)

另一种选择是使用Chocolatey,但这取决于所需的应用程序是否已经打包(如果没有许可或重新分配限制,您也可以打包自己的应用程序)。