about_Profiles

Назначение: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

РАЗДЕЛ

about_Profiles

КРАТКОЕ ОПИСАНИЕ

Описание создания и использования профиля Windows PowerShell.

ПОДРОБНОЕ ОПИСАНИЕ

Можно создать профиль Windows PowerShell для настройки среды и добавления относящихся к сеансам элементов в каждый запускаемый сеанс Windows PowerShell.

Профиль Windows PowerShell представляет собой сценарий, который выполняется при запуске Windows PowerShell. Профиль можно использовать в качестве сценария входа для настройки среды. Можно добавить команды, псевдонимы, функции, переменные, оснастки, модули и диски Windows PowerShell. В профиль также можно добавить другие относящиеся к сеансу элементы, чтобы они были доступны в каждом сеансе без необходимости их импорта или повторного создания.

Windows PowerShell поддерживает несколько профилей для пользователей и основных программ. Однако профили не создаются автоматически. В этом разделе содержатся сведения о профилях и способах их создания и поддержки на компьютере.

Здесь описывается использование параметра NoProfile консоли Windows PowerShell (PowerShell.exe) для запуска Windows PowerShell без профилей. Кроме того, в разделе объясняется влияние политики выполнения Windows PowerShell на профили.

ФАЙЛЫ ПРОФИЛЯ

Windows PowerShell поддерживает несколько файлов профиля. Кроме того, основные программы Windows PowerShell могут поддерживать собственные профили.

Например, консоль Windows PowerShell поддерживает следующие файлы базового профиля. Профили перечисляются в порядке приоритетности. Первый профиль имеет наивысший приоритет.

        Description                Path
        -----------                ----
        Current User, Current Host $Home\[My ]Documents\WindowsPowerShell\Profile.ps1
        Current User, All Hosts    $Home\[My ]Documents\Profile.ps1
        All Users, Current Host    $PsHome\Microsoft.PowerShell_profile.ps1
        All Users, All Hosts       $PsHome\Profile.ps1

Пути к профилю включают в себя следующие переменные.

– Переменная $PsHome, которая хранит каталог установки для Windows PowerShell.

– Переменная $Home, которая хранит домашний каталог текущего пользователя.

Кроме того, другие программы, которые работают с Windows PowerShell, могут поддерживать свои собственные профили. Например, интегрированная среда сценариев Windows PowerShell поддерживает следующие профили.

        Description                Path
        -----------                -----
        Current user, Current Host $Home\[My ]Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
        All users, Current Host    $PsHome\Microsoft.PowerShellISE_profile.ps1

В справке Windows PowerShell профиль «CurrentUser, Current Host» — это профиль, часто называемый «вашем профилем Windows PowerShell».

ПЕРЕМЕННАЯ $PROFILE

Автоматическая переменная $Profile хранит пути к профилям Windows PowerShell, которые доступны в текущем сеансе.

Чтобы просмотреть путь к профилю, отобразите значение переменной $Profile. Для представления пути можно также использовать переменную $Profile в команде.

Переменная $Profile хранит путь к профилю «Current User, Current Host». Другие профили сохраняются в свойствах примечания переменной $profile.

Например, переменная $Profile имеет следующие значения в консоли Windows PowerShell.

        Name                               Description                
        -----------                        -----------
        $Profile                           Current User,Current Host  
        $Profile.CurrentUserCurrentHost    Current User,Current Host  
        $Profile.CurrentUserAllHosts       Current User,All Hosts     
        $Profile.AllUsersCurrentHost       All Users, Current Host    
        $Profile.AllUsersAllHosts          All Users, All Hosts       
 

Поскольку значения переменной $Profile меняются для каждого пользователя и в каждом основном приложении, убедитесь, что значения переменных профиля отображаются в каждом основном приложении Windows PowerShell, которое используется.

Чтобы просмотреть текущие значения переменной $Profile, введите:

        $profile | get-member -type noteproperty

Переменную $Profile можно использовать во многих командах. Например, следующая команда открывает профиль «Current User, Current Host» в Блокноте.

notepad $profile 

Следующая команда определяет, был ли создан профиль «All Users, All Hosts» на локальном компьютере.

test-path $profile.AllUsersAllHosts

СОЗДАНИЕ ПРОФИЛЯ

Для создания профиля Windows PowerShell используется следующий формат команды.

        if (!(test-path <profile-name>)) 
           {new-item -type file -path <profile-name> -force}

Например, чтобы создать профиль для текущего пользователя в текущем основном приложении Windows PowerShell, используйте следующую команду.

        if (!(test-path $profile)) 
           {new-item -type file -path $profile -force}

В этой команде оператор If предотвращает перезапись существующего профиля. Замените значение заполнителя <путь_к_профилю> на путь к файлу профиля, который требуется создать.

Примечание. Чтобы создать профили «All Users» в 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.

Другим распространенным вариантом использования профилей является сохранение часто используемых функций, псевдонимов и переменных. Сохраненные в профиле элементы можно использовать в любом соответствующем сеансе без их повторного создания.

ЗАПУСК ПРОФИЛЯ

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

Далее приводится несколько советов по началу работы.

– Добавьте команды, которые позволяют легко открывать профиль. Это особенно полезно при использовании профиля, отличного от профиля «Current User, Current Host». Например, добавьте следующую команду.

           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. Можно также использовать диалоговое окно выполнения в Windows.

Введите:

PowerShell -noprofile

Для получения полного списка параметров PowerShell.exe введите:

PowerShell -?

ПРОФИЛИ И ПОЛИТИКА ВЫПОЛНЕНИЯ

Политика выполнения Windows PowerShell частично определяет возможность выполнения сценариев и загрузки файлов конфигурации, включая профили. По умолчанию используется политика выполнения Restricted. Она предотвращает выполнение всех сценариев, включая профили. При использовании политики выполнения Restricted профиль не запускается, и его содержимое не применяется.

Команда Set-ExecutionPolicy позволяет задавать и изменять политику выполнения. Она является одной из нескольких команд, которые применяются во всех сеансах Windows PowerShell, поскольку значение сохранено в реестре. Его не нужно задавать при открытии консоли, а команду Set-ExecutionPolicy не требуется сохранять в профиле.

ПРОФИЛИ И УДАЛЕННЫЕ СЕАНСЫ

Профили Windows PowerShell не запускаются автоматически в удаленных сеансах, поэтому команды, добавляемые профилями, отсутствуют в сеансе. Кроме того, автоматическая переменная $profile не заполняется в удаленных сеансах.

Чтобы запустить профиль в сеансе, используется командлет Invoke-Command.

Например, следующая команда запускает профиль CurrentUserCurrentHost с локального компьютера в сеансе в $s.

        invoke-command -session $s -filepath $profile

Следующая команда запускает профиль CurrentUserCurrentHost с удаленного компьютера в сеансе в $s. Поскольку переменная $profile не заполнена, команда использует явный путь к профилю.

        invoke-command -session $s {invoke-command "$home\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"}

После запуска этой команды команды, добавляемые профилем в сеанс, становятся доступны в $s.

СМ. ТАКЖЕ

about_Automatic_Variables

about_Functions

about_Prompts

about_Execution_Policies

about_Signing

about_Remote

Set-ExecutionPolicy