If-Koubou

Гейк училище: Писане на първия си пълен PowerShell скрипт

Гейк училище: Писане на първия си пълен PowerShell скрипт (Как да)

Преди няколко седмици The Geek ви показа как можете да използвате командния ред, за да откриете, когато компютърът ви е стартирал последно. В тази последна инсталация на Geek School for PowerShell ще напишем команда PowerShell за повторно използване, за да направим същото.

Не забравяйте да прочетете предишните статии в серията:

  • Научете как да автоматизирате Windows с PowerShell
  • Научете как да използвате Cmdlets в PowerShell
  • Учене как да използвате обекти в PowerShell
  • Форматиране на обучение, филтриране и сравнение в PowerShell
  • Научете как да използвате Remoting в PowerShell
  • Използване на PowerShell за получаване на компютърна информация
  • Работа с колекции в PowerShell
  • Научете как да използвате работни места в PowerShell
  • Научете как да разширите PowerShell
  • Изучаване на променливи, вход и изход на PowerShell

Писане на първия си скрипт

Първото нещо, което трябва да направим, е да намерим начин за достъп до информацията, която търсим. Тъй като се занимаваме с управленска информация, вероятно ще трябва да погледнем използването на WMI, което наистина има клас наречен Win32_OperatingSystem, който ви позволява да видите подробна информация за вашата операционна система, включително и последния път, когато тя стартира.

Сега, когато знаем къде можем да намерим информацията, която търсим, отворете ISE и въведете следното.

Get-WmiObject - клас Win32_OperatingSystem - име на компютъра localhost |

Избор-обект-собственост CSName, LastBootUpTime

Забележка: Трябваше да разделям кода си на два реда, така че всичко да се побере в екранната снимка, но се чувствайте свободни да го напишете на един ред. Ако решите да я разделите на два реда, уверете се, че символът на тръбата е последният знак на ред 1.

Сега кликнете върху зеления бутон "Run Script" или натиснете клавиша F5 на клавиатурата, за да тествате кода.

Времената на WMI могат да бъдат малко загадъчни. С това имаме предвид, ако погледнете собствеността на LastBootUpTime, тя се казва 2013-03-19 в 18:26:21, но по някаква причина момчетата на WMI решиха да свържат всичко това в един низ. За щастие за нас не е нужно да се притесняваме за ръчно разглеждане на низа, тъй като има по-лесен начин да го направите, макар и по-напреднал. Ще трябва да промените частта за избор на обект на кода, за да изглеждате така:

Избор на обект - собственост CSName, @ n = "Last Booted";

д = [Management.ManagementDateTimeConverter] :: ToDateTime ($ _. LastBootUpTime)

Това, което правим тук, е създаването на персонализирана собственост, наречена "Last Booted", и уточняваща, че нейната стойност трябва да бъде резултат от извикването на статичния метод ToDateTime върху собствеността LastBootUpTime на текущия обект на тръбопровод. Кодът ви сега трябва да изглежда така.

Стартирането на кода сега ще даде много по-лесно четене на последното време за стартиране.

Сега, когато сме доволни от основната функционалност на нашия скрипт, трябва да го спасим. За простота нека я запазим както следва:

C: \ Get-LastBootTime.ps1

Сега преминете към долната половина на ISE и изпълнете следното:

C: \ Get-LastBootTime.ps1

Страхотен! Сценарият ни работи според очакванията, но все още има проблем с нашия скрипт. Направихме твърд кодиране на името на компютъра, за който искаме да получим последното време за зареждане. Вместо стойностите на хардкодирането, по-скоро трябва да предоставим параметър, така че всеки, който използва скрипта, да избере кой компютър да управлява скрипта. За да направите това, идете в горната част на скрипта си и направете следното.

Парам (
[Низ] $ име_на_компютъра
)

След това заменете стойността на hardcoded localhost с променлива $ ComputerName. Вашият скрипт сега трябва да изглежда така:

Запишете си скрипта, след това се върнете в долната половина на ISE и вижте помощната програма за вашия скрипт.

помогнете C: \ Get-LastBootTime.ps1

Страхотно, така че сега можем да посочим името на компютъра, за който искаме да получим последното време за зареждане, за да използваме новия ни параметър ComputerName. За съжаление все още има няколко неща, които не са наред. Първо, параметърът ComputerName е незадължителен и второ, това е най-грозното полезно, което съм виждал, така че нека да решаваме тези проблеми бързо. За да направите параметъра ComputerName задължителен, променете съдържанието на param блока на следното.

[Параметър (Задължително = $ вярно)] [низ] $ име_на_компютъра

Що се отнася до създаването на по-добър помощен файл, най-често срещаният метод е да използвате помощ за коментарите. Това означава, че просто добавяме допълнителен дълъг коментар към върха на скрипта.

<#
.SYNOPSIS
Показва кога е стартирал компютърът ви.
.description
Това е функция за обвиване на WMI, за да получите времето, което последно е стартирало вашия компютър.
.PARAMETER Име на компютъра
Името на компютъра, на който искате да изпълнявате командата.
.example
Get-LastBootTime -ComputerName localhost
.link
www.howtogeek.com
#>

След като направите всичко това, трябва да завършите с скрипт, който изглежда така.

Хайде да отидем и да разгледаме нашия нов помощен файл.

Ахх, изглежда страхотно! Сега, когато нашият скрипт е пълен, трябва да направим едно последно нещо: тестване. За това ще изляза от ISE и ще се върна в конзолата PowerShell, за да можем да сме сигурни, че няма аномалии.

Ако започнете с обикновен линейджър и просто продължете да го изграждате, както направихме в това ръководство, вие ще получите завинаги за него в нито един момент. Това е всичко за това време хора, вижте в следващата инсталация на Geek училище.