Ask Learn
Preview
Please sign in to use this experience.
Sign inThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
O PowerShell é o novo prompt de comando da Microsoft e ao mesmo tempo é uma nova linguagem de script criada especialmente para a administração de sistemas.
O PowerShell é muito fácil de aprender, pois emula a maioria dos comandos do prompt Cmd tornando a transição do prompt CMD para o PowerShell mais natural.
A grande diferença em termos de prompt é que o PowerShell não é baseado em texto e, sim, em objetos. No PowerShell a gente interage diretamente com os objetos e não precisamos construir rotinas de tratamento de string para realizar tarefas.
O PowerShell é construído sobre o .Net Framework e, consequentemente, está muito bem integrado com o .NET, COM e WMI.
Por ser orientado a objetos não é necessário escrever códigos de baixo nível, pois o .NET Framework e os comandos do PowerShell já encapsulam essa codificação.
Os Cmdlet’s (pronuncia-se command-let), como o nome sugere, são os comandos ou funcionalidades do PowerShell. Eles seguem o padrão de nomenclatura verbo-substantivo.
Os cmdlets possuem um bom desempenho uma vez que eles são carregados quando o PowerShell é iniciado. Os três cmdlets básicos são: Get-Command, Get-Member e Get-Help.
O Get-Command é usado para descobrir os comandos. Você pode pesquisar por verbo, substantivo ou tipo. Exemplos de consultas:
#para pesquisar os cmdlets que possuem o nome service:
Get-Command -Noun service
#para pesquisar os cmdlets cujo nome termina com service:
Get-Command -Noun *service
#para obter todos os cmdlets cujo verbo seja get
Get-Command –verb get
#para consultar os cmdlets cujo verbo termine com w
Get-Command –verb *w
#para consutlar os cmdlets que possuem a palavra item
Get-Command *item*
#para listar todos os cmdlets:
get-command –commandtype cmdlet
Vamos imaginar que eu quero consultar um ou mais serviços. Eu posso utilizar o Get-Command informando que o atributo utilizado será o –noun e o valor service para pesquisar pelo substantivo service, conforme:
Get-Command -noun service
O resultado será:
Get-Service
New-Service
Restart-Service
Resume-Service
Set-Service
Start-Service
Stop-Service
Suspend-Service
O cmdlet utilizado para retornar os serviços é, como o nome sugere, o Get-Service. Para eu obter maiores detalhes e exemplos sobre o cmdlet eu posso usar o Get-Help, conforme:
Get-Help Get-Service
Dessa forma, se eu digitar apenas Get-Service eu vou obter a relação de serviços do computador. Se eu quiser consultar um determinado serviço eu posso informar o nome do mesmo. Por exemplo:
get-service -Name netlogon
O Get-Member (ou apenas gm,caso preferir utilizar o alias) é utilizado para retornar as propriedades e métodos do objeto passado para ele (veja o artigo para maiores detalhes PowerShell | Objetos). Por exemplo, para consultar todos os métodos e propriedades que o cmdlet get-service expõe:
Get-Service Spooler | get-member
Resultado:
Status Name DisplayName
------ ---- -----------
Running Netlogon netlogon
Para obter apenas as propriedades do objeto retornado pelo get-service:
Get-Service Spooler | get-member -MemberType property
Resultado:
Name
----
CanPauseAndContinue
CanShutdown
CanStop
Container
DependentServices
DisplayName
MachineName
ServiceHandle
ServiceName
ServicesDependedOn
ServiceType
Site
Status
Para obter apenas os métodos do objeto retornado pelo get-service:
Get-Service Spooler | get-member -MemberType method
Resultado:
Name
----
Close
Continue
CreateObjRef
Dispose
Equals
ExecuteCommand
GetHashCode
GetLifetimeService
GetType
InitializeLifetimeService
Pause
Refresh
Start
Stop
WaitForStatus
Por exemplo, eu posso consultar o serviço Spooler de Impressão e retornar o resultado em uma variável, conforme:
$spooler = get-service spooler
Para consultar o valor do serviço eu digito o nome da variável e pressiono o enter:
$spooler
Resultado:
Status Name DisplayName
------ ---- -----------
Running spooler Print Spooler
Uma vez que o status do serviço é em execução (running) eu posso pará-lo através do comando abaixo que deve ser executado com o PowerShell elevado (executado como administrador):
$spooler.Stop()
Para atualizar a variável $spooler é necessário executar o comando abaixo:
$spooler.Refresh()
Para verificar se o serviço foi parado basta digitar o nome da variável e pressionar o enter:
$spooler
Resultado:
Status Name DisplayName
------ ---- -----------
Stopped spooler Print Spooler
Também é possível verificar o status do serviço através da propriedade Status ($spooler.Status) cujo resultado será Stopped.
Please sign in to use this experience.
Sign in