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

Съдържание:

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

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

Видео: Гейк училище: Писане на първия си пълен PowerShell скрипт
Видео: Windows 10 - Сбросить до заводских настроек без потери файлов - YouTube 2024, Април
Anonim
Преди няколко седмици The Geek ви показа как можете да използвате командния ред, за да откриете, когато компютърът ви е стартирал последно. В тази последна инсталация на Geek School for 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 и въведете следното.
Сега, когато знаем къде можем да намерим информацията, която търсим, отворете ISE и въведете следното.

Get-WmiObject -Class Win32_OperatingSystem –ComputerName localhost |

Select-Object -Property CSName,LastBootUpTime

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

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

Select-Object -Property CSName,@{n=”Last Booted”;

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

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

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

C:Get-LastBootTime.ps1

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

C:Get-LastBootTime.ps1

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

param( [string]$ComputerName )

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

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

help C:Get-LastBootTime.ps1

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

[Parameter(Mandatory=$true)][string]$ComputerName

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

<#.SYNOPSIS Shows when last your PC started up..DESCRIPTION This is a WMI wrapper function to get the time that your PC last started up..PARAMETER ComputerName The name of the Computer you want to run the command against..EXAMPLE Get-LastBootTime -ComputerName localhost.LINK www.howtogeek.com #>

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

Препоръчано: