【发布时间】:2020-10-30 02:35:10
【问题描述】:
以下脚本使用 new-psdrive 命令映射网络驱动器。 它使用 get-content 将 XML 文件的内容加载到变量中。 截断的行修改 XML 对象。 然后它使用 XML 保存方法来保存文件。 该脚本给出错误“异常调用“保存”,参数为“1”:“找不到路径'M:\folder3\pems.xml'的一部分。”
clear
Remove-PSDrive M
New-PSDrive -Name M -Root "\\server1\share\folder1\folder2\" -PSProvider FileSystem
$uncpath = "\\server1\share\folder1\folder2\"
$xmlfileDrive = "M:\folder3\pems.xml"
$xmlfileUNC = $uncpath+"folder3\pems.xml"
Get-ChildItem M:
Get-ChildItem $uncpath
#####Truncated code that manipulates $xmlfile
#####Calls outside executables that don't support UNC paths.
[xml]$scheme = Get-Content $xmlfileDrive
$scheme.Save($xmlfileDrive)
如果我改变最后一行
$scheme.Save($xmlfileDrive)
到
$scheme.Save($xmlfileUNC)
没有出现错误,脚本正常运行。 请注意,无论我使用哪个变量,倒数第二行的“Get-Content”命令都能正常工作。并且“Get-ChildItem”命令给出相同的结果。
为什么有些命令会识别映射的驱动器而有些则不能?
我已经在 Powershell 5 和 7 中对此进行了测试。
【问题讨论】:
-
您确定
folder3存在于`\\server1\share\folder1\folder2` 路径中吗? -
$scheme.Save()不是 PowerShell 命令 - 它是一种原生 .NET 方法,并且 .NET 对 PSDrives 一无所知,因此您看到的行为
标签: powershell