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
我正在尝试编写一些代码来查询我的 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