Geek School Learning PowerShell Переменные, ввод и вывод
Когда мы отойдем от простого запуска команд и перейдем к написанию полноценных сценариев, вам понадобится временное место для хранения данных. Это где переменные приходят.
Обязательно прочитайте предыдущие статьи серии:
- Узнайте, как автоматизировать Windows с помощью PowerShell
- Учимся использовать командлеты в PowerShell
- Изучение, как использовать объекты в PowerShell
- Обучение форматированию, фильтрации и сравнению в PowerShell
- Научитесь использовать Remoting в PowerShell
- Использование PowerShell для получения информации о компьютере
- Работа с коллекциями в PowerShell
И оставайтесь с нами до конца сериала всю неделю.
переменные
Большинство языков программирования допускают использование переменных, которые являются просто контейнерами, которые содержат значения. В PowerShell у нас тоже есть переменные, и они действительно просты в использовании. Вот как создать переменную с именем «FirstName» и присвоить ей значение «Taylor».
$ FirstName = «Тейлор»
Первое, что кажется большинству людей, - почему мы ставим знак доллара перед именем переменной, и это на самом деле очень хороший вопрос. Действительно, знак доллара - это всего лишь небольшой намек на оболочку, к которой мы хотим получить доступ к содержимому переменной (подумайте, что находится внутри контейнера), а не сам контейнер. В PowerShell имена переменных не включают знак доллара, а это означает, что в приведенном выше примере имя переменной на самом деле «FirstName».
В PowerShell вы можете видеть все переменные, которые вы создали в переменной PSDrive.
переменная gci:
Это означает, что вы можете удалить переменную из оболочки в любое время:
Переменная Remove-Item: \ FirstName
Переменные также не должны содержать один объект; вы можете так же легко хранить несколько объектов в переменной. Например, если вы хотите сохранить список запущенных процессов в переменной, вы можете просто присвоить ей выходные данные Get-Process.
$ Proc = Get-Process
Хитрость в понимании этого заключается в том, чтобы помнить, что правая часть знака равенства всегда оценивается первой. Это означает, что вы можете иметь весь конвейер с правой стороны, если хотите.
$ CPUHogs = Get-Process | Сортировать ЦП-По убыванию | выберите - Первые 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!»
Присоединяйтесь к нам завтра, где мы свяжем все, что мы узнали вместе!