У меня есть некоторые функции, которые я хотел бы загрузить по умолчанию при открытии административной оболочки. Есть ли какой-нибудь эквивалент, скажем .bashrc
или .profile
который я мог бы использовать для автоматического импорта сценариев при запуске оболочки?
1 ответ
В статье, упомянутой в комментарии 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, чтобы предоставить вашей учетной записи доступ только для чтения, но при этом предоставить администраторам полный контроль. (Наследование должно быть сначала отключено.) После этого вы сможете редактировать сценарий только из расширенных программ.