Taher Shaker
Taher Shaker

Reputation: 25

Import-Clixml will read PSObject values as #text and not include the real data

I am working on a tool and this tool will gather data from the customer environment and will then data these gathered data into PSCustomObjects then will dump the Object into an XML file using the Export-Clixml.

The Problem is in some Objects the Export-Clixml will dump the data and when using the Import-Clixml these object will have the value of #text instead the real value.

For example:

I am getting the Certificate info from the NSX Manager using PowerNsx and then add it to a PSCustomObject

$NsxManagerCertificate = Get-NsxManagerCertificate
$TestObject = [PSCustomObject] {
     NsxManagerCertificate = $NsxManagerCertificate
}
Export-Clixml -InputObject $TestObject -Path E:\TestDump.xml

If I checked the variables output you will get the real data:

C:\Users\Administrator> $NsxManagerCertificate


subjectCn            : CGSR-NSX.nfv.gss
issuerCn             : CGSR-NSX.nfv.gss
version              : 3
serialNumber         : 49044a14
signatureAlgo        : SHA256WITHRSA
signature            : 0b 5d c7 cb ab 58 0d 9a ff 03 e9 0a e5 91 61 64 16 22 c7 c2 21 28 50 f2 ad 02 21 e9 48 4e f6 72 d3 91 f1 19 3e 3e 25 3a fd 28 ab 81 e2 6c d1 35 51 dc 13 c4 22 f3 cb 53 db 6d c5 0c fe ff 6b 0b cd fc 17 d2 d5 bd d0 b8 13 e2 
                       53 e7 2b 1e 8a 84 ee 54 f4 dc b3 7d 1a 70 4b 71 12 42 6b 2c b5 1c 65 85 94 9d f5 00 7c 28 0f 6f 5b 15 b4 fe 67 e2 fa 4c 10 6c 31 a4 4a df 48 f2 c1 a1 66 e5 d2 0a 80 3e f4 02 c3 75 95 4c e0 d8 5b 90 74 9a 85 56 b4 f2 9e 2b 
                       c3 c7 f4 71 fa 43 b2 c2 1e 65 a6 0b 8b eb fc 39 77 bd 04 39 b4 99 64 81 d5 0d 81 88 a9 33 63 72 9f a4 b3 d7 c5 33 97 14 d5 be 3f 8e a9 de fd 0f 1c 3d 63 fd 0c ff e2 12 03 59 53 f1 a5 96 cb a6 03 23 4b ef 71 38 0e 96 fb 85 
                       4d 4c a8 8b 48 50 a6 e0 ff c6 f9 25 b5 8f d4 d2 0c 82 4c ff 9f e3 ef 9a e9 44 57 c5 3c 06 b8 b5 f9 2e
notBefore            : 1527008785000
notAfter             : 1842368785000
issuer               : CN=CGSR-NSX.nfv.gss,OU=NSX,O=VMware Inc.,L=Palo Alto,ST=CA,C=US
subject              : CN=CGSR-NSX.nfv.gss,OU=NSX,O=VMware Inc.,L=Palo Alto,ST=CA,C=US
publicKeyAlgo        : RSA
publicKeyLength      : 2048
rsaPublicKeyModulus  : 00 a5 7d 07 71 38 f5 39 fd 64 61 15 4a a6 ec 2a 51 d6 1b 49 08 6b 37 74 ae 8e 5e 21 db a5 48 73 e1 45 5b 02 5c 60 0c 9c 49 77 45 a4 43 f9 2b 05 a8 02 3b cb e7 17 89 18 79 38 5b a0 1d 77 3b c3 90 3d 39 8c 5e 25 90 80 d0 a0 
                       df f1 32 52 4c 46 8b 86 1f 67 5b 1a ee 56 3e d0 bf cc 45 5d 7a b8 f7 65 d0 4b 92 94 9f 1f 22 0d ae a6 d2 cb e6 00 92 f6 41 1b 52 4b 1d ba dc 24 04 e3 f5 2c c5 26 f0 d0 2c 02 b4 6b c2 f0 12 e7 20 c5 fe 4f d2 8f 12 8d 2d 2c 
                       3e 8a cb 63 f7 d9 37 0c fd 43 53 e3 14 cd 51 b5 68 0d e7 59 ad a3 8e 28 53 72 d1 97 65 f2 bf fb 6c 78 63 d8 57 fe 8f 6b 89 53 ac a2 0c 0d 83 bd be d5 14 7b 4c cf 15 22 60 17 1e 1f f7 28 7f 64 ac 28 a7 26 d3 bc c7 5a c0 42 
                       e6 34 00 57 62 99 6a 0c 4c 54 a4 6e b7 b8 73 43 1d 65 f7 b8 cd fc 99 75 8c 49 f1 0f 72 70 1b 4c 47 0e 7b
