Начална » как да » Geek училище Писане на първия си пълен скрипт PowerShell

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

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

    Прочетете предишните статии от поредицата:

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

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

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

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

    Get-WmiObject -Class Win32_OperatingSystem -Компютърно име localhost |

    Изберете -Обект -Свойство CSName, LastBootUpTime

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

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

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

    Select-Object -Property CSName, @ n = "Последната стартирана";

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

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

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

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

    C: \ Get-LastBootTime.ps1

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

    C: \ Get-LastBootTime.ps1

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

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

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

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

    помощ C: Get-LastBootTime.ps1

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

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

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

    <#
    .Кратък обзор
    Показва, когато последно стартира компютъра ви.
    .ОПИСАНИЕ
    Това е WMI обвиващата функция, за да получите времето, когато вашият компютър е стартиран последно.
    .PARAMETER Име на компютъра
    Името на компютъра, срещу който искате да изпълните командата.
    .Пример
    Get-LastBootTime -ComputerName localhost
    .LINK
    www.howtogeek.com
    #>

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

    Нека сега да видим новия ни помощен файл.

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

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