2015-06-16 46 views
1

如何獲得下面PS命令返回的值之一?如何獲取特定winrm屬性的值?

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。最終,我需要將該值與另一個值進行比較,以便我可以確保在需要時正確設置它。

+1

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

+0

工作正常。問題:什麼是WSMan,它與winrm相比如何? IE,winrm的路徑是winrm/config/winrs,但wsman是WSMan:\ localhost \ Shell \ MaxMemoryPerShellMB。這是什麼意思? –

+0

但添加答案,我會接受它。 –

回答

4

你可以使用WS-Mana gement提供商獲取或設置WS-Management配置選項:

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

什麼的WSMan,它是如何比較WinRM的?

你可以說,是他們兩個是指大多是同一件事:

Windows遠程管理(WinRM)是WS-Management協議,標準的簡單對象訪問協議的微軟實現(SOAP )的防火牆友好協議,允許來自不同供應商的硬件和操作系統進行互操作。 Source

所有的winrm get winrm/configWSMan:\localhost\ PowerShell的路徑可用的選項。其中一些可以使用不同的命名,如Shell而不是winrs(Window Remote Shell),但在大多數情況下名稱匹配。您可以通過標準的PowerShell命令探索可用的配置選項,如dir WSMan:\localhost\

+0

從PS 3.0開始,你可以設置不同的插件,可以用'winrm enumerate winrm/config/plugin -format:pretty'或者在PS中用'dir Microsoft.WSMan.Management \ WSMan :: localhost \ Plugin' – Stoinov

1

您可以在winrm輸出轉換爲hashtable

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

,並像這樣訪問所需的值:

$winrs['MaxMemoryPerShellMB'] 

或像這樣:

$winrs.MaxMemoryPerShellMB