Condividi tramite


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]
   [-UseTransaction]
   [-NoNewline]
   [-Encoding <FileSystemCmdletProviderEncoding>]
   [-Stream <string>]
   [<CommonParameters>]
Set-Content
   [-Value] <Object[]>
   -LiteralPath <string[]>
   [-PassThru]
   [-Filter <string>]
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Force]
   [-Credential <pscredential>]
   [-WhatIf]
   [-Confirm]
   [-UseTransaction]
   [-NoNewline]
   [-Encoding <FileSystemCmdletProviderEncoding>]
   [-Stream <string>]
   [<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 Add-Content cmdlet che aggiunge contenuto a un file. Per inviare contenuto a Set-Content è possibile usare il parametro Value 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 Get-ChildItem cmdlet usa il parametro Path per elencare .txt file che iniziano con Test* nella directory corrente. Il Set-Content cmdlet usa il parametro Path per specificare i Test*.txt file. Il parametro Value fornisce la stringa di testo Hello World che sostituisce il contenuto esistente in ogni file. Il Get-Content cmdlet usa il parametro Path per specificare i Test*.txt file e visualizzare il contenuto di ogni file nella console di PowerShell.

Esempio 2: Create 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 Get-Content cmdlet 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 Get-Content cmdlet usa il parametro Path per specificare il file Notice.txt nella directory corrente. Il Get-Content comando viene sottoposto a wrapping tra parentesi in modo che il comando finisca prima di essere inviato alla pipeline.

Il contenuto del file Notice.txt viene inviato alla pipeline al ForEach-Object cmdlet . ForEach-Object utilizza la variabile $_ automatica e sostituisce ogni occorrenza di Avviso con attenzione. Gli oggetti vengono inviati alla pipeline al Set-Content cmdlet . Set-Content utilizza il parametro Path per specificare il file Notice.txt e scrive il contenuto aggiornato nel file.

L'ultimo Get-Content cmdlet visualizza il contenuto del file aggiornato nella console di PowerShell.

Esempio 4: Usare filtri con Set-Content

È possibile specificare un filtro per il Set-Content cmdlet . 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 *.txt file nella C:\Temp directory sul valore vuoto.

Set-Content -Path C:\Temp\* -Filter *.txt -Value "Empty"

Parametri

-Confirm

Richiede la conferma dell'utente prima di eseguire il cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Encoding

Specifica il tipo di codifica per il file di destinazione. Il valore predefinito è Default.

La codifica è un parametro dinamico aggiunto dal provider FileSystem a Set-Content. Questo parametro funziona solo nelle unità di file system.

I valori accettabili per questo parametro sono i seguenti:

  • ASCII Usa il set di caratteri ASCII (a 7 bit).
  • BigEndianUnicode Usa UTF-16 con l'ordine dei byte big-endian.
  • BigEndianUTF32 Usa UTF-32 con l'ordine dei byte big-endian.
  • Byte Codifica un set di caratteri in una sequenza di byte.
  • Predefinito Usa la codifica corrispondente alla tabella codici attiva del sistema (in genere ANSI).
  • OEM Usa la codifica corrispondente alla tabella codici OEM corrente del sistema.
  • Stringa Uguale a Unicode.
  • Unicode Usa UTF-16 con l'ordine dei byte little-endian.
  • Sconosciuto Uguale a Unicode.
  • UTF7 Usa UTF-7.
  • UTF8 Usa UTF-8.
  • UTF32 Usa UTF-32 con l'ordine dei byte little-endian.

La codifica è un parametro dinamico aggiunto dal provider FileSystem a Set-Content. Questo parametro funziona solo nelle unità di file system.

Type:FileSystemCmdletProviderEncoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, Byte, Default, OEM, String, Unicode, Unknown, UTF7, UTF8, UTF32
Position:Named
Default value:Default
Required:False
Accept pipeline input:False
Accept wildcard characters: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 criterio di percorso, ad esempio *.txt. I caratteri jolly sono consentiti. Il parametro Exclude è valido solo quando il comando include il contenuto di un elemento, ad esempio C:\Windows\*, dove il carattere jolly specifica il contenuto della C:\Windows directory.

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

-Filter

Specifica un filtro per qualificare il parametro Path . Il provider 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.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Force

Forza il cmdlet a impostare il contenuto di un file, anche se il file è di sola lettura. L'implementazione varia a seconda del provider. Per altre informazioni, vedere about_Providers. Il parametro Force non esegue l'override delle restrizioni di sicurezza.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 criterio di percorso, ad esempio "*.txt". I caratteri jolly sono consentiti. Il parametro Include è valido solo quando il comando include il contenuto di un elemento, ad esempio C:\Windows\*, dove il carattere jolly specifica il contenuto della C:\Windows directory.

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

-LiteralPath

Specifica un percorso di una o più posizioni. Il valore di 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.

Per altre informazioni, vedere about_Quoting_Rules.

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

-NoNewline

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.

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

-PassThru

Restituisce un oggetto che rappresenta il contenuto. Per impostazione predefinita, il cmdlet non genera alcun output.

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

-Path

Specifica il percorso dell'elemento che riceve il contenuto. I caratteri jolly sono consentiti.

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

-Stream

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 che il provider FileSystem aggiunge a Set-Content. Questo parametro funziona solo nelle unità di file system.

È possibile usare il cmdlet per modificare il Set-Content contenuto del flusso di dati alternativo 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 Unblock-File cmdlet.

Questo parametro è stato introdotto in PowerShell 3.0.

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

-UseTransaction

Include il comando nella transazione attiva. Questo parametro è valido solo quando è in corso una transazione. Per altre informazioni, vedere about_Transactions.

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

-Value

Specifica il nuovo contenuto per l'elemento.

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

-WhatIf

Mostra l'esito in caso di esecuzione del cmdlet. Il cmdlet non viene eseguito.

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

Input

Object

È possibile inviare tramite pipe un oggetto contenente il nuovo valore per l'elemento a Set-Content.

Output

None or System.String

Quando si utilizza il parametro PassThru , Set-Content genera un oggetto System.String che rappresenta il contenuto. In caso contrario, il cmdlet non genera alcun output.

Note

  • È anche possibile fare riferimento al Set-Content relativo alias predefinito, sc. Per altre informazioni, vedere about_Aliases.
  • Set-Content è progettato per l'elaborazione di stringhe. Se si esegue la pipe di oggetti non stringa in Set-Content, l'oggetto viene convertito in una stringa prima di scriverlo. Per scrivere oggetti nei file, usare Out-File.
  • Il Set-Content cmdlet è progettato per lavorare con i dati esposti da qualsiasi provider. Per elencare i provider disponibili nella sessione, digitare Get-PsProvider. Per altre informazioni, vedere about_Providers.