escola do geek: escrever seu primeiro script PowerShell completa

Algumas semanas atrás, The Geek mostrou-lhe como você pode usar o prompt de comando para encontrar quando o computador foi iniciado pela última vez. Nesta última instalação de Escola Totó para PowerShell, estamos indo para escrever um comando PowerShell reutilizável para fazer a mesma coisa.

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

A primeira coisa que precisamos fazer é encontrar uma maneira de acessar as informações que procura. Uma vez que estamos lidando com informações de gestão, nós provavelmente precisa dar uma olhada usando WMI, que de fato tem uma classe chamada Win32_OperatingSystem que permite visualizar informações detalhadas sobre o seu sistema operacional, incluindo a última vez que começou a subir.

Portanto, agora que sabemos onde podemos encontrar as informações que procura, abrir o ISE e digite o seguinte.

Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost

Select-Object -Property CSName, LastBootUpTime

Nota: Eu tive que dividir o meu código em duas linhas de modo que todos se encaixam na tela, mas não hesite em escrevê-lo em uma única linha. Se você optar por dividi-lo em duas linhas, certifique-se de que o caractere pipe é o último caractere na linha 1.

Agora clique no botão “Run Script” ou pressione a tecla F5 no seu teclado para testar o código.

vezes WMI pode ser um pouco enigmática. Com isso queremos dizer se você olhar para a propriedade LastBootUpTime, diz 2013/03/19 na 18:26:21, mas por alguma razão os caras WMI decidiu concatenar tudo isso em uma única cadeia. Felizmente para nós, não temos que se preocupar com manualmente analisar a cadeia porque não há uma maneira mais fácil de fazê-lo, ainda mais avançado. Você terá que mudar a parte Select-Object do código para esta aparência

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 especificando que o seu valor deve ser o resultado de chamar o método estático ToDateTime na propriedade LastBootUpTime do objeto de pipeline atual. O código deve ficar assim.

Executando o código agora irá produzir um tempo de última inicialização muito mais legível.

Agora que estamos satisfeitos com a funcionalidade básica do nosso script, é preciso salvá-lo. Para simplificar, vamos guardá-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 há um problema com o nosso script. Nós codificado o nome do computador que deseja obter o último tempo de inicialização para. Em vez de valores hardcoding, devemos sim fornecer um parâmetro para que quem está usando o script pode escolher qual o computador que executar o script contra. Para fazer isso, vá até o topo do seu script e fazer o seguinte.

param; [string] $ ComputerName

Em seguida, substitua o valor localhost codificado com US $ ComputerName variável. Seu script deve agora olhar como este

Salve seu script, em seguida, voltar para a metade inferior do ISE e visualizar a ajuda para o seu script.

ajuda C: \ Get-LastBootTime.ps1

Awesome, então agora podemos especificar o nome do computador que deseja obter o último momento da inicialização usando nosso novo parâmetro ComputerName. Infelizmente, ainda existem algumas coisas errado. Em primeiro lugar, o parâmetro ComputerName é opcional e em segundo lugar, que é o mais feio útil que eu já vi, então vamos corrigir esses problemas rapidamente. Para fazer com que o parâmetro ComputerName obrigatória, alterar o conteúdo do bloco Param para o seguinte.

[Parâmetro (Mandatory = $ true)] [string] $ ComputerName

Como para fazer um melhor arquivo de ajuda, o método mais comum é a utilização de ajuda com base comentários. Isso significa que apenas adicionar um comentário extra longo para o topo da out script.

. <# SINOPSE; Mostra quando a última PC começou up..DESCRIPTION; Esta é uma função de invólucro WMI para obter o tempo que o seu PC iniciado pela última vez up..PARAMETER ComputerName; O nome do computador que você deseja executar o comando contra. .EXAMPLE; Get-LastBootTime -ComputerName localhost.LINK; www.howtogeek.com; #>

Uma vez que tudo é feito, você deve acabar com um script parecido com isto.

Vamos agora vá e confira nosso novo arquivo de ajuda.

