我正在尝试使用PowerShell静默脚本安装一个客户端软件。下面是我创建的脚本,它不起作用并抛出如下错误:
无法验证参数' ArgumentList'的参数。参数为null,为空,或者参数集合的元素包含空值。提供不包含任何空值的集合,然后再次尝试该命令
以下行是否正确或此处有任何错误我在这里遇到问题。
$Args = @("/S", "/L1033", -INSTALL_TYPE=PRESERVE_VERSION, START_MENU=AStartMenuFolder\Software\production\)
完整脚本:
$INSTALLDIR = "C:\Software\Software.exe"
$Args = @("/S", "/L1033", -INSTALL_TYPE=PRESERVE_VERSION, START_MENU=AStartMenuFolder\Software\production\)
$logfile = "D:\BACKUP\Install_Logfile.txt"
$ErrorActionPreference = 'Stop'
try {
$exitcode = (Start-Process $Installer -ArgumentList $Args -NoNewWindow -Wait -Passthru).ExitCode
if ($exitcode -eq 0) {
[System.Windows.MessageBox]::Show('Installation Completed Successfully')
} else {
[System.Windows.MessageBox]::Show('Installation Failled')
}
} catch {
"$_" | Out-File $logfile -Append
{[System.Windows.MessageBox]::Show('Installation Failled')}
}
修改
$Installer = "C:\OTE\OTE.exe"
$params = @("/S", "/L1033", "-INSTALL_TYPE=PRESERVE_VERSION", "-START_MENU=AStartMenuFolder\OTE\production\")
$logfile = "C:\Install_Logfile.txt"
$ErrorActionPreference = 'Stop'
& $Installer @params
if ($LastExitCode -eq 0) {
[Windows.MessageBox]::Show('Installation Completed Successfully')
} else {
"$_" | out-file $logfile -append
[Windows.MessageBox]::Show('Installation Failled')
}
在上面的脚本中,我收到如下错误,
无法验证参数' ArgumentList'的参数。参数为null,为空,或者参数集合的元素包含空值。提供不包含任何空值的集合,然后再次尝试该命令。
答案 0 :(得分:2)
您可能需要在代码中修复以下几项内容:
$params
是automatic variable。不要试图覆盖它。使用其他变量名称,例如Start-Process
。正如其他人已经提到的那样,在定义数组时将参数放在引号中。try
,否则您可以更轻松地使用call operator和splatting。catch
/ $LastExitCode
毫无意义。$installer = 'C:\Software\Software.exe'
$params = '/S', '/L1033', '-INSTALL_TYPE=PRESERVE_VERSION',
'START_MENU=AStartMenuFolder\Software\production'
& $Installer @params
if ($LastExitCode -eq 0) {
[Windows.MessageBox]::Show('Installation Completed Successfully')
} else {
[Windows.MessageBox]::Show('Installation Failled')
}
中记录外部程序的退出代码。{{1}}
答案 1 :(得分:0)
创建数组时,您的项目必须在引号内:
$Args=@("/S", "/L1033", "-INSTALL_TYPE=PRESERVE_VERSION", "START_MENU=AStartMenuFolder\Software\production\")