Geek Школа Навчання PowerShell Змінні, вхід і вихід
Коли ми віддаляємося від простого запуску команд і переходимо до написання повномасштабних скриптів, вам знадобиться тимчасове місце для зберігання даних. Ось де входять змінні.
Обов'язково прочитайте попередні статті серії:
- Дізнайтеся, як автоматизувати Windows за допомогою PowerShell
- Навчання використанню командлетів у PowerShell
- Навчання використанню об'єктів у PowerShell
- Навчання форматування, фільтрації та порівняння в PowerShell
- Дізнайтеся, як використовувати віддалене використання в PowerShell
- Використання PowerShell для отримання інформації про комп'ютер
- Робота з колекціями в PowerShell
І залишайтеся з нами для решти серії цілий тиждень.
Змінні
Більшість мов програмування дозволяють використовувати змінні, які є просто контейнерами, які утримують значення. У PowerShell ми теж маємо змінні, і вони дуже прості у використанні. Ось як створити змінну з назвою "FirstName" і дати йому значення "Taylor".
$ FirstName = "Taylor"
Перше, що, як здається, більшість людей, запитують, чому ми поставили знак долара перед назвою змінних, і це насправді дуже хороше питання. Дійсно, знак долара - це лише невеликий натяк на оболонку, що ми хочемо отримати доступ до вмісту змінної (подумайте, що всередині контейнера), а не сам контейнер. У PowerShell імена змінних не включають знак долара, тобто в наведеному вище прикладі ім'я змінних насправді є "FirstName".
У PowerShell можна побачити всі змінні, створені в змінної PSDrive.
змінна gci:
Це означає, що ви можете видалити змінну з оболонки в будь-який час:
Remove-Item Variable: Перша назва
Змінні також не повинні містити жодного об'єкта; Ви можете так само легко зберігати декілька об'єктів у змінній. Наприклад, якщо ви хочете зберегти список запущених процесів у змінній, ви можете просто призначити їй вихід Get-Process.
$ Proc = Get-Process
Трюк для розуміння цього полягає в тому, щоб пам'ятати, що праву частину знаку рівності завжди оцінюють спочатку. Це означає, що ви можете мати весь трубопровід з правого боку, якщо хочете.
$ CPUHogs = Get-Process | Сортування CPU -Descending | виберіть -Перший 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 призначена для автоматизації речей, ви бажаєте уникати спонукання користувачів до інформації, де це можливо. З урахуванням сказаного, будуть часи, коли ви не зможете уникнути цього, і для тих часів у нас є командлет Read-Host. Використовувати його дуже просто:
$ FirstName = Read-Host -Prompt 'Введіть своє ім'я'
Все, що ви введете, буде збережено в змінну.
Написання вихідних даних так само легко здійснюється за допомогою командлета Write-Output.
Написати-висновок "How-To Geek Rocks!"
Приєднуйтесь до нас завтра, де ми пов'язуємо все, що ми дізналися разом!