2009-11-30 35 views
7

HP ILO'yu URL, http://ilo-ip/xmldata?item=All kullanarak bağladığımda, bir XML dosyasını aşağıdaki biçimde döndürülüyor.Web'den XML dosyası nasıl okunur powershell

<?xml version="1.0" ?> 
- <RIMP> 
- <HSI> 
    <SPN>ProLiant DL385 G1</SPN> 
    <SBSN>ABCDEFG</SBSN> 
    <UUID>123456789</UUID> 
    </HSI> 
- <MP> 
    <ST>1</ST> 
    <PN>Integrated Lights-Out (iLO)</PN> 
    <FWRI>1.82</FWRI> 
    <HWRI>ASIC: 2</HWRI> 
    <SN>ILOABCDEFG</SN> 
    <UUID>ILO1234545</UUID> 
    </MP> 
    </RIMP> 

XML verisini web URL'sinden okumak için herhangi bir powershell komutu/komut dosyası var mı? sahip olduğu bir kez XML ile çalışma hakkında sizin daha fazla bilgi arıyorsanız Eğer

#Option 1  
$doc = New-Object System.Xml.XmlDocument 
$doc.Load("http://ilo-ip/xmldata?item=All") 

#Option 2 
[xml]$doc = (New-Object System.Net.WebClient).DownloadString("http://ilo-ip/xmldata?item=All") 


# Your XML will then be in the $doc and the names of the XML nodes can be used as 
# properties to access the values they hold. This short example shows how you would 
# access the value held in the SPN nodes from your sample XML 
Write-Host $doc.RIMP.HSI.SPN 

: Eğer böyle XmlDocument nesne içine xml yüklemek için yük yöntemini çağırın böylece

cevap

14

PowerShell .Net framework XmlDocument kullanır yüklendi Dr. Tobias Weltner's eBook, PowerShell.com, chapter 14, XML'yi kapsar.

+0

Cevabınız için teşekkür ederiz. Yüklenen kodu nasıl okurum? İnternette fazla yardım bulamadım. –

+1

XML, $ doc nesnesinde tutulacak ve böylece özellik gösterimi aracılığıyla ona erişebilirsiniz. Örneğin, Write-Host $ doc.RIMP.HSI.SPN Bu, konsola "ProLiant DL385 G1" yazacaktır. Yapabilecekleriniz, mülklerin bir listesini almak için Get-Member'e $ dok. $ doc | Get-Üye –

+0

Merhaba Alan, İstediğim gibi her iki şekilde xml yüklendiğinde bir İstisnım var. İstisna "Sunucu bir protokol ihlali gerçekleştirdi. Bölüm = ResponseStatusLine" ' –

8

Elbette. Web'den XML'i indirmek için .NET WebClient nesnesini kullanabilir ve daha sonra bir dizeyi XML gibi yorumlamak için [xml] türünü kullanabilirsiniz:

$url = "http://blogs.msdn.com/powershell/rss.xml" 
[xml]$xml = (new-object System.Net.WebClient).DownloadString($url) 
$xml.rss.channel | Foreach {$_.item} | 
    Where {[DateTime]$_.pubDate -gt (Get-Date).AddMonths(-1)} | 
    Format-Table Title