Import-Clixml

Importerar en CLIXML-fil och skapar motsvarande objekt i PowerShell.

Syntax

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

Description

Cmdleten Import-Clixml importerar objekt som har serialiserats till en XML-fil för Common Language Infrastructure (CLI). En värdefull användning av på Windows-datorer är att importera autentiseringsuppgifter och säkra strängar som exporterades som säker XML med hjälp av Import-ClixmlExport-Clixml. Exempel nr 2 visar hur du använder Import-Clixml för att importera ett säkert autentiseringsobjekt.

CLIXML-data deserialiseras tillbaka till PowerShell-objekt. De deserialiserade objekten är dock inte levande objekt. De är en ögonblicksbild av objekten vid tidpunkten för serialiseringen. De deserialiserade objekten innehåller egenskaper men inga metoder.

Egenskapen TypeNames innehåller det ursprungliga typnamnet med prefixet Deserialized. Exempel nr 3 visar egenskapen TypeNames för ett deserialiserat objekt.

Import-Clixml använder byte-order-mark (BOM) för att identifiera kodningsformatet för filen. Om filen inte har någon strukturlista förutsätter den att kodningen är UTF8.

Mer information om CLI finns i Språkberoende.

Exempel

Exempel 1: Importera en serialiserad fil och återskapa ett objekt

I det här exemplet används cmdleten Export-Clixml för att spara en serialiserad kopia av processinformationen som returneras av Get-Process. Import-Clixml hämtar innehållet i den serialiserade filen och återskapar ett objekt som lagras i variabeln $Processes .

Get-Process | Export-Clixml -Path .\pi.xml
$Processes = Import-Clixml -Path .\pi.xml

Exempel 2: Importera ett objekt för säker autentiseringsuppgift

I det här exemplet kan du, med tanke på en autentiseringsuppgift som du har lagrat i variabeln $Credential genom att köra cmdleten Get-Credential , köra cmdleten Export-Clixml för att spara autentiseringsuppgifterna på disken.

Viktigt!

Export-Clixml exporterar endast krypterade autentiseringsuppgifter i Windows. I icke-Windows-operativsystem som macOS och Linux exporteras autentiseringsuppgifterna i klartext.

$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

Cmdleten Export-Clixml krypterar autentiseringsobjekt med hjälp av Windows Data Protection-API:et. Krypteringen säkerställer att endast ditt användarkonto kan dekryptera innehållet i autentiseringsobjektet. Den exporterade CLIXML filen kan inte användas på en annan dator eller av en annan användare.

I exemplet representeras filen där autentiseringsuppgifterna lagras av TestScript.ps1.credential. Ersätt TestScript med namnet på skriptet som du läser in autentiseringsuppgifterna med.

Du skickar autentiseringsobjektet nedåt i pipelinen till Export-Clixmloch sparar det i sökvägen, $Credxmlpath, som du angav i det första kommandot.

Om du vill importera autentiseringsuppgifterna automatiskt till skriptet kör du de två sista kommandona. Kör Import-Clixml för att importera det skyddade autentiseringsobjektet till skriptet. Den här importen eliminerar risken för att exponera oformaterade lösenord i skriptet.

Exempel 3: Inspektera egenskapen TypeNames för ett deserialiserat objekt

Det här exemplet visar hur du importerar ett objekt som lagras som CLIXML-data. Data deserialiseras tillbaka till ett PowerShell-objekt. Det deserialiserade objektet är dock inte ett levande objekt. De är en ögonblicksbild av objekten vid tidpunkten för serialiseringen. De deserialiserade objekten innehåller egenskaper men inga metoder.

$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

Observera att typen av objektet i $original är System.Management.Automation.PSCustomObject, men typen av objektet i $deserialized är Deserialized.System.Management.Automation.PSCustomObject. GetDisplay() Dessutom saknas metoden från det deserialiserade objektet.

Parametrar

-First

Hämtar endast det angivna antalet objekt. Ange antalet objekt som ska hämtas.

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

-IncludeTotalCount

Rapporterar det totala antalet objekt i datauppsättningen följt av de markerade objekten. Om cmdleten inte kan fastställa det totala antalet visas okänt totalt antal. Heltalet har en noggrannhetsegenskap som anger tillförlitligheten för det totala antalet värden. Värdet för Noggrannhet sträcker sig från 0.0 till 1.0 där 0.0 innebär att cmdleten inte kunde räkna objekten, 1.0 innebär att antalet är exakt och ett värde mellan 0.0 och 1.0 anger en allt mer tillförlitlig uppskattning.

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

-LiteralPath

Anger sökvägen till XML-filerna. Till skillnad från Path används värdet för parametern LiteralPath precis som det skrivs. Inga tecken tolkas som jokertecken. Om sökvägen innehåller escape-tecken omger du den med enkla citattecken. Enkla citattecken gör att PowerShell inte tolkar några tecken som escape-sekvenser.

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

-Path

Anger sökvägen till XML-filerna.

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

-Skip

Ignorerar det angivna antalet objekt och hämtar sedan de återstående objekten. Ange antalet objekt som ska hoppa över.

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

Indata

String

Du kan skicka en sträng som innehåller en sökväg till den här cmdleten.

Utdata

PSObject

Den här cmdleten returnerar objekt som deserialiserats från de lagrade XML-filerna.

Kommentarer

När du anger flera värden för en parameter använder du kommatecken för att separera värdena. Exempel: <parameter-name> <value1>, <value2>