Школа Geek, пишущая свой первый полный скрипт PowerShell
Несколько недель назад, Geek показал вам, как вы можете использовать командную строку, чтобы узнать, когда ваш компьютер был запущен в последний раз. В этой последней установке Geek School для PowerShell мы собираемся написать повторно используемую команду PowerShell, чтобы сделать то же самое..
Обязательно прочитайте предыдущие статьи серии:
- Узнайте, как автоматизировать Windows с помощью PowerShell
- Учимся использовать командлеты в PowerShell
- Изучение, как использовать объекты в PowerShell
- Обучение форматированию, фильтрации и сравнению в PowerShell
- Научитесь использовать Remoting в PowerShell
- Использование PowerShell для получения информации о компьютере
- Работа с коллекциями в PowerShell
- Узнайте, как использовать рабочие места в PowerShell
- Узнайте, как расширить PowerShell
- Изучение переменных PowerShell, ввод и вывод
Написание вашего первого сценария
Первое, что нам нужно сделать, - это найти способ доступа к информации, которую мы ищем. Поскольку мы имеем дело с управляющей информацией, нам, вероятно, нужно взглянуть на использование WMI, у которого действительно есть класс Win32_OperatingSystem, который позволяет вам просматривать подробную информацию о вашей операционной системе, включая последний раз, когда она запускалась.
Так что теперь, когда мы знаем, где мы можем найти информацию, которую мы ищем, откройте ISE и введите следующее.
Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |
Select-Object -Property CSName, LastBootUpTime
Примечание. Мне пришлось разделить код на две строки, чтобы он поместился на скриншоте, но не стесняйтесь набирать его одной строкой. Если вы решили разбить его на две строки, убедитесь, что символ канала является последним символом в строке 1..
Теперь нажмите зеленую кнопку «Выполнить скрипт» или нажмите клавишу F5 на клавиатуре, чтобы проверить код.
Время WMI может быть немного загадочным. Под этим мы подразумеваем, что если вы посмотрите на свойство LastBootUpTime, то оно говорит 2013-03-19 в 18:26:21, но по какой-то причине ребята из WMI решили объединить все это в одну строку. К счастью для нас, нам не нужно беспокоиться о ручном разборе строки, так как есть более простой способ сделать это, хотя и более продвинутый. Вам нужно будет изменить часть кода Select-Object, чтобы она выглядела следующим образом:
Select-Object -Property CSName, @ n = «Последняя загрузка»;
е = [Management.ManagementDateTimeConverter] :: ToDateTime ($ _. LastBootUpTime)
Здесь мы создаем пользовательское свойство с именем «Last Booted» и указываем, что его значение должно быть результатом вызова статического метода ToDateTime для свойства LastBootUpTime текущего объекта конвейера. Ваш код должен выглядеть следующим образом.
Запуск кода теперь даст намного более читаемое время последней загрузки.
Теперь, когда мы довольны основными функциями нашего скрипта, нам нужно его сохранить. Для простоты давайте сохраним его следующим образом:
C: \ Get-LastBootTime.ps1
Теперь переключитесь на нижнюю половину ISE и выполните следующее:
C: \ Get-LastBootTime.ps1
Большой! Наш скрипт работает, как и ожидалось, однако есть еще одна проблема с нашим скриптом. Мы жестко запрограммировали имя компьютера, для которого мы хотим получить время последней загрузки. Вместо того, чтобы жестко кодировать значения, мы должны предоставить параметр, чтобы тот, кто использует скрипт, мог выбирать, с какого компьютера он запускает скрипт. Для этого перейдите в начало вашего скрипта и сделайте следующее.
пары (
[Строка] $ ComputerName
)
Затем замените жестко закодированное значение localhost переменной $ ComputerName. Теперь ваш скрипт должен выглядеть так:
Сохраните свой сценарий, затем вернитесь к нижней половине ISE и просмотрите помощь для своего сценария.
help C: \ Get-LastBootTime.ps1
Отлично, теперь мы можем указать имя компьютера, который мы хотим получить в последний раз при использовании нашего нового параметра ComputerName. К сожалению, есть еще несколько вещей не так. Во-первых, параметр ComputerName является необязательным, а во-вторых, это самое уродливое средство, которое я когда-либо видел, поэтому давайте быстро исправим эти проблемы. Чтобы сделать параметр ComputerName обязательным, измените содержимое блока param на следующее.
[Параметр (Обязательный = $ верно)] [строка] $ ComputerName
Что касается создания лучшего файла справки, самый распространенный метод - использовать справку на основе комментариев. Это означает, что мы просто добавляем очень длинный комментарий в начало скрипта.
<#
.СИНТАКСИС
Показывает, когда последний раз ваш ПК запускался.
.ОПИСАНИЕ
Это функция-оболочка WMI, позволяющая узнать время последнего запуска вашего ПК..
.ПАРАМЕТР ComputerName
Имя компьютера, для которого вы хотите выполнить команду.
.ПРИМЕР
Get-LastBootTime -ComputerName localhost
.ССЫЛКА НА САЙТ
www.howtogeek.com
#>
Как только все это будет сделано, вы должны получить скрипт, похожий на этот.
Давайте теперь пойдем и проверим наш новый файл справки.
Ааа, отлично выглядишь! Теперь, когда наш скрипт завершен, нам осталось сделать еще одну вещь: тестирование. Для этого я собираюсь выйти из ISE и вернуться в консоль PowerShell, чтобы мы могли убедиться в отсутствии аномалий..
Если вы начнете с простого однострочного лайнера и продолжите его наращивать, как мы это делали в этом руководстве, вы быстро освоите его. Вот и все на этот раз, ребята, увидимся в следующей установке Geek School.