Invoke-command失败,直到我在远程服务器上运行winrm quickconfig

时间:2013-08-14 15:11:29

标签: powershell powershell-remoting

我正在尝试通过PowerShell在远程服务器上运行批处理脚本。非常直截了当:

$password = ConvertTo-SecureString "password" -AsPlainText -Force
$cred= New-Object System.Management.Automation.PSCredential ("domain\user", $password)
$sesh= new-pssession -computername "MSSCA" -credential $cred

invoke-command -session $sesh -scriptblock {
    cmd.exe /C "C:\install.bat"
}

Remove-PSSession $sesh

这似乎随机失败,出现以下错误error

Image link here

在远程计算机上,运行powershell命令winrm quickconfig以配置远程管理服务,通知我它已设置为接收请求/远程管理。

只有在运行此命令后invoke-command才能正常运行。怎么样?我甚至没有配置任何东西。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

查看winrm的帮助(顺便说一下,这是Windows exe,而不是Powershell命令):

> winrm help quickconfig
Windows Remote Management Command Line Tool

winrm quickconfig [-quiet] [-transport:VALUE] [-force]

Performs configuration actions to enable this machine for remote management.
Includes:
  1. Start the WinRM service
  2. Set the WinRM service type to auto start
  3. Create a listener to accept request on any IP address
  4. Enable firewall exception for WS-Management traffic (for http only)

也许您的远程计算机启用了4个步骤的某些子集,但在运行该实用程序之前,并非一次性完成所有这些步骤。特别是,听众配置过去给我带来了麻烦。你可以在下面使用之前/之后检查监听器配置(在远程盒子上以管理员身份运行):

dir wsman:\localhost\listener

您还可以尝试运行Enable-PSRemoting(必须以管理员身份运行),其中包括其他日志记录。

答案 1 :(得分:2)

之前我遇到过这个问题,最终成了脚本执行策略。在受影响的主机上使用Set-ExecutionPolicy cmdlet。出于测试目的,请使用此命令参数:

Set-ExecutionPolicy Unrestricted

我强烈建议您不要将设置保留为Unrestricted,但它对确定可能的原因很有用。

供参考:

http://technet.microsoft.com/en-us/library/ee176961.aspx