10Aug

Geek School: Aprender a usar Cmdlets no PowerShell

Se você usou ipconfig ou ping através do prompt de comando, você está na metade do caminho para se tornar um ninja do PowerShell. Então, venha e se junte a nós quando descobrimos cmdlets nesta instalação da Geek School.

Certifique-se de verificar o nosso primeiro artigo que apresenta o PowerShell, e fique atento 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 que parecia algo assim:

Update-Help Os cmdlets

PowerShell possuem uma sintaxe Verbo-Noun, que pode ser vista acima. O importante a notar é que o substantivo é sempre singular mesmo que 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 a regra de substância singular realmente ajuda a adivinhar nomes de cmdlet. Por exemplo, suponha que você queira obter uma lista de serviços e seu status - isso mesmo, é tão fácil como Get-Service. Como você acha que nós

obteríamos uma lista de processos em execução - isso é certo, o Get-Process fará o truque.

Get-Process

Isso torna muito fácil trabalhar com qualquer tecnologia. Por exemplo, se você tivesse os cmdlets do Exchange carregados, poderíamos facilmente obter uma lista de caixas de correio no servidor usando:

Get-Mailbox

No entanto, existe uma exceção. Troque de lado, todos os outros comandos específicos da tecnologia exigirão um prefixo. Por exemplo, se desejássemos obter os usuários que estiverem logados no momento no Remote Desktop, digitaremos:

Get-RDUserSession

, que pode ser visto na imagem abaixo.

Nota: Esta captura de tela foi tirada em uma caixa do Servidor 2012, pois é onde você vai encontrar a maioria dos módulos específicos da tecnologia.

Há algum tempo, eu li um artigo de Don Jones, o padrinho da PowerShell, onde explicou que o Exchange foi enviado antes que este prefixo fosse adicionado aos cmdlets, então ele nunca os implementou e nunca o fará.

Alias ​​

Outra característica que o PowerShell vem com a capacidade de ter várias maneiras de executar o mesmo comando - alias, se você quiser. A coisa maravilhosa sobre eles é que eles incluíram muitos comandos que você pode ter usado no prompt de comando, bem como alguns alias de Linux. Por exemplo, no PowerShell, podemos obter uma listagem de diretório usando:

Get-ChildItem

Usado para usar o prompt de comando? Não se preocupe, eles têm coberto.

Tem um fundo Linux? Eles também o cuidaram.

Quando você faz scripts há alguns anos, tende a ter preguiça e começar a usar alias muito, mas isso não ajuda os recém-chegados que vão ler o 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ê sentir que é hora de pisar o seu jogo, você pode usar o parâmetro de definição para obterTodos os alias para um cmdlet:

Get-ChildItem -Definição Get-ChildItem

Se você vem de algum outro fundo, você pode adicionar seus próprios alias, fazendo o seguinte:

New-Alias ​​-Name icanhazfilez -Value Get-ChildItem

Obviamente,você precisará substituir "icanhazfilez" com o nome do seu novo alias e Get-ChildItem com o cmdlet que deseja que ele funcione no capô.

Uma coisa a notar é que você perde todos os alias que você definiu quando fecha o shell. Você pode contornar isso adicionando sua definição ao script do seu perfil.

Parâmetros de trancamento

O Windows PowerShell também permite que você trunca os nomes dos parâmetros até o ponto em que eles se tornem ambíguos, ou seja, até o ponto em que o PowerShell não pode 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ê for possível, os nomes dos parâmetros são muito ambíguos vocêreceberá um erro.

Legacy Commands

Finalmente, os comandos que você conhece e ama ainda funcionam no PowerShell.

ping www.google.com

Lembre-se de que as aplicações legadas, como ping, são uma string, e muitas vezes é uma maneira melhor de fazer o mesmo usando um cmdlet PowerShell.

Em vez de produzir uma longa seqüência de texto, agora ficamos com um objeto, o que daremos uma olhada na edição de amanhã da Escola Geek.