如何在PowerShell中使用New-PSDrive匿名连接SMB共享?
实现PowerShell匿名连接SMB共享的可行方案
针对匿名连接SMB共享的问题,这里提供两个无需交互、适配后台定时任务的可行方法:
方法1:手动构造匿名凭据对象
直接使用[pscredential]::Empty会触发密码错误,你可以手动构造空密码的匿名账号凭据,避免弹出输入框:
# 创建匿名登录凭据 $anonCred = New-Object System.Management.Automation.PSCredential ( "NTAUTHORITY\ANONYMOUS LOGON", (New-Object System.Security.SecureString) ) # 映射网络驱动器 New-PSDrive -Name Z -PSProvider FileSystem -Root "\\fileserver\share" -Credential $anonCred -Persist
这个方式通过显式指定匿名账号和空安全字符串密码,绕过了当前本地用户的身份验证,适配域环境下的匿名访问需求。
方法2:使用net use命令替代
PowerShell的New-PSDrive在匿名身份处理上存在局限,更可靠的方式是用原生的net use命令,它对匿名登录的支持更直接:
net use Z: \\fileserver\share /user:"NTAUTHORITY\ANONYMOUS LOGON" "" /persistent:yes
命令中""代表空密码,/persistent:yes设置驱动器持久化(不需要的话可以去掉),全程无交互,完美适配后台定时任务场景。
关键注意事项
- 除了开启「Network access: Let Everyone permissions apply to anonymous users」策略,必须确保SMB共享的共享权限和NTFS权限都给
Everyone分配了对应访问权限(比如读取),否则会出现权限不足的错误。 - 后台定时任务运行时,若使用
New-PSDrive的-Persist参数,需确保任务运行账户有创建持久化网络驱动器的权限;用net use则无此限制。
内容的提问来源于stack exchange,提问作者user319862
相关产品推荐
相关产品推荐

