4

我正在尝试通过 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

这似乎随​​机失败并出现以下错误错误

图片链接在这里

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

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

4

2 回答 2

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(必须以管理员身份运行),这将包括额外的日志记录。

于 2013-08-14T15:32:11.040 回答
2

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

Set-ExecutionPolicy Unrestricted

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

以供参考:

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

于 2013-08-14T16:11:03.277 回答