Set-Content
Grava um novo conteúdo ou substitui o conteúdo existente em um arquivo.
Sintaxe
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 cadeia de caracteres que grava um novo conteúdo ou substitui o conteúdo em um arquivo.
Set-Content
substitui o conteúdo existente e difere do cmdlet Add-Content
que acrescenta conteúdo a um arquivo. Para enviar conteúdo para Set-Content
você pode usar o parâmetro Value na linha de comando ou enviar conteúdo por meio do pipeline.
Se você precisar criar arquivos ou diretórios para os exemplos a seguir, consulte New-Item.
Exemplos
Exemplo 1: substituir o conteúdo de vários arquivos em um diretório
Este exemplo substitui o conteúdo de vários arquivos 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 cmdlet Get-ChildItem
usa o parâmetro Path para listar arquivos .txt que começam com Test*
no diretório atual. O cmdlet Set-Content
usa o parâmetro Path para especificar os arquivos de Test*.txt
. O parâmetro Value fornece a cadeia de caracteres de texto Hello, World que substitui o conteúdo existente em cada arquivo. O cmdlet Get-Content
usa o parâmetro Path para especificar os arquivos Test*.txt
e exibe o conteúdo de cada arquivo no console do PowerShell.
Exemplo 2: criar um novo arquivo e gravar conteúdo
Este exemplo cria um novo arquivo e grava a data e a hora atuais no arquivo.
Set-Content -Path .\DateTime.txt -Value (Get-Date)
Get-Content -Path .\DateTime.txt
1/30/2019 09:55:08
Set-Content
usa os parâmetros Path e Value para criar um novo arquivo chamado DateTime.txt no diretório atual. O parâmetro Value usa Get-Date
para obter a data e a hora atuais.
Set-Content
grava o objeto DateTime no arquivo como uma cadeia de caracteres. O cmdlet Get-Content
usa o parâmetro Path para exibir o conteúdo de DateTime.txt no console do PowerShell.
Exemplo 3: substituir texto em um arquivo
Esse comando substitui todas as instâncias de palavra em um arquivo 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 cmdlet Get-Content
usa o parâmetro Path para especificar o arquivo Notice.txt no diretório atual. O comando Get-Content
é encapsulado com parênteses para que o comando seja concluído antes de ser enviado pelo pipeline.
O conteúdo do arquivo Notice.txt é enviado pelo pipeline para o cmdlet ForEach-Object
.
ForEach-Object
usa a variável automática $_
e substitui cada ocorrência de de aviso de por de cuidado. Os objetos são enviados pelo pipeline para o cmdlet Set-Content
.
Set-Content
usa o parâmetro Path para especificar o arquivo Notice.txt e grava o conteúdo atualizado no arquivo.
O cmdlet do último Get-Content
exibe o conteúdo do arquivo atualizado no console do PowerShell.
Exemplo 4: usar filtros com Set-Content
Você pode especificar um filtro para o cmdlet Set-Content
. Ao usar filtros para qualificar o parâmetro Path, você precisa incluir um asterisco à direita (*
) para indicar o conteúdo do caminho.
O comando a seguir define o conteúdo de todos os arquivos *.txt
no diretório C:\Temp
como o valor vazio.
Set-Content -Path C:\Temp\* -Filter *.txt -Value "Empty"
Parâmetros
-AsByteStream
Esse é um parâmetro dinâmico disponibilizado pelo provedor de FileSystem. Para obter mais informações, consulte about_FileSystem_Provider.
Especifica que o conteúdo deve ser gravado como um fluxo de bytes. Esse parâmetro foi introduzido no PowerShell 6.0.
Um aviso ocorre quando você usa o parâmetro asByteStream com o parâmetro de codificação. O parâmetro AsByteStream ignora qualquer codificação e a saída é gravada como um fluxo de bytes.
Tipo: | SwitchParameter |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-Confirm
Solicita a confirmação antes de executar o cmdlet.
Tipo: | SwitchParameter |
Aliases: | cf |
Cargo: | Named |
Valor padrão: | False |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-Credential
Nota
Esse parâmetro não tem suporte para nenhum provedor instalado com o PowerShell. Para representar outro usuário ou elevar suas credenciais ao executar esse cmdlet, use Invoke-Command.
Tipo: | PSCredential |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | True |
Aceitar caracteres curinga: | False |
-Encoding
Esse é um parâmetro dinâmico disponibilizado pelo provedor de FileSystem. Para obter mais informações, consulte about_FileSystem_Provider.
Especifica o tipo de codificação para o arquivo de destino. O valor padrão é utf8NoBOM
.
A codificação é um parâmetro dinâmico que o provedor FileSystem adiciona a Set-Content
. Esse parâmetro funciona apenas em unidades do sistema de arquivos.
Os valores aceitáveis para esse parâmetro são os seguintes:
-
ascii
: usa a codificação para o conjunto de caracteres ASCII (7 bits). -
ansi
: usa a codificação para a página de código ANSI da cultura atual. Essa opção foi adicionada ao PowerShell 7.4. -
bigendianunicode
: codifica no formato UTF-16 usando a ordem de bytes big-endian. -
bigendianutf32
: codifica no formato UTF-32 usando a ordem de bytes big-endian. -
oem
: usa a codificação padrão para programas de MS-DOS e console. -
unicode
: codifica no formato UTF-16 usando a ordem de bytes little-endian. -
utf7
: codifica no formato UTF-7. -
utf8
: codifica no formato UTF-8. -
utf8BOM
: codifica no formato UTF-8 com Marca de Ordem de Byte (BOM) -
utf8NoBOM
: codifica no formato UTF-8 sem Marca de Ordem de Bytes (BOM) -
utf32
: codifica no formato UTF-32.
A partir do PowerShell 6.2, o parâmetro de codificação de também permite IDs numéricas de páginas de código registradas (como -Encoding 1251
) ou nomes de cadeia de caracteres de páginas de código registradas (como -Encoding "windows-1251"
). Para obter mais informações, consulte a documentação do .NET para Encoding.CodePage.
A partir do PowerShell 7.4, você pode usar o valor Ansi
para o parâmetro de codificação para passar a ID numérica para a página de código ANSI da cultura atual sem precisar especificá-la manualmente.
Nota
UTF-7 * não é mais recomendável usar. A partir do PowerShell 7.1, um aviso será gravado se você especificar utf7
para o parâmetro de codificação.
Tipo: | Encoding |
Valores aceitos: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Cargo: | Named |
Valor padrão: | utf8NoBOM |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-Exclude
Especifica, como uma matriz de cadeia de caracteres, um item ou itens que esse cmdlet exclui na operação. O valor desse parâmetro qualifica o parâmetro Path. Insira um elemento ou padrão de caminho, como *.txt
. Caracteres curinga 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 caractere curinga especifica o conteúdo do diretório C:\Windows
.
Tipo: | String[] |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | True |
-Filter
Especifica um filtro para qualificar o parâmetro Path. O provedor FileSystem é o único provedor do PowerShell instalado que dá suporte ao uso de filtros. Você pode encontrar a sintaxe da linguagem de filtro FileSystem no about_Wildcards. Os filtros são mais eficientes do que outros parâmetros, pois o provedor os aplica quando o cmdlet obtém os objetos em vez de ter o PowerShell filtrar os objetos depois que eles são recuperados.
Tipo: | String |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | True |
-Force
Força o cmdlet a definir o conteúdo de um arquivo, mesmo que o arquivo seja somente leitura. A implementação varia de provedor para provedor. Para obter mais informações, consulte about_Providers. O parâmetro Force não substitui restrições de segurança.
Tipo: | SwitchParameter |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-Include
Especifica, como uma matriz de cadeia de caracteres, um item ou itens que esse cmdlet inclui na operação. O valor desse parâmetro qualifica o parâmetro Path. Insira um elemento ou padrão de caminho, como "*.txt"
. Caracteres curinga são permitidos. O parâmetro Include só é eficaz quando o comando inclui o conteúdo de um item, como C:\Windows\*
, em que o caractere curinga especifica o conteúdo do diretório C:\Windows
.
Tipo: | String[] |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | True |
-LiteralPath
Especifica um caminho para um ou mais locais. O valor de literalPath é usado exatamente como é digitado. Nenhum caractere é interpretado como curinga. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples. As aspas simples dizem ao PowerShell para não interpretar nenhum caractere como sequências de escape.
Para obter mais informações, consulte about_Quoting_Rules.
Tipo: | String[] |
Aliases: | PSPath, LP |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | True |
Aceitar a entrada de pipeline: | True |
Aceitar caracteres curinga: | False |
-NoNewline
Esse é um parâmetro dinâmico disponibilizado pelo provedor de FileSystem. Para obter mais informações, consulte about_FileSystem_Provider.
As representações de cadeia de caracteres dos objetos de entrada são concatenadas para formar a saída. Nenhum espaço ou nova linha é inserido entre as cadeias de caracteres de saída. Nenhuma nova linha é adicionada após a última cadeia de caracteres de saída.
Tipo: | SwitchParameter |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-PassThru
Retorna um objeto que representa o conteúdo. Por padrão, esse cmdlet não gera nenhuma saída.
Tipo: | SwitchParameter |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-Path
Especifica o caminho do item que recebe o conteúdo. Caracteres curinga são permitidos.
Tipo: | String[] |
Cargo: | 0 |
Valor padrão: | None |
Obrigatório: | True |
Aceitar a entrada de pipeline: | True |
Aceitar caracteres curinga: | True |
-Stream
Esse é um parâmetro dinâmico disponibilizado pelo provedor de FileSystem. Esse parâmetro só está disponível no Windows. Para obter mais informações, consulte about_FileSystem_Provider.
Especifica um fluxo de dados alternativo para conteúdo. Se o fluxo não existir, esse cmdlet o criará. Não há suporte para caracteres curinga.
Stream é um parâmetro dinâmico que o provedor FileSystem adiciona a Set-Content
. Esse parâmetro funciona apenas em unidades do sistema de arquivos.
Você pode usar o cmdlet Set-Content
para criar ou atualizar o conteúdo de qualquer fluxo de dados alternativo, como Zone.Identifier
. No entanto, não recomendamos isso como uma forma de eliminar verificações de segurança que bloqueiam arquivos baixados da Internet. Se você verificar se um arquivo baixado é seguro, use o cmdlet Unblock-File
.
Esse 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 arquivos.
Tipo: | String |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-Value
Especifica o novo conteúdo do item.
Tipo: | Object[] |
Cargo: | 1 |
Valor padrão: | None |
Obrigatório: | True |
Aceitar a entrada de pipeline: | True |
Aceitar caracteres curinga: | False |
-WhatIf
Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.
Tipo: | SwitchParameter |
Aliases: | wi |
Cargo: | Named |
Valor padrão: | False |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
Entradas
Você pode redirecionar um objeto que contém o novo valor do item para este cmdlet.
Saídas
None
Por padrão, esse cmdlet não retorna nenhuma saída.
Quando você usa o parâmetro PassThru, esse cmdlet retorna uma cadeia de caracteres que representa o conteúdo.
Observações
-
Set-Content
foi projetado para processamento de cadeia de caracteres. Se você redirecionar objetos que não são de cadeia de caracteres paraSet-Content
, ele converterá o objeto em uma cadeia de caracteres antes de escrevê-lo. Para gravar objetos em arquivos, useOut-File
. - O cmdlet
Set-Content
foi projetado para trabalhar com os dados expostos por qualquer provedor. Para listar os provedores disponíveis na sessão, digiteGet-PsProvider
. Para obter mais informações, consulte about_Providers.