[英]PowerShell load XML from remote server PathInfo; Can't save
我有一個小的腳本來處理一些XML。 這個想法很簡單:
腳本開始是這樣的:
$fileName = Resolve-Path (Join-Path $targetDir $xmlFile.FileName)
[xml]$xdoc = Get-Content $fileName
...
$xdoc.Save($fileName);
但是,Save(...)失敗,顯示“不支持給定路徑的格式”。 我添加的一些診斷信息顯示該路徑如下所示:
Microsoft.PowerShell.Core\FileSystem::\\remoteserver\sharedfolder\test.xml
據我了解,這是路徑的PowerShell變體...實際上是PathInfo(或PathInfo的.ToString()輸出)。
當我使用本地路徑時,Save(...)工作正常。 它只中斷一條遠程路徑。
加載XML並不是問題,因為我們使用的是了解PowerShell路徑的本機PowerShell cmdlet Get-Context。 但是,當調用Save(...)時,我們實際上是在XmlDocument類上調用.NET方法,並且它無法理解PowerShell路徑並引發異常。
是否沒有簡潔,對稱的PowerShell手段來編寫XML文件?
Resolve-Path
返回一個PathInfo
,但是Save()
方法需要一個string
類型。 當您使用PathInfo
作為Save()
的輸入時,它將對象轉換為字符串。 如您PathInfo
的toString()
返回包含PSProvider詳細信息的完整“ PowerShell路徑”,這與“常規” .Net方法不兼容。
您可以使用PathInfo
提供的ProviderPath
屬性來獲取“常規”路徑。
或者,您可以重寫代碼以使用Get-Item
獲得具有FullName
-property的更常用的FileInfo
-object。
使用Resolve-Path
示例:
$fileName = Resolve-Path (Join-Path $targetDir $xmlFile.FileName)
[xml]$xdoc = Get-Content $fileName
...
$xdoc.Save($fileName.ProviderPath);
使用Get-Item
示例:
$file = Get-Item (Join-Path $targetDir $xmlFile.FileName)
[xml]$xdoc = Get-Content $file
...
$xdoc.Save($file.FullName);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.