Skip to main content

Школа Geek: Навчання PowerShell змінних, вхідних і вихідних даних

Школа Geek: Навчання PowerShell змінних, вхідних і вихідних даних

Geoffrey Carr

Коли ми відійдемо від простого запуску команд і перейдемо до написання повних сценаріїв, вам знадобиться тимчасове місце для зберігання даних. Тут переходять змінні.

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

  • Дізнайтеся, як автоматизувати Windows за допомогою PowerShell
  • Навчитися використовувати командлети в PowerShell
  • Навчання Як використовувати об'єкти в PowerShell
  • Навчання форматування, фільтрації та порівняння в PowerShell
  • Навчіться використовувати Remoting у PowerShell
  • Використання PowerShell для отримання інформації про комп'ютер
  • Робота з колекціями в PowerShell

І залишайтеся на зв'язку на решту серії весь тиждень.

Змінні

Більшість мов програмування дозволяють використовувати змінні, які є просто контейнерами, що мають значення. У PowerShell ми також маємо змінні, і їх дуже легко використовувати. Ось як створити змінну під назвою "FirstName" і дати йому значення "Тейлор".

$FirstName = “Taylor”

Перше, що більшість людей, схоже, запитують, чому ми поставили знак долара перед ім'ям змінних, і це насправді дуже хороше запитання. Дійсно, знак долара - це лише невеликий натяк на оболонку, що ми хочемо отримати доступ до вмісту змінної (думати, що знаходиться всередині контейнера), а не сам контейнер. У PowerShell імена змінних не включають знак долара, що означає, що у наведеному вище прикладі ім'я змінних фактично є "Першим ім'ям".

У 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’

Обидва вище призводять до змінної числа, що містить цілий об'єкт із значенням 5.

Вхідний і вихідний

Оскільки PowerShell призначений для автоматизації речей, ви хочете, щоб уникнути спонукання користувачів до інформації, де це можливо. З цього випливає, що буде час, коли ви не можете уникнути цього, і для тих часів ми маємо командлет Read-Host. Використовувати це дуже просто:

$FirstName = Read-Host –Prompt ‘Enter your first name’

Все, що ви вводите, буде збережено в змінній.

Написання виводу так само просто з командлетом Write-Output.

Write-Output “How-To Geek Rocks!”

Приєднуйтесь до нас завтра, де ми зв'яжемо все, що ми навчилися разом!

Link
Plus
Send
Send
Pin