PowerShell 5.1远程会话中相同服务查询命令输出格式不同问题
输出格式差异的核心原因
- 远程会话附加属性与自定义配置冲突:你通过远程连接打开的PowerShell 5.1会话中,所有远程调用返回的对象都会被默认注入
PSComputerName、RunspaceId这类远程会话元数据属性。你的设备上存在非默认的PowerShell配置:要么是加载了自定义格式化文件(.ps1xml),要么是$PSDefaultParameterValues中给Format-Table等格式化命令设置了强制输出所有属性的默认参数,所以你直接取.status属性时,PowerShell会把属性值和附带的远程元数据一起输出为三列表格,这是你设备独有的配置导致的,其他默认配置的设备不会触发这个逻辑。 - 子进程的会话隔离特性:执行
powershell -command "(Get-Service *someServiceName*).status"时,会在远程主机上启动一个全新的独立PowerShell子进程,这个子进程不属于外部的远程连接会话,不会给返回对象注入远程元数据属性,也不会继承外部会话的自定义格式化配置,因此只会输出.status属性本身的字符串值Running。
验证方式
你可以在当前远程会话窗口执行以下命令,排查是否存在自定义格式化配置:
Get-FormatData -TypeName *ServiceController* $PSDefaultParameterValues | Format-List
如果第一条命令返回了非系统默认的格式化规则,或者第二条命令中存在Format-*相关的默认参数设置,即可确认问题根源。
内容的提问来源于stack exchange,提问作者Rocko
相关产品推荐
相关产品推荐

