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

修改远程计算机文件夹权限时遇Access denied错误求助

解决远程文件夹添加权限时的Access Denied问题

咱们先把问题拆明白:你用系统用户启动的脚本,切换到域用户会话后执行权限修改,但访问\\remote-computer\test时被拒绝。这里面有几个权限和远程会话的关键问题,咱们一步步来搞定:

1. 先搞懂当前会话的权限边界

你创建的PS会话是连到本地计算机($Env:ComputerName),不是目标远程机器。这时候在本地会话里跑test.ps1,脚本里的\\remote-computer\test是从本地发起访问的,用的是域用户在本地的权限,不是在远程机器上的权限——这是第一个核心坑!

2. 把会话直接连到远程计算机,在目标机器上下文执行

应该把PS会话的目标改成远程计算机,这样所有操作都在远程机器的环境里跑,用本地路径(比如C:\test)代替UNC路径,既避免跨机器权限传递问题,也更可靠。修改你的用户上下文切换代码:

$username = "domain\username"
$password = "Password"
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential $username, $securePassword

# 重点:连接到目标远程计算机,不是本地!
$session = New-PSSession -ComputerName "remote-computer" -Credential $credential

# 先确认会话身份对不对
Invoke-Command -Session $session -ScriptBlock { whoami }

# 执行权限修改脚本——注意:如果远程机器上没有test.ps1,得先把脚本传过去,或者直接把逻辑写在ScriptBlock里
Invoke-Command -Session $session -FilePath "C:\Users\Desktop\test.ps1"

3. 调整权限脚本,用远程机器的本地路径

在远程会话里,直接用远程机器的本地路径(比如C:\test,对应共享的\\remote-computer\test),比UNC路径少一层共享权限验证,更稳定:

修改test.ps1:

$colRights = [System.Security.AccessControl.FileSystemRights]"Read, Write"
$InheritanceFlag = [System.Security.AccessControl.InheritanceFlags]::None
$PropagationFlag = [System.Security.AccessControl.PropagationFlags]::None
$objType = [System.Security.AccessControl.AccessControlType]::Allow
$objUser = New-Object System.Security.Principal.NTAccount("domain\username")
$objACE = New-Object System.Security.AccessControl.FileSystemAccessRule ($objUser, $colRights, $InheritanceFlag, $PropagationFlag, $objType)

# 用远程机器的本地路径,别用UNC了
$objACL = Get-ACL "C:\test"
$objACL.AddAccessRule($objACE)
Set-ACL "C:\test" $objACL

4. 确保域用户有足够的权限

  • 域用户domain\username得是远程计算机的本地管理员,或者至少拥有目标文件夹的修改ACL权限(也就是能改文件夹的安全设置)。
  • 检查共享权限:\\remote-computer\test的共享权限得给域用户至少Read权限,不然连UNC路径都访问不了(不过咱们改成本地路径后这一步可以忽略,但还是得确认下)。

5. 要是必须用UNC路径?排查Kerberos双跳

如果实在得用UNC路径,可能会碰到Kerberos双跳问题:本地会话的域用户身份没法传递到远程机器的共享上。这时候需要确保域用户允许委派,并且本地和远程机器的Kerberos信任正常——不过说实话,直接用远程本地路径是最简单的解决方式,没必要折腾这个。

额外排查小技巧

  • 手动用域用户登录远程机器,手动改一次文件夹权限,看能不能成功。如果手动都不行,那就是域用户本身权限不够,先搞定这个基础问题。
  • 在远程会话里跑Test-Path "\\remote-computer\test",看看能不能访问,验证共享权限是否正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:47:02