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

Jus*_*Guy 6 powershell

我正在尝试通过Invoke-Command远程运行Get-ScheduledTask。该用户是非管理员用户,但是“远程管理用户”的一部分。PS远程处理效果很好。在本地运行命令可以正常工作。但是通过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
Run Code Online (Sandbox Code Playgroud)

这是代码示例:

注意:此程序直接在有问题的非管理员用户下运行。

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

foreach ( $server in $servers ) { 

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

      get-scheduledtask
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 5

我在尝试在没有管理员凭据的情况下远程使用 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 控件(在服务和应用程序下)并单击属性。

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

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

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

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

  6. 在新打开的窗口中,点击“选择一个委托人”,然后搜索并添加您想要访问的帐户或组作为委托人,然后单击“确定”。

  7. 在适用于,选择“这个命名空间和子命名空间”。

  8. 对于权限,请选中“执行方法”、“启用帐户”和“远程启用”

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

  10. 重新启动 WMI 服务

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

希望这可以帮助


小智 0

这可能是凭据未通过的问题。尝试添加 get-credential 并将其添加到您的调用命令中。您可以使用相同的凭据,只需尝试直接传递即可。

像这样:

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