如何获取下面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
的值。最终我需要将该值与另一个值进行比较,以便我可以确保在需要时正确设置它。
答案 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