Set-Content
Escreve novos conteúdos ou substitui conteúdos existentes num ficheiro.
Syntax
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>]
Description
Set-Content
é um cmdlet de processamento de cadeias que escreve novos conteúdos ou substitui o conteúdo num ficheiro. Set-Content
substitui o conteúdo existente e difere do Add-Content
cmdlet que acrescenta conteúdo a um ficheiro. Para enviar conteúdo para Set-Content
pode utilizar o parâmetro Valor na linha de comandos ou enviar conteúdo através do pipeline.
Se precisar de criar ficheiros ou diretórios para os seguintes exemplos, veja New-Item (Novo Item).
Exemplos
Exemplo 1: Substituir o conteúdo de vários ficheiros num diretório
Este exemplo substitui o conteúdo de vários ficheiros no diretório atual.
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
O Get-ChildItem
cmdlet utiliza o parâmetro Caminho para listar .txt ficheiros que começam Test*
no diretório atual. O Set-Content
cmdlet utiliza o parâmetro Caminho para especificar os Test*.txt
ficheiros. O parâmetro Valor fornece a cadeia de texto Hello, Mundo, que substitui o conteúdo existente em cada ficheiro. O Get-Content
cmdlet utiliza o parâmetro Caminho para especificar os Test*.txt
ficheiros e apresenta o conteúdo de cada ficheiro na consola do PowerShell.
Exemplo 2: Create um novo ficheiro e escrever conteúdo
Este exemplo cria um novo ficheiro e escreve a data e hora atuais no ficheiro.
Set-Content -Path .\DateTime.txt -Value (Get-Date)
Get-Content -Path .\DateTime.txt
1/30/2019 09:55:08
Set-Content
utiliza os parâmetros Caminho e Valor para criar um novo ficheiro com o nome DateTime.txt no diretório atual. O parâmetro Valor utiliza Get-Date
para obter a data e hora atuais.
Set-Content
escreve o objeto DateTime no ficheiro como uma cadeia. O Get-Content
cmdlet utiliza o parâmetro Caminho para apresentar o conteúdo do DateTime.txt na consola do PowerShell.
Exemplo 3: Substituir texto num ficheiro
Este comando substitui todas as instâncias do word num ficheiro existente.
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.
O Get-Content
cmdlet utiliza o parâmetro Caminho para especificar o ficheiro Notice.txt no diretório atual. O Get-Content
comando é moldado com parênteses para que o comando seja concluído antes de ser enviado para baixo do pipeline.
Os conteúdos do ficheiro Notice.txt são enviados pelo pipeline para o ForEach-Object
cmdlet.
ForEach-Object
utiliza a variável $_
automática e substitui cada ocorrência de Avisopor Atenção. Os objetos são enviados pelo pipeline para o Set-Content
cmdlet. Set-Content
utiliza o parâmetro Caminho para especificar o ficheiro Notice.txt e escreve o conteúdo atualizado no ficheiro.
O último Get-Content
cmdlet apresenta o conteúdo do ficheiro atualizado na consola do PowerShell.
Exemplo 4: Utilizar Filtros com Set-Content
Pode especificar um filtro para o Set-Content
cmdlet. Ao utilizar filtros para qualificar o parâmetro Caminho , tem de incluir um asterisco à direita (*
) para indicar o conteúdo do caminho.
O comando seguinte definiu o conteúdo de todos os *.txt
ficheiros no C:\Temp
diretório como Valor vazio.
Set-Content -Path C:\Temp\* -Filter *.txt -Value "Empty"
Parâmetros
-AsByteStream
Este é um parâmetro dinâmico disponibilizado pelo fornecedor fileSystem . Para obter mais informações, veja about_FileSystem_Provider.
Especifica que o conteúdo deve ser escrito como um fluxo de bytes. Este parâmetro foi introduzido no PowerShell 6.0.
Um aviso ocorre quando utiliza o parâmetro AsByteStream com o parâmetro Codificação . O parâmetro AsByteStream ignora qualquer codificação e a saída é escrita como um fluxo de bytes.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Solicita a sua confirmação antes de executar o cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
Nota
Este parâmetro não é suportado por nenhum fornecedor instalado com o PowerShell. Para representar outro utilizador ou elevar as suas credenciais ao executar este cmdlet, utilize Invoke-Command.
Type: | PSCredential |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Encoding
Este é um parâmetro dinâmico disponibilizado pelo fornecedor fileSystem . Para obter mais informações, veja about_FileSystem_Provider.
Especifica o tipo de codificação para o ficheiro de destino. O valor predefinido é utf8NoBOM
.
A codificação é um parâmetro dinâmico que o fornecedor fileSystem adiciona a Set-Content
. Este parâmetro funciona apenas em unidades do sistema de ficheiros.
Os valores aceitáveis para este parâmetro são os seguintes:
ascii
: utiliza a codificação para o conjunto de carateres ASCII (7 bits).bigendianunicode
: codifica no formato UTF-16 com a ordem de bytes big-endian.bigendianutf32
: codifica no formato UTF-32 com a ordem de bytes big-endian.oem
: utiliza a codificação predefinida para ms-DOS e programas de consola.unicode
: codifica no formato UTF-16 com a ordem de bytes de pequeno-endiano.utf7
: codifica no formato UTF-7.utf8
: codifica no formato UTF-8.utf8BOM
: Codifica no formato UTF-8 com Marca de Encomenda byte (BOM)utf8NoBOM
: Codifica no formato UTF-8 sem Marca de Encomenda byte (BOM)utf32
: codifica no formato UTF-32.
A partir do PowerShell 6.2, o parâmetro Codificação também permite IDs numéricos de páginas de código registadas (como -Encoding 1251
) ou nomes de cadeias de páginas de código registadas (como -Encoding "windows-1251"
). Para obter mais informações, veja a documentação do .NET para Encoding.CodePage.
Nota
UTF-7* já não é recomendado para utilizar. A partir do PowerShell 7.1, é escrito um aviso se especificar utf7
para o parâmetro Codificação .
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Default value: | utf8NoBOM |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Exclude
Especifica, como uma matriz de cadeia, um item ou itens que este cmdlet exclui na operação. O valor deste parâmetro qualifica o parâmetro Caminho . Introduza um elemento ou padrão de caminho, como *.txt
. Os carateres universais são permitidos. O parâmetro Excluir só é eficaz quando o comando inclui o conteúdo de um item, como C:\Windows\*
, em que o caráter universal especifica o conteúdo do C:\Windows
diretório.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Filter
Especifica um filtro para qualificar o parâmetro Caminho . O fornecedor fileSystem é o único fornecedor do PowerShell instalado que suporta a utilização de filtros. Pode encontrar a sintaxe da linguagem de filtro FileSystem no about_Wildcards. Os filtros são mais eficientes do que outros parâmetros, porque o fornecedor aplica-os quando o cmdlet obtém os objetos em vez de ter o PowerShell a filtrar os objetos depois de serem obtidos.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Force
Força o cmdlet a definir o conteúdo de um ficheiro, mesmo que o ficheiro seja só de leitura. A implementação varia de fornecedor para fornecedor. Para obter mais informações, veja about_Providers. O parâmetro Force não substitui as restrições de segurança.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Include
Especifica, como uma matriz de cadeia, um item ou itens que este cmdlet inclui na operação. O valor deste parâmetro qualifica o parâmetro Caminho . Introduza um elemento ou padrão de caminho, como "*.txt"
. Os carateres universais são permitidos. O parâmetro Incluir só é eficaz quando o comando inclui o conteúdo de um item, como C:\Windows\*
, em que o caráter universal especifica o conteúdo do C:\Windows
diretório.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-LiteralPath
Especifica um caminho para uma ou mais localizações. O valor do LiteralPath é utilizado exatamente como é escrito. Nenhum caráter é interpretado como carateres universais. Se o caminho incluir carateres de escape, coloque-o entre aspas. As aspas únicas indicam ao PowerShell para não interpretar os carateres como sequências de escape.
Para obter mais informações, veja about_Quoting_Rules.
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-NoNewline
Este é um parâmetro dinâmico disponibilizado pelo fornecedor fileSystem . Para obter mais informações, veja about_FileSystem_Provider.
As representações de cadeias dos objetos de entrada são concatenadas para formar o resultado. Não são inseridos espaços ou linhas novas entre as cadeias de saída. Não é adicionada nenhuma nova linha após a última cadeia de saída.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PassThru
Devolve um objeto que representa o conteúdo. Por predefinição, este cmdlet não gera quaisquer dados.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Especifica o caminho do item que recebe o conteúdo. Os carateres universais são permitidos.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-Stream
Este é um parâmetro dinâmico disponibilizado pelo fornecedor fileSystem . Este Parâmetro só está disponível no Windows. Para obter mais informações, veja about_FileSystem_Provider.
Especifica um fluxo de dados alternativo para conteúdo. Se o fluxo não existir, este cmdlet cria-o. Os carateres universais não são suportados.
Stream é um parâmetro dinâmico que o fornecedor fileSystem adiciona a Set-Content
. Este parâmetro funciona apenas em unidades do sistema de ficheiros.
Pode utilizar o Set-Content
cmdlet para criar ou atualizar o conteúdo de qualquer fluxo de dados alternativo, como Zone.Identifier
. No entanto, não recomendamos isto como uma forma de eliminar as verificações de segurança que bloqueiam ficheiros transferidos a partir da Internet. Se verificar se um ficheiro transferido é seguro, utilize o Unblock-File
cmdlet.
Este parâmetro foi introduzido no PowerShell 3.0. A partir do PowerShell 7.2, Set-Content
pode definir o conteúdo de fluxos de dados alternativos de diretórios, bem como ficheiros.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Value
Especifica o novo conteúdo do item.
Type: | Object[] |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-WhatIf
Apresenta o que aconteceria mediante a execução do cmdlet. O cmdlet não é executado.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entradas
Pode encaminhar um objeto que contém o novo valor do item para este cmdlet.
Saídas
None
Por predefinição, este cmdlet não devolve nenhuma saída.
Quando utiliza o parâmetro PassThru , este cmdlet devolve uma cadeia que representa o conteúdo.
Notas
Set-Content
foi concebido para processamento de cadeias. Se encaminhar objetos que não sejam de cadeia paraSet-Content
, este converte o objeto numa cadeia antes de o escrever. Para escrever objetos em ficheiros, utilizeOut-File
.- O
Set-Content
cmdlet foi concebido para funcionar com os dados expostos por qualquer fornecedor. Para listar os fornecedores disponíveis na sua sessão, escrevaGet-PsProvider
. Para obter mais informações, veja about_Providers.