Чи має Powershell якийсь еквівалент .bashrc?


22

У мене є деякі функції, які я хотів би завантажити за замовчуванням, коли відкриваю адміністративну оболонку повноважень. Чи є якийсь еквівалент, щоб сказати, .bashrcабо .profileщо я міг би використовувати для автоматичного імпорту скриптів при запуску оболонки?


Може бути профіль PowerShell ( blogs.technet.microsoft.com/heyscriptingguy/2012/05/21/… )?
джехад

Так, у Powershell це просто називають "профілем".
корінь

Відповіді:


23

У статті, що згадується в коментарі 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, щоб лише надати доступ до читання вашому обліковому запису користувача, але все ще дозволяти адміністраторам повний контроль. (Спадкування доведеться спочатку вимкнути.) Після цього ви зможете редагувати сценарій лише з підвищених програм.


3
Чи можна цю довгу назву Microsoft.PowerShell_profile.ps1змінити на справедливу profile.ps1? У першій статті вона з'являється як$Home\[My ]Documents\WindowsPowerShell\Profile.ps1
nephewtom
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.