15Sep

Geek School: escrevendo seu primeiro script Full PowerShell

Algumas semanas atrás, The Geek mostrou como você pode usar o prompt de comando para descobrir quando seu computador foi iniciado por último. Nesta última instalação do Geek School para o PowerShell, vamos escrever um comando PowerShell reutilizável para fazer o mesmo.

Certifique-se de ler os artigos anteriores da série:

  • Saiba como automatizar o Windows com o PowerShell
  • Aprender a usar cmdlets no PowerShell
  • Aprender a usar objetos no PowerShell
  • Aprender a formatar, filtrar e comparar no PowerShell
  • Aprender a usar Remoting emPowerShell
  • Usando o PowerShell para obter informações do computador
  • Trabalhando com coleções no PowerShell
  • Saiba como usar trabalhos no PowerShell
  • Saiba como expandir o PowerShell
  • Aprender as variáveis ​​do PowerShell, entrada e saída

Escrever seu primeiro script

A primeira coisa que precisamos fazer éencontre uma maneira de acessar as informações que procuramos. Uma vez que estamos lidando com informações de gerenciamento, provavelmente precisamos examinar o WMI, que realmente possui uma classe chamada Win32_OperatingSystem, que permite que você veja informações detalhadas sobre seu sistema operacional, incluindo a última vez que iniciou.

Então, agora que sabemos onde podemos encontrar as informações que procuramos, abra o ISE e digite o seguinte.

Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |

Select-Object -Property CSName, LastBootUpTime

Nota: Eu tive que dividir meu código em duas linhas para que tudo se encaixasse na captura de tela, mas sinta-se à vontade para digitá-lo em uma única linha. Se você optar por dividi-lo em duas linhas, certifique-se de que o caractere do tubo seja o último caractere na linha 1.

Agora, clique no botão verde "Executar script" ou pressione a tecla F5 no teclado para testar o código.

WMI vezes pode ser um pouco críptico. Com isso, queremos dizer se você olha a propriedade LastBootUpTime, diz 2013-03-19 às 18:26:21, mas, por algum motivo, os caras da WMI decidiram concatenar tudo isso em uma única string. Felizmente para nós, não precisamos nos preocupar com a análise manual da cadeia, pois há uma maneira mais fácil de fazê-lo, embora mais avançado. Você precisará alterar a parte Selecionar-Objeto do código para ficar assim:

Select-Object -Property CSName, @{ n = "Last Booted";

e ={ [Management. ManagementDateTimeConverter]: : ToDateTime( $ _. LastBootUpTime)}}

O que estamos fazendo aqui é criar uma propriedade personalizada chamada "Last Booted" e especificar que seu valor deve ser o resultado da chamada do toDateTime estáticoMétodo na propriedade LastBootUpTime do objeto de pipeline atual. Seu código agora deve ser assim.

A execução do código agora renderá um tempo de inicialização muito mais legível.

Agora que estamos satisfeitos com a funcionalidade básica do nosso script, precisamos salvá-lo. Por simplicidade, vamos salvá-lo como o seguinte:

C: \ Get-LastBootTime.ps1

Agora mude para a metade inferior do ISE e execute o seguinte:

C: \ Get-LastBootTime.ps1

Ótimo! Nosso script está funcionando como esperado, no entanto, ainda existe um problema com nosso script. Nós codificamos o nome do computador para o qual queremos ter o último tempo de inicialização. Em vez de valores de código rígido, devemos fornecer um parâmetro para que quem estiver usando o script pode escolher em qual computador eles executam o script. Para fazer isso, vá ao topo do seu script e faça o seguinte.

param(
[string] $ ComputerName
)

Em seguida, substitua o valor do localhost codificado com a variável $ ComputerName. O seu script agora deve ficar assim:

Salve seu script e volte para a metade inferior do ISE e veja a ajuda para o seu script.

ajuda C: \ Get-LastBootTime.ps1

Impressionante, então agora podemos especificar o nome do computador que queremos obter o último tempo de inicialização para usar nosso novo parâmetro ComputerName. Infelizmente, ainda há algumas coisas erradas. Em primeiro lugar, o parâmetro ComputerName é opcional e em segundo lugar, isso é o mais útil útil que já vi, então vamos solucionar esses problemas rapidamente. Para tornar o parâmetro ComputerName obrigatório, altere o conteúdo do bloco param para o seguinte.

[Parâmetro( Obrigatório = $ true)] [string] $ ComputerName

Quanto a fazer um arquivo de ajuda melhor, o método mais comum é usar a ajuda baseada em comentários. Isso significa que apenas adicionamos um comentário extra longo ao script superior.

& lt; #
. SYNOPSIS
Mostra quando o seu PC iniciou.
. DESCRIPTION
Esta é uma função de wrapper do WMI para obter o tempo que seu PC iniciou.
. PARAMETER ComputerName
O nome do computador no qual deseja executar o comando.
. EXAMPLE
Get-LastBootTime -ComputerName localhost
. LINK
www.howtogeek.com
# & gt;

Uma vez que tudo isso é feito, você deve terminar com um script parecido com isso.

Vamos agora verificar o nosso novo arquivo de ajuda.

Ahhh, parecendo ótimo! Agora que nosso script está completo, temos uma última coisa a fazer: testar. Para isso, vou sair do ISE e voltar para o console PowerShell apenas para que possamos garantir que não haja anomalias.

Se você começar com um forro simples e apenas continuar construindo sobre ele como fizemos neste guia, você conseguirá o jeito dele em nenhum momento. Isso é tudo por esse tempo pessoal, vejo você na próxima instalação da Geek School.