4

我正在尝试在远程机器上运行一个 exe,它基本上会卸载产品代理。下面是代码:

$test = Get-Content PC.txt

foreach ($a in $test)
{
   $curr = Get-Location
   Set-Location \\$a\Admin$\System32\CCMSetup
   .\ccmsetup.exe /uninstall
   Set-Location $curr
}

它不起作用。我最终从主机本身中删除了该程序:)

备用选项:我使用命令行创建了一个批处理文件:

cd C:\Windows\System32\ccmsetup
ccmsetup /uninstall
exit

似乎上述也可以使用 Invoke-Command 来实现。

Invoke-Command -ComputerName $client -FilePath UninstallCCM.cmd

显然,它不接受批处理文件。我想让它尽可能简单。

目前我正在使用 PSExec 安装和卸载程序。我是否需要在需要使用 PowerShell 执行脚本的每台远程计算机上启用 PS Remoting (WinRM)?有人可以帮忙吗?提前致谢。

4

2 回答 2

11

此命令应成功执行:

Invoke-Command -ComputerName $client -ScriptBlock { cd C:\Windows\System32\ccmsetup; ccmsetup /uninstall} -Credential $(Get-Credential) -Authentication CredSSP

但是您需要通过在每台机器上运行这两个命令来在所有机器上启用 CredSSP 身份验证:

Enable-WsManCredSSP -Role Server -Force
Enable-WSManCredSSP -Role Client -DelegateComputer * -Force
于 2013-03-11T10:55:29.307 回答
2

我强烈推荐下载PSTools。里面有一个命令叫“psexec”

PSexec 很简单,你可以这样称呼它:

psexec \\myserver C:\Windows\System32\ccmsetup /uninstall
于 2013-03-11T14:46:37.360 回答