Set-Content
Grava um novo conteúdo ou substitui o conteúdo existente em um arquivo.
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 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 Add-Content
cmdlet que acrescenta conteúdo a um arquivo. Para enviar conteúdo para Set-Content
você, 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 Get-ChildItem
cmdlet usa o parâmetro Path para listar .txt arquivos que começam no Test*
diretório atual. O Set-Content
cmdlet usa o parâmetro Path para especificar os Test*.txt
arquivos. O parâmetro Value fornece a cadeia de caracteres de texto Hello, World, que substitui o conteúdo existente em cada arquivo. O Get-Content
cmdlet usa o parâmetro Path para especificar os Test*.txt
arquivos e exibe o conteúdo de cada arquivo no console do PowerShell.
Exemplo 2: Create 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 Get-Content
cmdlet 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 do word 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 Get-Content
cmdlet usa o parâmetro Path para especificar o arquivo Notice.txt no diretório atual. O Get-Content
comando é 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 ForEach-Object
cmdlet .
ForEach-Object
usa a variável $_
automática e substitui cada ocorrência de Aviso por Cuidado. Os objetos são enviados pelo pipeline para o Set-Content
cmdlet . Set-Content
usa o parâmetro Path para especificar o arquivo Notice.txt e grava o conteúdo atualizado no arquivo.
O último Get-Content
cmdlet 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 Set-Content
cmdlet . 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 *.txt
arquivos no C:\Temp
diretório 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 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 Encoding . O parâmetro AsByteStream ignora qualquer codificação e a saída é gravada como um fluxo de bytes.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Solicita 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
Observação
Esse parâmetro não é compatível com nenhum provedor instalado com o PowerShell. Para representar outro usuário ou elevar suas credenciais ao executar esse cmdlet, use Invoke-Command.
Type: | PSCredential |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Encoding
Esse é 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 a Set-Content
. Esse parâmetro funciona somente em unidades de 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).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 MS-DOS e console.unicode
: codifica no formato UTF-16 usando a ordem de byte little-endian.utf7
: codifica no formato UTF-7.utf8
: codifica no formato UTF-8.utf8BOM
: codifica no formato UTF-8 com Marca de Pedido de Byte (BOM)utf8NoBOM
: codifica no formato UTF-8 sem marca de pedido de byte (BOM)utf32
: codifica no formato UTF-32.
A partir do PowerShell 6.2, o parâmetro Decodificação 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.
Observação
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 Decodificaçã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 de caracteres, um item ou itens que esse cmdlet exclui na operação. O valor deste 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ó é eficaz quando o comando inclui o conteúdo de um item, como C:\Windows\*
, em que o caractere curinga 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 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 em 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 fazer com que o PowerShell filtre os objetos depois que eles são recuperados.
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 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 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 de caracteres, um item ou itens que esse cmdlet inclui na operação. O valor deste 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 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 um ou mais locais. O valor de LiteralPath é usado exatamente como ele é digitado. Nenhum caractere é interpretado como caractere 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.
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-NoNewline
Esse é 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. Não são inseridos espaços ou novas linhas entre as cadeias de caracteres de saída. Nenhuma nova linha é adicionada após a última cadeia de caracteres de saída.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PassThru
Retorna um objeto que representa o conteúdo. Por padrão, este cmdlet não gera saída.
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. Caracteres curinga são permitidos.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-Stream
Esse é 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 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 somente em unidades de sistema de arquivos.
Você pode usar 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 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 Unblock-File
cmdlet .
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.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Value
Especifica o novo conteúdo para o item.
Type: | Object[] |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-WhatIf
Mostra o que aconteceria se o cmdlet fosse executado. 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
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
Set-Content
cmdlet foi projetado para funcionar 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.