Artykuł wspomniany w komentarzu jehada wyjaśnia, że istnieje kilka miejsc, z których PowerShell może załadować profil, co jest tym, czego chcesz. Prawdopodobnie potrzebujesz wersji na użytkownika dla zwykłej konsoli PowerShell. Ścieżka, przy której PowerShell będzie sprawdzał ten plik, jest podana w $profile
zmiennej. Możesz utworzyć ten plik i zawierający go katalog za pomocą tego polecenia:
New-Item $profile -Type File -Force
Tworzy plik o nazwie Microsoft.PowerShell_profile.ps1
w folderze o nazwie WindowsPowerShell
pod folderem Dokumenty. Następnie możesz go otworzyć za pomocą edytora tekstu:
notepad $profile
Wszystko w nim będzie uruchamiane przy każdym uruchomieniu konsoli PowerShell, bez względu na to, czy jesteś podniesiony czy nie. Użyłem tego innego artykułu, aby utworzyć funkcję (której można użyć jako polecenia cmdlet) w celu sprawdzenia, czy bieżąca instancja programu PowerShell jest podniesiona. Umieść to w swoim nowym pliku profilu:
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)
}
Tej funkcji można używać w normalnym środowisku PowerShell, ale można jej także używać do uruchamiania rzeczy w skrypcie profilu, gdy jest się podniesionym:
If (Test-Elevated) {
echo "Be careful!"
} Else {
echo "Eh, do whatever."
}
Ponieważ ten plik zawiera kod, który będzie uruchamiany automatycznie nawet w administracyjnej instancji PowerShell, nie chcesz, aby programy działające bez aktualizacji miały do niego dostęp do zapisu. Sugeruję zmianę listy ACL, aby dać dostęp do odczytu konta użytkownika, jednocześnie umożliwiając administratorom pełną kontrolę. (Dziedziczenie będzie musiało zostać najpierw wyłączone). Wtedy będziesz mógł edytować skrypt tylko z podwyższonych programów.