Set-Content
Grava 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 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 pelo 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 .txt arquivos que começam com Test*
no diretório atual. O cmdlet Set-Content
usa o parâmetro Path para especificar os arquivos 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 escrever conteúdo
Este exemplo cria um novo arquivo e grava a data e 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 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 num ficheiro
Este comando substitui todas as instâncias do Word dentro de 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 entre parênteses para que o comando termine 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 por Caution. 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 Last 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
para o valor vazio.
Set-Content -Path C:\Temp\* -Filter *.txt -Value "Empty"
Parâmetros
-AsByteStream
Este é um parâmetro dinâmico disponibilizado pelo provedor FileSystem. Para obter mais informações, consulte about_FileSystem_Provider.
Especifica que o conteúdo deve ser escrito 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 Encoding. O parâmetro AsByteStream ignora qualquer codificação e a saída é gravada como um fluxo de bytes.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-Confirm
Solicita confirmação antes de executar o cmdlet.
Tipo: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-Credential
Observação
Esse parâmetro não é suportado por nenhum provedor instalado com o PowerShell. Para representar outro usuário ou elevar suas credenciais ao executar esse cmdlet, use Invoke-Command.
Tipo: | PSCredential |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | False |
-Encoding
Este é um parâmetro dinâmico disponibilizado pelo provedor 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 ao Set-Content
. Este parâmetro funciona apenas em unidades do sistema de arquivos.
Os valores aceitáveis para este 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 no 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 em formato UTF-7. -
utf8
: Codifica em formato UTF-8. -
utf8BOM
: Codifica no formato UTF-8 com marca de ordem de bytes (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 Encoding também permite IDs numéricos 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 Encoding para passar a ID numérica para a página de código ANSI da cultura atual sem precisar especificá-la manualmente.
Observação
UTF-7* não é mais recomendado para usar. A partir do PowerShell 7.1, um aviso será escrito se você especificar utf7
para o parâmetro Encoding.
Tipo: | Encoding |
Valores aceites: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Default value: | utf8NoBOM |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | 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 Exclude só é efetivo quando o comando inclui o conteúdo de um item, como C:\Windows\*
, onde o caractere curinga especifica o conteúdo do diretório C:\Windows
.
Tipo: | String[] |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | True |
-Filter
Especifica um filtro para qualificar o parâmetro Path. O provedor FileSystem é o único provedor do PowerShell instalado que oferece suporte ao uso de filtros. Você pode encontrar a sintaxe do FileSystem linguagem de filtro em about_Wildcards. Os filtros são mais eficientes do que outros parâmetros, porque o provedor os aplica quando o cmdlet obtém os objetos em vez de fazer com que o PowerShell filtre os objetos depois que eles são recuperados.
Tipo: | String |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | 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 fornecedor para fornecedor. Para obter mais informações, consulte about_Providers. O parâmetro Force não substitui as restrições de segurança.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | 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ó é efetivo quando o comando inclui o conteúdo de um item, como C:\Windows\*
, onde o caractere curinga especifica o conteúdo do diretório C:\Windows
.
Tipo: | String[] |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | 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. 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 |
Position: | Named |
Default value: | None |
Necessário: | True |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | False |
-NoNewline
Este é um parâmetro dinâmico disponibilizado pelo provedor 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 novas linhas são inseridos entre as cadeias de caracteres de saída. Nenhuma nova linha é adicionada após a última cadeia de caracteres de saída.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-PassThru
Retorna um objeto que representa o conteúdo. Por padrão, esse cmdlet não gera nenhuma saída.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-Path
Especifica o caminho do item que recebe o conteúdo. Caracteres curinga são permitidos.
Tipo: | String[] |
Position: | 0 |
Default value: | None |
Necessário: | True |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | True |
-Stream
Este é um parâmetro dinâmico disponibilizado pelo provedor FileSystem. Este parâmetro só está disponível no Windows. Para obter mais informações, consulte about_FileSystem_Provider.
Especifica um fluxo de dados alternativo para o conteúdo. Se o fluxo não existir, este cmdlet o cria. Não há suporte para caracteres curinga.
Stream é um parâmetro dinâmico que o provedor de FileSystem adiciona ao Set-Content
. Este 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 as 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 e arquivos.
Tipo: | String |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-Value
Especifica o novo conteúdo do item.
Tipo: | Object[] |
Position: | 1 |
Default value: | None |
Necessário: | True |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | False |
-WhatIf
Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.
Tipo: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
Entradas
Você pode canalizar um objeto que contém o novo valor para o 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.
Notas
-
Set-Content
é projetado para processamento de cadeia de caracteres. Se você canalizar objetos que não sejam de cadeia de caracteres paraSet-Content
, ele converterá o objeto em uma cadeia de caracteres antes de gravá-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 em sua sessão, digiteGet-PsProvider
. Para obter mais informações, consulte about_Providers.