2013-02-19 2 views
4

Я пытаюсь найти процессы на трех терминальных серверах, которые имеют определенные слова в свойстве $ _. Commandline. Под моей учетной записью администратора домена она работала нормально. Но я хочу, чтобы этот скрипт использовался для пользователей домена, а пользователи doamin получают ошибку при запуске этого скрипта.«get-wmiobject win32_process -computername» получает ошибку «Access denied, code 0x80070005»

Что мне делать, чтобы пользователи домена могли запускать этот скрипт так же, как администраторы домена? Заранее спасибо!

Ошибка:

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!" 
+0

Пользователи домена, очевидно, не имеют всех привилегий администраторов домена, вам необходимо предоставить им необходимый доступ, добавив их в соответствующие группы. –

+0

Да, я согласен с тобой. Но вопрос в том, как? :) Я, конечно, не хочу добавлять всех пользователей домена в администраторов доменов, не так ли? Должно быть какое-то место для управления WMI, но я не знаю, как его настроить. На самом деле я немного перепутал в wmimgmt.msc на целевых серверах, но не повезло, может быть, это подходящее место, но я просто не сделал это правильно. – bookends

ответ

11

Ok вот шаги:

  1. Launch "wmimgmt.msc"
  2. правой кнопкой мыши на «WMI Control (Local) ", затем выберите Свойства
  3. Перейдите на вкладку «Безопасность» и выберите «Безопасность», затем «Дополнительно», затем «Добавить».
  4. . Выберите имена пользователей или группы, которым вы хотите предоставить доступ к WMI, и нажмите ok
  5. .
  6. Предоставьте необходимые разрешения, я рекомендую начать с предоставления всех разрешений, чтобы обеспечить доступ к нему, а затем, при необходимости, удалить разрешения позже.
  7. Убедитесь, что «Применить» параметр установлен в значение «Это пространство имен и subnamespaces»
  8. Сохранить и закрыть все подсказки
  9. Добавьте пользователя (ей) или группу (ы) в Local «Distributed COM Users» группа , Примечание. Здесь не могут быть добавлены группы «Аутентифицированные пользователи» и «Все», поэтому вы можете использовать группу «Пользователи домена».
+0

Там есть 4 группы: администраторы, пользователи, прошедшие проверку подлинности, местный сервис и сетевой сервис, разрешение которых необходимо обновить? – bookends

+0

Это должны быть «аутентифицированные пользователи». Вы также можете добавить группу «Все». –

+0

Я добавил там «все» и переключил все флажки «разрешить». Я также убедился, что для параметра «Применить к» установлено значение «Это пространство имен и пространства подменю» для «всех». Я думал, этого должно быть достаточно для пользователей домена, но это не сработало, ошибка просто осталась прежней ... – bookends