Профілі в PowerShell.
Що таке профіль в PowerShell? По суті це звичайний скрипт .ps1, що виконується при запуску оболонки PowerShell. Профіль можна використовувати для налаштування оточення - додавати аліаси, задавати функції і змінні, імпортувати модулі, змінювати зовнішній вигляд консолі і багато іншого.Нові елементи, додані в профіль, будуть доступні в кожному сеансі без необхідності імпортувати або створювати їх заново.
Всього в PowerShell підтримуються чотири основних профілю:
- Поточний користувач, поточний додаток - $ Home \ Documents \ WindowsPowerShell \ profile.ps1;
- Поточний користувач, всі програми - $ Home \ Documents \ profile.ps1;
- Всі користувачі, поточний додаток - $ PsHome \ MicrosoftPowerShell_profile.ps1;
- Всі користувачі, всі програми - $ PsHome \ profile.ps1.
в змінної $ Home зберігається шлях до домашнього каталогу поточного користувача (для Win 7 це C: \ Users \ user_name), а в $ PsHome - до каталогу установки PowerShell (C: \ Windows \ System32 \ WindowsPowerShell \ v1.0).
Поточне додаток - це додаток Microsoft.PowerShell, яке і надає нам інтерфейс командного рядка. Плюс до цього інші додатки PowerShell теж можуть підтримувати власні профілі. Наприклад PowerShell ISE використовує профілі:
- $ Home \ My Documents \ WindowsPowerShell \ Microsoft.PowerShellISE_profile.ps1 - для поточного користувача;
- $ PsHome \ Microsoft.PowerShellISE_profile.ps1 - для всіх користувачів.
При наявності декількох профілів перевага віддається більш вузькоспрямованому. Дізнатися, який профіль використовується на даний момент можна, ввівши команду $ profile. Буде виведений повний шлях до профілю, який інтерпретатор команд намагається використовувати в якості основного.Також у властивостях змінної $ Profile зберігаються шляху до всіх доступних профілів, дізнатися їх можна командою:
$ Profile | Get-Member -MemberType NotePropertyГоворячи про доступні профілях варто врахувати один момент, а саме - за замовчуванням профілі не створені. Вони існують тільки якщо ви створили їх.Дізнатися, чи був створений призначений для користувача профіль PowerShell можна командою:
Test-Path $ profileЯкщо профіль існує, ця команда поверне True, в іншому випадку - False.
Для створення профілю можна використовувати командлет New-Item. Наприклад, створити профіль поточного користувача в поточному додатку можна командою:
New-Item -ItemType file -Path $ profile -forceПрофіль створюється порожнім і його треба наповнити.Відкриємо його в блокноті командою notepad $ profile і подивимося, як можна змінити деякі настройки PowerShell:
# Зміна зовнішнього вигляду консолі (Get-Host) .UI.RawUI.ForegroundColor = "green" (Get-Host) .UI. RawUI.BackgroundColor = "black" (Get-Host) .UI.RawUI.CursorSize = 10 (Get-Host) .UI.RawUI.WindowTitle = "My Window" # Установка директорію за замовчуванням Set-Location C: \ # Новий алиас для Get-Help Set-Alias HelpMе Get-Help # Додавання всіх зареєстрованих оснасток і модулів Get-Pssnapin -Registered | Add-Pssnapin -Passthru -ErrorAction SilentlyContinue Get-Module -ListAvailable | Import-Module -PassThru -ErrorAction SilentlyContinue # Очіcтка екрану Clear-Host # Привітання себе улюбленого Write-Host "Hello, my friend !!!"Записуємо все це в профіль, перезапускаємо консоль і дивимося, що вийшло.І тут треба пам'ятати про ще один важливий момент - політиці виконання скриптів. Як я вже говорив, профіль представляє з себе звичайний скрипт, а значення політики за замовчуванням - Restricted, що забороняє виконання будь-яких скриптів в PowerShell. Тому для того, щоб профіль применился потрібно змінити поточне значення політики:
Set-ExecutionPolicy RemotesignedПісля зміни політики ще раз перезапускаємо консоль, профіль застосовується і ось результат.
Грамотно створений профіль може полегшити роботу з PowerShell, однак варто знати міру. Великий профіль, що завантажує безліч оснасток, може привести до зниження швидкості запуску додатків. До речі, може виникнути ситуація, коли необхідно запустити оснастку PowerShell без використання профілів.Для цього використовується параметр -NoProfile програми PowerShell.exe. Зробити це можна, запровадивши в вікні Run команду:
PowerShell-noprofileІ кілька слів про віддалених сеансах. При віддаленому підключенні профілі не запускаються автоматично, і змінна $ Profile в віддалених сеансах не визначена. Однак в кожному віддаленому сеансі використовується конфігурація сеансу, яку можна використовувати для створення спеціальної середовища для віддалених користувачів.
Як приклад зареєструємо на локальному комп'ютері конфігурацію сеансу WithProfile, де за допомогою параметра -StartupScript вкажемо PowerShell застосовувати заданий скрипт в будь-якому сеансі, для якого використовується ця конфігурація:
Register-PsSessionConfiguration -Name WithProfile - StartupScript $ profileТепер якщо при підключенні до цього комп'ютера вказати ім'я конфігурації WithProfile, то до сеансу застосується поточний профіль:
New-PsSession -ComputerName SRV1 -ConfigurationName WithProfileНу ось ніби і все, що я хотів розповісти про користувача профілях в PowerShell.П>.