Имена переменных, включающие специальные символы
Имена переменных начинаются со знака доллара () и могут включать буквенно-цифровые символы и специальные символы. Длина имени переменной ограничена только доступной памятью.
Рекомендуется, чтобы имена переменных включали только буквенно-цифровые символы и символ подчеркивания (). Имена переменных, включающие пробелы и другие специальные символы, трудно использовать и следует избегать.
Буквенно-цифровые имена переменных могут содержать следующие символы:
- Символы Юникода из этих категорий: Lu, Ll, Lt, Lm, Lo или Nd.
- Символ подчеркивания ().
- Знак вопроса () символ.
В следующем списке содержатся описания категорий Юникода. Дополнительные сведения см. в разделе UnicodeCategory.
- Lu — UppercaseLetter
- Ll — LowercaseLetter
- Lt — TitlecaseLetter
- Lm — ModifierLetter
- Lo — OtherLetter
- Nd — DecimalDigitNumber
Чтобы создать или отобразить имя переменной, включающее пробелы или специальные символы, заключите имя переменной с фигурными скобками () символами.
Фигурные скобки направляют PowerShell для интерпретации символов имени переменной как литералы.
Имена специальных переменных символов могут содержать следующие символы:
- Любой символ Юникода со следующими исключениями:
- Закрывающая фигурная скобка () (U+007D).
- Символ обратной черты () (U+0060). Обратная черта используется для экранирования символов Юникода, поэтому они обрабатываются как литералы.
PowerShell имеет зарезервированные переменные, такие как , и содержащие буквенно-цифровые и специальные символы. Дополнительные сведения см. в статье about_Automatic_Variables.
Например, следующая команда создает переменную с именем . Фигурные скобки () необходимы, так как имя переменной включает специальный символ дефиса ().
Следующая команда получает дочерние элементы в каталоге, представленном переменной среды.
Чтобы ссылаться на имя переменной, включающую фигурные скобки, заключите имя переменной в фигурные скобки и используйте символ обратного ввода для экранирования фигурных скобок. Например, чтобы создать переменную именованного типа:
Рекомендации по именованию команд
Следующие рекомендации помогут выбрать подходящую команду для командлета, чтобы обеспечить согласованность между создаваемыми вами командлетами, командлетами, предоставляемыми PowerShell, и командлетами, разработанными другими пользователями.
- Используйте одно из стандартных имен команд, предоставленных PowerShell.
- Используйте команду, чтобы описать общую область действия, и параметры для уточнения действия командлета.
- Не используйте синоним утвержденной команды. Например, всегда используйте , а не или .
- Используйте команду только в той форме, которая указана в этом разделе. Например, используйте , но не или .
- Не используйте следующие зарезервированные команды или псевдонимы. Язык PowerShell и редкие несколько командлетов используют эти команды в исключительных обстоятельствах.
- ForEach (foreach)
- Ping (pi)
- Sort (sr)
- Tee (te)
- Where (wh)
Полный список команд можно получить с помощью командлета .
Как написать скрипт
Скрипт может содержать любые допустимые команды PowerShell, включая отдельные команды, команды, использующие конвейер, функции и структуры управления, такие как операторы If и циклы For.
Чтобы написать скрипт, откройте новый файл в текстовом редакторе, введите команды и сохраните их в файле с допустимым именем файла с расширением файла.
В следующем примере показан простой сценарий, который получает службы, работающие в текущей системе, и сохраняет их в файл журнала. Имя файла журнала создается с текущей даты.
Чтобы создать этот скрипт, откройте текстовый редактор или редактор скриптов, введите эти команды и сохраните их в файле с именем .
Параметры в скриптах
Чтобы определить параметры в скрипте, используйте инструкцию Param. Оператор должен быть первым оператором в скрипте, за исключением комментариев и любых операторов.
Параметры скрипта работают как параметры функции. Значения параметров доступны для всех команд в скрипте. Все функции параметров функции, включая атрибут Parameter и его именованные аргументы, также допустимы в скриптах.
При запуске скрипта пользователи скрипта вводит параметры после имени скрипта.
В следующем примере показан сценарий с параметром ComputerName . Обе функции скрипта могут получить доступ к значению параметра ComputerName .
Чтобы запустить этот скрипт, введите имя параметра после имени скрипта. Пример:
Дополнительные сведения об операторе Param и параметрах функции см. в about_Functions и about_Functions_Advanced_Parameters.
Написание справки по скриптам
Раздел справки для сценария можно написать с помощью одного из двух следующих методов:
-
Comment-Based справку по скриптам
-
XML-Based справку по скриптам
Создайте раздел справки на основе XML, например тип, который обычно создается для командлетов. При переводе разделов справки на несколько языков требуется справка на основе XML.
Чтобы связать скрипт с разделом справки на основе XML, используйте .. Ключевое слово comment externalHelp Help. Дополнительные сведения о ключевом слове ExternalHelp см. в about_Comment_Based_Help. Дополнительные сведения о справке на основе XML см. в статье «Написание справки по командлетам».
Возвращение значения выхода
По умолчанию скрипты не возвращают состояние выхода при завершении скрипта. Для возврата кода выхода из скрипта необходимо использовать инструкцию. По умолчанию инструкция возвращает . Вы можете указать числовое значение, чтобы вернуть другое состояние выхода. Код выхода, отличный от нуля, обычно сигнализирует о сбое.
В Windows любое число между и разрешено.
В Unix разрешены только положительные числа от (0) до (255). Отрицательное число в диапазоне отсчета автоматически преобразуется в положительное число путем добавления 256. Например, преобразуется в .
В PowerShell инструкция задает значение переменной . В командной оболочке Windows (cmd.exe) инструкция exit задает значение переменной среды.
Любой аргумент, который не является числовым или за пределами диапазона, зависящее от платформы, преобразуется в значение .
Примечания
PowerShell включает следующие псевдонимы для :
- Все платформы
- Windows
Собственные команды — это исполняемые файлы, установленные в операционной системе. Эти исполняемые файлы можно запускать из любой оболочки командной строки, например PowerShell. Обычно команда выполняется точно так же, как в или . Командлет можно использовать для выполнения любых собственных команд, но его следует использовать только в том случае, если необходимо управлять выполнением команды.
полезно для запуска программ графического пользовательского интерфейса на платформах, отличных от Windows. Например, выполните команду , чтобы запустить графический текстовый редактор, распространенный в средах рабочего стола GNOME.
По умолчанию запускает процесс асинхронно. Элемент управления мгновенно возвращается в PowerShell, даже если новый процесс все еще выполняется.
- В локальной системе запущенный процесс находится в независимом от вызывающего процесса.
- В удаленной системе новый процесс завершается после завершения удаленного сеанса сразу после выполнения команды . Таким образом, вы не можете использовать в удаленном сеансе, ожидая, что запущенный процесс выживет сеанс.
Если вам нужно использовать в удаленном сеансе, вызовите его с помощью параметра Wait . Вы также можете использовать другие методы для создания нового процесса в удаленной системе.
При использовании параметра Wait ожидает выхода дерева процесса (процесса и всех его потомков) перед возвратом управления. Это отличается от поведения командлета , который ожидает только завершения указанных процессов.
В Windows наиболее распространенным вариантом использования является использование параметра Wait для блокировки хода выполнения до завершения нового процесса. В системе, отличной от Windows, это редко требуется, так как поведение по умолчанию для приложений командной строки эквивалентно .
Этот командлет реализуется с помощью метода Start класса System.Diagnostics.Process . Дополнительные сведения об этом методе см. в разделе .
Подробное описание
Все типы значений можно хранить в переменных PowerShell. Например, сохраните результаты команд и сохраните элементы, используемые в командах и выражениях, таких как имена, пути, параметры и значения.
Переменная — это единица памяти, в которой хранятся значения. В PowerShell переменные представлены текстовыми строками, начинающимися со знака доллара (), например , или .
Имена переменных не чувствительны к регистру и могут содержать пробелы и специальные символы. Но имена переменных, включающие специальные символы и пробелы, трудно использовать и следует избегать. Дополнительные сведения см. в .
В PowerShell существует несколько различных типов переменных.
-
Созданные пользователем переменные: созданные пользователем переменные создаются и обслуживаются пользователем. По умолчанию переменные, создаваемые в командной строке PowerShell, существуют только тогда, когда открыто окно PowerShell. При закрытии окон PowerShell переменные удаляются. Чтобы сохранить переменную, добавьте ее в профиль PowerShell. Вы также можете создавать переменные в скриптах с глобальной областью, сценарием или локальной областью.
-
Автоматические переменные: автоматические переменные хранят состояние PowerShell. Эти переменные создаются с помощью PowerShell, и PowerShell изменяет их значения в соответствии с требованиями к их точности. Пользователи не могут изменить значение этих переменных. Например, переменная сохраняет путь к каталогу установки PowerShell.
Дополнительные сведения, список и описание автоматических переменных см. в about_Automatic_Variables.
-
Переменные предпочтения: переменные предпочтений хранят пользовательские настройки для PowerShell. Эти переменные создаются PowerShell и заполняются значениями по умолчанию. Пользователи могут изменять значения этих переменных. Например, переменная определяет максимальное количество записей в журнале сеансов.
Дополнительные сведения, список и описание переменных предпочтения см. в about_Preference_Variables.
Подробное описание
Переменные среды хранят данные, используемые операционной системой и другими программами. Например, переменная среды содержит расположение каталога установки Windows. Программы могут запрашивать значение этой переменной, чтобы определить, где находятся файлы операционной системы Windows.
PowerShell может получать доступ к переменным среды и управлять ими на любой из поддерживаемых платформ операционной системы. Поставщик среды PowerShell позволяет получать, добавлять, изменять, очищать и удалять переменные среды в текущей консоли.
Примечание
В отличие от Windows, в именах переменных среды в macOS и Linux учитывается регистр. Например, и — это разные переменные среды на платформах, отличных от Windows.
Переменные среды, в отличие от других типов переменных в PowerShell, всегда хранятся в виде строки и не могут быть пустыми. Кроме того, в отличие от других переменных, они наследуются дочерними процессами, такими как локальные фоновые задания и сеансы, в которых выполняются члены модуля. Благодаря этому переменные среды хорошо подходят для хранения значений, необходимых как в родительских, так и в дочерних процессах.
В Windows переменные среды можно определить в трех областях:
- Область компьютера (или системы)
- Область пользователей
- Область процесса
Область процесса содержит переменные среды, доступные в текущем процессе или сеансе PowerShell. Этот список переменных наследуется от родительского процесса и создается из переменных в областях Компьютер и Пользователь .
Изменение переменных среды в PowerShell влияет только на текущий сеанс. Это поведение похоже на поведение команды в командной оболочке Windows и команды в средах на основе UNIX. Чтобы изменить значения в области Компьютер или Пользователь, необходимо использовать методы класса System.Environment .
Чтобы внести изменения в переменные уровня компьютера, необходимо также иметь разрешение. Если вы попытаетесь изменить значение без достаточных разрешений, команда завершается ошибкой, и PowerShell отобразит ошибку.
PowerShell предоставляет несколько различных методов использования переменных среды и управления ими.
- Синтаксис переменной
- Командлеты поставщика среды и элемента
- Класс .NET System.Environment
Использование профиля
Многие элементы, создаваемые в PowerShell, и большинство выполняемых команд влияют только на текущий сеанс. После завершения сеанса элементы удаляются.
Команды и элементы для конкретного сеанса включают переменные, переменные предпочтения, псевдонимы, функции, команды (за исключением Set-ExecutionPolicy) и модули PowerShell, добавляемые в сеанс.
Чтобы сохранить эти элементы и сделать их доступными во всех будущих сеансах, добавьте их в профиль PowerShell.
Другой распространенный способ использования профилей — сохранение часто используемых функций, псевдонимов и переменных. При сохранении элементов в профиле их можно использовать в любом применимом сеансе, не создавая их повторно.
Форматирование в Windows PowerShell
В Windows PowerShell существует набор командлетов, которые предназначены для форматирования вывода результата работы командлета. Они позволяют пользователю отобразить результат в том виде, в котором ему удобно просматривать данный результат.
- Format-List – вывод результата команды в формате списка свойств, где на каждой новой строке отдельное свойство;
- Format-Table — вывод результата команды в виде таблицы;
- Format-Wide — вывод результата команды в виде широкой таблицы, в которой отображается только одно свойство каждого объекта;
- Format-Custom – в данном случае форматирование вывода происходит с использованием пользовательского представления.
PowerShell ISE
Для того что бы не навредить системе и проверить работоспособность скрипта, разработку, отладку и тестирование удобно проводить в специальной среде. PowerShell ISE дает такую возможность. Интерфейс приложения разделен на 3 части. В верхней части вы можете добавлять код, в нижней части получать вывод команд, а правая часть является своеобразной справкой. В ней вы можете подсмотреть необходимые для процесса командлеты. Более того в этой среде реализованы различные функции, такие как подсветка синтаксиса, конструктор команд и авто заполнение, что существенно облегчает программирование.
Подробное описание
Переменные среды хранят данные, используемые операционной системой и другими программами. Например, переменная среды содержит расположение каталога установки Windows. Программы могут запрашивать значение этой переменной, чтобы определить, где находятся файлы операционной системы Windows.
PowerShell может получать доступ к переменным среды и управлять ими на любой из поддерживаемых платформ операционной системы. Поставщик среды PowerShell позволяет получать, добавлять, изменять, очищать и удалять переменные среды в текущей консоли.
Примечание
В отличие от Windows, в именах переменных среды в macOS и Linux учитывается регистр. Например, и — это разные переменные среды на платформах, отличных от Windows.
Переменные среды, в отличие от других типов переменных в PowerShell, всегда хранятся в виде строки и не могут быть пустыми. Кроме того, в отличие от других переменных, они наследуются дочерними процессами, такими как локальные фоновые задания и сеансы, в которых выполняются члены модуля. Благодаря этому переменные среды хорошо подходят для хранения значений, необходимых как в родительских, так и в дочерних процессах.
В Windows переменные среды можно определить в трех областях:
- Область компьютера (или системы)
- Область пользователей
- Область процесса
Область процесса содержит переменные среды, доступные в текущем процессе или сеансе PowerShell. Этот список переменных наследуется от родительского процесса и создается из переменных в областях Компьютер и Пользователь .
Изменение переменных среды в PowerShell влияет только на текущий сеанс. Это поведение похоже на поведение команды в командной оболочке Windows и команды в средах на основе UNIX. Чтобы изменить значения в области Компьютер или Пользователь, необходимо использовать методы класса System.Environment .
Чтобы внести изменения в переменные уровня компьютера, необходимо также иметь разрешение. Если вы попытаетесь изменить значение без достаточных разрешений, команда завершается ошибкой, и PowerShell отобразит ошибку.
PowerShell предоставляет несколько различных методов использования переменных среды и управления ими.
- Синтаксис переменной
- Командлеты поставщика среды и элемента
- Класс .NET System.Environment
Файлы профиля
PowerShell поддерживает различные файлы профилей. Кроме того, хост-программы PowerShell могут поддерживать собственные профили, относящиеся к конкретному узлу.
Например, консоль PowerShell поддерживает следующие базовые файлы профиля.
Профили перечислены в порядке приоритета. Первый профиль имеет наивысший приоритет.
- Все пользователи, все узлы
- Для Windows — .
- Linux — .
- Macos-
- Все пользователи, текущий узел
- Для Windows — .
- Linux — .
- Macos-
- Текущий пользователь, все узлы
- Для Windows — .
- Linux — .
- Macos-
- Текущий пользователь, текущий узел
- Для Windows — .
- Linux — .
- Macos-
Пути к профилю включают следующие переменные:
- Переменная хранит каталог установки для PowerShell.
- Переменная сохраняет домашний каталог текущего пользователя.
Другие программы, в которых размещается PowerShell, могут поддерживать собственные профили. Например, Visual Studio Code (VS Code) поддерживает следующие профили для конкретного узла.
- Все пользователи, текущий узел —
- Текущий пользователь, текущий узел —
В справке PowerShell профиль CurrentUser, Current Host — это профиль, который чаще всего называют профилем PowerShell.
Примечание
В Windows расположение папки «Документы» можно изменить с помощью перенаправления папок или OneDrive. Не рекомендуется перенаправлять папку «Документы» в сетевую папку или включать ее в OneDrive. Перенаправление папки может привести к сбою сценариев профиля и загрузке модулей.
Несколько полезных трюков
Разобравшись с редактором, можно приступать к написанию кода. PowerShell — несложный язык, и, я думаю, ты быстро разберешься, что к чему. Команды здесь называются командлетами, и каждый из них состоит из двух частей. Сначала идет действие, например Get, Set, Add, Invoke, Remove. Затем указывается то, на что действие направлено: Service, VM, AzureAccount, DHCPServerSetting. Каждая часть отделяется от другой дефисом. Получается, к примеру, get-process. Это, кстати, полезная команда, которая выводит список процессов. Скажем, если написать
увидим что-то такое:
INFO
Если при наборе команды нажать Tab, то редактор дополнит команду — так же, как в консоли. Двойное нажатие на Tab выведет список подходящих команд.
Теперь можно завершить зависший процесс:
Хочешь посмотреть права на директорию? Сделать это помогает такой командлет:
Можно просмотреть рекурсивно, правда уже чуть с более сложной логикой:
Если не можешь понять, что делает какой-то командлет, напиши следующее (заменив Get-Process на название неизвестного командлета):
Можно также выполнить
В этом случае будет выведен весь список возможных вариантов.
Теперь давай попробуем узнать что-нибудь о нашем домене через консоль PowerShell. К примеру, давай посмотрим пользовательские аккаунты, у которых установлен неистекающий пароль:
Кстати, к каждому полю в окошке опции учетной записи или компьютера можно обратиться и считать данные. Таким образом можно делать целые срезы. Вот, к примеру, запрос на основе данных о телефонных номерах:
PowerShell в сравнении с bat
Иногда задачу можно решить как старым дедовским методом, так и при помощи PowerShell. Я рекомендую не лениться и использовать PS, хотя бы просто потому, что так ты его быстрее изучишь и сможешь применять в более сложных ситуациях. К тому же ты постепенно оценишь его синтаксис — более элегантный и консистентный. Вот несколько примеров, как вещи делались раньше и как их можно сделать при помощи PowerShell.
Следующая командная строка перезагрузит компьютер с задержкой в десять секунд:
На PowerShell это будет выглядеть вот так:
Вот так через bat можно перезагрузить службу dnscache (или любую другую):
В PowerShell это будет так:
Мап диска в bat:
И в PowerShell:
Да, иногда приходится печатать чуть больше букв, но читаются команды PS гораздо лучше. И это не говоря уже про разные новые возможности.
Удаленное управление с PowerShell
В основном описанные в статье команды выполняются на том же компьютере, на котором они запущены. Проще говоря, команды для управления AD выполнять нужно на сервере, где контроллер домена и установлен, что, согласись, на корню рубит удобство и автоматизацию. Для выполнения команд удаленно, что нам и требуется, надо пользоваться специальными командлетами. К примеру, для подключения к удаленному компьютеру и перезапуску там спулера печати вводи
Более подробно читай тут.
Что почитать еще
Книжек и прочих обучающих материалов по PowerShell огромное количество. Есть как справочники, так и учебные туториалы. Начать можно с , где есть неплохие видеоуроки.
В деле немало поможет и книга «Master-PowerShell» Тобиаса Велтнера. В ней автор охватывает многие понятия вроде массивов, хеш-таблиц, конвейеров, объектов, функций, обработки ошибок, регулярных выражений и так далее. Заодно подробно рассматривается XML и разные аспекты администрирования. Увы, на русский эта книга не переведена.
Из русскоязычных мануалов по PowerShell мне попадался «Windows PowerShell 2.0. Справочник администратора» Уильяма Станека — он весьма неплох.
На «Хабрахабре» есть перевод полезной статьи Джеффери Хикса об администрировании Active Directory при помощи PowerShell.
Переменные и область
По умолчанию переменные доступны только в области, в которой они созданы.
Например, переменная, созданная в функции, доступна только в этой функции. Переменная, созданная в скрипте, доступна только в скрипте. Если добавить в скрипт точку источника, переменная добавляется в текущую область. Дополнительные сведения см. в about_Scopes.
Модификатор области можно использовать для изменения области по умолчанию переменной. Следующее выражение создает переменную с именем . Переменная имеет глобальную область, даже если она создается в скрипте или функции.
Для любого скрипта или команды, выполняющегося вне сеанса, требуется модификатор области для внедрения значений переменных из области вызывающего сеанса, чтобы получить к ним доступ вне кода сеанса.
Дополнительные сведения см. в about_Remote_Variables.
Сравнение командной строки с PowerShell
Начнем с запуска обычной командной строки, далее запустим оболочку PowerShell. На первый взгляд они очень похожи, но принципиальные различия в них есть. Оболочка PowerShell, была разработана и выпущена как раз для того что бы сменить стандартную командную строку. Она, если можно так выразиться, является расширенной версией типично командной строки windows.
Оболочка позволяет выполнять как стандартные команды, используемые в командной строке, так и сценарии, благодаря более глубокой интеграции с операционной системой. Так же технология PowerShell, позволяет встраивать сценарии в приложения, для реализации различных функций.
Токены для поиска и замены
Хотя большая часть этих функций призвана снизить потребность в развертывании собственного решения, их можно применять и в тех случаях, когда необходимо заменить строки в больших файлах шаблонов.
Предположим, что вы извлекли шаблон из файла, который содержит большой объем текста.
У вас может быть много токенов для замены. Хитрость заключается в том, чтобы использовать особый токен, который легко найти и заменить. Я обычно использую специальный символ на обоих концах, чтобы его было проще отличить.
Недавно я обнаружил новый подход для решения этой задачи. Так как это довольно распространенная схема, я не стану вдаваться в дальнейшие подробности в этом разделе.
Замена нескольких токенов
Если у меня есть список токенов, которые нужно заменить, я использую более универсальный подход. Я помещаю их в хэш-таблицу и перебираю их методом итерации, чтобы выполнить замену.
При необходимости эти токены можно загрузить из файла JSON или CSV.
Метод ExpandString класса ExecutionContext
Существует отличный способ, который заключается в том, чтобы определить строку подстановки с помощью одинарных кавычек, а затем развернуть переменные. Взгляните на этот пример.
При вызове в текущем контексте выполнения для подстановки используются переменные в текущей области. Ключевым моментом здесь является то, что можно определить заранее, когда переменные еще даже не существуют.
Немного дополнив этот код, можно обеспечить повторное выполнение этой замены для различных значений.
Развивая эту идею, можно импортировать большой шаблон электронной почты из текстового файла. Я благодарю Марк Краус за это предложение.
Командлеты для работы с Active Directory (AD)
Windows PowerShell, конечно же, позволяет работать со службой каталогов Active Directory. Для этих целей существует немало командлетов, вот некоторые из них:
- New-ADUser – создание нового пользователя в Active Directory;
- Get-ADUser – выводит информацию о пользователях Active Directory;
- Set-ADUser — изменяет пользователя Active Directory;
- Remove-ADUser — удаляет пользователя Active Directory;
- New-ADGroup – командлет создает группу в Active Directory;
- Get-ADGroup – выводит информацию о группе или выполняет поиск, чтобы получить несколько групп из Active Directory;
- Set-ADGroup – командлет изменяет группу в Active Directory;
- Remove-ADGroup — удаление группы в Active Directory;
- Add-ADGroupMember — командлет добавляет учетные записи пользователей, компьютеров или групп в качестве новых членов группы Active Directory;
- Get-ADGroupMember — выводит информацию о членах группы Active Directory;
- Remove-ADGroupMember — удаление элементов из группы Active Directory;
- Set-ADAccountPassword — сброс пароля учетной записи Active Directory;
- Disable-ADAccount — отключает учетную запись Active Directory.
- Enable-ADAccount — включает учетную запись Active Directory;
- Unlock-ADAccoun — разблокирует учетную запись Active Directory;
- New-ADComputer — создание новой учетной записи компьютера в Active Directory;
- Get-ADComputer — выводит информацию об одном или нескольких компьютерах в Active Directory;
- Set-ADComputer — изменение учетной записи компьютера в Active Directory;
- Remove-ADComputer — удаление компьютера из Active Directory.
Строка форматирования
.NET позволяет отформатировать строки, с которыми довольно легко работать. Сначала позвольте продемонстрировать статический метод, после чего я покажу, как сделать то же самое с помощью ярлыка PowerShell.
В этом случае строка анализируется на наличие токенов и , а затем этот номер используется для выбора среди предоставленных значений. Если вы хотите повторить одно значение в строке, можно повторно использовать его номер.
При таком подходе чем сложнее строка, тем больше значений будет получено.
Форматирование значений в виде массивов
Если строка форматирования слишком длинная, можно сначала поместить значения в массив.
Это не сплаттинг, поскольку я передаю весь массив, но идея аналогична.
Переменная $PROFILE
Автоматическая переменная содержит пути к профилям PowerShell, доступным в текущем сеансе.
Чтобы просмотреть путь к профилю, отобразите значение переменной . Можно также использовать переменную в команде для представления пути.
Переменная сохраняет путь к профилю «Текущий пользователь, текущий узел». Другие профили сохраняются в свойствах заметок переменной .
Например, переменная имеет следующие значения в консоли Windows PowerShell.
- Текущий пользователь, текущий узел —
- Текущий пользователь, текущий узел —
- Текущий пользователь, все узлы —
- Все пользователи, текущий узел —
- Все пользователи, все узлы —
Так как значения переменной изменяются для каждого пользователя и в каждом ведущем приложении, убедитесь, что значения переменных профиля отображаются в каждом используемом ведущем приложении PowerShell.
Чтобы просмотреть текущие значения переменной, введите :
Переменную можно использовать во многих командах. Например, следующая команда открывает профиль «Текущий пользователь, текущий узел» в Блокноте:
Следующая команда определяет, был ли создан профиль «Все пользователи, все узлы» на локальном компьютере:
Переменная $PROFILE
Автоматическая переменная содержит пути к профилям PowerShell, доступным в текущем сеансе.
Чтобы просмотреть путь к профилю, отобразите значение переменной . Можно также использовать переменную в команде для представления пути.
Переменная сохраняет путь к профилю «Текущий пользователь, текущий узел». Другие профили сохраняются в свойствах заметок переменной .
Например, переменная имеет следующие значения в консоли Windows PowerShell.
- Текущий пользователь, текущий узел —
- Текущий пользователь, текущий узел —
- Текущий пользователь, все узлы —
- Все пользователи, текущий узел —
- Все пользователи, все узлы —
Так как значения переменной изменяются для каждого пользователя и в каждом ведущем приложении, убедитесь, что значения переменных профиля отображаются в каждом используемом ведущем приложении PowerShell.
Чтобы просмотреть текущие значения переменной, введите :
Переменную можно использовать во многих командах. Например, следующая команда открывает профиль «Текущий пользователь, текущий узел» в Блокноте:
Следующая команда определяет, был ли создан профиль «Все пользователи, все узлы» на локальном компьютере:
Использование поставщика среды и командлетов item
Поставщик среды PowerShell предоставляет интерфейс для взаимодействия с переменными среды в формате, похожем на диск файловой системы. Она позволяет получать, добавлять, изменять, очищать и удалять переменные и значения среды в PowerShell.
Например, чтобы создать переменную среды со значением :
Можно также скопировать переменную среды с помощью , задать значение переменной среды с помощью , перечислить переменные среды с помощью и удалить переменную среды с помощью .
Дополнительные сведения об использовании поставщика среды для управления переменными среды см. в разделе about_Environment_Provider.
Команды для работы с данными
PowerShell использует класс System.Management.Automation.VerbsData для определения действий, которые применяются к обработке данных. В следующей таблице перечислено большинство определенных команд.
Имя команды (псевдоним) | Действие | Неподходящие синонимы |
---|---|---|
Backup (ba) | Сохраняет данные путем репликации. | Save, Burn, Replicate, Sync |
Checkpoint (ch) | Создает моментальный снимок текущего состояния данных или их конфигурации. | Поиск различий |
Compare (cr) | Сравнивает данные из одного ресурса с данными из другого. | Поиск различий |
Compress (cm) | Сжимает данные ресурса. Образует пару с командой . | Компактный |
Convert (cv) | Изменяет данные из одного представления в другое, если командлет поддерживает двунаправленное преобразование или преобразование между несколькими типами данных. | Change, Resize, Resample |
ConvertFrom (cf) | Преобразует один первичный тип входных данных (существительное в командлете указывает входные данные) в один или несколько поддерживаемых типов выходных данных. | Export, Output, Out |
ConvertTo (ct) | Преобразует один или несколько типов входных данных в основной тип выходных данных (существительное в командлете указывает тип выходных данных). | Import, Input, In |
Dismount (dm) | Отключает именованную сущность от расположения. Эта команда образует пару с командой . | Unmount, Unlink |
Edit (ed) | Изменяет существующие данные путем добавления или удаления содержимого. | Change, Update, Modify |
Expand (en) | Восстанавливает сжатые данные ресурса до исходного состояния. Эта команда образует пару с командой . | Explode, Uncompress |
Export (ep) | Инкапсулирует первичные входные данные в постоянное хранилище данных, например файл, или в формат обмена. Эта команда образует пару с командой . | Extract, Backup |
Группа (GP) | Упорядочивает или связывает один или несколько ресурсов. | |
Import (ip) | Создает ресурс на основе данных, хранящихся в постоянном хранилище данных (например, в файле) или в формате обмена. Например, командлет импортирует данные из файла с разделителями-запятыми (CSV) в объекты, которые могут использоваться другими командлетами. Эта команда образует пару с командой . | BulkLoad, Load |
Initialize (in) | Подготавливает ресурс для использования и задает для него состояние по умолчанию. | Erase, Init, Renew, Rebuild, Reinitialize, Setup |
Limit (l) | Применяет ограничения к ресурсу. | Quota |
Merge (mg) | Создает один ресурс из нескольких. | Combine, Join |
Mount (mt) | Подключает именованную сущность к расположению. Эта команда образует пару с командой . | Подключение |
Out (o) | Отправляет данные из среды. Например, командлет отправляет данные на принтер. | |
Publish (pb) | Делает ресурс доступным для других пользователей. Эта команда образует пару с командой . | Deploy, Release, Install |
Restore (rr) | Задает для ресурса предопределенное состояние, например состояние, заданное . Например, командлет запускает восстановление системы на локальном компьютере. | Repair, Return, Undo, Fix |
Save (sv) | Сохраняет данные, чтобы избежать их потери. | |
Sync (sy) | Гарантирует, что два ресурса или более находятся в одном и том же состоянии. | Replicate, Coerce, Match |
Unpublish (ub) | Делает ресурс недоступным для других пользователей. Эта команда образует пару с командой . | Uninstall, Revert, Hide |
Update (ud) | Обеспечивает актуальность ресурса для поддержания его состояния, точности, согласованности или соответствия требованиям. Например, командлет обновляет и добавляет файлы форматирования в текущую консоль PowerShell. | Refresh, Renew, Recalculate, Re-index |
Подробное описание
Можно создать профиль PowerShell для настройки вашей среды и добавления элементов, относящихся к каждому сеансу PowerShell, который вы запускаете.
Профиль PowerShell — это скрипт, выполняющийся при запуске PowerShell. Профиль можно использовать в качестве скрипта входа для настройки среды. Вы можете добавлять команды, псевдонимы, функции, переменные, оснастки, модули и диски PowerShell. Вы также можете добавить в профиль другие элементы, относящиеся к сеансу, чтобы они были доступны в каждом сеансе без необходимости их импорта или повторного создания.
PowerShell поддерживает несколько профилей для пользователей и ведущих программ. Однако он не создает профили для вас. В этом разделе описываются профили, а также описывается создание и обслуживание профилей на компьютере.
В ней объясняется, как использовать параметр NoProfile консоли PowerShell () для запуска PowerShell без профилей. Кроме того, здесь объясняется влияние политики выполнения PowerShell на профили.