使用PowerShell 2.0在远程计算机上运行批处理文件

时间:2013-03-11 10:31:05

标签: powershell

我正在尝试在基本上卸载产品代理的远程计算机上运行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)? 有人可以帮忙吗?提前谢谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

我强烈建议您下载PSTools。那里有一个名为“psexec”的命令

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

psexec \\myserver C:\Windows\System32\ccmsetup /uninstall