Funções no PowerShell

Vejam a seguinte discussão que aconteceu no fórum de Scripts Administrativos do Technet Brasil e trata de uma necessidade do usuário ao trazer informações dos mailboxes dos usuários do Exchange. Gostei muito da dúvida e da resposta. Não foi muito eficiente, mas tá valendo (seria melhor bolar um mecanismo de preferência O(1), como um enum, hash ou vetor para trazer as frases corretas no lugar dos números). Mas serve como exemplo sobre como criar funções para serem usadas no pipeline de processamento do PowerShell.

Thiago Rox:

Olá Pessoal,

Estou rodando um comando simples no PowerShell apenas para trazer as informações das mailboxes dos usuários:

Get-WmiObject -Class Exchange_Mailbox -Namespace ROOT\MicrosoftExchangev2 -ComputerName $computer | select-object MailboxDisplayName,StorageGroupName,TotalItems,Size,StorageLimitInfo | Sort-Object -Descending -Property StorageLimitInfo

Após a execução eu converto para um arquivo HTML.

O problema é que o objeto StorageLimitInfo me tras esses resultados (1,2,4,8,16), que é relacionado ao limite de armazenamento das mailboxes. A pergunta é, como faço para substituir esses valores por uma string relacionado o número pelo status da mailbox?. Ex. Ao invés do resultado 1 escrever BelowLimit

Vinicius Canto:

Olá,

você pode criar uma função:

function parseStatusCode([int] $v) {
if($v -eq 1) {return 'BelowLimit'} ;
.
.
.
}

e depois usar ela no select:

Get-WmiObject -Class Exchange_Mailbox -Namespace ROOT\MicrosoftExchangev2 -ComputerName $computer | select-object MailboxDisplayName,StorageGroupName,TotalItems,Size, @{Name='Status'; Expression{parseStatusCode($_.StorageLimitInfo)}} | Sort-Object -Descending -Property Status

Thiago Rox:

Obrigado, funcionou certinho. Parabéns.

Categorias dessa postagem: ,

Comentários