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

Den Import-Clixml cmdleten importerar objekt som har serialiserats till en CLI-fil (Common Language Infrastructure). En värdefull användning av Import-Clixml på Windows-datorer är att importera autentiseringsuppgifter och skydda strängar som exporterades som säker XML med hjälp av Export-Clixml. Exempel 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 3 visa 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 Language independence.

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 $Credential-variabeln genom att köra Get-Credential-cmdleten, köra cmdleten Export-Clixml för att spara autentiseringsuppgifterna på disken.

Viktig

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. 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 på 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 objektets typ i $original är System.Management.Automation.PSCustomObject, men objektets typ i $deserialized är Deserialized.System.Management.Automation.PSCustomObject. Dessutom saknas metoden GetDisplay() från det deserialiserade objektet.

Parametrar

-First

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

Typ:UInt64
Position:Named
Standardvärde:False
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken: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 Totalt antal okända. Heltalet har egenskapen Precision 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 mer tillförlitlig uppskattning.

Typ:SwitchParameter
Position:Named
Standardvärde:False
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-LiteralPath

Anger sökvägen till XML-filerna. Till skillnad från Pathanvänds värdet för parametern LiteralPath exakt som den 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.

Typ:String[]
Alias:PSPath, LP
Position:Named
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-Path

Anger sökvägen till XML-filerna.

Typ:String[]
Position:0
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-Skip

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

Typ:UInt64
Position:Named
Standardvärde:False
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken: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. Till exempel <parameter-name> <value1>, <value2>.