Не забравяйте да прочетете предишните статии в серията:
- Научете как да автоматизирате Windows с PowerShell
- Научете как да използвате Cmdlets в PowerShell
- Учене как да използвате обекти в PowerShell
- Форматиране на обучение, филтриране и сравнение в PowerShell
- Научете как да използвате Remoting в PowerShell
- Използване на PowerShell за получаване на компютърна информация
- Работа с колекции в PowerShell
И останете настроени за останалата част от серията през цялата седмица.
Променливи
Повечето програмни езици позволяват използването на променливи, които са просто контейнери, които съдържат стойности. В PowerShell имаме и променливи и те наистина са лесни за използване. Ето как да създадете променлива, наречена "FirstName", и да й дадете стойността "Тейлър".
$FirstName = “Taylor”
Първото нещо, което повечето хора изглежда искат, е защо поставяме знак за долар пред името на променливите и това всъщност е много добър въпрос. Наистина знакът за долара е само малко намек за черупката, че искаме да получим достъп до съдържанието на променливата (мисля какво има вътре в контейнера), а не самия контейнер. В PowerShell имената на променливите не включват знака на долара, което означава, че в горния пример името на променливите всъщност е "FirstName".
В PowerShell можете да видите всички променливи, които сте създали в променливата PSDrive.
gci variable:
Remove-Item Variable:FirstName
Променливите не трябва да съдържат нито един обект; можете също толкова лесно да съхранявате множество обекти в променлива. Например, ако искате да запазите списък с текущи процеси в променлива, можете просто да го присвоите на изхода на Get-Process.
$Proc = Get-Process
Трикът за разбиране на това е да се помни, че дясната страна на знака за равенство винаги се оценява първо. Това означава, че можете да имате пълен тръбопровод от дясната страна, ако искате.
$CPUHogs = Get-Process | Sort CPU -Descending | select -First 3
Променливата CPUHogs ще съдържа трите текущи процеси, използващи най-много процесори.
$CPUHogs.Kill()
Което ще убие всичките три процеса в колекцията. Ако искате да имате достъп до единичен обект в променливата, трябва да го третирате като масив.
$CPUHogs[0]
Това ще ви даде първия обект в колекцията.
Да не се хванат!
Променливите в PowerShell са слабо въведени по подразбиране, което означава, че те могат да съдържат някакви данни, което изглежда привлича нови потребители към PowerShell през цялото време!
$a = 10
$b = ‘20’
Така че имаме две променливи, едната съдържа низ и другото цяло число. И така, какво ще стане, ако ги добавите? Всъщност зависи от кой ред да ги добавите.
$a + $b = 30
Докато
$b + $a = 2010
В първия пример, първият операнд е цяло число $ a, така че PowerShell мисли, че смятате, че се опитвате да направите математика и следователно се опитвате да конвертирате всички други операнди в цели числа. Във втория пример обаче първият операнд е низ, така че PowerShell просто превръща останалите операнди в низове и ги свързва. По-усъвършенстваните сценарий предотвратяват този вид придобиване чрез прехвърляне на променливата на вида, който очакват.
[int]$Number = 5 [int]$Number = ‘5’
Горното ще доведе до променливата Number, която съдържа обект с цяло число със стойност 5.
Вход и изход
Тъй като PowerShell е предназначен да автоматизира нещата, вие ще искате да избягвате да накарате потребителите да получават информация, когато е възможно. С това казано, ще има моменти, в които не можете да го избегнете и за тези времена имаме cmdlet на Read-Host. Използването му е наистина просто:
$FirstName = Read-Host –Prompt ‘Enter your first name’
Write-Output “How-To Geek Rocks!”