xml help

in this xml, what are FTP, SSHFTP, and Share considered/called, and how would I extract them with powershell? in other words, if I wanted to populate an array with type, Id, Name, where “type” is ftp, sshftp, or share, how would I get the type with powershell?

I’ve imported it with get-content as [xml] and I can get to $xml.settings.hosts.

from there, if I do $xml.settings.hosts.ftp, I see a chart (looks like an array, but get-member tells me it’s an xmlelement) with all the ftp IDs and Names, but I don’t actually see the label “ftp” anywhere. and the parentnode is “hosts,” not “ftp.”

<script src=“https://gist.github.com/Curtmcgirt/522c5b2224189dc365059c62d175d8aa.js”></script>

FTP here is a not a type, its an XML element even if its a type your purpose. You can use get_name() method which will give the element name.

convert your xml to PScutomerobject then you will get more flexibility to use it Example: (Easy way as I don't know how you going to use this xml file ) as below example below 3 PowerShell objects created $PSObjectftp,$PSObjectSSHFTP,$PSObjectShare

===========================================================================================

$Share=@()
$SSHFTP=@()
$FTP=@()

[xml]$xml=gc -path "d:\abc.xml"
$ftp+=$xml.GetElementsByTagName('FTP')
$SSHFTP+=$xml.GetElementsByTagName('SSHFTP')
$Share+=$xml.GetElementsByTagName('Share')

$PSObjectftp = New-Object PSObject
foreach ($Property in $ftp) {
$PSObjectftp | Add-Member NoteProperty $Property.id $Property.name
}

$PSObjectSSHFTP = New-Object PSObject
foreach ($Property in $SSHFTP) {
$PSObjectSSHFTP| Add-Member NoteProperty $Property.id $Property.name
}

$PSObjectShare = New-Object PSObject
foreach ($Property in $Share) {
$PSObjectShare | Add-Member NoteProperty $Property.id $Property.name
}

get_name() got the job done. I didn’t see that in the list of methods when I did get-member. i’m sure there’s a good reason for that. I see these.

GetAttribute
GetAttributeNode
GetElementsByTagName
GetEnumerator
GetHashCode
GetNamespaceOfPrefix
GetPrefixOfNamespace
GetType

 

do Get-Member with -Force