Delen via


Import-Clixml

Importeert een CLIXML-bestand en maakt bijbehorende objecten in PowerShell.

Syntax

Import-Clixml
      [-Path] <String[]>
      [-IncludeTotalCount]
      [-Skip <UInt64>]
      [-First <UInt64>]
      [<CommonParameters>]
Import-Clixml
      -LiteralPath <String[]>
      [-IncludeTotalCount]
      [-Skip <UInt64>]
      [-First <UInt64>]
      [<CommonParameters>]

Description

De Import-Clixml cmdlet importeert objecten die zijn geserialiseerd in een COMMON Language Infrastructure (CLI) XML-bestand. Een waardevol gebruik van op 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 weer gedeserialiseerd in 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, voorafgegaan door 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 stuklijst 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 op te slaan van de procesgegevens 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 kunt u, op basis van een referentie die u hebt opgeslagen in de $Credential variabele door de Get-Credential cmdlet uit te voeren, 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 als 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, vertegenwoordigd door TestScript.ps1.credential. Vervang TestScript door de naam van het script waarmee u de referentie laadt.

U verzendt het referentieobject in de pijplijn naar Export-Clixmlen slaat het op in het pad, $Credxmlpath, dat u in de eerste opdracht hebt opgegeven.

Als u de referentie automatisch wilt importeren in uw script, voert u de laatste twee opdrachten uit. Voer uit Import-Clixml om het beveiligde referentieobject in uw script te importeren. Met deze import elimineert u het risico dat wachtwoorden zonder opmaak in uw script worden weergegeven.

Voorbeeld 3: de eigenschap TypeNames van een gedeserialiseerd object inspecteren

In dit voorbeeld ziet u het importeren van een object dat is opgeslagen als CLIXML-gegevens. De gegevens worden weer gedeserialiseerd in een PowerShell-object. Het gedeserialiseerde object is echter geen live-object. 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 van het object in $originalSystem.Management.Automation.PSCustomObject is, maar het type van het object in $deserialized is Deserialized.System.Management.Automation.PSCustomObject. 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
Required:False
Accept pipeline input:False
Accept wildcard characters: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 Onbekend totaal aantal 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 dat een waarde tussen 0.0 en 1.0 een steeds betrouwbaardere schatting aangeeft.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-LiteralPath

Hiermee geeft u het pad naar de XML-bestanden. In tegenstelling tot Path wordt de waarde van de parameter LiteralPath exact gebruikt zoals deze wordt getypt. Er worden geen tekens geïnterpreteerd als jokertekens. Als het pad escapetekens bevat, plaatst u het tussen enkele aanhalingstekens. Enkele aanhalingstekens vertellen PowerShell dat geen tekens als escape-reeksen worden geïnterpreteerd.

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Path

Hiermee geeft u het pad naar de XML-bestanden.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Skip

Hiermee wordt het opgegeven aantal objecten genegeerd en worden vervolgens de resterende objecten opgehaald. Voer het aantal objecten in dat moet worden overgeslagen.

Type:UInt64
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Invoerwaarden

String

U kunt een tekenreeks met een pad naar deze cmdlet doorsnijden.

Uitvoerwaarden

PSObject

Deze cmdlet retourneert objecten 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>.