【问题标题】:"get-wmiobject win32_process -computername" gets error "Access denied , code 0x80070005"“get-wmiobject win32_process -computername”得到错误“访问被拒绝,代码 0x80070005”
【发布时间】:2013-02-19 08:19:08
【问题描述】:

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

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

错误:

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

【问题讨论】:

  • 域用户显然缺乏该域管理员拥有的所有权限,您需要通过将他们添加到相关组来授予他们所需的访问权限。
  • 是的,我同意你的看法。但问题是,怎么做?:) 我当然不想将所有域用户都添加到域管理员中,对吧?肯定有专门用来控制WMI的地方,但是不知道怎么配置。实际上,我在目标服务器上的 wmimgmt.msc 中搞砸了一点,但没有运气,也许这是正确的地方,但我只是没有做对。

标签: powershell powershell-remoting


【解决方案1】:

好的,步骤如下:

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

【讨论】:

  • 这里有4个组:管理员、认证用户、本地服务和网络服务,应该更新哪个权限?
  • 应该是“经过身份验证的用户”。您还可以添加“所有人”组。
  • 我在那里添加了“每个人”,并为它打开了所有“允许”复选框。我还确保将“每个人”的“应用到”选项设置为“此命名空间和子命名空间”。我认为对于域用户来说应该足够了,但是它没有用,错误只是保持不变......
  • 将用户或组添加到本地“分布式 COM 用户”组...这就是诀窍!虽然我没有得到我想要的结果,但我不再有“拒绝访问”错误。感谢您的帮助!
【解决方案2】:

在我的例子中,我从域服务器连接到工作组服务器并且需要设置注册表项:

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

【讨论】:

    猜你喜欢
    • 2012-08-11
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 2021-11-11
    • 1970-01-01
    • 2018-04-05
    • 2014-01-08
    相关资源
    最近更新 更多