You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Invoke-Command远程执行高权限PowerShell命令遇权限拒绝问题

远程执行Invoke-Command时权限拒绝问题解决

问题描述

我在远程机器上执行需要提升权限的命令时收到“Access Denied”错误。能直接登录远程机器运行这些命令,但通过Invoke-Command执行就不行。我是该计算机的本地管理员,已经给Invoke-Command传递了凭据,两台机器处于同一个域中。

执行代码

$credential = get-credential
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $credential

invoke-command -ComputerName $ComputerName -Credential $cred -ScriptBlock { 
    write-host "whoami: $(whoami)"
    Write-Host "Is Administrator? $([Security.Principal.WindowsPrincipal]::new(
    [Security.Principal.WindowsIdentity]::GetCurrent()
    ).IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator))"
    write-host "Execution Policy: $(Get-ExecutionPolicy)"
    write-host "net user: $(net user /domain $UserName)"
}

输出结果

whoami: Domain\Username
Is Administrator? True
Execution Policy: Unrestricted
net user: The request will be processed at a domain controller for domain domain_name. 
System error 5 has occurred.
    + CategoryInfo          : NotSpecified: (System error 5 has occurred.:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError
    + PSComputerName        : ComputerName.Domain
 
NotSpecified: (:) [], RemoteException
Access is denied.
NotSpecified: (:) [], RemoteException

问题原因及解决方法

核心原因

虽然远程会话中身份显示为管理员,但默认情况下PowerShell远程会话不会以**高权限(管理员批准模式)**运行。受UAC限制,远程会话中的管理员会被过滤令牌,无法获得完整的管理员权限,导致执行域相关高权限操作时被拒绝。

解决办法

  1. 添加-EnableNetworkAccess参数
    该参数允许远程会话使用网络凭据访问域控制器等资源,结合凭据传递可解决域操作权限问题:

    invoke-command -ComputerName $ComputerName -Credential $cred -ScriptBlock { 
        write-host "whoami: $(whoami)"
        Write-Host "Is Administrator? $([Security.Principal.WindowsPrincipal]::new(
        [Security.Principal.WindowsIdentity]::GetCurrent()
        ).IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator))"
        write-host "Execution Policy: $(Get-ExecutionPolicy)"
        write-host "net user: $(net user /domain $using:UserName)"
    } -EnableNetworkAccess
    

    注意:远程脚本块中引用本地变量需用$using:前缀。

  2. 修改远程机器UAC远程限制
    若上述方法无效,可修改远程机器注册表,允许远程管理员获取完整权限:

    • 在远程机器执行:
      Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -Name LocalAccountTokenFilterPolicy -Value 1 -Type DWord
      
    • 重启WinRM服务生效:
      Restart-Service WinRM
      

    提示:此修改会降低UAC安全性,仅在必要时使用。

  3. 用Start-Process以高权限单独运行命令
    针对特定需要高权限的命令,可在远程会话中启动带管理员权限的进程:

    invoke-command -ComputerName $ComputerName -Credential $cred -ScriptBlock { 
        Start-Process net -ArgumentList "user /domain $using:UserName" -Verb RunAs -Wait -NoNewWindow
    }
    

内容的提问来源于stack exchange,提问作者gmaubrrriaeyl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 16:24:57