РАЗДЕЛ about_Profiles КРАТКОЕ ОПИСАНИЕ Содержит описание, как создавать и использовать профиль Windows PowerShell. ПОЛНОЕ ОПИСАНИЕ Создав профиль Windows PowerShell, вы получаете возможность настраивать окружение и добавлять специфичные для сеанса элементы в каждый создаваемый сеанс. Профиль Windows PowerShell - скрипт, который выполняется в момент запуска Windows PowerShell. Можно использовать профиль в качестве скрипта, выполняемого при входе в систему, для настройки окружения. Можно добавлять команды, псевдонимы, функции, значения, оснастки, модули и диски Windows PowerShell. Также можно добавлять в профиль другие специфичные для сеанса элементы, тогда они будут доступны в каждом сеансе и не будет необходимости их импортировать или создавать заново. Windows PowerShell поддерживает несколько профилей для пользователей и ведущих программ. Однако PowerShell не создает профили. В этом разделе описаны профили; также рассказано, как создавать и обслуживать профили на компьютере. Здесь объясняется, как использовать параметр NoProfile консоли Windows PowerShell (PowerShell.exe) для запуска Windows PowerShell без профиля. Кроме того, описан результат действия политики выполнения Windows PowerShell применительно к профилям. ФАЙЛЫ ПРОФИЛЕЙ Windows PowerShell поддерживает несколько файлов профилей. Кроме того, ведущие приложения Windows PowerShell могут поддерживать собственные профили, специфичные для приложения. Например, консоль Windows PowerShell поддерживает следующие файлы основного профиля. Ниже они указаны в порядке приоритета. Первый профиль имеет наивысший приоритет. Описание Путь ----------- ---- Текущий пользователь, $Home\[My ]Documents\WindowsPowerShell\Profile.ps1 текущее ведущее приложение Текущий пользователь, $Home\[My ]Documents\Profile.ps1 все ведущие приложения Все пользователи, $PsHome\Microsoft.PowerShell_profile.ps1 текущее ведущее приложение Все пользователи, все $PsHome\Profile.ps1 ведущие приложения Пути к профилям могут включать следующие переменные: - Переменная $PsHome, в которой хранится путь к каталогу установки Windows PowerShell. - Переменная $Home, в которой хранится путь к домашнему каталогу текущего пользователя. Кроме того, другие ведущие приложения Windows PowerShell могут поддерживать собственные профили. Например, интегрированная среда скриптов (ISE) Windows PowerShell поддерживает следующие специфичные для ведущего приложения профили. Описание Путь ----------- ----- Текущий пользователь, $Home\[My ]Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1 текущее ведущее приложение Все пользователи, $PsHome\Microsoft.PowerShellISE_profile.ps1 текущее ведущее приложение В справке Windows PowerShell профиль "Текущий пользователь, текущее ведущее приложение" наиболее часто называется "вашим профилем Windows PowerShell". ПЕРЕМЕННАЯ $PROFILE Автоматическая переменная $Profile хранит путь к профилям Windows PowerShell, доступным в рамках текущего сеанса. Для просмотра пути к профилю следует отобразить значение переменной $Profile. Можно также использовать переменную $Profile в команде в качестве пути. В переменной $Profile хранится путь к профилю "Текущий пользователь, текущее ведущее приложение". Остальные профили хранятся в свойствах-примечаниях переменной $profile. Например, переменная $Profile в консоли Windows PowerShell имеет следующие значения. Name Описание ----------- ----------- $Profile Текущий пользователь, текущее ведущее приложение $Profile.CurrentUserCurrentHost Текущий пользователь, текущее ведущее приложение $Profile.CurrentUserAllHosts Текущий пользователь, все ведущие приложения $Profile.AllUsersCurrentHost Все пользователи, текущее ведущее приложение $Profile.AllUsersAllHosts Все пользователи, все ведущие приложения Поскольку значения переменной $Profile отличаются для разных пользователей и для различных ведущих приложений, убедитесь, что вы отображаете значения переменных профиля для каждого ведущего приложения Windows PowerShell, которое используется. Чтобы просмотреть текущие значения переменной $Profile, введите следующее: $profile | get-member -type noteproperty Переменную $Profile можно использовать во множестве команд. Например, следующая команда открывает профиль "Текущий пользователь, текущее ведущее приложение" в приложении Блокнот: notepad $profile Следующая команда определяет, был ли на локальном компьютере создан профиль "Все пользователи, все ведущие приложения": test-path $profile.AllUsersAllHosts СОЗДАНИЕ ПРОФИЛЯ Для создания профиля Windows PowerShell используется следующий формат команды: if (!(test-path <имя_профиля>)) {new-item -type file -path <имя_профиля> -force} Например, для создания профиля текущего пользователя в текущем ведущем приложении Windows PowerShell используется следующая команда: if (!(test-path $profile)) {new-item -type file -path $profile -force} В этой команде инструкция If предотвращает перезапись существующего профиля. Замените значение заполнителя <путь_к_профилю> путем к файлу профиля, который требуется создать. Примечание. Для создания профилей "Все пользователи" в Windows Vista и более поздних версиях Windows необходимо запускать Windows PowerShell командой "Запуск от имени администратора". РЕДАКТИРОВАНИЕ ПРОФИЛЯ Любой профиль Windows PowerShell можно открыть в текстовом редакторе, например в программе Блокнот. Чтобы открыть профиль текущего пользователя в текущем ведущем приложении Windows PowerShell в программе Блокнот, необходимо ввести команду: notepad $profile Чтобы открыть другие профили, необходимо указать имя профиля. Например, чтобы открыть профиль для всех пользователей и всех ведущих приложений, необходимо ввести команду: notepad $profile.AllUsersAllHosts Чтобы применить изменения, нужно сохранить файл профиля, а затем перезапустить Windows PowerShell. ВЫБОР ПРОФИЛЯ При использовании нескольких ведущих приложений поместите элементы, используемые во всех ведущих приложениях, в профиль $Profile.CurrentUserAllHosts (текущий пользователь, все ведущие приложения). Поместите элементы, специфичные для ведущего приложения, например команды, задающие фоновый цвет ведущего приложения, в профиль для данного ведущего приложения. Администратору, настраивающему Windows PowerShell для многих пользователей, нужно соблюдать следующие правила. -- Хранить общие элементы в профиле $profile.AllUsersAllHosts (все пользователи, все ведущие приложения). -- Хранить элементы, специфичные для ведущего приложения в профилях $profile.AllUsersCurrentHost (все пользователи, текущее ведущее приложение). -- Хранить элементы для определенных пользователей в профилях, специфичных для пользователя. Необходимо проверить документацию ведущего приложения, на случай если в приложении работа с профилями Windows PowerShell реализована специальным образом. ИСПОЛЬЗОВАНИЕ ПРОФИЛЕЙ Многие элементы, которые создаются в Windows PowerShell, и большинство выполняемых пользователем команд действуют только в пределах текущего сеанса. Когда сеанс завершается, элементы уничтожаются. Команды и элементы, специфичные для сеанса, включают в себя переменные, привилегированные переменные, псевдонимы, функции, команды (за исключением Set-ExecutionPolicy) и оснастки Windows PowerShell, добавляемые к сеансу. Для сохранения этих элементов и обеспечения их доступности в будущих сеансах их нужно добавить в профиль Windows PowerShell. Другое распространенное использование профилей - сохранение часто используемых функций, псевдонимов и переменных. После сохранения элементов в профиле их можно использовать во время любого сеанса, к которому применен этот профиль, не создавая их заново. С ЧЕГО НАЧАТЬ СОЗДАНИЕ ПРОФИЛЯ? Когда вы впервые открываете файл профиля, он пуст. Однако его можно заполнить переменными, псевдонимами и командами, которыми вы часто пользуетесь. Ниже приведено несколько советов, с чего начать. -- Добавьте команду, облегчающую открытие профиля. Это особенно полезно, если вы используете профиль, отличный от профиля "Текущий пользователь, текущее ведущее приложение". Например, добавьте следующую команду: function pro {notepad $profile.CurrentUserAllHosts} -- Добавьте функцию, открывающую справку Windows PowerShell в виде скомпилированного файла справки HTML (.chm). function Get-CHM { (invoke-item $env:windir\help\mui\0409\WindowsPowerShellHelp.chm) } Эта функция открывает английскую версию файла .chm. Однако вы можете заменить код языка (0409) и открыть другую версию файла .chm. -- Добавьте функцию, перечисляющую псевдонимы какого-либо командлета. function Get-CmdletAlias ($cmdletname) { get-alias | Where {$_.definition -like "*$cmdletname*"} | ft Definition, Name -auto } -- Добавьте команду Add-PsSnapin для добавления оснасток Windows PowerShell, которыми вы пользуетесь. -- Настройте консоль. function Color-Console { $host.ui.rawui.backgroundcolor = "white" $host.ui.rawui.foregroundcolor = "black" $hosttime = (dir $pshome\powershell.exe).creationtime $Host.UI.RawUI.WindowTitle = "Windows PowerShell $hostversion ($hosttime)" clear-host } Color-console -- Добавьте настроенное приглашение командной строки Windows PowerShell, включающее имя компьютера и текущий путь. function prompt { $env:computername + "\" + (get-location) + "> " } Дополнительные сведения о приглашении командной строки Windows PowerShell см в разделе about_Prompts. ПАРАМЕТР NOPROFILE Для запуска Windows PowerShell без профиля используйте параметр NoProfile программы PowerShell.exe, запускающей Windows PowerShell. Для начала откройте программу, которая может запустить Windows PowerShell, например Cmd.exe или саму программу Windows PowerShell. Также можно использовать диалоговое окно Run в Windows. Введите следующую команду: powershell -noprofile Чтобы вывести полный список параметров программы PowerShell.exe, введите следующую команду: powershell -? ПРОФИЛИ И ПОЛИТИКА ВЫПОЛНЕНИЯ Политика выполнения Windows PowerShell отчасти определяет, можно ли выполнять скрипты и загружать файлы конфигурации, в том числе профили. Политика выполнения по умолчанию - Restricted. Она запрещает выполнение скриптов, в том числе профилей. При использовании политики Restricted профиль не запускается и его содержимое не применяется. Команда Set-ExecutionPolicy задает и изменяет политику выполнения. Это одна из немногих команд, которая распространяется на все сеансы Windows PowerShell, так как значение сохраняется в реестре. Нет необходимости задавать значение при открытии консоли и не нужно сохранять команду Set-ExecutionPolicy в вашем профиле. ПРОФИЛИ И УДАЛЕННЫЕ СЕАНСЫ Профили Windows PowerShell не запускаются автоматически в удаленных сеансах, поэтому команды, добавленные профилями, отсутствуют в удаленном сеансе. Кроме того, автоматическая переменная $profile не заполняется в удаленных сеансах. Чтобы запустить профиль в сеансе, используйте командлет Invoke-Command. Например, следующая команда запускает профиль CurrentUserCurrentHo st с локального компьютера в сеансе в $s. invoke-command -session $s -filepath $profile Следующая команда запускает профиль CurrentUserCurrentHost с удаленного компьютера в сеансе в $s. Так как переменная $profile не заполнена, команда использует явный путь к профилю. invoke-command -session $s {invoke-expression "$home\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"} После выполнения этой команды все команды, добавляемые профилем в сеанс, доступны в $s. СМ. ТАКЖЕ about_Automatic_Variables about_Functions about_Prompts about_Execution_Policies about_Signing about_Remote Set-ExecutionPolicy