PowerShell调用远程服务器执行Python脚本报[Errno 13]权限被拒绝问题
问题根因
该报错本质是PowerShell远程调用的Kerberos双跳限制:当你从本地通过Invoke-Command发起远程会话时,默认状态下远程会话的用户身份不具备二次访问跨服务器网络资源的委派权限,哪怕共享文件夹已给Everyone开放权限,远程会话也无法携带有效身份凭证访问共享路径下的Python文件,最终触发13号权限错误。
解决方法
优先按复杂度从低到高尝试以下方案:
- 方案1:迁移Python脚本到目标服务器本地磁盘
把存放在网络共享的.py文件复制到目标服务器的本地路径(例如C:\scripts\api_submit.py),直接修改Invoke-Command内的脚本路径为服务器本地路径即可,无需额外配置,改完就能生效。 - 方案2:远程会话内显式传入凭证挂载共享
先在本地获取有权限访问共享路径的账号凭证,远程执行时先通过凭证挂载共享目录再调用Python,示例代码如下:# 本地提前录入有权限访问共享的账号密码 $shareCred = Get-Credential Invoke-Command -ComputerName $servername -ScriptBlock { # 远程会话内挂载共享路径 New-PSDrive -Name "SharedDisk" -PSProvider FileSystem -Root "\\你的共享服务器IP\共享文件夹名" -Credential $using:shareCred python.exe "SharedDisk:\你的脚本文件名.py" -id $using:CaseID -tag $using:serviceTag -m $using:message } - 方案3:配置Kerberos委派(仅企业域环境可选,需域管理员操作)
若必须保留脚本在网络共享位置,可联系域管理员将执行命令的目标服务器的计算机账户,配置为允许委派到共享文件所在的服务器身份,即可解除双跳限制。该方案安全风险较高,非必要不建议使用。
内容的提问来源于stack exchange,提问作者cosmis
相关产品推荐
相关产品推荐

