1

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

4

2 回答 2

4

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

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

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

您可以说,它们都主要指的是同一件事:

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

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

于 2015-06-16T17:42:37.140 回答
1

您可以将winrm输出转换为哈希表

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

并像这样访问所需的值:

$winrs['MaxMemoryPerShellMB']

或像这样:

$winrs.MaxMemoryPerShellMB
于 2015-06-16T17:14:49.130 回答