使用PowerShell调用New-SmbShare创建文件夹共享时报找不到文件错误
该报错的核心原因是你传入 -Path 参数的文件夹路径在当前执行环境中不存在,New-SmbShare 本身不具备自动创建目标文件夹/父目录的能力,必须目标路径真实存在才能完成共享创建。
先验证拼接后的路径是否正确
你用了多个变量拼接路径,很容易出现变量为空、拼接格式错误的问题,在执行New-SmbShare前添加一行代码输出实际拼接结果:Write-Host "当前拼接的目标路径为: $($StandardPath)$($Username)\home\"核对输出的路径是否和你预期的目标文件夹一致,检查是否存在多写斜杠、漏写斜杠、
$StandardPath或$Username变量为空的情况。验证目标路径是否真实存在
把上一步输出的路径粘贴到资源管理器地址栏手动访问,也可以直接在PowerShell中执行校验命令:Test-Path -Path "$($StandardPath)$($Username)\home\" -PathType Container如果返回结果为
False,就说明该文件夹确实不存在,需要先创建文件夹再创建共享。补充创建目标文件夹的逻辑
在New-SmbShare执行前增加文件夹不存在则自动创建的代码,修改后的完整逻辑参考:$targetPath = "$($StandardPath)$($Username)\home\" # 路径不存在则创建 if (-not (Test-Path -Path $targetPath -PathType Container)) { New-Item -Path $targetPath -ItemType Directory -Force | Out-Null } # 再创建共享 New-SmbShare -Name "$($Username) Share" -Path $targetPath -ChangeAccess "Labor\$($Username)"排查其他可能问题
- 确认运行PowerShell的身份对目标路径有读取、写入权限
- 确认
$Username变量值不包含/ \ : * ? " < > |等Windows路径禁用的特殊字符 - 如果目标路径是远程存储路径,确认本地可以正常访问该远程路径
内容的提问来源于stack exchange,提问作者Forestbird
相关产品推荐
相关产品推荐