Ahhh, grande procura! Agora que nosso script está completo, temos uma última coisa a fazer: teste. Para isso, eu vou sair do ISE e voltar para o console PowerShell apenas para que possamos ter certeza de que não existem anomalias.

Se você começar com um forro de um simples e simplesmente continuar a construir sobre ele, como fizemos neste guia, você vai pegar o jeito dele em nenhum momento. Isso é tudo para este tempo as pessoas, vê-lo na próxima instalação de Geek School.

Olá

Em primeiro lugar, por favor, deixe-me expressar o meu apreço ao Sr. Gibb para a série PowerShell. E How-To Geek também. I têm marcado cada artigo (12 em tudo, se eu contei corretamente) e estou ansioso para a minha educação sobre PowerShell através dos artigos.

Se me permite, uma pergunta rápida … Existe uma ordem recomendada em que os artigos devem ser lido e absorvido?

Obrigado.

Primeiro ao último seria mais suposição natural

Mr. NanoGeek

Quanto à sua afirmação “primeiro ao último seria mais suposição natural,” eu poderia voltar e olhar para cima as datas de publicação de cada artigo e assumir que essas datas daria a ordem correta em que devem ser estudados.

Mas outras considerações podem ditar a ordem de publicação, tais como

a) a quantidade de espaço wordage disponível em uma questão específica

b) a simples disponibilidade de um artigo para publicação imediata quando os outros estão ainda a ser escrito, ou

c) qualquer número de outras razões que podem resultar na publicação dos artigos em uma ordem que não contribuem para a aprendizagem.

Em outros foros, quando eu ter sido a que responde, em vez de o questionador, tenho tido o cuidado de fornecer exata, pesquisado e respostas polidas, mesmo quando eu pensei que a resposta para a pergunta era ou óbvia ou rapidamente disponíveis com pouco esforço da pessoa que solicita .

A sua resposta de “First to Last seriam aqueles suposição natural.” era pouco mais que uma observação inteligente Alec gritou da última fila de uma sala de aula tamanho anfiteatro por um C ou D + aluno. Além disso, sua gramática era pobre. Pior, você não respondeu à pergunta.

Suponho que você não vai se tornar um recurso de alto valor para aqueles que procuram assistência neste ou em qualquer outro fórum. Respostas como o seu pode ser auto-realizável, no entanto. Neste ponto, a minha primeira pergunta neste fórum poderia muito bem ser o último.

Entretanto, a pergunta permanece sem resposta. Ao estudar os artigos PowerShell, em que ordem eles devem ser lido e absorvido?

Obrigado.

Bem alguém está tendo um dia ruim … Por favor, note que o Sorridente Wink mostra que eu estou falando de uma forma jovial. Eu nunca tentei a agravar-lo. E a gramática pobre seria porque é extremamente difícil de navegar em um iPod.Is seu nome real Sheldon Cooper por acaso (nota a piscadela)

Por favor, aceite minhas sinceras desculpas. Eu fiz entrar na arena de grosseria, não é?

Minha esposa adora Big Bang. Eu não encontrá-lo tão engraçado eu (meu senso de humor favorece a versão mais antiga do Two and a Half Men), mas eu gosto de ouvi-la rir de Sheldon e os outros. Para mim, o som de sua risada é muito melhor do que a própria comédia.

E eu encontrei a resposta à minha pergunta-me: desde que eu vou ler todos os artigos de qualquer maneira, porque não basta ir em frente e fazer isso e classificá-los na minha cabeça como eu ir junto?

Eu desejo você bem….

Não se preocupe! Aproveite seu dia

O fato é, a sua pergunta faz apontar algo que tem sido na minha lista de tarefas … a navegação para os artigos Geek escola é ruim e precisa ser corrigido.

E sim, infelizmente @NanoGeek sendo sarcástico não é a primeira resposta mais útil para sua pergunta.

Apesar da crença de longa data de que as pirâmides foram construídas por trabalho escravo, eles foram realmente construídos por milhares de trabalhadores pagos.