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 gli oggetti serializzati in un file XML dell'interfaccia della riga di comando (Common Language Infrastructure). Un uso prezioso di Import-Clixml nei computer Windows consiste nell'importare credenziali e stringhe sicure esportate come XML sicuro tramite Export-Clixml. Nell'esempio 2 viene illustrato come usare Import-Clixml per importare un oggetto credenziale sicuro.

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

La proprietà TypeNames contiene il nome del tipo originale preceduto da Deserialized. Nell'esempio 3 viene mostrata la proprietà TypeNames di un oggetto deserializzato.

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

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

Esempio

Esempio 1: Importare un file serializzato e ricreare un oggetto

In questo esempio viene utilizzato il Export-Clixml cmdlet per salvare una copia serializzata delle informazioni sul 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 credenziali sicure

In questo esempio, data una credenziale archiviata nella $Credential variabile eseguendo il Get-Credential cmdlet , è possibile eseguire il Export-Clixml cmdlet per salvare le credenziali su 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 credenziale. Il file esportato CLIXML non può essere usato in un computer diverso o da un altro utente.

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 caricano le credenziali.

Si invia l'oggetto credenziale verso il basso nella pipeline a Export-Clixmle 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 le password in 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 nuovamente in un oggetto PowerShell. Tuttavia, l'oggetto deserializzato non è un oggetto attivo. Sono uno snapshot degli oggetti al momento della serializzazione. Gli oggetti deserializzati includono proprietà, ma nessun metodo.

$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 $original è System.Management.Automation.PSCustomObject, ma il tipo dell'oggetto in $deserialized è Deserialized.System.Management.Automation.PSCustomObject. Inoltre, il GetDisplay() metodo non è presente nell'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, viene visualizzato Conteggio totale sconosciuto. L'intero ha una proprietà Accuracy che indica l'affidabilità del valore del conteggio totale. Il valore di Accuracy varia da 0.0 a dove 0.0 significa che il cmdlet non è riuscito a 1.0 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 viene 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 alcun carattere 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 tramite pipe 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>.