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.

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 .

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+Hiddenque 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 é \no 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:

Confira também

about_Providers