Домашня » як » Geek школа написання першого повного сценарію PowerShell

    Geek школа написання першого повного сценарію PowerShell

    Кілька тижнів тому, The Geek показав вам, як ви можете використовувати командний рядок, щоб знайти, коли ваш комп'ютер був запущений останній. У цій останній установці Geek School для PowerShell ми збираємося написати команду багаторазового використання PowerShell, щоб зробити те ж саме.

    Обов'язково прочитайте попередні статті серії:

    • Дізнайтеся, як автоматизувати Windows за допомогою PowerShell
    • Навчання використанню командлетів у PowerShell
    • Навчання використанню об'єктів у PowerShell
    • Навчання форматування, фільтрації та порівняння в PowerShell
    • Дізнайтеся, як використовувати віддалене використання в 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 вирішили об'єднати все це в один рядок. На щастя для нас, нам не потрібно турбуватися про ручний розбір рядка, оскільки існує більш простий спосіб зробити це, хоча й більш просунутим. Вам потрібно буде змінити частину коду вибору об'єкта таким чином:

    Select-Object -Property CSName, @ n = "Останнє завантаження";

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

    Тут ми створюємо спеціальне властивість під назвою "Останні завантаження" і вказуємо, що його значення має бути результатом виклику статичного методу ToDateTime на властивість LastBootUpTime поточного об'єкта конвеєра. Тепер ваш код має виглядати наступним чином.

    Запуск коду тепер дасть набагато більш читаний останній час завантаження.

    Тепер, коли ми задоволені базовою функціональністю нашого скрипта, нам потрібно його зберегти. Для простоти, давайте збережемо його так:

    C: Get-LastBootTime.ps1

    Тепер перейдіть до нижньої половини ISE і запустіть наступне:

    C: Get-LastBootTime.ps1

    Чудово! Наш сценарій працює так, як очікується, однак є ще одна проблема з нашим сценарієм. Ми зашифрували назву комп'ютера, для якого потрібно отримати останнє час завантаження. Замість значень жорсткого кодування ми повинні скористатися параметром, щоб той, хто використовує скрипт, може вибрати, з якого комп'ютера вони запускатимуть скрипт. Для цього перейдіть у верхню частину скрипта і виконайте наступні дії.

    param (
    [string] $ ComputerName
    )

    Потім замініть значення hardchoded localhost значенням $ ComputerName. Тепер ваш сценарій має виглядати так:

    Збережіть скрипт, а потім поверніть назад до нижньої частини ISE і перегляньте довідку для сценарію.

    допомога C: Get-LastBootTime.ps1

    Дивовижний, так що тепер ми можемо вказати ім'я комп'ютера, який ми хочемо отримати останній час завантаження для використання нашого нового параметра ComputerName. На жаль, є ще кілька речей. По-перше, параметр ComputerName є необов'язковим, а по-друге, це найпотаємніша корисна інформація, яку я коли-небудь бачив, так що давайте швидко вирішимо ці проблеми. Щоб зробити параметр ComputerName обов'язковим, змініть вміст блоку param на наступне.

    [Параметр (обов'язковий = $ true)] [рядок] $ ComputerName

    Що стосується створення кращого файлу довідки, найбільш поширеним методом є використання допомоги на основі коментарів. Це означає, що ми просто додаємо додатковий довгий коментар до верхньої частини сценарію.

    <#
    .ОПИС
    Показує, коли останній запустився ваш комп'ютер.
    .ОПИС
    Це функція обгортки WMI, щоб отримати час останнього запуску ПК.
    .ПАРАМЕТР Ім'я комп'ютера
    Ім'я комп'ютера, над яким потрібно виконати команду.
    .ПРИКЛАД
    Get-LastBootTime -ComputerName localhost
    .LINK
    www.howtogeek.com
    #>

    Після того, як все це зроблено, ви повинні мати такий сценарій.

    Давайте тепер перевіримо наш новий файл довідки.

    Ahhh, дивлячий великий! Тепер, коли наш сценарій завершений, ми маємо зробити останнє: тестування. Для цього я збираюся вийти з ISE і повернутись в консоль PowerShell так, щоб ми могли переконатися, що немає аномалій.

    Якщо ви починаєте з простого лайнера і просто продовжуєте будувати його так, як ми робили в цьому посібнику, ви отримаєте повісити його в найкоротші терміни. Це все за цей час люди, побачимося в наступній установці Geek School.