我有一个PowerShell脚本,当以本地用户的帐户运行时,该脚本在远程服务器上配置WinRM。但是,我需要将脚本上载到TFS,并让每个主机自己运行脚本。
该脚本检查是否配置了WinRM。如果不是,则检查C:\ PSTools \ PsExec.exe路径是否存在。如果路径存在,则需要使用以下方法配置WinRM:
$configure = (C:\PSTools\PsExec.exe \\$hostname -s winrm.cmd -q 2> $null)
但是,以上导致错误
术语“ C:\ PSTools \ PsExec.exe”不能识别为cmdlet,函数,脚本文件或可运行程序的名称。检查名称的拼写,或者是否包含路径,请确认路径正确,然后重试。
我知道文件在那里,所以我不确定我在做什么错。我见过的其他示例要么单独使用psexec
要么使用./PsExec.exe
,但是这些都不起作用。
任何建议表示感谢,谢谢。
答案 0 :(得分:1)
虽然这不能回答psexec.exe
不起作用的原因(尽管我怀疑是因为文件实际上不存在),但是您可以使用WMI
启用WinRM
:
([wmiclass]"\\$hostname\root\cimv2:win32_process").
Create('powershell "Enable-PSRemoting -Force -SkipNetworkProfileCheck"')
并远程重新启动服务(即使Enable-PSRemoting
处理了此问题):
$svc = [wmi]"\\$hostname\root\cimv2:win32_service.Name='winrm'"
$svc.StopService()
$svc.StartService()