about_FileSystem_Provider
Nome do provedor
FileSystem
Unidades
C:
, D:
, Temp:
...
Funcionalidades
Filtrar, ShouldProcess
Descrição breve
Fornece acesso a arquivos e diretórios.
Descrição detalhada
O provedor PowerShell FileSystem permite obter, adicionar, alterar, limpar e excluir 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, diretório ou 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 .NET GetTempPath() para determinar o local da pasta temporária. No Windows, o local é o mesmo que $env:TEMP
. Em sistemas não Windows, o local é o mesmo $env:TMPDIR
que ou /tmp
se a variável de ambiente não está definida.
O provedor FileSystem dá suporte aos cmdlets a seguir, 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
Tipos expostos por esse provedor
Os arquivos são instâncias da classe System.IO.FileInfo . Os diretórios são instâncias da classe System.IO.DirectoryInfo .
Navegando pelas unidades do FileSystem
O provedor FileSystem expõe seus armazenamentos de dados mapeando todas as unidades lógicas no computador como unidades do PowerShell. Para trabalhar com uma unidade FileSystem , você pode alterar seu local para uma unidade usando o nome da unidade seguido de dois-pontos (:
).
Set-Location C:
Você também pode trabalhar com o provedor FileSystem de qualquer outra unidade do PowerShell. Para fazer referência a um arquivo ou diretório de outro local, use o nome da unidade (C:
, D:
, ...) no caminho.
Observação
O PowerShell usa aliases para permitir uma maneira familiar de trabalhar com caminhos de provedor. 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 Get-ChildItem
cmdlet 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 sobre o uso do cmdlet, consulte Get-ChildItem.
Copiar arquivos e diretórios
O Copy-Item
cmdlet copia arquivos e diretórios para um local especificado.
Os parâmetros estão disponíveis para filtrar e recursar, semelhantes 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 a.txt
arquivo do C:\a
diretório para o C:\a\bb
diretório.
Copy-Item -Path C:\a\a.txt -Destination C:\a\bb\a.txt
Copia todos os diretórios e arquivos no C:\a
diretório para o C:\c
diretório. Se qualquer um dos diretórios para copiar 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 obter mais informações, consulte Copy-Item.
Mover arquivos e diretórios
Esse comando move o c.txt
arquivo no C:\a
diretório para o C:\a\aa
diretório:
Move-Item -Path C:\a\c.txt -Destination C:\a\aa
O comando não substituirá automaticamente um arquivo existente que tenha o mesmo nome. Para forçar o cmdlet a substituir um arquivo existente, especifique o parâmetro Force.
Você não pode mover um diretório quando aquele 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
Gerenciamento de conteúdo de 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 comando a seguir lê o conteúdo do Test.txt
arquivo e, em seguida, fornece-os como entrada para o cmdlet ConvertTo-Html :
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 estar entre chaves devido a restrições de nomenclatura variável. 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 "testar conteúdo" ao Test.txt
arquivo:
Add-Content -Path test.txt -Value "test content"
O conteúdo existente no Test.txt
arquivo não é excluído.
Substituir o conteúdo de um arquivo
Esse comando substitui o conteúdo do arquivo pela cadeia de Test.txt
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.
Loop através do conteúdo de um arquivo
Por padrão, o Get-Content
cmdlet usa o caractere de fim de linha como delimitador, de modo que 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 -Delimiter
parâmetro para especificar um delimitador alternativo. Se você defini-lo para os caracteres que indicam 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 Employees.txt
arquivo e o divide em seções, cada uma delas termina com as palavras "Fim do Registro do Funcionário" e o salva na $e
variável.
O segundo comando usa notação de matriz para obter o primeiro item na 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 Get-Content
o cmdlet, consulte o tópico de ajuda para obter conteúdo.
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, pipe o comando para o cmdlet Get-Member . Ou consulte a Classe FileSecurity .
Modificar a ACL de um arquivo
Criar e definir uma ACL para um arquivo
Criando arquivos e diretórios
Criar um diretório
Esse comando cria o logfiles
diretório na C
unidade:
New-Item -Path c:\ -Name logfiles -Type directory
O PowerShell também inclui uma mkdir
função (alias md
) que usa o cmdlet New-Item para criar um novo diretório.
Criar um arquivo
Esse comando cria o log2.txt
arquivo no C:\logfiles
diretório e adiciona a cadeia de caracteres "log de teste" ao arquivo:
New-Item -Path c:\logfiles -Name log2.txt -Type file
Crie um arquivo com conteúdo
Cria um arquivo chamado log2.txt
no C:\logfiles
diretório 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 a.txt
arquivo no C:\a
diretório para b.txt
:
Rename-Item -Path c:\a\a.txt -NewName b.txt
Renomear um diretório
Este comando renomeia o C:\a\cc
diretório para C:\a\dd
:
Rename-Item -Path c:\a\cc -NewName dd
Excluindo arquivos e diretórios
Excluir um arquivo
Esse comando exclui o Test.txt
arquivo 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 .xml
arquivo:
Remove-Item -Path *.xml
Iniciando um programa invocando um arquivo associado
Invocar um arquivo
O primeiro comando usa o cmdlet Get-Service para obter informações sobre serviços locais.
Ele canaliza as informações para o cmdlet Export-Csv e armazena essas informações no Services.csv
arquivo.
O segundo comando usa Invoke-Item para abrir o services.csv
arquivo no programa associado à .csv
extensão:
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 em seus subdiretórios.
Ele usa o -File
parâmetro para obter apenas arquivos (não diretórios) e o -System
parâmetro para obter apenas itens com o atributo "system".
Ele usa o -Recurse
parâmetro para obter os itens no diretório atual e todos os subdiretórios.
Get-ChildItem -File -System -Recurse
Obter arquivos ocultos
Esse comando obtém todos os arquivos, inclusive arquivos ocultos, no diretório atual.
Ele usa o parâmetro Atributos 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 este comando.
Obter arquivos compactados e criptografados
Esse comando obtém os arquivos no diretório atual que são compactados ou criptografados.
Ele usa o -Attributes
parâmetro 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.
Codificando <Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding>
Especifica a codificação do arquivo. O padrão é ASCII.
- ASCII: usa a codificação para o conjunto de caracteres ASCII (7 bits).
- BigEndianUnicode: codifica no formato UTF-16 usando a ordem de byte big-endian.
- Cadeia de caracteres: usa o tipo de codificação para uma cadeia de caracteres.
- Unicode: codifica no formato UTF-16 usando a ordem de byte de pouco-endiano.
- 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)
- UF8NOBOM: Codifica no formato UTF-8 sem Marca de Ordem de Byte (BOM)
- UTF32: Codifica no formato UTF-32.
- Padrão: codifica na página de código instalada padrão.
- OEM: usa a codificação padrão para programas MS-DOS e console.
- Desconhecido: o tipo de codificação é desconhecido ou inválido. Os dados podem ser tratados como binários.
Cmdlets com suporte
Delimitador <System.String>
Especifica o delimitador que o 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 "Final de exemplo," como o delimitador. O delimitador é preservado (não descartado) e se torna o último item em cada seção do arquivo.
Observação
Atualmente, quando o valor do -Delimiter
parâmetro é uma cadeia de caracteres vazia, Get-Content não retorna nada. Este é um problema conhecido. Para forçar o Get-Content a retornar o arquivo inteiro como uma única cadeia de caracteres não delimitada, insira um valor que não existe no arquivo.
Cmdlets com suporte
Aguarde <System.Management.Automation.SwitchParameter>
Aguarda o conteúdo a ser anexado ao arquivo. Se o conteúdo será anexado, ele retorna o conteúdo anexado. Se o conteúdo tiver sido alterado, ele retornará o arquivo inteiro.
Ao aguardar, o Get-Content verifica o arquivo uma vez por segundo até você interrompê-lo, por exemplo, pressionando CTRL + C.
Cmdlets com suporte
Attributes <FlagsExpression>
Obtém os arquivos e pastas com os atributos especificados. Esse parâmetro dá suporte a todos os atributos e permite que você especifique combinações complexas de atributos.
O -Attributes
parâmetro foi introduzido no Windows PowerShell 3.0.
O -Attributes
parâmetro dá suporte aos seguintes atributos:
- Arquivar
- Compactado
- Dispositivo
- Diretório
- Criptografado
- Oculto
- Normal
- NotContentIndexed
- Offline
- ReadOnly (somente-leitura)
- ReparsePoint
- SparseFile
- Sistema
- Temporário
Para obter uma descrição desses atributos, consulte a enumeração FileAttributes .
Use os seguintes operadores para combinar atributos.
!
- NÃO+
- E,
- OU
Nenhum espaço é permitido entre o operador e seus atributos. No entanto, os espaços são permitidos antes de vírgulas.
Cmdlets com suporte
Directory <System.Management.Automation.SwitchParameter>
Obtém os diretórios (pastas).
O -Directory
parâmetro foi introduzido no Windows PowerShell 3.0.
Para obter apenas diretórios, use o -Directory
parâmetro e omita o -File
parâmetro. Para excluir diretórios, use o -File
parâmetro e omita o -Directory
parâmetro ou use o -Attributes
parâmetro.
Cmdlets com suporte
File <System.Management.Automation.SwitchParameter>
Obtém arquivos.
O -File
parâmetro foi introduzido no Windows PowerShell 3.0.
Para obter apenas arquivos, use o -File
parâmetro e omita o -Directory
parâmetro. Para excluir arquivos, use o -Directory
parâmetro e omita o -File
parâmetro ou use o -Attributes
parâmetro.
Cmdlets com suporte
Hidden <System.Management.Automation.SwitchParameter>
Obtém somente arquivos ocultos e diretórios (pastas). Por padrão, Get-ChildItem obtém apenas itens não ocultos.
O -Hidden
parâmetro foi introduzido no Windows PowerShell 3.0.
Para obter apenas itens ocultos, use o -Hidden
parâmetro, seus h
aliases ou ah
o valor oculto do -Attributes
parâmetro. Para excluir itens ocultos, omita o -Hidden
parâmetro ou use o -Attributes
parâmetro.
Cmdlets com suporte
ReadOnly <System.Management.Automation.SwitchParameter>
Obtém somente arquivos somente leitura e diretórios (pastas).
O -ReadOnly
parâmetro foi introduzido no Windows PowerShell 3.0.
Para obter apenas itens somente leitura, use o -ReadOnly
parâmetro, seu ar
alias ou o valor ReadOnly do -Attributes
parâmetro. Para excluir itens somente leitura, use o -Attributes
parâmetro.
Cmdlets com suporte
System <System.Management.Automation.SwitchParameter>
Obtém somente os arquivos do sistema e diretórios (pastas).
O -System
parâmetro foi introduzido no Windows PowerShell 3.0.
Para obter apenas arquivos e pastas do sistema, use o -System
parâmetro, seu as
alias ou o valor do sistema do -Attributes
parâmetro. Para excluir arquivos e pastas do sistema, use o -Attributes
parâmetro.
Cmdlets com suporte
NewerThan <System.DateTime>
Retorna $True
quando o LastWriteTime
valor 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 cadeia de caracteres que pode ser convertida em um objeto DateTime , como "August 10, 2011 2:00 PM"
.
Cmdlets com suporte
OlderThan <System.DateTime>
Retorna $True
quando o LastWriteTime
valor de um arquivo é menor que a data especificada. Caso contrário, ele retornará $False
.
Insira um objeto DateTime , como um que o cmdlet Get-Date retorna ou uma cadeia de caracteres que pode ser convertida em um objeto DateTime , como "August 10, 2011 2:00 PM"
.
Cmdlets com suporte
Stream <System.String>
Gerencia o fluxo de dados alternados. Insira o nome do fluxo. Curingas são permitidos somente em comandos Get-Item for e Remove-Item em uma unidade do sistema de arquivos.
Cmdlets com suporte
SwitchParameter Bruto <>
Ignora os caracteres de nova linha. Retorna o conteúdo como um único item.
Cmdlets com suporte
Cadeia de caracteres ItemType <>
Esse parâmetro permite que você especifique o tye do item a ser criado com New-Item
Os valores disponíveis desse parâmetro dependem do provedor atual que você está usando.
Em uma FileSystem
unidade, os seguintes valores são permitidos:
- Arquivo
- Diretório
- SymbolicLink
- Junção
- HardLink
Cmdlets com suporte
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 ler 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 -Path
parâmetro get-help para especificar uma unidade do sistema de arquivos.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path c: