Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Nome do provedor
Sistema de Arquivos
Drives
C:, D:, Temp:...
Capabilities
Filtro, ShouldProcess
Descrição curta
Fornece acesso a arquivos e diretórios.
Descrição detalhada
O provedor FileSystem do PowerShell permite que você obtenha, adicione, altere, limpe e exclua arquivos e diretórios no PowerShell.
As unidades FileSystem são um namespace hierárquico que contém os diretórios e arquivos em seu computador. Uma unidade FileSystem pode ser uma unidade lógica ou física, um diretório ou um compartilhamento de rede mapeado.
A partir do PowerShell versão 7.0, uma unidade chamada Temp: é mapeada para o caminho de diretório temporário do usuário. O PowerShell usa o método GetTempPath() do .NET $Env:TEMP. Em sistemas não Windows, o local será o mesmo que $Env:TMPDIR ou /tmp se a variável de ambiente não estiver definida.
O provedor FileSystem dá suporte aos seguintes cmdlets, que são abordados neste artigo.
- Get-Location
- Set-Location
- Get-Item
- Get-ChildItem
- Invoke-Item
- Move-Item
- New-Item
- Remove-Item
- Get-ItemProperty
- Set-ItemProperty
- Clear-Item
- Clear-ItemProperty
- Remove-Item
- Remove-ItemProperty
- Get-Acl
- Set-Acl
- Get-AuthenticodeSignature
- Set-AuthenticodeSignature
- Adicionar Conteúdo
- Limpar Conteúdo
- Get-Content
- Set-Content
Tipos expostos por esse provedor
Os arquivos são instâncias da classe
O Sistema de Tipo Estendido do PowerShell adiciona propriedades extras a esses tipos de objeto para fornecer informações adicionais. Algumas informações são específicas da plataforma. Por exemplo, os valores possíveis da propriedade LinkType dependem da plataforma e do sistema de arquivos que está sendo usado. Sistemas de arquivos linux e macOS dão suporte a HardLink e SymLink. O Windows NTFS dá suporte a HardLink, SymLink, Junctione vários outros valores para LinkType.
Ao usar Get-Item ou Get-ChildItem para obter informações sobre um item vinculado, a propriedade Modo contém um l para indicar que o item é um link. A propriedade LinkType contém o tipo de link.
Os links AppExecLink são criados quando você instala um aplicativo da Microsoft Store. Para links de AppExecLink, o Windows não fornece valores para as propriedades LinkType ou LinkTarget.
Get-Item ~\AppData\Local\Microsoft\WindowsApps\winget.exe
Directory: C:\Users\user1\AppData\Local\Microsoft\WindowsApps
Mode LastWriteTime Length Name
---- ------------- ------ ----
la--- 6/8/2023 12:20 PM 0 winget.exe ->
Navegando nas unidades do sistema de arquivos
O provedor FileSystem expõe seus armazenamentos de dados mapeando as unidades lógicas no computador como unidades do PowerShell. Para trabalhar com uma unidade FileSystem, você pode alterar sua localização para uma unidade usando o nome da unidade seguido de dois-pontos (:).
Set-Location C:
Você também pode trabalhar com o provedor FileSystem a partir de qualquer outra unidade do PowerShell. Para fazer referência a um arquivo ou diretório de outra localização, use o nome da unidade (C:, D:, ...) no caminho.
Nota
O PowerShell usa aliases para permitir uma maneira familiar de trabalhar com caminhos de provedores. Comandos como dir e ls agora são aliases para Get-ChildItem, cd é um alias para Set-Location. e pwd é um alias para Get-Location.
Obtendo arquivos e diretórios
O cmdlet Get-ChildItem retorna todos os arquivos e diretórios no local atual. Você pode especificar um caminho diferente para pesquisar e usar parâmetros internos para filtrar e controlar a profundidade de recursão.
Get-ChildItem
Para ler mais acerca do uso de cmdlet, consulte Get-ChildItem.
Copiando arquivos e diretórios
O cmdlet Copy-Item copia arquivos e diretórios para um local especificado.
Os parâmetros estão disponíveis para filtrar e recursar, semelhante a Get-ChildItem.
O comando a seguir copia todos os arquivos e diretórios no caminho C:\temp\ para a pasta C:\Windows\Temp.
Copy-Item -Path C:\temp\* -Destination C:\Windows\Temp -Recurse -File
Copy-Item substitui arquivos no diretório de destino sem solicitar confirmação.
Esse comando copia o arquivo a.txt do diretório C:\a para o diretório C:\a\bb.
Copy-Item -Path C:\a\a.txt -Destination C:\a\bb\a.txt
Copia todos os diretórios e arquivos no diretório C:\a para o diretório C:\c. Se algum dos diretórios a serem copiados já existir no diretório de destino, o comando falhará, a menos que você especifique o parâmetro Force.
Copy-Item -Path C:\a\* -Destination C:\c -Recurse
Para saber mais, consulte Copy-Item.
Movendo arquivos e diretórios
Esse comando move o arquivo c.txt no diretório C:\a para o diretório C:\a\aa:
Move-Item -Path C:\a\c.txt -Destination C:\a\aa
Por padrão, o cmdlet não substitui um arquivo existente que tenha o mesmo nome. Para forçar o cmdlet a sobrescrever um arquivo existente, especifique o parâmetro Force.
Você não pode mover um diretório quando esse diretório é o local atual. Ao usar Move-Item para mover o diretório no local atual, você verá esse erro.
C:\temp> Move-Item -Path C:\temp\ -Destination C:\Windows\Temp
Move-Item : Cannot move item because the item at 'C:\temp\' is in use.
At line:1 char:1
+ Move-Item C:\temp\ C:\temp2\
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Move-Item], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.MoveItemCommand
Gerenciando o conteúdo do arquivo
Obter o conteúdo de um arquivo
Esse comando obtém o conteúdo do arquivo "Test.txt" e os exibe no console.
Get-Content -Path Test.txt
Você pode canalizar o conteúdo do arquivo para outro cmdlet. Por exemplo, o seguinte comando lê o conteúdo do arquivo
Get-Content -Path Test.txt | ConvertTo-Html
Você também pode recuperar o conteúdo de um arquivo prefixando seu caminho de provedor com o sinal de dólar ($). O caminho deve ser colocado entre chaves devido a restrições nos nomes de variáveis. Para obter mais informações, consulte about_Variables.
${C:\Windows\System32\drivers\etc\hosts}
Adicionar conteúdo a um arquivo
Esse comando acrescenta a cadeia de caracteres "conteúdo de teste" ao arquivo Test.txt:
Add-Content -Path test.txt -Value "test content"
O conteúdo existente no arquivo Test.txt não é excluído.
Substituir o conteúdo de um arquivo
Esse comando substitui o conteúdo do arquivo Test.txt pela cadeia de caracteres "conteúdo de teste":
Set-Content -Path test.txt -Value "test content"
Ele substitui o conteúdo de Test.txt. Você pode usar o parâmetro Value do cmdlet New-Item para adicionar conteúdo a um arquivo ao criá-lo.
Percorrer o conteúdo de um arquivo
Por padrão, o cmdlet Get-Content usa o caractere de fim de linha como delimitador, portanto, ele obtém um arquivo como uma coleção de cadeias de caracteres, com cada linha como uma cadeia de caracteres no arquivo.
Você pode usar o parâmetro delimitador de para especificar um delimitador alternativo. Se você defini-lo para os caracteres que denotam o final de uma seção ou o início da próxima seção, você pode dividir o arquivo em partes lógicas.
O primeiro comando obtém o arquivo Employees.txt e o divide em seções, cada uma delas termina com as palavras "Fim do Registro de Funcionário" e o salva na variável $e.
O segundo comando usa a notação de matriz para obter o primeiro item da coleção em $e. Ele usa um índice de 0, pois as matrizes do PowerShell são baseadas em zero.
Para obter mais informações sobre o cmdlet Get-Content, consulte o tópico de ajuda do Get-Content.
Para obter mais informações sobre matrizes, consulte about_Arrays.
$e = Get-Content C:\test\employees.txt -Delimited "End Of Employee Record"
$e[0]
Gerenciando descritores de segurança
Exibir a ACL de um arquivo
Este comando retorna um objeto System.Security.AccessControl.FileSecurity:
Get-Acl -Path test.txt | Format-List -Property *
Para obter mais informações sobre esse objeto, redirecione o comando para o cmdlet
Criando arquivos e diretórios
Criar um diretório
Esse comando cria o diretório logfiles na unidade C:
New-Item -Path C:\ -Name logfiles -Type Directory
O PowerShell também inclui uma função de mkdir (alias md) que usa o cmdlet New-Item para criar um novo diretório.
Criar um arquivo
Esse comando cria o arquivo log2.txt no diretório C:\logfiles e adiciona a cadeia de caracteres "log de teste" ao arquivo:
New-Item -Path C:\logfiles -Name log2.txt -Type File
Criar um arquivo com conteúdo
Cria um arquivo chamado log2.txt no diretório C:\logfiles e adiciona a cadeia de caracteres "log de teste" ao arquivo.
New-Item -Path C:\logfiles -Name log2.txt -Type File -Value "test log"
Renomeando arquivos e diretórios
Renomear um arquivo
Esse comando renomeia o arquivo a.txt no diretório C:\a para b.txt:
Rename-Item -Path C:\a\a.txt -NewName b.txt
Renomear um diretório
Esse comando renomeia o diretório C:\a\cc para C:\a\dd:
Rename-Item -Path C:\a\cc -NewName dd
Excluindo arquivos e diretórios
Excluir um arquivo
Esse comando exclui o arquivo Test.txt no diretório atual:
Remove-Item -Path test.txt
Excluir arquivos usando curingas
Esse comando exclui todos os arquivos no diretório atual que têm a extensão de nome de arquivo .xml:
Remove-Item -Path *.xml
Iniciando um programa invocando um arquivo associado
Invocar um arquivo
O cmdlet Get-Service obtém informações sobre os serviços locais e redireciona as informações para o cmdlet Export-Csv para armazenar as informações no arquivo Services.csv.
Em seguida, Invoke-Item abre o arquivo services.csv no programa associado à extensão .csv:
Get-Service | Export-Csv -Path services.csv
Invoke-Item -Path services.csv
Obtendo arquivos e pastas com atributos especificados
Obter arquivos do sistema
Esse comando obtém arquivos do sistema no diretório atual e seus subdiretórios.
Ele usa o parâmetro File para obter apenas arquivos (não diretórios) e o parâmetro System para obter apenas itens com o atributo "system".
Ele usa o parâmetro Recurse para obter os itens no diretório atual e em todos os subdiretórios.
Get-ChildItem -File -System -Recurse
Obter arquivos ocultos
Esse comando obtém todos os arquivos, incluindo arquivos ocultos, no diretório atual.
Ele usa o parâmetro Attributes com dois valores, !Directory+Hidden, que obtém arquivos ocultos e !Directory, que obtém todos os outros arquivos.
Get-ChildItem -Attributes !Directory,!Directory+Hidden
dir -Att !d,!d+h é o equivalente a esse comando.
Obter arquivos compactados e criptografados
Esse comando obtém arquivos no diretório atual compactados ou criptografados.
Ele usa o parâmetro atributos com dois valores, Compressed e Encrypted. Os valores são separados por uma vírgula , que representa o operador "OR".
Get-ChildItem -Attributes Compressed,Encrypted
Parâmetros dinâmicos
Parâmetros dinâmicos são parâmetros de cmdlet que são adicionados por um provedor do PowerShell e estão disponíveis somente quando o cmdlet está sendo usado na unidade habilitada para provedor.
Codificação <Codificação>
Especifica a codificação de arquivo. O padrão é ASCII.
-
ascii: usa a codificação para o conjunto de caracteres ASCII (7 bits). -
bigendianunicode: codifica em formato UTF-16 usando a ordem de byte big-endian. -
bigendianutf32: codifica em formato UTF-32 usando a ordem de byte big-endian. -
oem: Usa a codificação padrão para MS-DOS e para programas de console. -
unicode: codifica em formato UTF-16 usando a ordem de byte little-endian. -
utf7: codifica em formato UTF-7. -
utf8: codifica em formato UTF-8. -
utf8BOM: codifica em formato UTF-8 com BOM (marca de ordem de byte) -
utf8NoBOM: codifica no formato UTF-8 sem Byte Order Mark (BOM) -
utf32: codifica em formato UTF-32.
Cmdlets suportados
Add-ContentGet-ContentSet-Content
Cadeia de caracteres delimitadora <>
Especifica o delimitador que Get-Content usa para dividir o arquivo em objetos enquanto ele lê.
O padrão é \n, o caractere de fim de linha.
Ao ler um arquivo de texto, Get-Content retorna uma coleção de objetos de cadeia de caracteres, cada um deles termina com o caractere delimitador.
Inserindo um delimitador que não existe no arquivo, Get-Content retorna todo o arquivo como um único objeto não delimitado.
Você pode usar esse parâmetro para dividir um arquivo grande em arquivos menores especificando um separador de arquivo, como "Fim do Exemplo", como o delimitador. O delimitador é preservado (não descartado) e se torna o último item em cada seção de arquivo.
Nota
Atualmente, quando o valor do parâmetro Delimitador é uma cadeia de caracteres vazia, Get-Content não retorna nada. Esse é um problema conhecido. Para forçar o Get-Content a retornar todo o arquivo como uma única cadeia de caracteres sem delimitadores, insira um valor que não existe no arquivo.
Cmdlets suportados
Get-Content
Parâmetro de comutação de espera <>
Aguarda que o conteúdo seja acrescentado ao arquivo. Se o conteúdo for acrescentado, ele retornará o conteúdo acrescentado. Se o conteúdo tiver sido alterado, ele retornará todo o arquivo.
Ao aguardar, Get-Content verifica o arquivo uma vez a cada segundo até interrompê-lo, como pressionando CTRL+C.
Cmdlets suportados
Get-Content
AtributosFlagsExpression <>
Obtém arquivos e pastas com os atributos especificados. Esse parâmetro dá suporte a todos os atributos e permite especificar combinações complexas de atributos.
O parâmetro Atributos foi introduzido no Windows PowerShell 3.0.
O parâmetro Atributos dá suporte aos seguintes atributos:
- Archive
- Compressed
- Device
- Directory
- Criptografado
- Hidden
- Normal
- NotContentIndexed
- Offline
- ReadOnly
- ReparsePoint
- SparseFile
- System
- Temporary
Para obter uma descrição desses atributos, consulte a enumeração FileAttributes.
Use os operadores a seguir para combinar atributos.
-
!- NÃO -
+- E -
,- OU
Nenhum espaço é permitido entre um operador e seu atributo. No entanto, os espaços são permitidos antes de vírgulas.
Cmdlets suportados
Get-ChildItem
Diretório <SwitchParameter>
Obtém diretórios (pastas).
O parâmetro Directory foi introduzido no Windows PowerShell 3.0.
Para obter apenas diretórios, use o parâmetro Directory e omita o parâmetro File. Para excluir diretórios, use o parâmetro File e omita o parâmetro Directory, ou use o parâmetro Atributos.
Cmdlets suportados
Get-ChildItem
Arquivo <SwitchParameter>
Obtém arquivos.
O parâmetro File foi introduzido no Windows PowerShell 3.0.
Para obter apenas arquivos, use o parâmetro
Cmdlets suportados
Get-ChildItem
Parâmetro de comutação oculto <>
Obtém apenas arquivos e diretórios ocultos (pastas). Por padrão, Get-ChildItem obtém apenas itens não ocultos.
O parâmetro Hidden foi introduzido no Windows PowerShell 3.0.
Para obter apenas os itens ocultos, use o parâmetro Hidden, seu alias h ou ah ou o valor Hidden do parâmetro Attributes. Para excluir itens ocultos, omita o parâmetro Hidden ou use o parâmetro Attributes.
Cmdlets suportados
Get-ChildItem
Parâmetro de comutação ReadOnly <>
Obtém somente arquivos somente leitura e diretórios (pastas).
O parâmetro
Para obter apenas os itens somente leitura, use o parâmetro ReadOnly, seu alias ar ou o valor ReadOnly do parâmetro Attributes. Para excluir itens somente leitura, use o parâmetro Attributes.
Cmdlets suportados
Get-ChildItem
Parâmetro de comutação do sistema <>
Obtém apenas arquivos e diretórios do sistema (pastas).
O parâmetro System foi introduzido no Windows PowerShell 3.0.
Para obter apenas arquivos e pastas do sistema, use o parâmetro System, ou seu alias as, ou o valor System do parâmetro Atributos. Para excluir arquivos e pastas do sistema, use o parâmetro Attributes.
Cmdlets suportados
Get-ChildItem
DateTime mais recente que <>
Retorna $true quando o valor LastWriteTime de um arquivo é maior que a data especificada. Caso contrário, ele retornará $false.
Insira um objeto DateTime, como um que o cmdlet Get-Date retorna, ou uma string que pode ser convertida em um objeto DateTime, como "August 10, 2011 2:00 PM".
Cmdlets suportados
Mais antigo que <DateTime>
Retorna $true quando o valor LastWriteTime de um arquivo é menor que a data especificada. Caso contrário, ele retornará $false.
Insira um objeto
Cmdlets suportados
Test-Path
Cadeia de caracteres de fluxo <>
Gerencia fluxos de dados alternativos. Insira o nome do fluxo. Curingas só são permitidos nos comandos Get-Item e Remove-Item, em uma unidade do sistema de arquivos.
Cmdlets suportados
Add-ContentClear-ContentGet-ItemGet-ContentRemove-ItemSet-Content
Parâmetro de comutação bruto <>
Ignora os caracteres de nova linha. Retorna o conteúdo como um único item.
Cmdlets suportados
Get-Content
TipoDeItem <CadeiaDeCaracteres>
Esse parâmetro permite que você especifique o tipo de item a ser criado com New-Item.
Os valores disponíveis desse parâmetro dependem do provedor atual que você está usando.
Em uma unidade FileSystem, os seguintes valores são permitidos:
- Arquivo
- Diretório
- SymbolicLink
- Junção
- HardLink
Cmdlets suportados
New-Item
Usando o pipeline
Os cmdlets do provedor aceitam entrada de pipeline. Você pode usar o pipeline para simplificar a tarefa, enviando dados do provedor de um cmdlet para outro cmdlet do provedor. Para saber mais sobre como usar o pipeline com cmdlets de provedor, consulte as referências de cmdlet fornecidas ao longo deste artigo.
Obtendo ajuda
A partir do Windows PowerShell 3.0, você pode obter tópicos da Ajuda personalizados para cmdlets do provedor que explicam como esses cmdlets se comportam em uma unidade de sistema de arquivos.
Para obter os tópicos de ajuda personalizados para a unidade do sistema de arquivos, execute um comando Get-Help em uma unidade do sistema de arquivos ou use o parâmetro Path de Get-Help para especificar uma unidade do sistema de arquivos.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path c: