當我使用過濾器來排除管道命令對象時,它沒有給我正確的輸出。Powershell管道與不符合預期的行爲
PS C:\Users\Administrator> $proall = Get-ADComputer -filter * | ? {$_.name -ne "adfs"} | select @{l='Computername';e={$_
.name}} | ps | select machinename,processname,id | sort id | ft -au
MachineName ProcessName Id
----------- ----------- --
DC Idle 0
DC Idle 0
DC Idle 0
DC System 4
DC System 4
DC System 4
DC mmc 96
DC mmc 96
DC mmc 96
DC smss 276
DC smss 276
DC smss 276
DC svchost 304
DC svchost 304
DC svchost 304
所以這裏沒有。我們看到的流程超過了實際的流程。機器上的進程。但是沒有來自其他機器的特定進程(交換和共享點)。
要檢查我的命令,我確保以下輸出符合預期。
PS C:\Users\Administrator> Get-ADComputer -filter * | ? {$_.name -ne "adfs"} | select @{l='Computername';e={$_.name}}
Computername
------------
DC
SP2013
EX2013
和
Get-ADComputer -filter * | ? {$_.name -eq "sp2013"} | select @{l='Computername';e={$_.name}} | get-process
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
96 9 1664 11264 94 2712 conhost
94 9 1608 11004 95 5792 conhost
326 15 1484 4032 56 392 csrss
我已確保上述過程是針對在「?」 /「在哪裏」過濾器指定的計算機。
問題是當我排除一個特定的對象。
我想知道爲什麼它是表現這種方式。我不是在尋找結果,而是試圖理解語法。
問候
編輯:添加與ID的輸出。我看到每個進程的3個實例(相同的ID);計算機輸出的數量也是3.
您是否確定進程數量錯誤?手動運行「Get-Process -ComputerName DC」時會發生什麼? –
您可以將您的最終選擇更改爲'select machinename,processname,id'。通過這種方式,您將看到所有進程ID以知道是否有任何重複。 – Matt
「Get-Process -ComputerName DC」返回45個進程。鑑於「Get-ADComputer -filter * |?{$ _。name -ne」adfs「} | select @ {l ='Computername'; e = {$ _。name}} | ps | select machinename,processname | sort processname | ft -au「會返回139個進程 –