Majd a 1.9.10 Objektumok mentése, visszatöltése fejezetben látni fogjuk, hogyan lehet a maga legteljesebb formájában elmenteni objektumokat fájlba az Export-CLIXML cmdlettel. De azt is látni fogjuk, hogy az eléggé nagyméretű fájlokat generál. Van többfajta köztes lehetőség az objektumok információtartalmának valamilyen szöveges formába konvertálására.
Az első ilyen a lehetőség az előző fejezet végén látható JSON formátum. A másik az XML adattá való konvertálás. Ezzel viszonylag bőséges információ megőrződik az eredeti objektumból, de azért nem annyira sok, mint az Export-CLIXML esetében. Nézzünk rá példákat:
PS C:\> Get-Item C:\PSKönyv\Mégújabb.txt | ConvertTo-Xml
xml Objects
--- -------
version="1.0" Objects
Ebből persze nem látjuk még a szöveges információ-halmazt, mert a PowerShell az XML-t önálló objektumtípusként kezeli, de azért így is belenézhetünk:
PS C:\> (Get-Item C:\PSKönyv\Mégújabb.txt | ConvertTo-Xml).objects.object.prope
rty
Name Type #text
---- ---- -----
PSPath System.String Microsoft.PowerShell.C...
PSParentPath System.String Microsoft.PowerShell.C...
PSChildName System.String Mégújabb.txt
PSDrive System.Management.Auto... C
PSProvider System.Management.Auto... Microsoft.PowerShell.C...
PSIsContainer System.Boolean False
VersionInfo System.Diagnostics.Fil... File: C:\P...
BaseName System.String Mégújabb
Mode System.String -a---
Name System.String Mégújabb.txt
Length System.Int64 0
DirectoryName System.String C:\PSKönyv
Directory System.IO.DirectoryInfo C:\PSKönyv
IsReadOnly System.Boolean False
Exists System.Boolean True
FullName System.String C:\PSKönyv\Mégújabb.txt
Extension System.String .txt
CreationTime System.DateTime 2014.06.30. 20:49:32
CreationTimeUtc System.DateTime 2014.06.30. 18:49:32
LastAccessTime System.DateTime 2014.06.30. 20:49:32
LastAccessTimeUtc System.DateTime 2014.06.30. 18:49:32
LastWriteTime System.DateTime 2014.06.30. 20:49:32
LastWriteTimeUtc System.DateTime 2014.06.30. 18:49:32
Attributes System.IO.FileAttributes Archive
Látható, hogy egy fájl XMLesített változatában az Objects.Object.Property tulajdonsághierarchiában ott szunnyadnak az eredeti objektum legfontosabb tulajdonságai. De nézzük a szép XML szöveget a maga valójában:
PS C:\> (Get-Item C:\PSKönyv\Mégújabb.txt | ConvertTo-Xml).Save([console]::Out)
<?xml version="1.0" encoding="ibm852"?>
<Objects>
<Object Type="System.IO.FileInfo">
<Property Name="PSPath" Type="System.String">Microsoft.PowerShell.Core\File
System::C:\PSKönyv\Mégújabb.txt</Property>
<Property Name="PSParentPath" Type="System.String">Microsoft.PowerShell.Cor
e\FileSystem::C:\PSKönyv</Property>
<Property Name="PSChildName" Type="System.String">Mégújabb.txt</Property>
<Property Name="PSDrive" Type="System.Management.Automation.PSDriveInfo">C<
/Property>
<Property Name="PSProvider" Type="System.Management.Automation.ProviderInfo
">Microsoft.PowerShell.Core\FileSystem</Property>
<Property Name="PSIsContainer" Type="System.Boolean">False</Property>
<Property Name="VersionInfo" Type="System.Diagnostics.FileVersionInfo">File
: C:\PSKönyv\Mégújabb.txt
InternalName:
OriginalFilename:
FileVersion:
FileDescription:
Product:
ProductVersion:
Debug: False
Patched: False
PreRelease: False
PrivateBuild: False
SpecialBuild: False
Language:
</Property>
<Property Name="BaseName" Type="System.String">Mégújabb</Property>
<Property Name="Mode" Type="System.String">-a---</Property>
<Property Name="Name" Type="System.String">Mégújabb.txt</Property>
<Property Name="Length" Type="System.Int64">0</Property>
<Property Name="DirectoryName" Type="System.String">C:\PSKönyv</Property>
<Property Name="Directory" Type="System.IO.DirectoryInfo">C:\PSKönyv</Prope
rty>
<Property Name="IsReadOnly" Type="System.Boolean">False</Property>
<Property Name="Exists" Type="System.Boolean">True</Property>
<Property Name="FullName" Type="System.String">C:\PSKönyv\Mégújabb.txt</Pro
perty>
<Property Name="Extension" Type="System.String">.txt</Property>
<Property Name="CreationTime" Type="System.DateTime">2014.06.30. 20:49:32</
Property>
<Property Name="CreationTimeUtc" Type="System.DateTime">2014.06.30. 18:49:3
2</Property>
<Property Name="LastAccessTime" Type="System.DateTime">2014.06.30. 20:49:32
</Property>
<Property Name="LastAccessTimeUtc" Type="System.DateTime">2014.06.30. 18:49
:32</Property>
<Property Name="LastWriteTime" Type="System.DateTime">2014.06.30. 20:49:32<
/Property>
<Property Name="LastWriteTimeUtc" Type="System.DateTime">2014.06.30. 18:49:
32</Property>
<Property Name="Attributes" Type="System.IO.FileAttributes">Archive</Proper
ty>
</Object>
</Objects>
Megkaptam volna az XML szöveget az OuterXML tulajdonság kiolvasásával is, csak az nem ilyen szépen formázott, mint a Save metódus kimenete.
Másik gyakran alkalmazott módszer, hogy JSON (JavaScript Object Notation) formátumban tároljuk az objektumokat. A koncepció nagyon hasonló az XML adattároláshoz, csak itt a tag-ek kezelése sokkal tömörebb, kisebb lesz a fájl vagy szöveg, ahogy ezt az előző fejezetben is láttuk.