如何获得特定winrm属性的值?

时间:2015-06-16 16:50:45

标签: powershell winrm

如何获取下面PS命令返回的其中一个值?

PS C:\Users\vagrant> winrm get winrm/config/winrs
Winrs
    AllowRemoteShellAccess = true
    IdleTimeout = 7200000
    MaxConcurrentUsers = 10
    MaxShellRunTime = 2147483647
    MaxProcessesPerShell = 25
    MaxMemoryPerShellMB = 300
    MaxShellsPerUser = 30

具体来说,我试图只获得MaxMemoryPerShellMB的值。最终我需要将该值与另一个值进行比较,以便我可以确保在需要时正确设置它。

2 个答案:

答案 0 :(得分:4)

您可以使用WS-Management提供程序来获取或设置WS-Management配置选项:

(Get-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB).Value 
  

什么是WSMan?它与winrm相比如何?

你可以说,他们都主要是指同一件事:

  

Windows远程管理(WinRM)是WS-Management Protocol的Microsoft实现,WS-Management Protocol是一种基于标准简单对象访问协议(SOAP)的防火墙友好协议,允许来自不同供应商的硬件和操作系统进行互操作。 Source

winrm get winrm/config PowerShell路径下的WSMan:\localhost\所有选项。其中一些可以使用不同的命名,例如Shell而不是winrs(Window Remote Shell),但在大多数情况下名称匹配。您可以通过标准PowerShell命令(例如dir WSMan:\localhost\

)探索可用的配置选项

答案 1 :(得分:1)

您可以将winrm输出转换为hashtable

$winrs = & winrm get winrm/config/winrs |
         Select-Object -Skip 1 |
         Out-String |
         ConvertFrom-StringData

并访问所需的值,如下所示:

$winrs['MaxMemoryPerShellMB']

或者像这样:

$winrs.MaxMemoryPerShellMB