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