У статті, що згадується в коментарі jehad, пояснюється, що є кілька місць, з яких PowerShell може завантажити профіль, що саме ви хочете. Ви, мабуть, хочете, щоб користувач користувався звичайною консоллю PowerShell. Шлях, яким PowerShell перевірить наявність цього файлу, вказаний у $profile
змінній. Ви можете створити цей файл та його каталог, що містить цю команду:
New-Item $profile -Type File -Force
Він створює файл, викликаний Microsoft.PowerShell_profile.ps1
у папці, що називається WindowsPowerShell
під папкою Документи. Потім ви можете відкрити його за допомогою текстового редактора:
notepad $profile
Все в ньому буде працювати щоразу, коли ви запускаєте консоль PowerShell, незалежно від того, підвищений ви чи ні. Цю іншу статтю я використав для створення функції (яку можна використовувати як командлет), щоб перевірити, чи підвищений поточний екземпляр PowerShell. Помістіть це у новий файл профілю:
Function Test-Elevated {
$wid = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$prp = New-Object System.Security.Principal.WindowsPrincipal($wid)
$adm = [System.Security.Principal.WindowsBuiltInRole]::Administrator
$prp.IsInRole($adm)
}
Ця функція може бути використана у вашому звичайному режимі PowerShell, але ви також можете використовувати її лише для запуску матеріалів у сценарії вашого профілю, коли ви працюєте піднятим:
If (Test-Elevated) {
echo "Be careful!"
} Else {
echo "Eh, do whatever."
}
Оскільки цей файл містить код, який буде автоматично запускатися навіть під адміністративним екземпляром PowerShell, ви не хочете, щоб програми, які працюють без змін, мали доступ до нього для запису. Я пропоную змінити його ACL, щоб лише надати доступ до читання вашому обліковому запису користувача, але все ще дозволяти адміністраторам повний контроль. (Спадкування доведеться спочатку вимкнути.) Після цього ви зможете редагувати сценарій лише з підвищених програм.