Использование блоков скриптов с задержкой привязки с параметрами
Типизированный параметр, который принимает входные данные конвейера, позволяет использовать блоки скриптов с задержкой привязки в параметре . Блоки скриптов с задержкой привязки можно использовать в качестве сокращения для определения параметров конвейерного командлета перед его выполнением.
В блоке скрипта delay-bind можно ссылаться на конвейер, попав в объект , с помощью переменной конвейера .
В более сложных командлетах блоки скриптов с задержкой привязки позволяют повторно использовать один конвейер в объекте для заполнения других параметров.
Примечания о блоках скриптов с задержкой привязки в качестве параметров:
-
Необходимо явно указать имена параметров, которые используются с блоками скриптов с задержкой привязки.
-
Параметр не должен быть нетипизированным, а тип параметра не может быть или .
-
Если вы используете блок скрипта с задержкой привязки, не предоставляя входные данные конвейера, появляется сообщение об ошибке.
Методы записи
Функция может вызывать следующие методы для возврата различных типов выходных данных.
Обратите внимание, что не все выходные данные переходят к следующей команде в конвейере. Вы также можете использовать различные командлеты, например
WriteDebug
Чтобы предоставить сведения, которые можно использовать для устранения неполадок функции, вызовите метод. Метод отображает отладочные сообщения пользователю. Дополнительные сведения см. в разделе System.Management.Automation.Cmdlet.WriteDebug.
WriteError
Функции должны вызывать этот метод при возникновении неустранимых ошибок, и функция предназначена для продолжения обработки записей. Дополнительные сведения см. в разделе System.Management.Automation.Cmdlet.WriteError.
Примечание
Если возникает завершающая ошибка, функция должна вызвать метод ThrowTerminatingError .
WriteObject
Этот метод позволяет функции отправлять объект в следующую команду в конвейере. В большинстве случаев используется метод, используемый при возврате данных функцией. Дополнительные сведения см. в разделе System.Management.Automation.PSCmdlet.WriteObject.
WriteProgresss
Для функций с действиями, которые занимают много времени, этот метод позволяет функции вызывать метод таким образом, чтобы отображались сведения о ходе выполнения. Например, можно отобразить процент завершения.
Дополнительные сведения см. в разделе System.Management.Automation.PSCmdlet.WriteProgress.
WriteVerbose
Чтобы предоставить подробные сведения о том, что делает функция, вызовите метод для отображения подробных сообщений пользователю. По умолчанию подробные сообщения не отображаются. Дополнительные сведения см. в разделе System.Management.Automation.PSCmdlet.WriteVerbose.
WriteWarning
Чтобы предоставить сведения об условиях, которые могут привести к непредвиденным результатам, вызовите метод WriteWarning для отображения предупреждающих сообщений пользователю. По умолчанию отображаются предупреждающие сообщения. Дополнительные сведения см. в разделе System.Management.Automation.PSCmdlet.WriteWarning.
Примечание
Вы также можете отобразить предупреждающие сообщения, настроив переменную или с помощью параметров командной строки. Дополнительные сведения о переменной см. в about_Preference_Variables.
Исследование ошибок конвейера
Если PowerShell не может связать объекты с конвейером с параметром принимающего командлета, команда завершается ошибкой.
В следующем примере мы пытаемся переместить запись реестра из одного раздела реестра в другой. Командлет получает путь назначения, который затем передан в командлет. Команда указывает текущий путь и имя перемещаемой записи реестра.
Команда завершается ошибкой, и PowerShell отображает следующее сообщение об ошибке:
Для изучения используйте командлет для трассировки компонента привязки параметров PowerShell. В следующем примере выполняется привязка параметра трассировки во время выполнения конвейера. Параметр PSHost отображает результаты трассировки в консоли, а параметр FilePath отправляет результаты трассировки в файл для последующей ссылки.
Результаты трассировки являются длительными, но они показывают значения, привязанные к командлету, а затем именованные значения, привязанные к командлету .
Наконец, показано, что попытка привязать путь к параметру Destination завершилась ошибкой .
Используйте командлет для просмотра атрибутов параметра Destination.
Результаты показывают, что назначение принимает входные данные конвейера только по имени свойства. Таким образом, конвейерный объект должен иметь свойство с именем Destination.
Используется для просмотра свойств объекта, поступающего из .
В выходных данных показано, что элемент является объектом Microsoft.Win32.RegistryKey , у которых нет свойства Destination . Это объясняет, почему команда завершилась сбоем.
Параметр Path принимает входные данные конвейера по имени или по значению.
Чтобы исправить эту команду, необходимо указать назначение в командлете и использовать для получения пути к элементу, который требуется переместить.
Например,
Подробное описание
PowerShell содержит следующие ключевые слова языка. Дополнительные сведения см. в разделе о ключевом слове и сведениях, следующих за таблицей.
Ключевое слово | Ссылка |
---|---|
about_Functions, about_Functions_Advanced | |
about_Break, about_Trap | |
about_Try_Catch_Finally | |
about_Classes | |
about_Continue, about_Trap | |
about_Data_Sections | |
Зарезервировано для использования в будущем. | |
about_Do, about_While | |
about_Functions_Advanced_Parameters | |
about_If | |
about_If | |
about_Functions, about_Functions_Advanced_Methods | |
about_Enum | |
about_Functions | |
about_Try_Catch_Finally | |
about_For | |
about_ForEach | |
Зарезервировано для использования в будущем. | |
about_Functions, about_Functions_Advanced | |
about_Hidden | |
about_If | |
about_ForEach | |
about_Functions | |
about_Functions, about_Functions_Advanced | |
about_Return | |
about_Classes | |
about_Switch | |
about_Throw, about_Functions_Advanced_Methods | |
about_Trap, about_Break, about_Try_Catch_Finally | |
about_Try_Catch_Finally | |
about_Do | |
about_Using, about_Classes | |
Зарезервировано для использования в будущем. | |
about_While, about_Do |
Рабочие процессы PowerShell используют следующие ключевые слова:
Рабочие процессы PowerShell поддерживаются только в PowerShell 5.1. Дополнительные сведения о рабочих процессах см. в разделе «Выполнение команд PowerShell в рабочем процессе».
Подстановка команд
Если вы пытаетесь получить значения свойств в строку, ситуация немного усложняется. Многие новички испытывают с этим проблемы. Позвольте мне сначала показать, что, по их мнению, должно сработать (по идее, все выглядит логично).
Казалось бы, вы должны получить из , но вместо этого вы получаете в качестве значения . Причина в том, что подстановка такого типа распознает только базовую переменную. Она интерпретирует точку как часть строки, поэтому не сопоставляет значение на более глубоких уровнях.
Выходит так, что при помещении в строку этот объект предоставляет строку в качестве значения по умолчанию.
Некоторые объекты вместо этого предоставляют имя типа, например
Это то, на что нужно обратить внимание
PowerShell позволяет выполнять команды внутри строки с помощью специального синтаксиса. Это позволяет получить свойства этих объектов и выполнить любую другую команду для получения значения.
Этот подход отлично подходит для определенных ситуаций, но в некоторых случаях может оказаться таким же неудобным, как объединение при наличии нескольких переменных.
Выполнение команды
Команды можно выполнять внутри строки. Хотя так можно делать, мне это не нравится. Код быстро становится перегруженным, и его трудно отлаживать. Я либо использую команду и сохраняю ее результат в переменную, либо использую строку форматирования.
Добавление в массивы
На этом этапе вас начинает интересовать, как добавить элементы в массив. Собственно говоря, никак. Массив имеет фиксированный размер в памяти. Если необходимо увеличить массив или добавить в него один элемент, то в этом случае необходимо создать новый массив и скопировать в него все значения из старого. На первый взгляд это требует значительных усилий, однако PowerShell значительно упрощает создание нового массива. В PowerShell реализован оператор сложения () для массивов.
Примечание
В PowerShell не реализована операция вычитания. Если требуется гибкая альтернатива массиву, необходимо использовать .
Сложение массивов
Для создания нового массива можно использовать оператор сложения. Итак, дано два массива:
Мы можем сложить их вместе, чтобы получить новый массив.
Плюс равно (+=)
Мы можем создать новый массив и добавить в него элемент следующим образом:
Просто помните, что каждый раз, когда вы используете , выполняется дублирование и создание нового массива. Это не проблема, если речь идет о небольших наборах данных, но масштабирование в этом случае выполняется очень ограниченно.
Назначение конвейера
Можно назначить результаты любого конвейера для добавления в любую переменную. Она будет считаться массивом, если содержит несколько элементов.
Обычно если мы говорим об использовании конвейера, мы подразумеваем типичные однострочные сценарии PowerShell. Можно использовать конвейер с операторами и другими циклами. Таким образом, вместо добавления элементов в массив в цикле можно поместить элементы в конвейер.
Примеры
Пример 1. Перенаправление ошибок и выходных данных в файл
В этом примере выполняется один элемент, который будет выполнен успешно, и тот, который будет ошибкой.
Он используется для перенаправления потока ошибок в поток успешности и отправки результирующий поток успешности в файл с именем
Пример 3. Отправка потоков успешности, предупреждений и ошибок в файл
В этом примере показано, как объединить операторы перенаправления для достижения желаемого результата.
- перенаправляет поток предупреждений в поток успешности .
- перенаправляет поток ошибок в поток успешности (который теперь включает все данные потока предупреждений )
- перенаправляет поток успешности (который теперь содержит потоки предупреждений и ошибок ) в файл с именем )
Пример 5. Подавление всех данных Write-Host и потока информации
В этом примере все данные потока информации подавляются. Дополнительные сведения о командлетах потока сведений см. в разделе » Write-Host » и «Write-Information»
Пример 6. Отображение эффекта параметров действия
Переменные и параметры предпочтения действия могут изменять то, что записывается в конкретный поток. Скрипт в этом примере показывает, как значение влияет на то, что записывается в поток ошибок .
При запуске этого скрипта появится запрос, если задано значение .
При проверке файла журнала мы видим следующее:
Для чего предназначена оболочка PowerShell?
С тех пор, как PowerShell применялась только в Windows, область ее действия значительно расширилась. Она по-прежнему используется для автоматизации задач Windows, но сейчас с ней можно работать для выполнения различных задач, некоторые из которых приведены ниже.
- Управление облаком. PowerShell можно использовать для управления облачными ресурсами. Например, можно получать сведения об облачных ресурсах, а также обновлять ресурсы или развертывать новые.
- CI/CD. PowerShell можно также использовать в рамках конвейера непрерывной интеграции и непрерывного развертывания.
- Автоматизация задач для Active Directory и Exchange. PowerShell можно использовать для автоматизации практически любой задачи в Windows, например создание пользователей в Active Directory и почтовых ящиков в Exchange.
Существует гораздо больше областей использования, но предыдущий список дает понять, что PowerShell удалось добиться значительного прогресса.
Типы массивов
По умолчанию массив в PowerShell создается как тип . Благодаря этому он может содержать любые типы объектов и значений. Это возможно, поскольку все наследуется из типа .
Строго типизированные массивы
Массив любого типа можно создать с помощью сходного синтаксиса. Если вы создаете строго типизированный массив, он может содержать только значения или объекты заданного типа.
ArrayList
Добавление элементов в массив накладывает самые серьезные ограничения, однако существует ряд других коллекций, которые можно использовать для решения этой проблемы.
Как правило, если нам нужен массив, поддерживающий более быструю работу, мы в первую очередь вспоминаем о . Он выступает в качестве массива объектов везде, где это необходимо, и при этом поддерживает быстрое добавление элементов.
Мы создаем и добавляем в него элементы следующим образом.
Для получения этого типа вызывается .NET. В этом случае для его создания используется конструктор по умолчанию. Затем вызывается метод , чтобы добавить в него элемент.
Причина, по которой я использую в начале строки, заключается в подавлении кода возврата. Некоторые вызовы .NET выполняют такую функцию, и в результате могут быт получены неожиданные выходные данные.
Если единственными данными в массиве являются строки, ознакомьтесь также с использованием StringBuilder. Это практически то же самое, но некоторые методы предназначены только для работы со строками. специально предназначен для повышения производительности.
Обычно пользователи переходят на с массивов. Однако это наследие тех времен, когда в C# еще не была предусмотрена универсальная поддержка. От отказываются в пользу универсального
Универсальный список
Универсальный тип — это особый тип в C#, который определяет обобщенный класс, при этом пользователь указывает типы данных, которые используются в процессе создания. Поэтому если требуется список чисел или строк, необходимо определить, что требуется список типов или .
Список для строк создается следующим образом.
Так же создается список чисел.
Можно привести существующий массив к списку следующим образом, не создавая сначала объект:
Синтаксис можно сократить с помощью оператора в PowerShell 5 и более поздних версиях. Оператор должен быть первой строкой сценария. Объявляя пространство имен, PowerShell позволяет исключить из него типы данных при ссылке на них.
Это позволяет сделать гораздо более удобным.
Вам доступен аналогичный метод . В отличие от ArrayList метод не возвращает значение, поэтому для него не нужно выполнять .
Кроме того, мы по-прежнему можем получить доступ к таким элементам, как другие массивы.
List
Можно получить список любого типа, но, если вам неизвестен тип объектов, в качестве контейнера для них можно использовать .
Remove()
Как , так и универсальные поддерживают удаление элементов из коллекции.
При работе с типами значений из списка удаляется первый из типов. Его можно вызвать снова, чтобы еще раз удалить это значение. Если используются ссылочные типы, необходимо предоставить объект, который требуется удалить.
Метод Remove возвращает , если удалось найти и удалить элемент из коллекции.
Можно использовать также множество других коллекций, однако эти оптимальны в качестве замены массивам.
Если вам интересно узнать больше о других вариантах, взгляните на Gist, собранный Марком Краусом.
Преобразование данных в строки
Вам может понадобится преобразовать массив в строку. Для таких операций, во многих языках, существует оператор join. Единственное что мы должны указать — это разделитель, который будет использоваться для создания строки:
$array = @(‘Я’, ‘пошел’, ‘на работу’)
$array -join ‘ ‘
1 2 |
$array = @(‘Я’, ‘пошел’, ‘на работу’) $array -join ‘ ‘ |
В примере выше был использован пробел в качестве разделителя, так как именно пробелы сделают предложения читаемым. Так же часто бывает нужно использовать запятые ‘,’ или знак обозначающий перенос строк «`n». Перенос строк используется чаще всего там, где планируется импорт и экспорт файлов и тут так же важен тип кавычек:
$array = @(‘Я’, ‘пошел’, ‘на работу’)
$array -join «`n»
1 2 |
$array = @(‘Я’, ‘пошел’, ‘на работу’) $array -join «`n» |
Преобразовать массив в строку, не указывая разделителя, так же можно использовав метод .Net:
$letters = @(‘a’,’b’,’c’)
::Concat($letters)
1 2 |
$letters = @(‘a’,’b’,’c’) string::Concat($letters) |
Строки — это бывшие массивы
Если посмотреть поверхностно на пример ниже, то мы увидим только скрипт добавляющий случайные значения к строке:
$str = «Случайные числа: »
foreach ($num in 1..10){
$random_num = Get-Random -Minimum 1 -Maximum 100
$str += ‘ ‘+$random_num
}
1 2 3 4 5 |
$str = «Случайные числа: » foreach ($num in 1..10){ $random_num = Get-Random -Minimum 1 -Maximum 100 $str += ‘ ‘+$random_num } |
На самом деле, при каждой итерации (цикле), у нас создается массив из 2 элементов, а затем он объединяется. Минус такого подхода в том, что объединение происходит каждую итерацию, а не единожды. Такой минус будет ощутим при больших данных. Если для вас этот момент важен — вы можете использовать класс .NET StringBuilder, который объединит значения только после цикла:
# Создаем объект класса
$net_class = New-Object -TypeName «System.Text.StringBuilder»
# Добавляем к нему первую строку
$net_class.Append(«Случайные числа: «)
foreach ($num in 1..10){
$random_num = Get-Random -Minimum 1 -Maximum 100
# Добавляем в объект класса случайное значение
$net_class.Append(«$random_num «)
}
# Используем метод для объединения всех значений
$str =$net_class.ToString()
1 2 3 4 5 6 7 8 9 10 11 |
# Создаем объект класса $net_class = New-Object -TypeName «System.Text.StringBuilder» # Добавляем к нему первую строку void$net_class.Append(«Случайные числа: «) foreach ($num in 1..10){ $random_num = Get-Random -Minimum 1 -Maximum 100 # Добавляем в объект класса случайное значение void$net_class.Append(«$random_num «) } # Используем метод для объединения всех значений $str =$net_class.ToString() |
Упражнение. Поиск связанных команд
Цель этого упражнения — получить дополнительные сведения о команде. В итоге вы также узнаете, с каким типом работает команда, и какие другие аналогичные команды работают с тем же типом.
-
Запустите оболочку PowerShell.
-
Выполните команду .
Результат будет примерно таким:
Вы получаете типы, возвращаемые командой . Теперь вы можете узнать, какая другая команда также работает с этими типами.
-
Выполните команду .
Результат будет примерно таким:
Поздравляем! Вы смогли найти другие команды, которые работают с одним и тем же типом .
Использование является хорошей отправной точкой, чтобы понять, какие другие команды следует изучить дальше.
Изучение объектов с помощью Get-Member
Научившись находить нужный командлет, вы, возможно, захотите узнать больше о результате его выполнения, то есть о выходных данных. Выходные данные представляют интерес по нескольким причинам, в число которых входят следующие:
- Автономность. Можно выполнить всего одну команду и отобразить результаты в каком-либо отчете. Вопрос в том, какой результат выдает команда: подходящий или требующий изменений.
- Использование в конвейере. В PowerShell распространена возможность включения нескольких команд в конвейер для получения данных, фильтрации и преобразования. Чтобы команда подходила для использования в конвейере, необходимо иметь представление о ее входных и выходных данных. Суть в том, что выходные данные команды являются входными данными другой команды.
Командлет отображает тип, свойства и методы объекта результата. Передайте выходные данные, которые требуется изучить, в командлет .
В выходных данных отображается возвращаемый тип, а затем — все свойства и методы объекта. Вот фрагмент такого результата:
Как правило, объект обычно имеет множество свойств и методов, поэтому чтобы упростить поиск нужного компонента, можно отфильтровать результаты. С помощью параметра можно указать, к примеру, отображение всех методов, как показано в приведенном ниже примере.
При получении ответа PowerShell обычно выводит лишь несколько свойств. В приведенном выше ответе отображаются , и . Чтобы изменить эти выходные данные, можно воспользоваться командлетом . позволяет указать необходимые для отображения столбцы. В командлете можно указать имя столбца, список с разделителями-запятыми или подстановочный знак . Ниже приведен пример использования командлета используется для извлечения и .
Поиск по типу
Другой способ поиска нужной команды заключается в поиске команд, работающих с одним и тем же типом. При выполнении вы получили возвращаемый тип в виде первой строки ответа, как показано ниже:
Теперь вы можете использовать этот тип и искать команды следующим образом:
Результатом выполнения приведенной выше команды является список команд, которые работают исключительно с типом :
Как видите, зная тип команды, можно значительно сузить область поиска интересующих команд.
Условия для командлетов
В документации по командлету PowerShell часто используются следующие термины:
Атрибут командлета
Атрибут .NET, используемый для объявления класса командлета в качестве командлета. Хотя PowerShell использует несколько других атрибутов, которые являются необязательными, атрибут командлета является обязательным. Дополнительные сведения об этом атрибуте см. в разделе объявление атрибута командлета.
Параметр командлета
Открытые свойства, определяющие параметры, доступные пользователю или приложению, запускающему командлет. Командлеты могут иметь обязательные параметры, именованные, позиционированные и переключатели . Параметры переключателя позволяют определить параметры, которые оцениваются, только если в вызове указаны параметры. Дополнительные сведения о различных типах параметров см. в разделе параметры командлета.
Набор параметров
Группа параметров, которые можно использовать в одной команде для выполнения определенного действия. Командлет может иметь несколько наборов параметров, но каждый набор параметров должен иметь по крайней мере один уникальный параметр. Хорошая разработка командлетов настоятельно предполагает, что уникальный параметр также является обязательным параметром.
Дополнительные сведения о наборах параметров см. в разделе наборы параметров командлета.
Динамический параметр
Параметр, добавляемый в командлет во время выполнения. Как правило, динамические параметры добавляются в командлет, если для другого параметра задано конкретное значение. Дополнительные сведения о динамических параметрах см. в разделе динамические параметры командлета.
Методы обработки входных данных
Класс System. Management. Automation. командлет предоставляет следующие виртуальные методы, используемые для обработки записей. Все производные классы командлетов должны переопределять один или несколько первых трех методов:
- System. Management. Automation. командлет. BeginProcessing: используется для предоставления необязательных одноразовых функций предварительной обработки для командлета.
- System. Management. Automation. командлет. ProcessRecord: используется для предоставления функций обработки записей по записям для командлета. Метод System. Management. Automation. командлет. ProcessRecord может вызываться любое количество раз, в зависимости от входных данных командлета.
- System. Management. Automation. командлет. EndProcessing: используется для предоставления необязательных одноразовых функций последующей обработки для командлета.
- System. Management. Automation. командлет. StopProcessing: используется для остановки обработки при асинхронной остановке командлета пользователем (например, при нажатии клавиши CTRL + C).
Дополнительные сведения об этих методах см. в разделе методы обработки входных данных командлета.
При реализации командлета необходимо переопределить хотя бы один из этих методов обработки ввода.
Как правило, метод ProcessRecord () является переопределяемым методом, поскольку он вызывается для каждой записи, обрабатываемой командлетом. В отличие от этого, метод BeginProcessing () и метод EndProcessing () вызываются один раз для выполнения предварительной обработки или последующей обработки записей. Дополнительные сведения об этих методах см. в разделе методы обработки входных данных.
Функция ShouldProcess
PowerShell позволяет создавать командлеты, предлагающие пользователю отправить отзыв, прежде чем командлет вносит изменения в систему. Чтобы использовать эту функцию, командлет должен объявить, что он поддерживает эту функцию при объявлении атрибута командлета, и командлет должен вызвать методы System. Management. Automation. командлет. ShouldProcess и System. Management. Automation. командлет. ShouldContinue из метода обработки ввода. Дополнительные сведения о поддержке функций см. в разделе запрос подтверждения.
Транзакция
Логическая группа команд, обрабатываемых как одна задача. Задача автоматически завершается ошибкой, если любая команда в группе завершается ошибкой, и пользователь может принять или отклонить действия, выполненные внутри транзакции. Чтобы принять участие в транзакции, командлет должен объявить, что он поддерживает транзакции при объявлении атрибута командлета. поддержка транзакций появилась в Windows PowerShell 2,0. Дополнительные сведения о транзакциях см. в разделе Поддержка транзакций.
Примечания
Операторы перенаправления, которые не добавляют данные ( и ) перезаписывают текущее содержимое указанного файла без предупреждения.
Однако если файл является файлом только для чтения, скрытым или системным файлом, перенаправление завершается ошибкой. Операторы перенаправления добавления ( и ) не записываются в файл, доступный только для чтения, но добавляют содержимое в систему или скрытый файл.
Чтобы принудительно перенаправить содержимое в файл с доступом только для чтения, скрытого или системного файла, используйте командлет с его параметром.
При записи в файлы операторы перенаправления используют кодировку. Если файл имеет другую кодировку, выходные данные могут быть отформатированы неправильно. Для записи в файлы с другой кодировкой используйте командлет с его параметром.
Ширина выходных данных при записи в файл
При записи в файл с помощью операторов перенаправления PowerShell форматирует выходные данные таблицы в файл на основе ширины консоли, в котором она выполняется. Например, при ведении журнала выходных данных таблицы в файл с помощью команды, например в системе, где ширина консоли имеет значение 80 столбцов, выходные данные в файле усечены до 80 символов:
Учитывая, что ширина консоли может быть задана произвольно в системах, где выполняется скрипт, вы можете предпочесть, чтобы выходные данные таблицы PowerShell отображались в файлах на основе указанной ширины.
Командлет предоставляет параметр Width , позволяющий задать ширину для выходных данных таблицы. Вместо того чтобы добавлять везде, где вы вызываете , можно использовать переменную, чтобы задать это значение для всех использования командлета в скрипте. И так как операторы перенаправления ( и ) являются фактически псевдонимами для , задание параметра для всего скрипта влияет на ширину форматирования для операторов перенаправления. Поместите следующую команду в верхнюю часть скрипта, чтобы задать для всего скрипта:
Увеличение ширины выходных данных приведет к увеличению потребления памяти при ведении журнала форматированных выходных данных таблицы. Если вы регистрируют много табличных данных в файл и знаете, что вы можете получить с меньшей шириной, используйте меньшую ширину.
В некоторых случаях, например выходных данных, для использования дополнительной ширины необходимо передать выходные данные перед выходом в файл.
Дополнительные сведения см. в .
Потенциальная путаница с операторами сравнения
Оператор не следует путать с оператором сравнения » (часто обозначается как в других языках программирования).
В зависимости от сравниваемых объектов выходные данные могут показаться правильными (так как 36 не больше 42).
Однако проверка локальной файловой системы может увидеть, что файл был записан с содержимым .
При попытке использовать обратное сравнение (меньше), возникает системная ошибка:
Если числовое сравнение является обязательной операцией и должно использоваться. Дополнительные сведения см. в оператора.
Для чего предназначена оболочка PowerShell?
С тех пор, как PowerShell применялась только в Windows, область ее действия значительно расширилась. Она по-прежнему используется для автоматизации задач Windows, но сейчас с ней можно работать для выполнения различных задач, некоторые из которых приведены ниже.
- Управление облаком. PowerShell можно использовать для управления облачными ресурсами. Например, можно получать сведения об облачных ресурсах, а также обновлять ресурсы или развертывать новые.
- CI/CD. PowerShell можно также использовать в рамках конвейера непрерывной интеграции и непрерывного развертывания.
- Автоматизация задач для Active Directory и Exchange. PowerShell можно использовать для автоматизации практически любой задачи в Windows, например создание пользователей в Active Directory и почтовых ящиков в Exchange.
Существует гораздо больше областей использования, но предыдущий список дает понять, что PowerShell удалось добиться значительного прогресса.
exit
Заставляет PowerShell выйти из скрипта или экземпляра PowerShell.
Синтаксис:
При использовании с параметром File сам файл (скрипт) должен содержать инструкции по обработке ошибок или исключений, возникающих во время выполнения скрипта. Оператор следует использовать только для указания состояния после выполнения скрипта.
В Windows любое число между и разрешено.
В Unix разрешены только положительные числа между ними . Отрицательное число в диапазоне отсчета автоматически преобразуется в положительное число путем добавления 256. Например, преобразуется в .
В PowerShell инструкция задает значение переменной . В командной оболочке Windows () инструкция exit задает значение переменной среды.
Любой аргумент, который не является числовым или за пределами диапазона, зависящее от платформы, преобразуется в значение .
В следующем примере пользователь устанавливает для переменной уровня ошибки значение 4 , добавляя в файл скрипта.
При выполнении и завершении работы файла скрипта с помощью команды код выхода задается числовым аргументом, используемым с командой . Если скрипт не имеет инструкции, код выхода всегда происходит, когда скрипт завершается без ошибок или когда скрипт завершается из необработанного исключения.
Для чего предназначена оболочка PowerShell?
С тех пор, как PowerShell применялась только в Windows, область ее действия значительно расширилась. Она по-прежнему используется для автоматизации задач Windows, но сейчас с ней можно работать для выполнения различных задач, некоторые из которых приведены ниже.
- Управление облаком. PowerShell можно использовать для управления облачными ресурсами. Например, можно получать сведения об облачных ресурсах, а также обновлять ресурсы или развертывать новые.
- CI/CD. PowerShell можно также использовать в рамках конвейера непрерывной интеграции и непрерывного развертывания.
- Автоматизация задач для Active Directory и Exchange. PowerShell можно использовать для автоматизации практически любой задачи в Windows, например создание пользователей в Active Directory и почтовых ящиков в Exchange.
Существует гораздо больше областей использования, но предыдущий список дает понять, что PowerShell удалось добиться значительного прогресса.
Методы подтверждения
ShouldProcess
Этот метод вызывается для запроса подтверждения от пользователя, прежде чем функция выполнит действие, которое изменит систему. Функция может продолжаться на основе логического значения, возвращаемого методом. Этот метод можно вызывать только из блока функции. Атрибут также должен объявить, что функция поддерживает (как показано в предыдущем примере).
Дополнительные сведения об этом методе см. в разделе System.Management.Automation.Cmdlet.ShouldProcess.
Дополнительные сведения о том, как запросить подтверждение, см. в разделе «Запрос подтверждения».
ShouldContinue
Этот метод вызывается для запроса второго сообщения подтверждения. Он должен вызываться при возвращении метода. Дополнительные сведения об этом методе см. в разделе System.Management.Automation.Cmdlet.ShouldContinue.