about_FileSystem_Provider

Nome do fornecedor

Sistema de arquivos

Unidades

C:, D:, Temp: ...

Capacidades

Filtrar, DeveProcessar

Breve descrição

Fornece acesso a arquivos e diretórios.

Descrição detalhada

O provedor do 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 que não sejam Windows, o local é o mesmo que $env:TMPDIR ou /tmp se a variável de ambiente não estiver definida.

O provedor FileSystem oferece suporte aos cmdlets a seguir, que são abordados neste artigo.

Tipos expostos por este provedor

Os 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 NTFS do Windows suporta HardLink, SymLink, Junctione 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
----                 -------------         ------ ----
la---            6/8/2023 12:20 PM              0 winget.exe ->

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 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.

Nota

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.

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 recursar, 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.

Este comando copia o a.txtC:\a arquivo do 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.txtC:\a arquivo no 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 com 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 conteúdo de arquivo

Obter o conteúdo de um ficheiro

Este 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 fechado em chaves devido a restrições de nomenclatura variáveis. Para obter mais informações, consulte about_Variables.

${C:\Windows\System32\Drivers\etc\hosts}

Adicionar conteúdo a um ficheiro

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 ficheiro

Este comando substitui o Test.txt conteúdo do arquivo pela cadeia de caracteres "conteúdo de teste":

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, 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 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 Employees.txt arquivo e o divide em seções, cada uma das quais termina com as palavras "End of Employee Record" e salva-o $e na variável.

O segundo comando usa notação de matriz para obter o primeiro item da coleção em $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]

Gestão de 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 .

Criação de 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 ficheiro

Este comando cria o log2.txtC:\logfiles arquivo no diretório e, em seguida, 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 C:\logfiles diretório e adiciona a string "test log" ao arquivo.

New-Item -Path c:\logfiles -Name log2.txt -Type file -Value "test log"

Renomeando arquivos e diretórios

Mudar o nome de um ficheiro

Este comando renomeia o a.txtC:\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

Eliminar um ficheiro

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 ficheiro

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 informações no Services.csv 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

Este 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 todos os subdiretórios.

Get-ChildItem -File -System -Recurse

Obter ficheiros ocultos

Este 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 este comando.

Obter ficheiros comprimidos e encriptados

Este comando obtém 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 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 <de codificação>

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 bytes big-endian.
  • bigendianutf32: Codifica no formato UTF-32 usando a ordem de bytes big-endian.
  • oem: Usa a codificação padrão para MS-DOS e programas de 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 em formato UTF-32.

Cmdlets suportados

  • Add-Content
  • Get-Content
  • Set-Content

String do delimitador <>

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 dos quais termina com o caractere delimitador.

Inserindo 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 "End of Example", 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 Delimiter é uma cadeia de caracteres vazia, Get-Content não retorna nada. Trata-se de 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 que o conteúdo seja anexado ao ficheiro. Se o conteúdo for acrescentado, ele retornará o conteúdo anexado. Se o conteúdo tiver sido alterado, ele retornará o arquivo inteiro.

Ao esperar, 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 arquivos e pastas com os atributos especificados. Este parâmetro suporta todos os atributos e permite especificar combinações complexas de atributos.

O parâmetro Attributes foi introduzido no Windows PowerShell 3.0.

O parâmetro Attributes suporta os seguintes atributos:

  • Arquivo
  • Comprimido
  • Dispositivo
  • Diretório
  • Criptografado
  • Escondido
  • Normal
  • NotContentIndexed
  • Offline
  • Somente leitura
  • ReparsePoint
  • SparseFile
  • Sistema
  • Temporário

Para obter uma descrição desses atributos, consulte a enumeração FileAttributes .

Use os operadores a seguir para combinar atributos.

  • ! - NÃO
  • + - E
  • , - OU

Não são permitidos espaços entre um operador e o seu atributo. No entanto, são permitidos espaços antes das 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 Attributes .

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 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

SwitchParameter oculto <>

Obtém apenas arquivos ocultos e diretórios (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 Oculto , seus h aliases ou ah o valor Hidden do parâmetro Atributos . Para excluir itens ocultos, omita o parâmetro Hidden ou use o parâmetro Attributes .

Cmdlets suportados

  • Get-ChildItem

ReadOnly <SwitchParameter>

Obtém somente arquivos e diretórios somente leitura (pastas).

O parâmetro ReadOnly foi introduzido no Windows PowerShell 3.0.

Para obter apenas 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 Atributos .

Cmdlets suportados

  • Get-ChildItem

Sistema <SwitchParameter>

Obtém apenas arquivos do sistema e diretórios (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 , seu as alias ou o valor System do parâmetro Attributes . Para excluir arquivos e pastas do sistema, use o parâmetro Atributos .

Cmdlets suportados

  • Get-ChildItem

NewerThan <DateTime>

Retorna $True quando o LastWriteTime valor de um arquivo é maior do que a data especificada. Caso contrário, ele retorna $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

Mais antigo que <DateTime>

Retorna $True quando o LastWriteTime valor de um arquivo é menor que a data especificada. Caso contrário, ele retorna $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

String de fluxo <>

Gerencia fluxos de dados alternativos. Insira o nome do fluxo. Os curingas são permitidos somente em Get-Item comandos e Remove-Item para em uma unidade do sistema de arquivos.

Cmdlets suportados

  • Add-Content
  • Clear-Content
  • Get-Item
  • Get-Content
  • Remove-Item
  • Set-Content

SwitchParameter bruto <>

Ignora caracteres de nova linha. Retorna o conteúdo como um único item.

Cmdlets suportados

  • Get-Content

Cadeia de caracteres ItemType <>

Este parâmetro permite especificar o tipo de item a ser criado com New-Itemo .

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:

  • Ficheiro
  • Diretório
  • SymbolicLink
  • Entroncamento
  • 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 ler mais sobre como usar o pipeline com cmdlets de provedor, consulte as referências de cmdlet fornecidas ao longo deste artigo.

Obter ajuda

A partir do Windows PowerShell 3.0, você pode obter tópicos de ajuda personalizados para cmdlets de provedor que explicam como esses cmdlets se comportam em uma unidade do 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:

Consulte também