Домашняя » как » Geek School Learning PowerShell Переменные, ввод и вывод

    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!»

    Присоединяйтесь к нам завтра, где мы свяжем все, что мы узнали вместе!