我正在尝试从我们域中的远程计算机列表中卸载一个或多个软件。
我尝试了invoke-command和enter-pssession,然后尝试了以下命令,但似乎不起作用。
Start-Process -FilePath C:\Windows\System32\cmd.exe -ArgumentList "/c,$($quietuninstallString)" -verb RunAs
其中 $quietuninstallstring 类似于:“C:\Program Files\Beyond Compare 4\unins000.exe”/SILENT
我尝试过打开/关闭 UAC、使用/不使用 Verb RunAs 管理员运行不同的软件和远程 PC。
这里我遗漏了什么吗?如果有人能给我指出正确的方向,我将不胜感激。
答案1
要从 powershell 执行文件,请使用&
或Start-Process
代替 cmd:
Invoke-Command -ComputerName 'Example' -ScriptBlock {& 'C:\windows\System32\HOSTNAME.EXE' '/?'}
或者
Invoke-Command -ComputerName 'Example' -ScriptBlock {& "$($quietuninstallString)" '/c'}
如果用户是远程机器的管理员,这将正常工作。
确保在远程机器上设置变量。您还需要确保像以下标志一样/SILENT
在其自己的引号中输入&
(我假设您想要两者/SILENT
)/c
:
Invoke-Command -ComputerName 'Example' -ScriptBlock {
$UninstallPath = "C:\Program Files\Beyond Compare 4\unins000.exe"
& "$UninstallPath" '/SILENT' '/c'
}
在这些情况下,您还可以使用结构在本地计算机上指定变量$Using:varname
(请参阅远程变量。
$UninstallPath = "C:\Program Files\Beyond Compare 4\unins000.exe"
Invoke-Command -ComputerName 'Example' -ScriptBlock {& "$($Using:UninstallPath)" '/SILENT' '/c'}