2009-11-30 12 views
7

का उपयोग कर वेब से XML फ़ाइल को कैसे पढ़ा जाए जब मैं URL का उपयोग करके अपने एचपी आईएलओ से कनेक्ट करता हूं, http://ilo-ip/xmldata?item=All यह नीचे प्रारूप में एक एक्सएमएल फ़ाइल लौटा रहा है।पावरहेल

<?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> 

क्या वेब URL से एक्सएमएल डेटा पढ़ने के लिए कोई शक्तिशक्ति कमांड/स्क्रिप्ट है?

उत्तर

14

PowerShell नेट ढांचे XmlDocument का उपयोग करता है तो आप इस तरह कोई XmlDocument ऑब्जेक्ट में xml लोड करने के लिए लोड विधि कह सकते हैं: एक्सएमएल के साथ काम कर एक बार यह है पर

#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 

यदि आपका अधिक जानकारी के लिए देख PowerShell.com पर Dr. Tobias Weltner's eBook को लोड किया गया है, chapter 14 एक्सएमएल को कवर करता है।

+0

आपके उत्तर के लिए धन्यवाद। लोड किए गए कोड को मैं कैसे पढ़ूं? मुझे इंटरनेट में बहुत मदद नहीं मिली। –

+1

एक्सएमएल $ डॉक ऑब्जेक्ट में आयोजित किया जाएगा ताकि आप इसे संपत्ति नोटेशन के माध्यम से एक्सेस कर सकें। उदाहरण के लिए लिखें-होस्ट $ doc.RIMP.HSI.SPN यह कंसोल पर "प्रोलायंट DL385 G1" लिख देगा। गुणों की सूची प्राप्त करने के लिए गेट-सदस्य को पाइप $ डॉक क्या कर सकते हैं $ डॉक्टर | गेट-सदस्य –

+0

हाय एलन, मुझे एक अपवाद मिला जब आपने वर्णित दोनों तरीकों से एक्सएमएल लोड किया। अपवाद है "सर्वर ने प्रोटोकॉल उल्लंघन किया है। सेक्शन = रेस्पॉन्सस्टैटसलाइन" ' –

8

निश्चित रूप से। आप वेब से डाउनलोड करने के लिए एक्सएमएल नेट WebClient वस्तु का उपयोग कर सकते हैं और फिर उपयोग करें [एक्सएमएल] तो जैसे XML के रूप में एक स्ट्रिंग व्याख्या करने के लिए टाइप करें:

$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