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, um diretório ou um compartilhamento de rede mapeado.
O provedor FileSystem oferece suporte aos cmdlets a seguir, 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
- Add-Content
- Clear-Content
- Get-Content
- Set-Content
Tipos expostos por este provedor
Arquivos são instâncias da classe System.IO.FileInfo . Diretórios são instâncias da classe System.IO.DirectoryInfo .
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. Suporte a HardLink
sistemas de arquivos Linux e macOS e SymLink
. O Windows NTFS oferece suporte a HardLink
, SymLink
Junction
, e vários outros valores para LinkType.
Quando você usa Get-Item
ou Get-ChildItem
para informações sobre um item vinculado, a propriedade Mode contém um l
para indicar que o item é um link. A propriedade LinkType contém o tipo de link.
AppExecLink
links são criados quando você instala um aplicativo da Microsoft Store. Para AppExecLink
links, 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
---- ------------- ------ ----
-a---l 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 quaisquer 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 por 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 que você tenha 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.
Copiando 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 repetir, semelhante ao Get-ChildItem
.
O comando a seguir copia todos os arquivos e diretórios sob o 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 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 obter mais informações, consulte Copy-Item.
Movendo arquivos e diretórios
Este 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
Por padrão, o cmdlet não substitui um arquivo existente que tenha o mesmo nome. Para forçar o cmdlet a substituir um arquivo existente, especifique o parâmetro Force .
Não é possível mover um diretório quando esse diretório é o local atual. Quando você usa Move-Item
para mover o diretório no local atual, você vê 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 comando a seguir lê o conteúdo do Test.txt
arquivo e os fornece 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 o caminho do provedor com o cifrão ($
). O caminho deve ser colocado 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
Este comando acrescenta a cadeia de caracteres "test content" 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
Este comando substitui o conteúdo do arquivo pela cadeia de Test.txt
caracteres "test content":
Set-Content -Path test.txt -Value "test content"
Ele substitui o conteúdo do Test.txt
. Você pode usar o parâmetro Value do New-Item
cmdlet para adicionar conteúdo a um arquivo ao criá-lo.
Percorrer o conteúdo de um arquivo
Por padrão, o Get-Content
cmdlet usa o caractere de fim de linha como seu 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 Delimiter 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 das quais termina com as palavras "End of Employee Record" e o salva na $e
variável.
O segundo comando usa a notação de matriz para obter o primeiro item da coleção no $e
. Ele usa um índice de 0, porque as matrizes do PowerShell são baseadas em zero.
Para obter mais informações sobre Get-Content
cmdlet, 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, canalize o comando para o cmdlet Get-Member ou consulte a classe FileSecurity .
Criando arquivos e diretórios
Criar um diretório
Este 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 New-Item
cmdlet para criar um novo diretório.
Criar um arquivo
Este comando cria o log2.txt
C:\logfiles
arquivo no diretório e, em seguida, adiciona a sequência de caracteres "log de teste" para o 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
Este comando renomeia o a.txt
C:\a
arquivo no 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
Este comando exclui o Test.txt
arquivo no diretório atual:
Remove-Item -Path test.txt
Excluir arquivos usando curingas
Este 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 cmdlet Get-Service para obter informações sobre serviços locais e canaliza as informações para o cmdlet Export-Csv para armazenar as Services.csv
informações no arquivo.
Em seguida, Invoke-Item abre 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 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 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 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 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 parâmetro Attributes 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 <FileSystemCmdletProviderEncoding>
Especifica a codificação do arquivo. O padrão é ASCII.
Ascii
Usa o conjunto de caracteres ASCII (7 bits).BigEndianUnicode
Usa UTF-16 com a ordem de bytes big-endian.BigEndianUTF32
Usa UTF-32 com a ordem de bytes big-endian.Byte
Codifica um conjunto de caracteres em uma sequência de bytes.Default
Usa a codificação que corresponde à página de código ativo do sistema (geralmente ANSI).Oem
Usa a codificação que corresponde à página de código OEM atual do sistema.String
Igual aUnicode
.Unicode
Usa UTF-16 com a ordem de bytes little-endian.Unknown
Igual aUnicode
.UTF7
Usa UTF-7.UTF8
Usa UTF-8.UTF32
Usa UTF-32 com a ordem de bytes little-endian.
Cmdlets suportados
Add-Content
Get-Content
Set-Content
Cadeia de caracteres do delimitador <>
Especifica o delimitador que Get-Content
usa para dividir o arquivo em objetos durante a leitura.
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 dos quais termina com o caractere delimitador.
Inserir um delimitador que não existe no arquivo Get-Content
retorna o arquivo inteiro 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 de arquivo.
Observação
Atualmente, quando o valor do parâmetro Delimiter é uma cadeia de caracteres vazia, Get-Content
não retorna nada. Esse é um problema conhecido. Para forçar Get-Content
o retorno do arquivo inteiro como uma única cadeia de caracteres não delimitada, insira um valor que não existe no arquivo.
Cmdlets suportados
Get-Content
Aguarde <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, Get-Content
verifique o arquivo uma vez a cada segundo até interrompê-lo, por exemplo, pressionando CTRL+C.
Cmdlets suportados
Get-Content
Atributos <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 parâmetro Attributes foi introduzido no Windows PowerShell 3.0.
O parâmetro Attributes oferece suporte aos seguintes atributos:
- Arquivar
- Compactado
- Dispositivo
- Diretório
- Criptografado
- Oculto
- Normal
- NotContentIndexed
- Offline
- ReadOnly (somente-leitura)
- Ponto Reparo
- Arquivo Esparso
- 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 suportados
Get-ChildItem
Diretório <SwitchParameter>
Obtém diretórios (pastas).
O parâmetro Directory foi introduzido no Windows PowerShell 3.0.
Para obter somente 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 Attributes .
Cmdlets suportados
Get-ChildItem
Arquivo <SwitchParameter>
Obtém arquivos.
O parâmetro File foi introduzido no Windows PowerShell 3.0.
Para obter somente arquivos, use o parâmetro File e omita o parâmetro Directory . Para excluir arquivos, use o parâmetro Directory e omita o parâmetro File ou use o parâmetro Attributes .
Cmdlets suportados
Get-ChildItem
Parâmetro oculto <de SwitchParameter>
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 itens ocultos, use o parâmetro Hidden , seus h
aliases ou ah
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 SwitchParameter ReadOnly <>
Obtém somente arquivos somente leitura e diretórios (pastas).
O parâmetro ReadOnly foi introduzido no Windows PowerShell 3.0.
Para obter somente itens somente leitura, use o parâmetro ReadOnly , seu ar
alias ou o valor ReadOnly do parâmetro Attributes . Para excluir itens somente leitura, use o parâmetro Attributes .
Cmdlets suportados
Get-ChildItem
SwitchParameter do sistema <>
Obtém apenas arquivos do sistema e diretórios (pastas).
O parâmetro System foi introduzido no Windows PowerShell 3.0.
Para obter somente arquivos e pastas do sistema, use o parâmetro System , seu as
alias ou o valor System do parâmetro Attributes . Para excluir arquivos e pastas do sistema, use o parâmetro Attributes .
Cmdlets suportados
Get-ChildItem
NewerThan <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 possa ser convertida em um objeto DateTime , como "August 10, 2011 2:00 PM"
.
Cmdlets suportados
OlderThan <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 Get-Date
cmdlet retorna, ou uma cadeia de caracteres que possa ser convertida em um objeto DateTime , como "August 10, 2011 2:00 PM"
.
Cmdlets suportados
Test-Path
Cadeia de caracteres de fluxo <>
Gerencia o fluxo de dados alternados. Insira o nome do fluxo. Os curingas são permitidos apenas em Get-Item
comandos para e Remove-Item
em uma unidade do sistema de arquivos.
Cmdlets suportados
Add-Content
Clear-Content
Get-Item
Get-Content
Remove-Item
Set-Content
Parâmetro de Switch Raw <>
Ignora os caracteres de nova linha. Retorna o conteúdo como um único item.
Cmdlets suportados
Get-Content
Cadeia de caracteres ItemType <>
Esse parâmetro permite especificar o tipo de item a ser criado com New-Item
o .
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
- Ligação simbólica
- Junção
- Ligação Física
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 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 parâmetro Path de para especificar uma unidade do sistema de Get-Help
arquivos.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path c: