我尝试编写可以查询我的TS以查找特定应用程序的内容,并选择使用该进程的用户的SAM帐户及其计算机名称。我已经有了类似的内容,但我很难整合SAM帐户和计算机名称的查询。
Get-WmiObject Win32_Process -ComputerName "MYSERVER" |
Where {$_.name -eq "winword.exe"} |
Invoke-WmiMethod -Name GetOwner
答案 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