令人困惑的Powershell行为

时间:2011-09-02 14:57:50

标签: powershell powershell-remoting

远程执行powershell命令时有点困惑。我有一个名为ServerA的测试服务器(Win 2k8-R2-SP1),它正确启用了PowerShell远程处理。从我的开发机器(Win 2k8-R2-SP1),我能够正确远程执行powershell命令。 但是,当我尝试从名为ServerB(Win 2k8-R2)的不同服务器执行相同的命令时,我收到以下错误

[ServerA] Connecting to remote server failed with the following error message : The client cannot connect to the destination specified in the request. Verify that the service on the destination is running and is accepting requests. Consult the logs and documentation for the WS-Management service running on the destination, most commonly IIS or WinRM. If the destination is the WinRM service, run the following command on the destination to analyze and configure the WinRM service: "winrm quickconfig". For more information, see the about_Remote_Troubleshooting Help topic. + CategoryInfo : OpenError: (:) [], PSRemotingTransportException + FullyQualifiedErrorId : PSSessionStateBroken

所有三台计算机都在同一个域中。我的困惑是,从我的开发机器,我完全能够连接到ServerA并执行命令。

ServerB没有SP1的事实会有所作为吗?请指教。我使用的是同一个域帐户,该帐户在所有3台服务器上都拥有管理员权限。

我正在尝试的命令是 Invoke-Command -ComputerName ServerA -ScriptBlock {Get-UICulture}

请帮忙。

由于

7 个答案:

答案 0 :(得分:27)

从ServerB运行winrm quickconfigEnable-PSRemoting -force

使用get-service winrm

验证服务是否正在运行

http://technet.microsoft.com/en-us/magazine/ff700227.aspx

另外,从本地开发框运行:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*" -Force

答案 1 :(得分:5)

我在过去为远程PowerShell工作的机器上也遇到了同样的问题。在我的情况下,解决方案是清除安全日志。它已经满了,我相信这会阻止PowerShell建立适当的安全连接。

答案 2 :(得分:2)

我遇到了同样的问题,并通过以下方式解决了。正在运行

winrm quickconfig

返回以下错误。

winrm : WSManFault
At line:1 char:1
+ winrm quickconfig
+ ~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (WSManFault:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

    Message
        ProviderFault
            WSManFault
                Message = WinRM firewall exception will not work since one of the network connection types on this machine is set to Public. Change the network connection type to either Domain or Private and try again. 
Error number:  -2144108183 0x80338169
WinRM firewall exception will not work since one of the network connection types on this machine is set to Public. Change the network connection type to either Domain or Private and try again. 

就我而言,这是我在计算机上运行的虚拟机管理程序服务的虚拟NIC。一旦将其更改为“专用”,winrm quickconfig便运行无误。与该线程连接时,仍然存在连接到某些计算机并出现相同故障的问题。为了解决这个问题,我检查了winrm服务并在其中停止了服务。

get-service -ComputerName computer -Name winrm

Status   Name               DisplayName                           
------   ----               -----------                           
Stopped  winrm              Windows Remote Management (WS-Manag...



get-service -ComputerName computer -Name winrm | Start-Service

答案 3 :(得分:1)

以下解决了我的问题:

您必须清空iplisten列表,可以使用以下CMD命令检查:

netsh http show iplist

或者如果有任何其他地址,则向其添加循环返回地址:

netsh http add iplisten 127.0.0.1

答案 4 :(得分:1)

为了节省必须在您管理的每台服务器上启用WinRM,您可以运行此批处理脚本:

要求:

用法:启用PSRemoting.bat PCs.txt

@echo off
for /f %%f in (%1) do (
  psexec.exe \\%%f -accepteula -h -d -s powershell.exe "enable-psremoting -force"
  echo Enabled on %%f
)

答案 5 :(得分:0)

我一直在寻找答案,我找到了问题;

似乎未安装IIS 7 .NET Extensibility组件导致此问题。我们有一台2012 R2 Exchange 2010服务器;

https://technet.microsoft.com/en-us/library/dd421841(v=exchg.80).aspx

我通过在powershell中输入它来安装它;

请参阅此处Exchange 2010的先决条件。

https://technet.microsoft.com/en-us/library/bb691354(v=exchg.141)

我们这个Exchange服务器只有邮箱角色,另一个仍然是CAS和HUB传输;

所以我们需要这个命令;

Add-WindowsFeature NET-Framework-Features,RSAT-Clustering,Web-Mgmt-Console,WAS-Process-Model,Web-Basic-Auth,Web-Lgcy-Mgmt-Console,Web-Metabase,Web-Net- Ext,Web-Server,Web-Windows-Auth -Restart

Web-Net-Ext的一部分安装了IIS 7.NET可扩展性组件。 无需重启。

只需2美分,也许这可以帮助别人: - )

答案 6 :(得分:0)

对于我而言,配置了WinRM。这是我用来远程启用它的:

$x=Get-WmiObject -ComputerName "<computer name>" -Namespace "root\cimv2" -Class "Win32_Process" -List
$x.Create('C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command "& C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command {Enable-PSRemoting}"',$null,$null)