2017-10-09 104 views
0

即時消息嘗試執行的操作:未能將變量傳遞給Get-Content

運行腳本並從XML文件加載內容。我有更多的XML文件,我希望它加載所有的XML文件,然後在foreach循環中運行它們。

我不知道爲什麼,但我的第二個Get-Content總是回來空。

這裏是不是爲我工作的代碼的關鍵部分:

[xml]$xmlist = Get-Content "C:\Users\user\Desktop\Test.xml" 

$x = $xmlist.Test.Test1.Test2 

foreach ($newxml in $x) { 
    [xml]$xml1 = Get-Content $newxml 
    $x2 = $xml1.Test.Testa.Testb 
} 

$xml1只是停留空白,沒有東西裝進去(而在$newxml我每次都在正確的道路) 。

的錯誤,我得到:

 
Get-Content : Cannot find path 'C:\windows\system32\System.Xml.XmlElement' 
because it does not exist. 
At C:\Users\samueu\Desktop\PS Script\Untitled15.ps1:7 char:14 
+ [xml]$xml1 = Get-Content $newxml 
+    ~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : ObjectNotFound: (C:\windows\syst....Xml.XmlElement:String) [Get-Content], ItemNotFoundException 
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand 

這裏是XML:

<?xml version="1.0"?> 
<Test> 
    <Test1> 
     <Test2> 
      <Filepath>"C:\Users\user\Desktop\a.xml"</Filepath> 
     </Test2> 
     <Test2> 
      <Filepath>"C:\Users\user\Desktop\b.xml"</Filepath> 
     </Test2> 
     <Test2> 
      <Filepath>"C:\Users\user\Desktop\c.xml"</Filepath> 
     </Test2> 
     <Test2> 
      <Filepath>"C:\Users\user\Desktop\e.xml"</Filepath> 
     </Test2> 
    </Test1> 
</Test> 

回答

2

$newxml包含XML節點,而不是字符串或FileInfo對象。 XML節點對象的字符串表示形式爲System.Xml.XmlElement,但當前工作目錄中不存在具有該名稱的文件(C:\windows\system32)。

你需要調用Get-Content<Filepath>子節點的值:

[xml]$xml1 = Get-Content $newxml.Filepath 
+0

因此,如何能我通過只有字符串? (每次不同的字符串) – Udi

+0

你真的看過我的回答嗎? –

+0

是的,我說過了,我需要用XML節點的字符串調用Get-Content: 我有幾個節點和幾個字符串。如果生病通過'#text'它會循環每次到相同的文本? – Udi