【发布时间】:2019-04-10 13:12:04
【问题描述】:
我有一个脚本,它将带有一些参数的 .exe 远程安装到运行良好的服务器列表中。当我尝试做几乎完全相同的事情但运行安装到 C:\Program Files (x86)\ 的 uninstall.exe 时,它将不起作用。
当我在本地服务器上运行脚本时,它会启动卸载。当我尝试使用 powershell invoke-command 运行完全相同的脚本或命令时,它将无法正常工作。
$serverlist = Get-Content -Path C:\NagiosInstall\test.txt
ForEach ($server in $serverlist) {
New-Item -Path "\\$server\C$\" -Name "NagiosInstall" -Force -ItemType "directory"
Copy C:\NagiosInstall\ncpa-2.1.6.exe \\$server\C$\NagiosInstall\ncpa-2.1.6.exe
Copy C:\NagiosInstall\install.bat \\$server\C$\NagiosInstall\install.bat
invoke-command -ComputerName $server -ScriptBlock {C:\NagiosInstall\install.bat}
Start-Sleep -s 15
invoke-Command -ComputerName $server -ScriptBlock {Remove-Item -LiteralPath "C:\NagiosInstall" -Force -Recurse}
}
安装 .bat 只是一个简单的命令,用于静默安装 ncpa-2.1.6.exe。
以上是我的安装脚本,这部分一切正常。
invoke-command -ComputerName $server -ScriptBlock {Start-Process -FilePath "C:\Program Files (x86)\Nagios\NCPA\uninstall.exe" -ArgumentList "/S"}
运行上述命令,没有任何反应。没有错误,什么都没有。
& "C:\Program Files (x86)\Nagios\NCPA\uninstall.exe" -ArgumentList "/S"
但是在以管理员身份在服务器上本地运行的 powershell 中运行上述命令,它工作得很好。
我也尝试过相同的方法来创建、复制和运行批处理文件,与上面的“安装”代码非常相似。同样的事情......没有任何反应,但如果你在服务器上本地运行批处理,它工作得很好。如果有人感兴趣,我可以发布此代码。
我猜它与 invoke-command 或它位于 C:\Program Files (x86) 中的事实有关,这可能会使语法不同,但我尝试了很多除了创建帐户并在此处发布之外,我没有其他想法。
【问题讨论】:
标签: powershell batch-file cmd