Export-Clixml
Crea una rappresentazione basata su XML di un oggetto o di oggetti e la archivia in un file.
Sintassi
Export-Clixml
[-Depth <Int32>]
[-Path] <String>
-InputObject <PSObject>
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Export-Clixml
[-Depth <Int32>]
-LiteralPath <String>
-InputObject <PSObject>
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Descrizione
Il cmdlet Export-Clixml
serializza un oggetto in una rappresentazione basata su XML dell'interfaccia della riga di comando (Common Language Infrastructure) e la archivia in un file. È quindi possibile usare il cmdlet Import-Clixml
per ricreare l'oggetto salvato in base al contenuto del file. Per altre informazioni sull'interfaccia della riga di comando, vedere indipendenza del linguaggio .
Questo cmdlet è simile a ConvertTo-Xml
, ad eccezione del fatto che Export-Clixml
archivia il codice XML risultante in un file.
ConvertTo-XML
restituisce il codice XML, quindi è possibile continuare a elaborarlo in PowerShell.
Un utile uso di Export-Clixml
nei computer Windows consiste nell'esportare le credenziali e proteggere le stringhe in modo sicuro come XML. Per un esempio, vedere Esempio 3.
Esempio
Esempio 1: Esportare una stringa in un file XML
In questo esempio viene creato un file XML archiviato nella directory corrente, una rappresentazione della stringa Si tratta di un test.
"This is a test" | Export-Clixml -Path .\sample.xml
La stringa This is a test
viene inviata alla pipeline.
Export-Clixml
usa il parametro Path per creare un file XML denominato sample.xml
nella directory corrente.
Esempio 2: Esportare un oggetto in un file XML
In questo esempio viene illustrato come esportare un oggetto in un file XML e quindi creare un oggetto importando il codice XML dal file.
Get-Acl C:\test.txt | Export-Clixml -Path .\FileACL.xml
$fileacl = Import-Clixml -Path .\FileACL.xml
Il cmdlet Get-Acl
ottiene il descrittore di sicurezza del file di Test.txt
. Invia l'oggetto verso il basso nella pipeline per passare il descrittore di sicurezza a Export-Clixml
. La rappresentazione basata su XML dell'oggetto viene archiviata in un file denominato FileACL.xml
.
Il cmdlet Import-Clixml
crea un oggetto dal codice XML nel file FileACL.xml
. Salva quindi l'oggetto nella variabile $fileacl
.
Esempio 3: Crittografare un oggetto credenziale esportato in Windows
In questo esempio, data una credenziale archiviata nella variabile $Credential
eseguendo il cmdlet Get-Credential
, è possibile eseguire il cmdlet Export-Clixml
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 come testo normale archiviato come matrice di caratteri Unicode. In questo modo si ottiene un po' di offuscamento, ma non fornisce la crittografia.
$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 cmdlet Export-Clixml
crittografa gli oggetti credenziali usando l'API Protezione dati di Windows . La crittografia garantisce che solo l'account utente in tale computer possa decrittografare il contenuto dell'oggetto credenziale.
Il file CLIXML
esportato 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 sta caricando la credenziale.
Inviare l'oggetto credenziale verso il basso nella pipeline per Export-Clixml
e salvarlo 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 4: Esportazione di un oggetto credenziale in Linux o macOS
In questo esempio viene creato un PSCredential nella variabile $Credential
usando il cmdlet Get-Credential
. Si userà quindi Export-Clixml
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 come testo normale archiviato come matrice di caratteri Unicode. In questo modo si ottiene un po' di offuscamento, ma non fornisce la crittografia.
PS> $Credential = Get-Credential
PowerShell credential request
Enter your credentials.
User: User1
Password for user User1: ********
PS> $Credential | Export-Clixml ./cred2.xml
PS> Get-Content ./cred2.xml
...
<Props>
<S N="UserName">User1</S>
<SS N="Password">700061007300730077006f0072006400</SS>
</Props>
...
PS> 'password' | Format-Hex -Encoding unicode
Label: String (System.String) <52D60C91>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 70 00 61 00 73 00 73 00 77 00 6F 00 72 00 64 00 p a s s w o r d
L'output di Get-Content
in questo esempio è stato troncato per concentrarsi sulle informazioni sulle credenziali nel file XML. Si noti che il valore di testo normale della password viene archiviato nel file XML come matrice di caratteri Unicode, come dimostrato da Format-Hex
. Il valore viene quindi codificato ma non crittografato.
Parametri
-Confirm
Richiede conferma prima di eseguire il cmdlet.
Tipo: | SwitchParameter |
Alias: | cf |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Depth
Specifica il numero di livelli di oggetti contenuti inclusi nella rappresentazione XML. Il valore predefinito è 2
.
È possibile eseguire l'override del valore predefinito per il tipo di oggetto nei file Types.ps1xml
. Per altre informazioni, vedere about_Types.ps1xml.
Tipo: | Int32 |
Posizione: | Named |
Valore predefinito: | 2 |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Encoding
Specifica il tipo di codifica per il file di destinazione. Il valore predefinito è utf8NoBOM
.
I valori accettabili per questo parametro sono i seguenti:
-
ascii
: usa la codifica per il set di caratteri ASCII (a 7 bit). -
ansi
: usa la codifica per la tabella codici ANSI delle impostazioni cultura correnti. Questa opzione è stata aggiunta nella versione 7.4. -
bigendianunicode
: codifica in formato UTF-16 usando l'ordine dei byte big-endian. -
bigendianutf32
: codifica in formato UTF-32 usando l'ordine dei byte big-endian. -
oem
: usa la codifica predefinita per i programmi MS-DOS e console. -
unicode
: codifica in formato UTF-16 usando l'ordine dei byte little-endian. -
utf7
: codifica in formato UTF-7. -
utf8
: codifica in formato UTF-8. -
utf8BOM
: codifica in formato UTF-8 con byte order mark (BOM) -
utf8NoBOM
: codifica in formato UTF-8 senza byte order mark (BOM) -
utf32
: codifica in formato UTF-32.
A partire da PowerShell 6.2, il parametro Encoding consente anche ID numerici di tabelle codici registrate (ad esempio -Encoding 1251
) o nomi di stringhe di tabelle codici registrate (ad esempio -Encoding "windows-1251"
). Per altre informazioni, vedere la documentazione di .NET per Encoding.CodePage.
A partire da PowerShell 7.4, è possibile usare il valore Ansi
per il parametro Codifica per passare l'ID numerico per la tabella codici ANSI delle impostazioni cultura correnti senza doverlo specificare manualmente.
Nota
UTF-7 * non è più consigliabile usare. A partire da PowerShell 7.1, viene scritto un avviso se si specifica utf7
per il parametro Encoding.
Tipo: | Encoding |
Valori accettati: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Posizione: | Named |
Valore predefinito: | UTF8NoBOM |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Force
Forza l'esecuzione del comando senza chiedere conferma dell'utente.
Fa in modo che il cmdlet cancella l'attributo di sola lettura del file di output, se necessario. Il cmdlet tenterà di reimpostare l'attributo di sola lettura al termine del comando.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-InputObject
Specifica l'oggetto da convertire. Immettere una variabile contenente gli oggetti oppure digitare un comando o un'espressione che ottiene gli oggetti . È anche possibile inviare oggetti tramite pipe a Export-Clixml
.
Tipo: | PSObject |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-LiteralPath
Specifica il percorso del file in cui verrà archiviata la rappresentazione XML dell'oggetto. A differenza di Path, il valore del parametro LiteralPath viene usato esattamente come viene digitato. Nessun carattere viene interpretato come caratteri 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.
Tipo: | String |
Alias: | PSPath, LP |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-NoClobber
Indica che il cmdlet non sovrascrive il contenuto di un file esistente. Per impostazione predefinita, se nel percorso specificato esiste un file, Export-Clixml
sovrascrive il file senza avviso.
Tipo: | SwitchParameter |
Alias: | NoOverwrite |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Path
Specifica il percorso del file in cui verrà archiviata la rappresentazione XML dell'oggetto.
Tipo: | String |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-WhatIf
Mostra cosa accadrebbe se il cmdlet viene eseguito. Il cmdlet non viene eseguito.
Tipo: | SwitchParameter |
Alias: | wi |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
Input
È possibile eseguire la pipeline di qualsiasi oggetto in questo cmdlet.
Output
Questo cmdlet restituisce un oggetto FileInfo che rappresenta il file creato con i dati archiviati.