rsaPublicKeyExponent : 10001
sha1Hash             : 05:69:31:14:c9:41:0d:30:d6:52:e6:83:e8:6a:56:ad:1e:84:a5:37
md5Hash              : 1c:cb:26:9b:2b:b5:09:6f:b1:cd:91:00:c3:f7:34:9f
isCa                 : false
isValid              : true


C:\Users\Administrator> $TestObject.NsxManagerCertificate


subjectCn            : CGSR-NSX.nfv.gss
issuerCn             : CGSR-NSX.nfv.gss
version              : 3
serialNumber         : 49044a14
signatureAlgo        : SHA256WITHRSA
signature            : 0b 5d c7 cb ab 58 0d 9a ff 03 e9 0a e5 91 61 64 16 22 c7 c2 21 28 50 f2 ad 02 21 e9 48 4e f6 72 d3 91 f1 19 3e 3e 25 3a fd 28 ab 81 e2 6c d1 35 51 dc 13 c4 22 f3 cb 53 db 6d c5 0c fe ff 6b 0b cd fc 17 d2 d5 bd d0 b8 13 e2 
                       53 e7 2b 1e 8a 84 ee 54 f4 dc b3 7d 1a 70 4b 71 12 42 6b 2c b5 1c 65 85 94 9d f5 00 7c 28 0f 6f 5b 15 b4 fe 67 e2 fa 4c 10 6c 31 a4 4a df 48 f2 c1 a1 66 e5 d2 0a 80 3e f4 02 c3 75 95 4c e0 d8 5b 90 74 9a 85 56 b4 f2 9e 2b 
                       c3 c7 f4 71 fa 43 b2 c2 1e 65 a6 0b 8b eb fc 39 77 bd 04 39 b4 99 64 81 d5 0d 81 88 a9 33 63 72 9f a4 b3 d7 c5 33 97 14 d5 be 3f 8e a9 de fd 0f 1c 3d 63 fd 0c ff e2 12 03 59 53 f1 a5 96 cb a6 03 23 4b ef 71 38 0e 96 fb 85 
                       4d 4c a8 8b 48 50 a6 e0 ff c6 f9 25 b5 8f d4 d2 0c 82 4c ff 9f e3 ef 9a e9 44 57 c5 3c 06 b8 b5 f9 2e
notBefore            : 1527008785000
notAfter             : 1842368785000
issuer               : CN=CGSR-NSX.nfv.gss,OU=NSX,O=VMware Inc.,L=Palo Alto,ST=CA,C=US
subject              : CN=CGSR-NSX.nfv.gss,OU=NSX,O=VMware Inc.,L=Palo Alto,ST=CA,C=US
publicKeyAlgo        : RSA
publicKeyLength      : 2048
rsaPublicKeyModulus  : 00 a5 7d 07 71 38 f5 39 fd 64 61 15 4a a6 ec 2a 51 d6 1b 49 08 6b 37 74 ae 8e 5e 21 db a5 48 73 e1 45 5b 02 5c 60 0c 9c 49 77 45 a4 43 f9 2b 05 a8 02 3b cb e7 17 89 18 79 38 5b a0 1d 77 3b c3 90 3d 39 8c 5e 25 90 80 d0 a0 
                       df f1 32 52 4c 46 8b 86 1f 67 5b 1a ee 56 3e d0 bf cc 45 5d 7a b8 f7 65 d0 4b 92 94 9f 1f 22 0d ae a6 d2 cb e6 00 92 f6 41 1b 52 4b 1d ba dc 24 04 e3 f5 2c c5 26 f0 d0 2c 02 b4 6b c2 f0 12 e7 20 c5 fe 4f d2 8f 12 8d 2d 2c 
                       3e 8a cb 63 f7 d9 37 0c fd 43 53 e3 14 cd 51 b5 68 0d e7 59 ad a3 8e 28 53 72 d1 97 65 f2 bf fb 6c 78 63 d8 57 fe 8f 6b 89 53 ac a2 0c 0d 83 bd be d5 14 7b 4c cf 15 22 60 17 1e 1f f7 28 7f 64 ac 28 a7 26 d3 bc c7 5a c0 42 
                       e6 34 00 57 62 99 6a 0c 4c 54 a4 6e b7 b8 73 43 1d 65 f7 b8 cd fc 99 75 8c 49 f1 0f 72 70 1b 4c 47 0e 7b
