我试图通过在powershell中运行此WMI查询来获取进程的所有者:
$processes = Get-WmiObject Win32_Process |where{$_.name -like "*notepad*"}
$objcol = @()
foreach ($process in $processes)
{
$owner = $process.GetOwner().User
#$owner = $process.ProcessId
$obj = New-Object System.Object
$obj |Add-Member -MemberType NoteProperty -Name Owner -Value ($owner)
$obj |Add-Member -MemberType NoteProperty -Name pid -Value $process.ProcessId
$owner = ""
$objcol += $obj
}
$objcol | ft owner, pid -AutoSize |Out-String -Width 300
但不知何故,在特定的机器(Windows Server 2008)上,完成这个简短的脚本需要30分钟。如果我删除了行" $ owner = $ process.GetOwner()。User",并将其替换为" $ owner = $ process.ProcessId",查询可以完成一些秒。但在其他计算机上(Windows Server 2003,2008,2012),没有这样的问题。所以我认为这与Win32_Process.Getowner()方法有关,但不确定如何。
有人可以帮忙吗?提前谢谢!
答案 0 :(得分:0)
您可以尝试更简单的方法,安装PowerShell v4并使用
Get-Process -name 记事本 -IncludeUserName