Condividi tramite


Import-Clixml

Importa un file CLIXML e crea oggetti corrispondenti in PowerShell.

Sintassi

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

Descrizione

Il Import-Clixml cmdlet importa oggetti serializzati in un file XML Common Language Infrastructure (CLI). Un uso prezioso di Import-Clixml nei computer Windows consiste nell'importare le credenziali e le stringhe sicure esportate come XML sicuri usando Export-Clixml. Esempio 2 illustra come usare Import-Clixml per importare un oggetto credenziali sicuro.

I dati CLIXML vengono deserializzati negli oggetti di PowerShell. Tuttavia, gli oggetti deserializzati non sono oggetti live. Sono uno snapshot degli oggetti al momento della serializzazione. Gli oggetti deserializzati includono proprietà ma non metodi.

La proprietà TypeNames contiene il nome del tipo originale preceduto da Deserialized. Esempio 3 mostra la proprietà TypeNames di un oggetto deserializzato.

Import-Clixml usa il byte-order-mark (BOM) per rilevare il formato di codifica del file. Se il file non ha un BOM, presuppone che la codifica sia UTF8.

Per altre informazioni sull'interfaccia della riga di comando, vedere Indipendenza della lingua.

Esempio

Esempio 1: Importare un file serializzato e ricreare un oggetto

In questo esempio viene usato il Export-Clixml cmdlet per salvare una copia serializzata delle informazioni del processo restituite da Get-Process. Import-Clixml recupera il contenuto del file serializzato e ricrea un oggetto archiviato nella $Processes variabile.

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

Esempio 2: Importare un oggetto credenziale sicuro

In questo esempio, data una credenziale archiviata nella $Credential variabile eseguendo il cmdlet, è possibile eseguire il Get-CredentialExport-Clixml cmdlet per salvare le credenziali sul disco.

Importante

Export-Clixml esporta solo le credenziali crittografate in Windows. Nei sistemi operativi non Windows, ad esempio macOS e Linux, le credenziali vengono esportate in testo normale.

$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

Il Export-Clixml cmdlet crittografa gli oggetti credenziali usando l'API Protezione dati di Windows. La crittografia garantisce che solo l'account utente possa decrittografare il contenuto dell'oggetto credenziali. Il file esportato CLIXML non può essere usato in un computer diverso o da un utente diverso.

Nell'esempio il file in cui vengono archiviate le credenziali è rappresentato da TestScript.ps1.credential. Sostituire TestScript con il nome dello script con cui si sta caricando le credenziali.

Si invia l'oggetto credenziale verso il basso alla pipeline e Export-Clixmllo si salva nel percorso, , $Credxmlpathspecificato nel primo comando.

Per importare automaticamente le credenziali nello script, eseguire i due comandi finali. Eseguire Import-Clixml per importare l'oggetto credenziale protetto nello script. Questa importazione elimina il rischio di esporre password di testo normale nello script.

Esempio 3: Esaminare la proprietà TypeNames di un oggetto deserializzato

Questo esempio mostra l'importazione di un oggetto archiviato come dati CLIXML. I dati vengono deserializzati in un oggetto PowerShell. Tuttavia, l'oggetto deserializzato non è un oggetto live. Sono uno snapshot degli oggetti al momento della serializzazione. Gli oggetti deserializzati includono proprietà ma non metodi.

$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

Si noti che il tipo dell'oggetto in è System.Management.Automation.PSCustomObject, ma il tipo dell'oggetto in $deserialized$original è Deserialized.System.Management.Automation.PSCustomObject. Inoltre, il GetDisplay() metodo manca dall'oggetto deserializzato.

Parametri

-First

Ottiene solo il numero specificato di oggetti. Immettere il numero di processi da ottenere.

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

-IncludeTotalCount

Segnala il numero totale di oggetti nel set di dati seguito dagli oggetti selezionati. Se il cmdlet non è in grado di determinare il conteggio totale, visualizza il conteggio totale sconosciuto. L'intero ha una proprietà Precisione che indica l'affidabilità del valore totale del conteggio. Il valore di Precisione varia da 0.0 a 1.0 dove 0.0 significa che il cmdlet non ha potuto contare gli oggetti, 1.0 significa che il conteggio è esatto e un valore tra 0.0 e 1.0 indica una stima sempre più affidabile.

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

-LiteralPath

Specifica il percorso dei file XML. A differenza di Path, il valore del parametro LiteralPath viene usato esattamente come digitato. Nessun carattere viene interpretato come carattere jolly. Se il percorso include caratteri di escape, racchiuderlo tra virgolette singole. Le virgolette singole indicano a PowerShell di non interpretare i caratteri come sequenze di escape.

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

-Path

Specifica il percorso dei file XML.

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

-Skip

Ignora il numero specificato di oggetti e ottiene gli oggetti rimanenti. Immettere il numero di processi da ignorare.

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

Input

String

È possibile inviare una pipe a una stringa contenente un percorso a questo cmdlet.

Output

PSObject

Questo cmdlet restituisce oggetti deserializzati dai file XML archiviati.

Note

Quando si specificano più valori per un parametro, separare ogni valore con una virgola. Ad esempio: <parameter-name> <value1>, <value2>.