PowerShell跨服务器创建符号链接报错“指定路径不支持符号链接”求助
报错产生原因
- Windows系统默认禁用远程SMB共享路径下创建符号链接的行为,属于内置安全限制,你要在
\\SERVER1\的共享目录下创建符号链接,刚好触发了该限制。 - 当前运行PowerShell的账号缺少系统层面的创建符号链接权限,该权限和共享路径的读写权限互相独立,即使你有两个路径的读写权限也默认不开放。
- Windows默认的「远程符号链接评估策略」会拦截跨服务器的UNC路径符号链接,避免恶意跳转风险。
- SERVER1的SMB共享服务端可能配置了禁止创建符号链接的规则,需要先确认服务端权限配置。
可行解决方案
方案1:调整系统组策略配置(需管理员权限,适合需要使用符号链接的场景)
- 按Win+R输入
gpedit.msc打开本地组策略编辑器 - 依次定位到:计算机配置 → 管理模板 → 系统 → 文件系统 → NTFS
- 找到「远程链接到远程链接的符号链接评估」,设置为已启用
- 再定位到:计算机配置 → Windows设置 → 安全设置 → 本地策略 → 用户权限分配
- 找到「创建符号链接」,将当前运行脚本的账号添加到授权列表中
- 运行
gpupdate /force刷新组策略,之后以管理员身份运行PowerShell重新执行原脚本即可。
方案2:改为创建Windows标准快捷方式(无需修改系统配置,兼容性最优)
如果不需要使用符号链接的特性,直接创建.lnk快捷方式可以满足跨共享路径跳转的需求,且不需要调整系统安全策略,普通用户权限即可执行,代码示例如下:
$SamaccountName = ($name).Givenname + '.' + ($name.Surname) $PrivateDrive = '\\SERVER1\private\home folders\' + $SamaccountName $ScanDrive = "\\SERVER2\Shares_2\" + $SamaccountName $shortcutPath = Join-Path $PrivateDrive "ScanDrive.lnk" $WshShell = New-Object -ComObject WScript.Shell $shortcut = $WshShell.CreateShortcut($shortcutPath) $shortcut.TargetPath = $ScanDrive $shortcut.Save()
方案3:映射共享为本地盘符后创建符号链接(通用性较差)
你可以先将两个远程共享路径映射为本地盘符,再在映射后的本地盘符中创建符号链接,该方案仅对映射了对应盘符的设备生效,不适合多用户访问共享的场景。
内容的提问来源于stack exchange,提问作者Fluffarmy223
相关产品推荐
相关产品推荐

