Школа Geek: изучение переменных PowerShell, вход и выход

Оглавление:

Школа Geek: изучение переменных PowerShell, вход и выход
Школа Geek: изучение переменных PowerShell, вход и выход

Видео: Школа Geek: изучение переменных PowerShell, вход и выход

Видео: Школа Geek: изучение переменных PowerShell, вход и выход
Видео: Почему я ушёл с Яндекс.Практикум спустя всего 1 неделю? - YouTube 2024, Апрель
Anonim
Когда мы уходим от простых команд и переходим к написанию сценариев с полным раздувом, вам потребуется временное место для хранения данных. Здесь происходят переменные.
Когда мы уходим от простых команд и переходим к написанию сценариев с полным раздувом, вам потребуется временное место для хранения данных. Здесь происходят переменные.

Обязательно прочитайте предыдущие статьи в серии:

  • Узнайте, как автоматизировать Windows с помощью PowerShell
  • Обучение использованию командлетов в 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]

Это даст вам первый объект в коллекции.

Image
Image

Не поймайте!

Переменные в PowerShell слабо типизированы по умолчанию, что означает, что они могут содержать любые данные, это, похоже, все время захватывает новых пользователей PowerShell!

$a = 10

$b = ‘20’

Итак, у нас есть две переменные: одна содержит строку, а другая - целое число. Итак, что произойдет, если вы их добавите? Это зависит от того, в каком порядке вы их добавите.

$a + $b = 30

В то время как

$b + $a = 2010

В первом примере первый операнд представляет собой целое число $ a, поэтому PowerShell думает, что вы пытаетесь выполнить математику и, следовательно, пытаетесь преобразовать любые другие операнды в целые числа. Однако во втором примере первый операнд представляет собой строку, поэтому PowerShell просто преобразует остальные операнды в строки и объединяет их. Более продвинутые сценаристы предотвращают этот вид gotcha, перебрасывая переменную на тот тип, который они ожидают.

[int]$Number = 5 [int]$Number = ‘5’

Вышеизложенное приведет к переменной Number, содержащей целочисленный объект со значением 5.

Вход и выход

Поскольку PowerShell предназначен для автоматизации работы, вам будет необходимо избегать предоставления пользователям информации, где это возможно. С учетом сказанного, там будут моменты, когда вы не можете этого избежать, и для тех случаев у нас есть командлет Read-Host. Использование его очень просто:

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

Все, что вы введете, будет сохранено в переменной.
Все, что вы введете, будет сохранено в переменной.
Запись вывода так же легко с помощью командлета Write-Output.
Запись вывода так же легко с помощью командлета Write-Output.

Write-Output “How-To Geek Rocks!”

Рекомендуемые: