Резюме: Microsoft Scripting Guy, Ed Wilson рассказывает о профилях Windows PowerShell.
Microsoft Scripting Guy, Ed Wilson на связи. Сегодня я опубликую еще один отрывок из моей новой книги Windows PowerShell 3.0 Step by Step, которая сейчас доступна для предзаказа. Это будет выдержка из главы, посвященной профилям и их расположениям.
6 различных профилей PowerShell
Профили Windows PowerShell могут сбить вас с толку. На самом деле их шесть. Консоль Windows PowerShell и Windows PowerShell ISE обладают своими собственными профилями. Кроме того, существуют профили для текущего пользователя и для всех пользователей. Таблица содержит все 6 профилей и места их расположения.
Описание | Путь |
Текущий пользователь, текущий хост – консоль | $Home\[My ]Documents\WindowsPowerShell\Profile.ps1 |
Текущий пользователь, все хосты | $Home\[My ]Documents\Profile.ps1 |
Все пользователи, текущий хост – консоль | $PsHome\Microsoft.PowerShell_profile.ps1 |
Все пользователи, все хосты | $PsHome\Profile.ps1 |
Текущий пользователь, текущий хост – ISE | $Home\[My ]Documents\WindowsPowerShell\Microsoft.P owerShellISE_profile.ps1 |
Все пользователи, текущий хост — ISE | $PsHome\Microsoft.PowerShellISE_profile.ps1 |
Разбираемся с шестью различными профилями Windows PowerShell
Первое, что необходимо понять относительно профилей, это то, что они меняются, как только вы это поймете, вам будет проще. В большинстве случаев, говоря о профиле, люди подразумевают профиль текущего пользователя, текущего хоста. На самом деле, если при разговоре о профиле не уточняется его область действия или расположение, можно свободно предположить, что речь идет о профиле текущего пользователя, текущего хоста.
Заметка: Профиль Windows PowerShell (любой их шести) – это скрипт Windows PowerShell. Он обладает особым именем и расположен в особом месте, но это просто скрипт. В этом отношении он сродни старому доброму autoexec.bat. Так как профиль Windows PowerShell – это скрипт, перед его использованием вам нужно изменить политику выполнения (Execution Policy).
Знакомимся с переменной $profile
При запросе автоматической переменной $profile, возвращается путь к профилю текущего пользователя, текущего хоста. Это имеет смысл и упрощает доступ к пути профиля.
PS C:\> $profile
C:\Users\ed.IAMMRED\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Если я запрошу эту переменную из Windows PowerShell ISE, я получу следующий вывод.
PS C:\Users\ed.IAMMRED> $profile
C:\Users\ed.IAMMRED\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
Чтобы сохранить ваше время… разница между путем к профилю текущего пользователя, текущего хоста в консоли Windows PowerShell и путем к профилю текущего пользователя, текущего хоста в Windows PowerShell ISE состоит в трех буквах: ISE.
Заметка: Эти три буквы могут доставить нам некоторые неудобства. Если вы указываете что-либо в профиле консоли Windows PowerShell, это будет недоступно в Windows PowerShell ISE.
Несколько профилей переменной $profile
Вы можете передать переменную $profile командлету Get-Member и увидеть дополнительные свойства, присутствующие в переменной.
PS C:\> $PROFILE | Get-Member -MemberType noteproperty | select name
Name
—-
AllUsersAllHosts
AllUsersCurrentHost
CurrentUserAllHosts
CurrentUserCurrentHost
Если вы запрашиваете переменную $profile из консоли Windows PowerShell, свойства AllUsersCurrentHost и CurrentUserCurrentHost относятся к консоли Windows PowerShell. Если же запрос происходит из Windows PowerShell ISE, свойства AllUsersCurrentHost и CurrentUserCurrentHost относятся к Windows PowerShell ISE.
Используем переменную $profile для получения путей к остальным профилям
Когда вы запрашиваете переменную $profile, по умолчанию она возвращает путь к профилю текущего пользователя, текущего хоста. Если вы передадите переменную командлету Format-List, она по-прежнему возвратит путь к профилю текущего пользователя, текущего хоста.
PS C:\> $PROFILE | Format-List *
C:\Users\ed.IAMMRED\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Это может сбить с толку, так как командлет Get-Member показывает существование нескольких профилей и нескольких свойств. Чтобы увидеть пути ко всем профилям, нужно использовать параметр –Force.
$PROFILE | Format-List * -Force
Команда для отображения различных профилей и ее вывод приведены на рисунке.
Также существует возможность прямого доступа к каждому их этих свойств – таким же образом, каким вы получаете значения любых других свойств – путем указания имени свойства после точки.
$PROFILE.CurrentUserAllHosts
Путь к каждому из профилей консоли Windows PowerShell приведен на рисунке.
Проверяем существование определенного профиля
Для определения того, существует ли конкретный профиль используйте командлет Test-Path и нужный вид переменной $profile. Например, для определения существования профиля текущего пользователя, текущего хоста вы можете использовать переменную $profile без дополнительных модификаций, либо вы можете указать свойство currentusercurrenthost.
PS C:\> test-path $PROFILE
True
PS C:\> test-path $PROFILE.CurrentUserCurrentHost
True
PS C:\>
Таким же образом мы определяем, что остальных трех профилей для данного хоста (в нашем случае это консоль Windows PowerShell) не существует.
PS C:\> test-path $PROFILE.AllUsersAllHosts
False
PS C:\> test-path $PROFILE.AllUsersCurrentHost
False
PS C:\> test-path $PROFILE.CurrentUserAllHosts
False
PS C:\>
Автор:
Ed Wilson, Microsoft Scripting Guy
Оригинал:
Страницы в социальных сетях:
Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell