Import-Clixml
Hiermee importeert u een CLIXML-bestand en maakt u bijbehorende objecten in PowerShell.
Syntaxis
Import-Clixml
[-Path] <String[]>
[-IncludeTotalCount]
[-Skip <UInt64>]
[-First <UInt64>]
[<CommonParameters>]
Import-Clixml
-LiteralPath <String[]>
[-IncludeTotalCount]
[-Skip <UInt64>]
[-First <UInt64>]
[<CommonParameters>]
Description
Met de Import-Clixml
cmdlet worden objecten geïmporteerd die zijn geserialiseerd in een XML-bestand common language infrastructure (CLI). Een waardevol gebruik van Windows-computers is het importeren van Import-Clixml
referenties en beveiligde tekenreeksen die zijn geëxporteerd als beveiligde XML met behulp van Export-Clixml
.
Voorbeeld 2 laat zien hoe u Import-Clixml
een beveiligd referentieobject importeert.
De CLIXML-gegevens worden gedeserialiseerd naar PowerShell-objecten. De gedeserialiseerde objecten zijn echter geen live-objecten. Ze zijn een momentopname van de objecten op het moment van serialisatie. De gedeserialiseerde objecten bevatten eigenschappen, maar geen methoden.
De eigenschap TypeNames bevat de oorspronkelijke typenaam met voorvoegsel Deserialized
.
Voorbeeld 3 toont de eigenschap TypeNames van een gedeserialiseerd object.
Import-Clixml
gebruikt de byte-order-mark (BOM) om de coderingsindeling van het bestand te detecteren. Als het bestand geen bom heeft, wordt ervan uitgegaan dat de codering UTF8 is.
Zie Taalafhankelijkheid voor meer informatie over CLI.
Voorbeelden
Voorbeeld 1: Een geserialiseerd bestand importeren en een object opnieuw maken
In dit voorbeeld wordt de Export-Clixml
cmdlet gebruikt om een geserialiseerde kopie van de procesgegevens op te slaan die worden geretourneerd door Get-Process
. Import-Clixml
haalt de inhoud van het geserialiseerde bestand op en maakt een object opnieuw dat is opgeslagen in de $Processes
variabele.
Get-Process | Export-Clixml -Path .\pi.xml
$Processes = Import-Clixml -Path .\pi.xml
Voorbeeld 2: Een beveiligd referentieobject importeren
In dit voorbeeld, op basis van een referentie die u in de $Credential
variabele hebt opgeslagen door de Get-Credential
cmdlet uit te voeren, kunt u de Export-Clixml
cmdlet uitvoeren om de referentie op schijf op te slaan.
Belangrijk
Export-Clixml
exporteert alleen versleutelde referenties in Windows. Op niet-Windows-besturingssystemen, zoals macOS en Linux, worden referenties geëxporteerd in tekst zonder opmaak.
$Credxmlpath = Join-Path (Split-Path $Profile) TestScript.ps1.credential
$Credential | Export-Clixml $Credxmlpath
$Credxmlpath = Join-Path (Split-Path $Profile) TestScript.ps1.credential
$Credential = Import-Clixml $Credxmlpath
De Export-Clixml
cmdlet versleutelt referentieobjecten met behulp van de Windows Data Protection-API. De versleuteling zorgt ervoor dat alleen uw gebruikersaccount de inhoud van het referentieobject kan ontsleutelen. Het geëxporteerde CLIXML
bestand kan niet worden gebruikt op een andere computer of door een andere gebruiker.
In het voorbeeld wordt het bestand waarin de referentie is opgeslagen, weergegeven door TestScript.ps1.credential
. Vervang TestScript door de naam van het script waarmee u de referentie laadt.
U verzendt het referentieobject omlaag in de pijplijn en Export-Clixml
slaat het op in het pad, $Credxmlpath
dat u hebt opgegeven in de eerste opdracht.
Als u de referentie automatisch in uw script wilt importeren, voert u de laatste twee opdrachten uit. Voer deze opdracht uit Import-Clixml
om het beveiligde referentieobject in uw script te importeren. Met deze import wordt het risico van het weergeven van wachtwoorden zonder opmaak in uw script weggenomen.
Voorbeeld 3: De eigenschap TypeNames van een gedeserialiseerd object controleren
In dit voorbeeld ziet u hoe u een object importeert dat is opgeslagen als CLIXML-gegevens. De gegevens worden gedeserialiseerd in een PowerShell-object. Het gedeserialiseerde object is echter geen liveobject. Ze zijn een momentopname van de objecten op het moment van serialisatie. De gedeserialiseerde objecten bevatten eigenschappen, maar geen methoden.
$original = [pscustomobject] @{
Timestamp = Get-Date
Label = 'Meeting event'
}
$original | Add-Member -MemberType ScriptMethod -Name GetDisplay -Value {
'{0:yyyy-MM-dd HH:mm} {1}' -f $this.Timestamp, $this.Label
}
$original | Get-Member -MemberType ScriptMethod
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Label NoteProperty string Label=Meeting event
Timestamp NoteProperty System.DateTime Timestamp=1/31/2024 2:27:59 PM
GetDisplay ScriptMethod System.Object GetDisplay();
$original | Export-Clixml -Path event.clixml
$deserialized = Import-CliXml -Path event.clixml
$deserialized | Get-Member
TypeName: Deserialized.System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Label NoteProperty string Label=Meeting event
Timestamp NoteProperty System.DateTime Timestamp=1/31/2024 2:27:59 PM
Houd er rekening mee dat het type object in System.Management.Automation.PSCustomObject is, maar het type van het object is $deserialized
Deserialized.System.Management.Automation.PSCustomObject$original
. GetDisplay()
De methode ontbreekt ook in het gedeserialiseerde object.
Parameters
-First
Hiermee wordt alleen het opgegeven aantal objecten opgehaald. Voer het aantal objecten in dat moet worden opgehaald.
Type: | UInt64 |
Position: | Named |
Default value: | False |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-IncludeTotalCount
Rapporteert het totale aantal objecten in de gegevensset, gevolgd door de geselecteerde objecten. Als de cmdlet het totale aantal niet kan bepalen, wordt het totaalaantal onbekend weergegeven. Het gehele getal heeft een eigenschap Nauwkeurigheid die de betrouwbaarheid van de totale tellingswaarde aangeeft. De waarde van Nauwkeurigheid varieert van 0.0
tot 1.0
waar 0.0
betekent dat de cmdlet de objecten niet kon tellen, 1.0
betekent dat het aantal exact is en een waarde tussen 0.0
en 1.0
geeft een steeds betrouwbaardere schatting aan.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-LiteralPath
Hiermee geeft u het pad naar de XML-bestanden. In tegenstelling tot Path wordt de waarde van de Parameter LiteralPath precies gebruikt zoals deze is getypt. Er worden geen tekens geïnterpreteerd als jokertekens. Als het pad escapetekens bevat, plaatst u het tussen enkele aanhalingstekens. Enkele aanhalingstekens geven PowerShell aan dat er geen tekens als escapereeksen moeten worden geïnterpreteerd.
Type: | String[] |
Aliassen: | PSPath, LP |
Position: | Named |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
-Path
Hiermee geeft u het pad naar de XML-bestanden.
Type: | String[] |
Position: | 0 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
-Skip
Hiermee wordt het opgegeven aantal objecten genegeerd en worden vervolgens de resterende objecten opgehaald. Voer het aantal objecten in dat u wilt overslaan.
Type: | UInt64 |
Position: | Named |
Default value: | False |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
Invoerwaarden
U kunt een tekenreeks met een pad naar deze cmdlet doorsluisen.
Uitvoerwaarden
Met deze cmdlet worden objecten geretourneerd die zijn gedeserialiseerd uit de opgeslagen XML-bestanden.
Notities
Wanneer u meerdere waarden voor een parameter opgeeft, gebruikt u komma's om de waarden te scheiden. Bijvoorbeeld: <parameter-name> <value1>, <value2>
.