Powershell:使用Get-Process,SAMAccount和ComputerName查询TS?

时间:2017-04-14 14:08:16

标签: windows powershell server powershell-v2.0

我尝试编写可以查询我的TS以查找特定应用程序的内容,并选择使用该进程的用户的SAM帐户及其计算机名称。我已经有了类似的内容,但我很难整合SAM帐户和计算机名称的查询。

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

1 个答案:

答案 0 :(得分: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