Set-Content
Scrive nuovo contenuto o sostituisce il contenuto esistente in un file.
Sintassi
Set-Content
[-Path] <string[]>
[-Value] <Object[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[-NoNewline]
[-Encoding <Encoding>]
[-AsByteStream]
[-Stream <string>]
[<CommonParameters>]
Set-Content
[-Value] <Object[]>
-LiteralPath <string[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[-NoNewline]
[-Encoding <Encoding>]
[-AsByteStream]
[-Stream <string>]
[<CommonParameters>]
Set-Content
[-Path] <string[]>
[-Value] <Object[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-Content
[-Value] <Object[]>
-LiteralPath <string[]>
[-PassThru]
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-Force]
[-Credential <pscredential>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Descrizione
Set-Content
è un cmdlet di elaborazione di stringhe che scrive nuovo contenuto o sostituisce il contenuto in un file.
Set-Content
sostituisce il contenuto esistente e differisce dal cmdlet Add-Content
che aggiunge contenuto a un file. Per inviare contenuto a Set-Content
è possibile usare il parametro valore nella riga di comando o inviare contenuto tramite la pipeline.
Se è necessario creare file o directory per gli esempi seguenti, vedere new-item.
Esempio
Esempio 1: Sostituire il contenuto di più file in una directory
In questo esempio viene sostituito il contenuto di più file nella directory corrente.
Get-ChildItem -Path .\Test*.txt
Test1.txt
Test2.txt
Test3.txt
Set-Content -Path .\Test*.txt -Value 'Hello, World'
Get-Content -Path .\Test*.txt
Hello, World
Hello, World
Hello, World
Il cmdlet Get-ChildItem
usa il parametro Path per elencare .txt file che iniziano con Test*
nella directory corrente. Il cmdlet Set-Content
usa il parametro Path per specificare i file di Test*.txt
. Il parametro Value fornisce la stringa di testo Hello, World che sostituisce il contenuto esistente in ogni file. Il cmdlet Get-Content
usa il parametro Path per specificare i file di Test*.txt
e visualizzare il contenuto di ogni file nella console di PowerShell.
Esempio 2: Creare un nuovo file e scrivere contenuto
Questo esempio crea un nuovo file e scrive la data e l'ora correnti nel file.
Set-Content -Path .\DateTime.txt -Value (Get-Date)
Get-Content -Path .\DateTime.txt
1/30/2019 09:55:08
Set-Content
usa i parametri Path e Value per creare un nuovo file denominato DateTime.txt nella directory corrente. Il parametro Value usa Get-Date
per ottenere la data e l'ora correnti.
Set-Content
scrive l'oggetto DateTime nel file come stringa. Il cmdlet Get-Content
usa il parametro Path per visualizzare il contenuto di DateTime.txt nella console di PowerShell.
Esempio 3: Sostituire il testo in un file
Questo comando sostituisce tutte le istanze di word all'interno di un file esistente.
Get-Content -Path .\Notice.txt
Warning
Replace Warning with a new word.
The word Warning was replaced.
(Get-Content -Path .\Notice.txt) |
ForEach-Object {$_ -replace 'Warning', 'Caution'} |
Set-Content -Path .\Notice.txt
Get-Content -Path .\Notice.txt
Caution
Replace Caution with a new word.
The word Caution was replaced.
Il cmdlet Get-Content
usa il parametro Path per specificare il file Notice.txt nella directory corrente. Il comando Get-Content
viene eseguito il wrapping tra parentesi in modo che il comando finisca prima di essere inviato alla pipeline.
Il contenuto del file di Notice.txt viene inviato alla pipeline al cmdlet ForEach-Object
.
ForEach-Object
usa la variabile automatica $_
e sostituisce ogni occorrenza di Avviso con attenzione. Gli oggetti vengono inviati alla pipeline al cmdlet Set-Content
.
Set-Content
usa il parametro Path per specificare il file di Notice.txt e scrive il contenuto aggiornato nel file.
L'ultimo cmdlet Get-Content
visualizza il contenuto del file aggiornato nella console di PowerShell.
Esempio 4: Usare filtri con Set-Content
È possibile specificare un filtro per il cmdlet Set-Content
. Quando si usano filtri per qualificare il parametro Path, è necessario includere un asterisco finale (*
) per indicare il contenuto del percorso.
Il comando seguente imposta il contenuto di tutti i file di *.txt
nella directory C:\Temp
sul valore vuoto.
Set-Content -Path C:\Temp\* -Filter *.txt -Value "Empty"
Parametri
-AsByteStream
Si tratta di un parametro dinamico reso disponibile dal provider FileSystem. Per altre informazioni, vedere about_FileSystem_Provider.
Specifica che il contenuto deve essere scritto come flusso di byte. Questo parametro è stato introdotto in PowerShell 6.0.
Si verifica un avviso quando si usa il parametro AsByteStream di con il parametro Encoding. Il parametro AsByteStream ignora qualsiasi codifica e l'output viene scritto come flusso di byte.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-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 |
-Credential
Nota
Questo parametro non è supportato da alcun provider installato con PowerShell. Per rappresentare un altro utente o elevare le credenziali quando si esegue questo cmdlet, usare Invoke-Command.
Tipo: | PSCredential |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-Encoding
Si tratta di un parametro dinamico reso disponibile dal provider FileSystem. Per altre informazioni, vedere about_FileSystem_Provider.
Specifica il tipo di codifica per il file di destinazione. Il valore predefinito è utf8NoBOM
.
La codifica è un parametro dinamico aggiunto dal provider FileSystem a Set-Content
. Questo parametro funziona solo nelle unità del file system.
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 in PowerShell 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 |
-Exclude
Specifica, come matrice di stringhe, un elemento o elementi esclusi dal cmdlet nell'operazione. Il valore di questo parametro qualifica il parametro Path. Immettere un elemento o un modello di percorso, ad esempio *.txt
. Sono consentiti caratteri jolly. Il parametro Exclude è effettivo solo quando il comando include il contenuto di un elemento, ad esempio C:\Windows\*
, in cui il carattere jolly specifica il contenuto della directory C:\Windows
.
Tipo: | String[] |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | True |
-Filter
Specifica un filtro per qualificare il parametro Path. Il provider di FileSystem è l'unico provider di PowerShell installato che supporta l'uso dei filtri. È possibile trovare la sintassi per il linguaggio di filtro FileSystem in about_Wildcards. I filtri sono più efficienti rispetto ad altri parametri, perché il provider li applica quando il cmdlet ottiene gli oggetti anziché filtrare gli oggetti dopo il recupero.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | True |
-Force
Forza il cmdlet a impostare il contenuto di un file, anche se il file è di sola lettura. L'implementazione varia da provider a provider. Per altre informazioni, vedere about_Providers. Il parametro Force non sostituisce le restrizioni di sicurezza.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Include
Specifica, come matrice di stringhe, un elemento o elementi inclusi nel cmdlet nell'operazione. Il valore di questo parametro qualifica il parametro Path. Immettere un elemento o un modello di percorso, ad esempio "*.txt"
. Sono consentiti caratteri jolly. Il parametro Includi è effettivo solo quando il comando include il contenuto di un elemento, ad esempio C:\Windows\*
, in cui il carattere jolly specifica il contenuto della directory C:\Windows
.
Tipo: | String[] |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | True |
-LiteralPath
Specifica un percorso per una o più posizioni. Il valore di LiteralPath viene usato esattamente come viene tipizzato. 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.
Per altre informazioni, vedere about_Quoting_Rules.
Tipo: | String[] |
Alias: | PSPath, LP |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-NoNewline
Si tratta di un parametro dinamico reso disponibile dal provider FileSystem. Per altre informazioni, vedere about_FileSystem_Provider.
Le rappresentazioni di stringa degli oggetti di input vengono concatenate per formare l'output. Non vengono inseriti spazi o nuove righe tra le stringhe di output. Nessuna nuova riga viene aggiunta dopo l'ultima stringa di output.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-PassThru
Restituisce un oggetto che rappresenta il contenuto. Per impostazione predefinita, questo cmdlet non genera alcun output.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Path
Specifica il percorso dell'elemento che riceve il contenuto. Sono consentiti caratteri jolly.
Tipo: | String[] |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | True |
-Stream
Si tratta di un parametro dinamico reso disponibile dal provider FileSystem. Questo parametro è disponibile solo in Windows. Per altre informazioni, vedere about_FileSystem_Provider.
Specifica un flusso di dati alternativo per il contenuto. Se il flusso non esiste, questo cmdlet lo crea. I caratteri jolly non sono supportati.
Stream è un parametro dinamico aggiunto dal provider FileSystem a Set-Content
. Questo parametro funziona solo nelle unità del file system.
È possibile usare il cmdlet Set-Content
per creare o aggiornare il contenuto di qualsiasi flusso di dati alternativo, ad esempio Zone.Identifier
. Tuttavia, non è consigliabile farlo come modo per eliminare i controlli di sicurezza che bloccano i file scaricati da Internet. Se si verifica che un file scaricato sia sicuro, usare il cmdlet Unblock-File
.
Questo parametro è stato introdotto in PowerShell 3.0. A partire da PowerShell 7.2, Set-Content
può impostare il contenuto di flussi di dati alternativi da directory e file.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Value
Specifica il nuovo contenuto per l'elemento.
Tipo: | Object[] |
Posizione: | 1 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
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 inviare tramite pipe un oggetto contenente il nuovo valore per l'elemento a questo cmdlet.
Output
None
Per impostazione predefinita, questo cmdlet non restituisce alcun output.
Quando si usa il parametro PassThru, questo cmdlet restituisce una stringa che rappresenta il contenuto.
Note
-
Set-Content
è progettato per l'elaborazione di stringhe. Se si invia tramite pipe oggetti non stringa aSet-Content
, l'oggetto viene convertito in una stringa prima di scriverlo. Per scrivere oggetti in file, usareOut-File
. - Il cmdlet
Set-Content
è progettato per lavorare con i dati esposti da qualsiasi provider. Per elencare i provider disponibili nella sessione, digitareGet-PSProvider
. Per altre informazioni, vedere about_Providers.