使用PowerShell测试系统列表上的winrm连接

时间:2015-02-03 16:02:08

标签: powershell-v2.0 powershell-v3.0 powershell-remoting winrm wsman

我想测试winrm是否在服务器列表上运行。

winrm id -r:servername适用于各个系统,但我想以递归方式测试csv或文本文件中的列表。

输出到文件说“工作”或“不工作”。

我该怎么做?

谢谢大家。

编辑:
我已经传递了一个vm的列表,并且直到我成功将winrm连接输出到文件并在控制台中显示失败。

get-vm | where {$ .powerstate -like“PoweredOn”} | get-vmguest | where {$ .guestfamily -like“windowsGuest”} | foreach {winrm id -r:$ _.hostname} | Out-File c:\ scripts \ winrmtest.txt

在我的文件中,我得到的输出就像 IdentifyResponse     ProtocolVersion = http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd     ProductVendor = Microsoft Corporation     ProductVersion = OS:6.1.7601 SP:1.0 Stack:2.0

为了成功连接并在控制台上我得到以下故障:

错误号:-2144108526 0x80338012 客户端无法连接到请求中指定的目标。验证目标上的服务是否已运行 ning并且正在接受请求。请参阅destinat上运行的WS-Management服务的日志和文档 离子,最常见的是IIS或WinRM。如果目标是WinRM服务,请在目标t上运行以下命令 o分析和配置WinRM服务:“winrm quickconfig”。 WSManFault     Message =客户端无法连接到请求中指定的目标。验证dest上的服务 ination正在运行并正在接受请求。查阅运行的WS-Management服务的日志和文档 n目的地,最常见的是IIS或WinRM。如果目标是WinRM服务,请在上面运行以下命令  分析和配置WinRM服务的目标:“winrm quickconfig”。

需要将所有输出都包含在文件中,以及响应所针对的guest虚拟机名称。

1 个答案:

答案 0 :(得分:0)

请记住我没有使用过VM cmdlet,但下面是我认为可以帮助您的一些代码。我添加了一个wmi来检查每台机器上的winrm服务,如果服务没有运行,请查看startservice()的{​​{1}}方法。如果您不熟悉,请管道win32_service以查看可用的属性和方法。

但是这里有一些建议:

  • PowerShell对象

导出和管理数据非常简单。

  • “ - 过滤”vs“Where {}”

    查看VM cmdlet并查看它们是否支持| gm您的代码运行得更快。

-filter {property -operator "*filterby*"} All_VMS_Status = @()

$