簡體   English   中英

通過 Invoke-Command 調用命令時 PowerShell 不一致

[英]Inconsistent PowerShell when command is called via Invoke-Command

我有一個簡單的 Get-ScheduledTask 命令,它給了我一個簡單的 output:

    Get-ScheduledTask | select -last 1
    
    TaskPath                                       TaskName                          State
    --------                                       --------                          -----
    \Microsoft\Windows\WS\                         WSTask                            Ready

當我通過 Invoke-Command 調用這個相同的命令時(從上面的同一台計算機上運行),我有時會得到一個非常相似的 output:

    Invoke-Command -ComputerName PRD-APIEXT001 -ScriptBlock {Get-ScheduledTask |select -last 1 } -Credential $cred
    
    TaskPath                                       TaskName                          State      PSComputerName
    --------                                       --------                          -----      --------------
    \Microsoft\Windows\WS\                         WSTask                            Ready      PRD-APIEXT001

但有時,我會得到詳細的 output:

    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            :

我不知道為什么它有時是簡單的 output,有時是冗長的 output,除了它似乎只在一個方向上改變; 從冗長到簡單。 That is, once a PowerShell session shows the simple output, it never seems to go back to the verbose output. 但有時,曾經顯示冗長 output 的 session 會切換到簡單的。

現在,我從這個 StackOverflow 問題中知道 Invoke-Command 將屬性添加到它返回的每個 object 中。

但是我仍然不知道為什么它有時會給出基於表的 output,有時會給我一個屬性列表,如 output。

誰能告訴我這里可能會發生什么?

我正在使用 PowerShell 版本 5.1.14409.1018。

看起來在加載 ScheduledTasks 模塊之前,無論是使用 import-module 還是在本地運行 get-scheduledtask,都不會加載該類型 object 的顯示信息。

Import-Module ScheduledTasks
icm localhost { get-scheduledtask | select -last 1 }  # elevated prompt for localhost

TaskPath                                       TaskName
--------                                       --------
\Microsoft\XblGameSave\                        XblGameSaveTaskLogon


Get-ScheduledTask | select -last 1 | get-member | findstr TypeName

TypeName: 
'Microsoft.Management.Infrastructure.CimInstance#Root/Microsoft/Windows/TaskScheduler/MSFT_ScheduledTask'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM