“get-wmiobject win32_process -computername”获取错误“访问被拒绝,代码0x80070005”

时间:2013-02-19 08:19:08

标签: powershell powershell-remoting

我正在尝试在3个终端服务器上找到其$ _。命令行属性中包含某些单词的进程。在我的域管理员帐户下,它工作正常。但是我希望这个脚本可以用于域用户,并且doamin用户在运行此脚本时会出错。

我应该怎么做,以便域用户可以像域管理员一样运行此脚本?提前谢谢!

错误:

Get-WmiObject : Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESS DENIED))
At N:\FindWhoIsUsing\FindWhoIsUsing.ps1:7 char:18
get-wmiobject <<<<  win32_process -computername $server -EnableAllPrivileges|
CategoryInfo          : NotSpecified: (:) [Get-WmiObject], UnauthorizedAccessException
FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

Powershell代码:

Write-host "Who is using this profile?"
$profile = Read-host "specify profile name" 
$servers = @("server-01","server-02","server-03")
Foreach($server in $servers)
{
    Write-host $server
    get-wmiobject win32_process -computername $server -EnableAllPrivileges|
    where{$_.name -like "*Processname*" -and
    $_.CommandLine -like "*$profile*"}|
    select @{n="Server";e={$server}},@{n="User";e={$_.getowner().user}},@{n="ProcessID";e= {$_.ProcessID}},{$_.CommandLine}|fl
}
Write-host "DONE Searching!"

2 个答案:

答案 0 :(得分:13)

好的以下是步骤:

  1. 启动“wmimgmt.msc”
  2. 右键单击“WMI Control(Local)”,然后选择Properties
  3. 转到“安全”标签,选择“安全”,然后选择“高级”,然后选择“添加”
  4. 选择您要授予WMI访问权限的用户名或组,然后单击“确定”
  5. 授予所需权限,我建议首先授予所有权限以确保访问权限,然后在必要时删除权限。
  6. 确保“应用于”选项设置为“此命名空间和子命名空间”
  7. 保存并退出所有提示
  8. 将用户或组添加到本地“分布式COM用户”组。注意:此处无法添加“Authenticated Users”和“Everyone”组,因此您也可以使用“Domain Users”组。

答案 1 :(得分:0)

对于我来说,我是从域服务器连接到工作组服务器的,需要设置注册表项:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system\LocalAccountTokenFilterPolicy=1