Cmdlet

A cmdlet -- comando pronunciado -- é um comando pequeno e leve que é usado no ambiente Windows PowerShell. Um cmdlet tipicamente existe como um pequeno script que se destina a executar uma única função específica, como copiar arquivos e mudar diretórios. Um cmdlet e seus parâmetros relevantes podem ser inseridos em uma linha de comando PowerShell para execução imediata ou incluídos como parte de um script PowerShell mais longo que pode ser executado conforme desejado.

Como funciona o cmdlet?

Cmdlets empregam um padrão de nomes de verbos/nomes que é projetado para tornar cada cmdlet mais fácil de lembrar e ler. Como exemplo, um típico comando Get-ChildItem usa o verbo Get seguido do substantivo ChildItem. Quando executado através do ambiente PowerShell runtime, o comando lista ou retorna os itens em um ou mais locais especificados. Se os itens estiverem em um container, o comando recebe os itens dentro do container -- itens filhos.

Cmdlets são baseados em classes .NET e dependem do uso de objetos .NET. Assim, cmdlets podem receber objetos como entrada e entregar objetos como saída, que podem então alimentar a entrada de objetos subseqüentes, permitindo que cmdlets formem um pipeline de comandos.

Mais cmdlets suportam o uso de parâmetros como parte do mecanismo de entrada. Os parâmetros podem ser adicionados ao cmdlet na linha de comando ou passados para cmdlets através do pipeline como a saída de um cmdlet anterior. Os argumentos ou valores de cada parâmetro detalham o input real que o cmdlet irá aceitar, como o cmdlet deve funcionar e quais - se houver - dados os outputs do cmdlet. Switches são argumentos especializados que oferecem opções ou seleções predefinidas.

Este artigo faz parte de

Guia PowerShell compreensiva para administradores novos e experientes

  • Que também inclui:
  • Best practices for using PowerShell ISE for scripting
  • Follow this step-by-step guide to use AWS Lambda with PowerShell
  • Level up with these advanced PowerShell commands to copy files

Download1

Download this entire guide for FREE now!

Consider a simple cmdlet such as Get-Help; the syntax of the cmdlet to get help for desired cmdlets from an online library is:

get-help <cmdlet-name> -online

Get-Help is the cmdlet. The argument of the parameter <cmdlet-name> is the name of the cmdlet that needs more information. In actual use, users would substitute the name of the desired cmdlet. It can be any cmdlet. The switch is -online, which tells PowerShell to reference and return help for the desired cmdlet from Microsoft's online library. Por exemplo, para obter mais ajuda sobre a cmdlet Add-AppxPackage, o comando PowerShell ficaria assim:

>pre>get-help add-appxpackage -online

Para usar ajuda local para a mesma cmdlet, elimine a switch:

>pre>get-help add-appxpackage get-help add-appxpackage Obtenha mais informações sobre o Add-AppxPackage cmdlet.

Cmdlets vs. functions

Although PowerShell relies on processing cmdlets, there is a second type of command called functions. As funções também são interpretadas através do PowerShell e são usadas rotineiramente em scripts. É comum confundir cmdlets e funções. No entanto, cmdlets e funções diferem em várias formas importantes.

Cmdlets são classes .NET escritas em linguagens de programação superiores como C# e compiladas em ficheiros .dll para que o PowerShell possa aceder a elas. Assim, os conjuntos cmdlet podem ser facilmente adicionados e novos cmdlets podem ser criados e disponibilizados para o PowerShell. Em comparação, as funções tendem a ser integradas no PowerShell e não são compiladas mas escritas na linguagem do PowerShell. As funções tendem a ser entidades mais longas e complexas que podem normalmente lidar com análise, apresentação de erros e formatação de saída, onde as cmdlets são frequentemente muito pequenas e simples para lidar com tais detalhes.

Still, a diferença essencial entre cmdlets e funções está em tais problemas de embalagem, incluindo configuração, instalação e características. Na prática real, há pouca diferença perceptível entre cmdlets e funções. Como cmdlets, as funções podem ter parâmetros e valores de retorno que podem ser exibidos ou atribuídos a variáveis. Tanto as cmdlets como as funções são prontamente utilizadas nos scripts do PowerShell.

Popular cmdlets

Existem centenas de cmdlets disponíveis por padrão no PowerShell de hoje, e centenas de cmdlets a mais podem ser adicionados ao PowerShell para suportar aplicações avançadas como plataformas de virtualização e ferramentas de gerenciamento de sistemas. Para encontrar um índice completo de todos os cmdlets atualmente disponíveis no PowerShell em um computador, digite:

get-command -commandtype cmdlet

Isso retorna uma lista completa de cmdlets atualmente disponíveis no PowerShell. No entanto, isto não fornece detalhes específicos sobre a finalidade ou sintaxe de cada cmdlet. Para obter mais detalhes específicos sobre as cmdlets desejadas, use a cmdlet Get-Help como descrito acima. Por exemplo, para aprender o nome, sintaxe, apelidos e notas sobre o Unblock-File cmdlet, use:

>pre>get-help unblock-file

e o PowerShell retorna exemplos completos de sintaxe e parâmetros apropriados. PowerShell users often benefit by getting familiar with a selection of commonly used PowerShell cmdlets, which include:

cmdlet Function
Get-Location get the current directory
Get-ChildItem list items in a directory
Get-Help get more information about a desired cmdlet
Stop-Process terminate a PowerShell process
Set-Location change the current directory
Copy-Item copy files
Remove-Item remove a file or directory
Move-Item move a file
Rename-Item rename a file
New-Item create a new empty file or directory
Invoke-GPUpdate force a group policy update
Stop-Computer shut down a local or remote computer
Restart-Computer restart a local or remote computer
Add-Computer join a computer to a domain

How to write a simple cmdlet

Cmdlets are typically simple entities and can be written in just several dozen lines of C# or other languages that support .NET object code. Although the actual work and complexity of a cmdlet can vary dramatically, the actual process involved in outlining a new cmdlet can usually be broken down into several common steps that involve defining the cmdlet, accepting parameters and then processing the parameters to deliver an output. Um exemplo simples pode ser criar um cmdlet que pega o nome de uma pessoa e gera uma mensagem de teste.

1. Como isto é um cmdlet, o desenvolvedor está basicamente criando um objeto, então primeiro especifique a classe pai para o cmdlet. Um cmdlet deriva das classes System.Management.Automation.Cmdlet ou System.Management.Automation.PSCmdlet. Um cmdlet em C# pode usar o comando:

>pre>usando System.Management.Automation;

2. A seguir, especifique o nome da classe do objeto. Por exemplo, se o novo cmdlet deve simplesmente enviar uma mensagem de teste, C# pode usar o comando namespace como:

namespace SendTestMessage

3. Declare a classe do objeto como um cmdlet. O atributo cmdlet permite aos desenvolvedores estipular os elementos verbais e substantivos do nome cmdlet. Por exemplo, um comando C# que define um cmdlet e o nome "Send-Test" pode aparecer como:

[Cmdlet(VerbsCommunications.Send, "TestMessage")]

4. Especifique quaisquer parâmetros para o cmdlet usando o atributo de parâmetro. O comprimento e complexidade desta secção de código depende do número e tipos de parâmetros que o cmdlet se destina a tratar. Por exemplo, se o cmdlet se destina apenas a aceitar o nome de uma pessoa para receber uma mensagem de teste, um parâmetro pode ser introduzir o nome dessa pessoa e criar a string variável "name". Em C#, a sequência de código pode aparecer como:

[Parameter(Mandatory=true)]