在非管理员用户下从远程运行PS cmdlet - 访问被拒绝

时间:2016-03-31 09:18:53

标签: powershell

我正在尝试通过Invoke-Command远程运行Get-ScheduledTask。 用户是非管理员,但是“远程管理用户”的一部分。 PS-Remoting工作正常。 在本地运行命令工作正常。 但是通过Invoke-Command运行它会出现以下错误:

Cannot connect to CIM server. Access denied
    + CategoryInfo          : ResourceUnavailable: (MSFT_ScheduledTask:String) [Get-ScheduledTask], CimJobException
    + FullyQualifiedErrorId : CimJob_BrokenCimSession,Get-ScheduledTask
    + PSComputerName        : us-web1

以下是代码示例:

注意:这是直接在相关的非管理员用户下运行。

$servers = "us-web1","us-web2","us-engine1","us-engine2","us-engine3","us-engine4"

foreach ( $server in $servers ) { 

Invoke-Command -ComputerName "$server" -ScriptBlock {

      get-scheduledtask
    }
}

2 个答案:

答案 0 :(得分:2)

我遇到了一个非常类似的问题,试图在没有管理员凭据的情况下远程使用get-printer命令。

我发现真正有用的是这个链接: https://social.technet.microsoft.com/Forums/exchange/en-US/b748d1bb-fa97-4c30-a626-145dfbc40873/service-acccount-permission-to-remote-powershell-to-dns-server-on-windows-server-2012?forum=winserverpowershell

我用于解决问题的过程是:

  1. 打开计算机管理控制台。右键单击WMI Control(在“服务和应用程序”下),然后单击“属性”。

  2. 在新打开的窗口中,单击“安全”选项卡。

  3. 展开根树,然后单击节点CIMV2,然后单击按钮安全性

  4. 在新打开的窗口中,单击“高级”按钮。

  5. 在新打开的窗口中,单击权限选项卡下的添加按钮。

  6. 在新打开的窗口中,单击“选择主体”,然后搜索并添加要作为主体访问的帐户或组,然后单击“确定”。

  7. 在apply for中,选择“this namespace and subnamespace”。

  8. 有关权限,请检查“执行方法”,“启用帐户”和“远程启用”

  9. 点击所有打开的对话框上的接受

  10. 重启WMI服务

  11. 再次尝试远程运行您的命令。它会再次失败,但这次你会看到真正的问题。查看错误"权限被拒绝"然后按照上述步骤操作,并授予对显示路径的访问权限。

  12. 希望这有帮助

答案 1 :(得分:0)

这可能是凭证无法通过的问题。尝试添加get-credential并将其添加到invoke-command。您可以使用相同的信用卡,只需尝试直接传递即可。

像这样:

$Cred = Get-Credential Invoke-Command -Credential $Cred -ScriptBlock {Get-ScheduledTask}