DBA Shell 2: Obtendo mais informações sobre arquivos

Post [part not set]/3. Este post é parte da série: DBA Shell
Tempo de leitura estimado: 3 minutos

Vão existir muitas situações em que você irá precisar analisar informações de um arquivo, como a data de criação, tamanho, etc.  Para fazer isso com powershell é muito simples:

Get-ChildItem C:\SQLBackups\*.bak

Este comando é muito parecido com o já conhecido Remove-Item. Os parâmetros são semelhantes. Ele espera um caminho. Só que ao invés de remover arquivos, ele lista algumas informações padrões dos mesmos:

No powershell, os comandos retornam objetos. Objetos vem do conceito da orientação a objetos e precisaríamos de uma série exclusiva só pra explicar. Ao invés disso, vamos aprendendo com calma, com exemplos mais práticos.

Basicamente, os objetos são representações de alguma coisa, e eles possuem uma série de propriedades, que são valores que conseguimos acessar através de um nome.

O comando Get-ChildItem retorna uma lista com um ou mais objetos, que, dependendo dos parâmetros passados, podem ser arquivos, diretórios, chaves do registros, bancos sql, etc. Quando o resultado de um cmdlet é enviado para a tela, o powershell formata e exibe algumas propriedades por padrão (a formatação e as propriedades exibidas podem ser alteradas em arquivos de configuração).

No caso do Get-ChildItem, ele exibe o nome do arquivo, tamanho, e algumas outras informações. Você pode utilizar o cmdlet Select-Object para escolher quais as propriedades retornadas

Get-ChildItem C:\SQLBackups\*.bak | Select-Object Name

Vamos com calma:

  • Get-ChildItem C:\SQLBackups\*.bak
    Retorna uma lista de objetos, cada um representando os arquivos bak que estão em C:\SQLBackups
  • |
    O pipe é utilizado para conectar o resultado de Get-ChildItem com o Select-Object. Assim, ao invés de jogar pra tela, cada objeto resultante de Get-ChildItem é enviado para o próximo comando, e esse próximo comando fará o que quiser com esses objetos. Um conjunto de dois ou mais comandos conectados pelo pipe é chamado de pipeline.
  • Select-Object Name
    O cmdlet Select-Object é  usado para escolher quais propriedades dos objetos serão retornadas. Nós especificamos o nome das propriedades através de parâmetros. No caso, Select-Object irá escolher as propriedades dos objetos resultantes de Get-ChildItem, que representam arquivos. O valor que passamos foi Name, que indica que estamos dizendo ao Select-Object que somente retorne a propriedade Name desses objetos, cujo o valor contém o nome e extensão do arquivo.

Há diversas propriedades existentes. Por exemplo, o seguinte comando nos retorna o nome completo do arquivo, e a data de criação:

Get-ChildItem C:\SQLBackups\*.bak | Select-Object FullName,CreationTime

Perceba como eu específico mais de uma propriedade: Separando por vírgulas. No powershell, a vírgula tem um significado especial e teremos outras oportunidades de explorá-la melhor. Por enquanto, apenas entenda que ela é usada para especificar vários valores!

Já o seguinte exemplo retorna somente o nome do arquivo, o tamanho em bytes, e a data de modificação:

gci C:\SQLBackups\*.bak | select Name,Length,LastWriteTime

Aqui eu tomei a liberdade de usar os alias: gci para Get-ChildItem e select para Select-Object. No mais, apenas troquei os parâmetros  passados para o Select-Object.

Uma pergunta que você pode estar se fazendo é: Como eu sei quais propriedades os objetos terão e o que elas significam? A resposta é simples: Com experiência, outros cmdlets, e documentação. Existem várias maneiras de se descobrir isso. Vamos explorar tudo ao longo dos outros posts desta série.

Para simplificar:

  • Obter uma lista de arquivos de um diretório (gci, ls, e dir são alias para Get-ChildItem)
    Get-Childitem <Diretorio>
    gci <Diretorio> 
    ls <Diretorio> 
    dir <Diretorio>
  • | (pipe) é um operador usado para conectar o resultado de um comando com outro comando
  • Pipeline é uma sequência de comandos conectados pelo |
  • Cmdlets retornam objetos. Objetos são a representação de algo, como arquivos, diretórios, etc.
  • Todo objeto possuem propriedades. Propriedades são valores identificados por um nome que dizem algo sobre o objeto
Navegue na série
Compartilhe este post!

Leave a reply

Your email address will not be published.