2017-04-14 4 views
1

私は特定のアプリケーションのために自分のTSを照会し、そのプロセスとそのコンピュータ名を使用しているユーザーのSAMアカウントを選択するようなコードを作成しようとしています。私はすでにこのようなものを持っていますが、私はSAMアカウントとコンピュータ名のクエリを統合するのに苦労しています。Powershell:Get-Process、SAMAccount、およびComputerNameを使用してTSを照会しますか?

Get-WmiObject Win32_Process -ComputerName "MYSERVER" | 
Where {$_.name -eq "winword.exe"} | 
Invoke-WmiMethod -Name GetOwner 

答えて

0

Invoke-WmiMethodに直接パイプすると、プロセスのwmiobjectが失われます。あなたは、オブジェクトを生成するためにForeach-Objectを使用するか、このようなSelect-Objectでカスタム列を使用することができます。

Get-WmiObject Win32_Process -ComputerName "localhost" | 
Where-Object {$_.name -eq "notepad.exe"} | 
Select-Object CSName, ProcessName, @{n="Owner";e={$_.GetOwner().User}} 

CSName ProcessName Owner 
------ ----------- ----- 
FRODE-PC notepad.exe frode 

カスタム列でスクリプトを書いて、私は彼らが読みやすいと同様に、再利用することができますので、先にそれらを定義書くことを好みますこの:

$OwnerColumn = @{ 
    Name="Owner" 
    Expression={ $_.GetOwner().User } 
} 

.... 
Where-Object ... | 
Select-Object CSName, ProcessName, $OwnerColumn 
+0

ニース、ありがとう!私はあなたがOwnerColumnを外部に宣言しているので、オブジェクトのようなものです!私は間違いなくそれを念頭に置くでしょう;)!再度、感謝します! – mastergat

+0

実際にはハッシュテーブルオブジェクトです。ここでもっと計算された列を読んでください:https://technet.microsoft.com/en-us/library/ee692794.aspx。質問を終わらせるために問題を解決した場合は、その答えを受け入れることを忘れないでください。 :-) –

関連する問題