Escola Geek Aprendendo a Usar Cmdlets no PowerShell
Se você usou ipconfig ou ping através do prompt de comando, está no meio do caminho para se tornar um ninja do PowerShell. Então venha e junte-se a nós enquanto descobrimos cmdlets nesta instalação da Geek School.
Não deixe de conferir nosso primeiro artigo apresentando o PowerShell, e fique ligado para o resto da nossa série durante toda a semana.
A anatomia de um cmdlet
Na primeira parte da série, vimos um cmdlet semelhante a este:
Atualização-Ajuda
Os cmdlets do PowerShell têm uma sintaxe Verb-Noun, que pode ser vista acima. O importante é notar que o substantivo é sempre singular, embora o cmdlet possa retornar mais de um resultado. Para ver uma lista de verbos legais no PowerShell, você pode usar o cmdlet Get-Verb.
Conhecer os verbos legais e lembrar da regra do substantivo singular ajuda a adivinhar os nomes dos cmdlets. Por exemplo, suponha que você queira pegue uma lista de Serviços e seu status - isso mesmo, é tão fácil quanto o Get-Service. Como você acha que nós pegue uma lista de corrida processos - isso mesmo, Get-Process fará o truque.
Get-Process
Isso facilita muito o trabalho com qualquer tecnologia. Por exemplo, se você tivesse os cmdlets do Exchange carregados, poderíamos obter facilmente uma lista de caixas de correio no servidor usando:
Get-Mailbox
Contudo, há uma exceção. Troca à parte, todos os outros comandos específicos de tecnologia exigirão um prefixo. Por exemplo, se quiséssemos obter os usuários que estão atualmente conectados via Remote Desktop, nós digitaríamos:
Get-RDUserSession
Que pode ser visto na imagem abaixo.
Nota: Esta captura de tela foi tirada em uma caixa do Server 2012, pois é onde você encontrará a maioria dos módulos específicos da tecnologia..
Algum tempo atrás, eu li um artigo de Don Jones, o padrinho do PowerShell, onde ele explicou que o Exchange enviado antes desse prefixo foi adicionado aos cmdlets, por isso nunca os implementou e nunca será.
Aliases
Outro recurso que o PowerShell oferece é a capacidade de ter várias maneiras de executar o mesmo comando - aliases, se preferir. O mais impressionante é que eles incluíam muitos comandos que você poderia estar usando no prompt de comando, bem como alguns aliases do Linux. Por exemplo, no PowerShell, podemos obter uma listagem de diretórios usando:
Get-ChildItem
Usado para usar o prompt de comando? Não se preocupe, eles te cobrem.
Tem um fundo Linux? Eles também cobrem lá.
Quando você escreve scripts há alguns anos, você tende a ficar preguiçoso e começa a usar muito os aliases, mas isso não ajuda os novatos que vão ler nosso código. Para ver o comando que um alias está executando sob o capô, você pode usar o seguinte:
Get-Alias -Name ls
Por outro lado, se você acha que é hora de acelerar o seu jogo, você pode usar o parâmetro de definição para obter todos os aliases de um cmdlet:
Get-ChildItem -Definition Get-ChildItem
Se você vier de algum outro histórico, poderá adicionar seus próprios aliases fazendo o seguinte:
New-Alias -Name icanhazfilez -Value Get-ChildItem
Obviamente, você precisará substituir “icanhazfilez” pelo nome do novo alias e Get-ChildItem pelo cmdlet que deseja que ele seja executado sob o capô..
Uma coisa a notar é que você perde todos os aliases definidos quando você fecha o shell. Você pode contornar isso adicionando sua definição ao seu script de perfil.
Truncar Parâmetros
O Windows PowerShell também permite truncar nomes de parâmetros até o ponto em que eles se tornam ambíguos, ou seja, até o ponto em que o PowerShell não consegue mais descobrir qual parâmetro você está falando. Por exemplo:
Get-Service -Name 'Apple Mobile Device' -ComputerName localhost
É o mesmo que:
Get-Service -Na 'Apple Mobile Device' -Com localhost
Se você por acaso tornar os nomes dos parâmetros muito ambíguos, receberá um erro.
Comandos Legados
Finalmente, os comandos que você conhece e ama ainda funcionarão no PowerShell.
ping www.google.com
Lembre-se de que os aplicativos herdados, como o ping, emitem uma string, e geralmente há uma maneira melhor de fazer a mesma coisa usando um cmdlet do PowerShell..
Em vez de produzir uma longa seqüência de texto, ficamos com um objeto, que vamos dar uma olhada na edição de amanhã da Geek School..