rsaPublicKeyExponent : 10001
sha1Hash             : 05:69:31:14:c9:41:0d:30:d6:52:e6:83:e8:6a:56:ad:1e:84:a5:37
md5Hash              : 1c:cb:26:9b:2b:b5:09:6f:b1:cd:91:00:c3:f7:34:9f
isCa                 : false
isValid              : true

However if you check the xml file you will get #text instead of the read data

<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
  <Obj RefId="0">
    <TN RefId="0">
      <T>System.Management.Automation.PSCustomObject</T>
      <T>System.Object</T>
    </TN>
    <MS>
      <Obj N="NsxManagerCertificate" RefId="1">
        <TN RefId="1">
          <T>System.Xml.XmlElement</T>
          <T>System.Xml.XmlLinkedNode</T>
          <T>System.Xml.XmlNode</T>
          <T>System.Object</T>
        </TN>
        <IE>
          <Obj RefId="2">
            <TNRef RefId="1" />
            <IE>
              <Obj RefId="3">
                <TN RefId="2">
                  <T>System.Xml.XmlText</T>
                  <T>System.Xml.XmlCharacterData</T>
                  <T>System.Xml.XmlLinkedNode</T>
                  <T>System.Xml.XmlNode</T>
                  <T>System.Object</T>
                </TN>
                <ToString>#text</ToString>
              </Obj>
            </IE>
            <Props>
              <S N="#text">CGSR-NSX.nfv.gss</S>
            </Props>
          </Obj>
          <Obj RefId="4">
            <TNRef RefId="1" />
            <IE>
              <Obj RefId="5">
                <TNRef RefId="2" />
                <ToString>#text</ToString>
              </Obj>
            </IE>
            <Props>
              <S N="#text">CGSR-NSX.nfv.gss</S>
            </Props>
          </Obj>
          <Obj RefId="6">
            <TNRef RefId="1" />
            <IE>
              <Obj RefId="7">
                <TNRef RefId="2" />
                <ToString>#text</ToString>
              </Obj>
            </IE>
            <Props>
              <S N="#text">3</S>
            </Props>
          </Obj>
          <Obj RefId="8">
            <TNRef RefId="1" />
            <IE>
              <Obj RefId="9">
                <TNRef RefId="2" />
                <ToString>#text</ToString>
              </Obj>
            </IE>
            <Props>
              <S N="#text">49044a14</S>
            </Props>
          </Obj>
          <Obj RefId="10">
            <TNRef RefId="1" />
            <IE>
              <Obj RefId="11">
                <TNRef RefId="2" />
                <ToString>#text</ToString>
              </Obj>
            </IE>
            <Props>
              <S N="#text">SHA256WITHRSA</S>
            </Props>
          </Obj>
          <Obj RefId="12">
            <TNRef RefId="1" />
            <IE>
              <Obj RefId="13">
                <TNRef RefId="2" />
                <ToString>#text</ToString>
              </Obj>
            </IE>
            <Props>
              <S N="#text">0b 5d c7 cb ab 58 0d 9a ff 03 e9 0a e5 91 61 64 16 22 c7 c2 21 28 50 f2 ad 02 21 e9 48 4e f6 72 d3 91 f1 19 3e 3e 25 3a fd 28 ab 81 e2 6c d1 35 51 dc 13 c4 22 f3 cb 53 db 6d c5 0c fe ff 6b 0b cd fc 17 d2 d5 bd d0 b8 13 e2 53 e7 2b 1e 8a 84 ee 54 f4 dc b3 7d 1a 70 4b 71 12 42 6b 2c b5 1c 65 85 94 9d f5 00 7c 28 0f 6f 5b 15 b4 fe 67 e2 fa 4c 10 6c 31 a4 4a df 48 f2 c1 a1 66 e5 d2 0a 80 3e f4 02 c3 75 95 4c e0 d8 5b 90 74 9a 85 56 b4 f2 9e 2b c3 c7 f4 71 fa 43 b2 c2 1e 65 a6 0b 8b eb fc 39 77 bd 04 39 b4 99 64 81 d5 0d 81 88 a9 33 63 72 9f a4 b3 d7 c5 33 97 14 d5 be 3f 8e a9 de fd 0f 1c 3d 63 fd 0c ff e2 12 03 59 53 f1 a5 96 cb a6 03 23 4b ef 71 38 0e 96 fb 85 4d 4c a8 8b 48 50 a6 e0 ff c6 f9 25 b5 8f d4 d2 0c 82 4c ff 9f e3 ef 9a e9 44 57 c5 3c 06 b8 b5 f9 2e</S>
            </Props>
          </Obj>
          <Obj RefId="14">
            <TNRef RefId="1" />
            <IE>
              <Obj RefId="15">
                <TNRef RefId="2" />
                <ToString>#text</ToString>
              </Obj>
            </IE>
            <Props>
              <S N="#text">1527008785000</S>
            </Props>
          </Obj>
          <Obj RefId="16">
            <TNRef RefId="1" />
            <IE>
              <Obj RefId="17">
                <TNRef RefId="2" />
                <ToString>#text</ToString>
              </Obj>
            </IE>
            <Props>
              <S N="#text">1842368785000</S>
            </Props>
          </Obj>
          <Obj RefId="18">
            <TNRef RefId="1" />
            <IE>
              <Obj RefId="19">
                <TNRef RefId="2" />
                <ToString>#text</ToString>
              </Obj>
            </IE>
            <Props>
              <S N="#text">CN=CGSR-NSX.nfv.gss,OU=NSX,O=VMware Inc.,L=Palo Alto,ST=CA,C=US</S>
            </Props>
          </Obj>
          <Obj RefId="20">
            <TNRef RefId="1" />
            <IE>
              <Obj RefId="21">
                <TNRef RefId="2" />
                <ToString>#text</ToString>
              </Obj>
            </IE>
            <Props>
              <S N="#text">CN=CGSR-NSX.nfv.gss,OU=NSX,O=VMware Inc.,L=Palo Alto,ST=CA,C=US</S>
            </Props>
          </Obj>
          <Obj RefId="22">
            <TNRef RefId="1" />
            <IE>
              <Obj RefId="23">
                <TNRef RefId="2" />
                <ToString>#text</ToString>
              </Obj>
            </IE>
            <Props>
              <S N="#text">RSA</S>
            </Props>
          </Obj>
          <Obj RefId="24">
            <TNRef RefId="1" />
            <IE>
              <Obj RefId="25">
                <TNRef RefId="2" />
                <ToString>#text</ToString>
              </Obj>
            </IE>
            <Props>
              <S N="#text">2048</S>
            </Props>
          </Obj>
          <Obj RefId="26">
            <TNRef RefId="1" />
            <IE>
              <Obj RefId="27">
                <TNRef RefId="2" />
                <ToString>#text</ToString>
              </Obj>
            </IE>
            <Props>
              <S N="#text">00 a5 7d 07 71 38 f5 39 fd 64 61 15 4a a6 ec 2a 51 d6 1b 49 08 6b 37 74 ae 8e 5e 21 db a5 48 73 e1 45 5b 02 5c 60 0c 9c 49 77 45 a4 43 f9 2b 05 a8 02 3b cb e7 17 89 18 79 38 5b a0 1d 77 3b c3 90 3d 39 8c 5e 25 90 80 d0 a0 df f1 32 52 4c 46 8b 86 1f 67 5b 1a ee 56 3e d0 bf cc 45 5d 7a b8 f7 65 d0 4b 92 94 9f 1f 22 0d ae a6 d2 cb e6 00 92 f6 41 1b 52 4b 1d ba dc 24 04 e3 f5 2c c5 26 f0 d0 2c 02 b4 6b c2 f0 12 e7 20 c5 fe 4f d2 8f 12 8d 2d 2c 3e 8a cb 63 f7 d9 37 0c fd 43 53 e3 14 cd 51 b5 68 0d e7 59 ad a3 8e 28 53 72 d1 97 65 f2 bf fb 6c 78 63 d8 57 fe 8f 6b 89 53 ac a2 0c 0d 83 bd be d5 14 7b 4c cf 15 22 60 17 1e 1f f7 28 7f 64 ac 28 a7 26 d3 bc c7 5a c0 42 e6 34 00 57 62 99 6a 0c 4c 54 a4 6e b7 b8 73 43 1d 65 f7 b8 cd fc 99 75 8c 49 f1 0f 72 70 1b 4c 47 0e 7b</S>
            </Props>
          </Obj>
          <Obj RefId="28">
            <TNRef RefId="1" />
            <IE>
              <Obj RefId="29">
                <TNRef RefId="2" />
                <ToString>#text</ToString>
              </Obj>
            </IE>
            <Props>
              <S N="#text">10001</S>
            </Props>
          </Obj>
          <Obj RefId="30">
            <TNRef RefId="1" />
            <IE>
              <Obj RefId="31">
                <TNRef RefId="2" />
                <ToString>#text</ToString>
              </Obj>
            </IE>
            <Props>
              <S N="#text">05:69:31:14:c9:41:0d:30:d6:52:e6:83:e8:6a:56:ad:1e:84:a5:37</S>
            </Props>
          </Obj>
          <Obj RefId="32">
            <TNRef RefId="1" />
            <IE>
              <Obj RefId="33">
                <TNRef RefId="2" />
                <ToString>#text</ToString>
              </Obj>
            </IE>
            <Props>
              <S N="#text">1c:cb:26:9b:2b:b5:09:6f:b1:cd:91:00:c3:f7:34:9f</S>
            </Props>
          </Obj>
          <Obj RefId="34">
            <TNRef RefId="1" />
            <IE>
              <Obj RefId="35">
                <TNRef RefId="2" />
                <ToString>#text</ToString>
              </Obj>
            </IE>
            <Props>
              <S N="#text">false</S>
            </Props>
          </Obj>
          <Obj RefId="36">
            <TNRef RefId="1" />
            <IE>
              <Obj RefId="37">
                <TNRef RefId="2" />
                <ToString>#text</ToString>
              </Obj>
            </IE>
            <Props>
              <S N="#text">true</S>
            </Props>
          </Obj>
        </IE>
        <Props>
          <S N="subjectCn">CGSR-NSX.nfv.gss</S>
          <S N="issuerCn">CGSR-NSX.nfv.gss</S>
          <S N="version">3</S>
          <S N="serialNumber">49044a14</S>
          <S N="signatureAlgo">SHA256WITHRSA</S>
          <S N="signature">0b 5d c7 cb ab 58 0d 9a ff 03 e9 0a e5 91 61 64 16 22 c7 c2 21 28 50 f2 ad 02 21 e9 48 4e f6 72 d3 91 f1 19 3e 3e 25 3a fd 28 ab 81 e2 6c d1 35 51 dc 13 c4 22 f3 cb 53 db 6d c5 0c fe ff 6b 0b cd fc 17 d2 d5 bd d0 b8 13 e2 53 e7 2b 1e 8a 84 ee 54 f4 dc b3 7d 1a 70 4b 71 12 42 6b 2c b5 1c 65 85 94 9d f5 00 7c 28 0f 6f 5b 15 b4 fe 67 e2 fa 4c 10 6c 31 a4 4a df 48 f2 c1 a1 66 e5 d2 0a 80 3e f4 02 c3 75 95 4c e0 d8 5b 90 74 9a 85 56 b4 f2 9e 2b c3 c7 f4 71 fa 43 b2 c2 1e 65 a6 0b 8b eb fc 39 77 bd 04 39 b4 99 64 81 d5 0d 81 88 a9 33 63 72 9f a4 b3 d7 c5 33 97 14 d5 be 3f 8e a9 de fd 0f 1c 3d 63 fd 0c ff e2 12 03 59 53 f1 a5 96 cb a6 03 23 4b ef 71 38 0e 96 fb 85 4d 4c a8 8b 48 50 a6 e0 ff c6 f9 25 b5 8f d4 d2 0c 82 4c ff 9f e3 ef 9a e9 44 57 c5 3c 06 b8 b5 f9 2e</S>
          <S N="notBefore">1527008785000</S>
          <S N="notAfter">1842368785000</S>
          <S N="issuer">CN=CGSR-NSX.nfv.gss,OU=NSX,O=VMware Inc.,L=Palo Alto,ST=CA,C=US</S>
          <S N="subject">CN=CGSR-NSX.nfv.gss,OU=NSX,O=VMware Inc.,L=Palo Alto,ST=CA,C=US</S>
          <S N="publicKeyAlgo">RSA</S>
          <S N="publicKeyLength">2048</S>
          <S N="rsaPublicKeyModulus">00 a5 7d 07 71 38 f5 39 fd 64 61 15 4a a6 ec 2a 51 d6 1b 49 08 6b 37 74 ae 8e 5e 21 db a5 48 73 e1 45 5b 02 5c 60 0c 9c 49 77 45 a4 43 f9 2b 05 a8 02 3b cb e7 17 89 18 79 38 5b a0 1d 77 3b c3 90 3d 39 8c 5e 25 90 80 d0 a0 df f1 32 52 4c 46 8b 86 1f 67 5b 1a ee 56 3e d0 bf cc 45 5d 7a b8 f7 65 d0 4b 92 94 9f 1f 22 0d ae a6 d2 cb e6 00 92 f6 41 1b 52 4b 1d ba dc 24 04 e3 f5 2c c5 26 f0 d0 2c 02 b4 6b c2 f0 12 e7 20 c5 fe 4f d2 8f 12 8d 2d 2c 3e 8a cb 63 f7 d9 37 0c fd 43 53 e3 14 cd 51 b5 68 0d e7 59 ad a3 8e 28 53 72 d1 97 65 f2 bf fb 6c 78 63 d8 57 fe 8f 6b 89 53 ac a2 0c 0d 83 bd be d5 14 7b 4c cf 15 22 60 17 1e 1f f7 28 7f 64 ac 28 a7 26 d3 bc c7 5a c0 42 e6 34 00 57 62 99 6a 0c 4c 54 a4 6e b7 b8 73 43 1d 65 f7 b8 cd fc 99 75 8c 49 f1 0f 72 70 1b 4c 47 0e 7b</S>
          <S N="rsaPublicKeyExponent">10001</S>
          <S N="sha1Hash">05:69:31:14:c9:41:0d:30:d6:52:e6:83:e8:6a:56:ad:1e:84:a5:37</S>
          <S N="md5Hash">1c:cb:26:9b:2b:b5:09:6f:b1:cd:91:00:c3:f7:34:9f</S>
          <S N="isCa">false</S>
          <S N="isValid">true</S>
        </Props>
      </Obj>
    </MS>
  </Obj>
</Objs>

Then use the Import-Clixml to get the data and you will find the values are #text (I think this is reading only the #text values in each object)

C:\Users\Administrator> $TestImport = Import-Clixml -Path E:\TestDump.xml

 C:\Users\Administrator> $TestImport

NsxManagerCertificate          
---------------------          
{#text, #text, #text, #text...}



 C:\Users\Administrator> $TestImport.NsxManagerCertificate
#text
#text
#text
#text
#text
#text
#text
#text
#text
#text
#text
#text
#text
#text
#text
#text
#text
#text

Upvotes: 1

Views: 281

Answers (1)

briantist
briantist

Reputation: 47832

Export-Clixml has a -Depth parameter, which , unfortunately defaults to 2.

Since your top object is level 1, and your NsxmanagerCertificate is level 2, it seems that you may need to increase that value!

Export-Clixml -InputObject $TestObject -Path E:\TestDump.xml -Depth 10

You can play around with the number (3 might be fine for you) or just throw caution to the wind and go big with it.

Upvotes: 1

Related Questions