5 cmdlets para você começar com o PowerShell
O PowerShell está rapidamente se tornando a linguagem de script preferida e o CLI de usuários avançados, além de profissionais de TI. Vale a pena aprender alguns comandos para você começar, então temos 5 cmdlets úteis para você aprender hoje.
Get-Command
O Get-Command é um dos cmdlets mais úteis em todo o PowerShell, pois ajudará você a se familiarizar com o PowerShell, permitindo que você pesquise por determinados cmdlets. Usar o Get-Command por si só não é muito útil, já que ele vai cuspir todos os comandos que o PowerShell tem.
Mas, a partir disso, podemos ver que os objetos que as saídas do PowerShell têm uma propriedade Name e uma propriedade ModuleName. Usando essas informações, podemos refinar nossa pesquisa, procurando por cmdlets que contenham determinados termos. Por exemplo, se eu quisesse encontrar todos os cmdlets que continham a palavra "IP", eu poderia fazer isso:
Get-Command -Name * IP *
Como você pode ver, ainda obtemos alguns resultados, nossa próxima opção é pesquisar em um módulo específico. No nosso caso eu vou escolher o módulo NetTCPIP.
Get-Command -Módulo NetTCPIP -Name * IP *
Obter ajuda
Depois de encontrar o cmdlet que você está procurando usando Get-Command, você desejará conhecer a sintaxe e como usar esse cmdlet específico. É aqui que entra o Get-Help, se você já usou a linha de comando no Windows, provavelmente fez algo assim:
ipconfig /?
Bem, isso não funciona no PowerShell, isso ocorre porque no PowerShell um espaço é usado para separar um comando de seus parâmetros. Então, em vez disso, usamos Get-Help e passamos um nome de cmdlets para Get-Help como um parâmetro.
Get-Help Get-Process
Get-Member
Get-Member nos permite obter informações sobre os objetos que os cmdlets retornam. A pegada com o get-member é que ele depende do recurso de pipeline do PowerShell. Para demonstrar isso, poderemos usar o cmdlet Get-Process.
Como você pode ver, a saída do PowerShell nos mostra algumas das propriedades, que você pode ver no topo de cada coluna. O primeiro problema é que, enquanto essas são as propriedades que você pode estar procurando a maior parte do tempo, ainda há mais delas. O segundo problema é que ele não mostra nenhum método que possamos chamar no objeto. Para ver os métodos e propriedades, podemos canalizar nossa saída para Get-Member, da seguinte forma:
Get-Process | Get-Member
Embora isso possa significar nada para você agora, você mais cedo ou mais tarde precisará usar o Get-Member, e quanto mais cedo você aprender a usá-lo, melhor. Como exemplo, usando as informações da saída, poderíamos fazer algo como:
Start-Process notepad.exe
$ NotepadProc = Get-Process -Name notepad
$ NotepadProc.WaitForExit ()
Iniciar processo calc.exe
Esse script lançará o bloco de notas e atribuirá a saída "Get-Process -Name notepad" à variável $ NotepadProc; em seguida, chamaremos o método WaitForExit em $ NotepadProc, o que fará com que o script pause até você fechar o bloco de notas, depois de ter fechado o bloco de notas então a calculadora vai lançar.
$ _ (Objeto Pipeline Atual)
Embora não seja exatamente um cmdlet, é uma das variáveis especiais mais usadas no PowerShell. O nome oficial de $ _ é “o objeto de pipeline atual”. Ele é usado em blocos de script, filtros, a cláusula de processo de funções, where-object, foreach-object e switches. No entanto, é mais fácil explicar com um exemplo, o que nos leva ao nosso próximo e final cmdlet, Where-Object.
Onde-Objeto
Onde-Object faz exatamente o que parece, ele seleciona um objeto com base em se ele atende a um determinado critério. Isso reunirá $ _ e as propriedades que podemos ver usando Get-Member. Para demonstrar isso, enviaremos a saída de Get-Process para o cmdlet Where-Object.
Get-Process | Where-Object $ _. Name -eq "iexplore"
Então, o que está acontecendo aqui, você pergunta? Bem, a primeira coisa que estamos fazendo é obter uma lista de processos em nosso computador e passar a saída (usando o caractere |) para o nosso cmdlet Where-Object, que usa um bloco de script como parâmetro. O bloco de script (definido pelas chaves) instrui os cmdlets Where-Object a selecionar apenas objetos em que o parâmetro name seja igual a “iexplore” e, portanto, obteremos apenas uma lista das instâncias do IE em execução. Isso é tudo que existe para isso, divirta-se!