【发布时间】:2020-07-31 17:15:58
【问题描述】:
我有一个简单的 Get-ScheduledTask 命令,它给我一个简单的输出:
Get-ScheduledTask | select -last 1
TaskPath TaskName State
-------- -------- -----
\Microsoft\Windows\WS\ WSTask Ready
当我通过 Invoke-Command 调用相同的命令时(在与上述相同的计算机上运行),有时会得到非常相似的输出:
Invoke-Command -ComputerName PRD-APIEXT001 -ScriptBlock {Get-ScheduledTask |select -last 1 } -Credential $cred
TaskPath TaskName State PSComputerName
-------- -------- ----- --------------
\Microsoft\Windows\WS\ WSTask Ready PRD-APIEXT001
但有时,我会得到更多更详细的输出:
Invoke-Command -ComputerName PRD-APIEXT001 -ScriptBlock {Get-ScheduledTask |select -last 1} -Credential $cred
PSComputerName : PRD-APIEXT001
RunspaceId : [REDACTED]
Actions : {MSFT_TaskComHandlerAction}
Author : Microsoft Corporation
Date : 2010-10-27T17:18:44.0816608
Description : Windows Store Maintenance Task
Documentation :
Principal : MSFT_TaskPrincipal2
SecurityDescriptor : [REDACTED]
Settings : MSFT_TaskSettings3
Source : wsservice.dll
State : 3
TaskName : WSTask
TaskPath : \Microsoft\Windows\WS\
Triggers :
URI : \Microsoft\Windows\WS\WSTask
Version :
我不知道为什么它有时是简单的输出,有时是详细的输出,除了它似乎只在一个方向上改变;从冗长到简单。也就是说,一旦 PowerShell 会话显示简单输出,它似乎永远不会回到详细输出。但有时一个曾经显示详细输出的会话会切换到简单的。
现在,我从this StackOverflow question 得知 Invoke-Command 会为其返回的每个对象添加属性。
但我仍然不知道为什么它有时会给出基于表格的输出,有时会给我一个属性列表作为输出。
谁能告诉我这里会发生什么?
我使用的是 PowerShell 版本 5.1.14409.1018。
【问题讨论】:
-
远程电脑总是一样的?
-
是的,它是我运行命令的同一台计算机。
标签: powershell powershell-remoting