我正在开发一个小型软件部署脚本,该脚本使用 powershell 远程卸载和安装新版本的Check_MK 。
一切都很好——我能够本地化旧服务,停止它并确定它的安装路径。问题是运行服务的“uninstall.exe”。
这可以通过在使用凭据参数的服务器上使用 Powershell 会话日志记录来轻松完成。
$passwd = convertto-securestring -AsPlainText -Force -String "password"
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist "domain\user",$passwd
$session = new-pssession -computername "192.xxx.xxx.xxx" -credential $cred
Enter-PSSession $session
问题是您不能在脚本中使用 PSSession - 它是供个人使用而不是自动化的。
所以我尝试使用 Powershells Invoke-Command cmdlet。
Invoke-Command -Computername "192.xxx.xxx.xxx" -credential $cred -argumentlist $cred -ScriptBlock {
# Lots of stuff and enter uninstall directory
uninstall.exe /S
}
调用 exe 文件以查询管理员凭据结束。
我还尝试远程启动提升的 Powershell 会话并将其用于卸载..
Start-Process powershell -Credential $cred
使用提升的 Powershell 会话执行位于服务器上以启动uninstall.exe 的脚本以 UAC 查询结束(不是查询凭据,而是要求执行)。
有没有其他解决方案来处理这个问题?我尝试了更多,但没有任何效果。