Delen via


Import-Clixml

Hiermee importeert u een CLIXML-bestand en maakt u bijbehorende objecten in PowerShell.

Syntaxis

ByPath (Standaard)

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

ByLiteralPath

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 van Common Language Infrastructure (CLI). Een waardevol gebruik van Import-Clixml op Windows-computers is het importeren van referenties en beveiligde tekenreeksen die zijn geëxporteerd als beveiligde XML met behulp van Export-Clixml. voorbeeld 2 laat zien hoe u Import-Clixml gebruikt om een beveiligd referentieobject te importeren.

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 voorafgegaan door Deserialized. voorbeeld 3 de eigenschap TypeNames van een gedeserialiseerd object weergeven.

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 Taalafhankelijkheidvoor meer informatie over CLI.

Voorbeelden

Voorbeeld 1: Een geserialiseerd bestand importeren en een object opnieuw maken

In dit voorbeeld wordt de cmdlet Export-Clixml gebruikt om een geserialiseerde kopie van de procesgegevens op te slaan die worden geretourneerd door Get-Process. Import-Clixml de inhoud van het geserialiseerde bestand ophaalt en een object maakt dat is opgeslagen in de variabele $Processes.

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 hebt opgeslagen in de $Credential variabele 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 alleen versleutelde referenties exporteert 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, vertegenwoordigd 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 naar Export-Clixmlen 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 Import-Clixml uit 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

Het type object in $original is System.Management.Automation.PSCustomObject, maar het type object in $deserialized is Deserialized.System.Management.Automation.PSCustomObject. De methode GetDisplay() 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.

Parametereigenschappen

Type:UInt64
Default value:False
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten: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 totaalaantal 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 waarbij 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 een steeds betrouwbaardere schatting aangeeft.

Parametereigenschappen

Type:SwitchParameter
Default value:False
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-LiteralPath

Hiermee geeft u het pad naar de XML-bestanden. In tegenstelling tot pad, wordt de waarde van de parameter LiteralPath exact gebruikt zoals deze is getypt. Er worden geen tekens geïnterpreteerd als jokertekens. Als het pad escape-tekens bevat, zet het dan tussen enkele aanhalingstekens. Enkele aanhalingstekens zorgen ervoor dat PowerShell geen tekens als escapesequenties interpreteert.

Parametereigenschappen

Type:

String[]

Default value:None
Ondersteunt jokertekens:False
DontShow:False
Aliassen:PSPath, LP

Parametersets

ByLiteralPath
Position:Named
Verplicht:True
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:True
Waarde van resterende argumenten:False

-Path

Hiermee geeft u het pad naar de XML-bestanden.

Parametereigenschappen

Type:

String[]

Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

ByPath
Position:0
Verplicht:True
Waarde uit pijplijn:True
Waarde uit pijplijn op eigenschapsnaam:True
Waarde van resterende argumenten: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.

Parametereigenschappen

Type:UInt64
Default value:False
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

CommonParameters

Deze cmdlet ondersteunt de algemene parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction en -WarningVariable. Zie about_CommonParametersvoor meer informatie.

Invoerwaarden

String

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

Uitvoerwaarden

PSObject

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>.