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-Credential
Export-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-Clixml
lo si salva nel percorso, , $Credxmlpath
specificato 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
È possibile inviare una pipe a una stringa contenente un percorso a questo cmdlet.
Output
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>
.