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

Powershell: Querying TS with Get-Process, SAMAccount and ComputerName?

我正在尝试编写一些代码来查询我的 TS 以获取特定应用程序和 select 使用该进程的用户的 SAM 帐户及其计算机名称。我已经有了类似这样的东西,但我很难整合 SAM 帐户和计算机名称的查询。

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

当您将进程直接通过管道传输到 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