Jehad'ın yorumunda bahsedilen makale , PowerShell'in bir profil yükleyebileceği birkaç yer olduğunu açıklıyor; Muhtemelen normal PowerShell konsolu için kullanıcı başına bir tane istiyorsunuz. PowerShell'in bu dosyayı kontrol edeceği yol, $profile
değişkende verilir . Bu dosyayı ve içerdiği dizini şu komutla oluşturabilirsiniz:
New-Item $profile -Type File -Force
Belgeler klasörünüzün Microsoft.PowerShell_profile.ps1
adı verilen bir klasörde adlandırılan bir dosya oluşturur WindowsPowerShell
. Ardından bir metin düzenleyicisiyle açabilirsiniz:
notepad $profile
Yükseltilmiş olsun ya da olmasın, PowerShell konsolunu her başlattığınızda içindeki her şey çalıştırılacaktır. Kullandığım bu diğer yazı akımı PowerShell örneği yükselmiş olup olmadığını kontrol etmek (bir cmdlet'indeki olarak kullanabilirsiniz) bir işlev üretmek. Bunu yeni profil dosyanıza koyun:
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)
}
Bu işlev normal PowerShell deneyiminizde kullanılabilir, ancak bunu yalnızca yükseltilmiş çalıştırdığınızda profil komut dosyanızdaki öğeleri çalıştırmak için de kullanabilirsiniz:
If (Test-Elevated) {
echo "Be careful!"
} Else {
echo "Eh, do whatever."
}
Bu dosya, bir yönetimsel PowerShell örneği altında bile otomatik olarak çalıştırılacak kod içerdiğinden, seçili olmayan programların yazma erişimine sahip olmasını istemezsiniz. Yöneticilerinin tam kontrolüne izin verirken kullanıcı hesabınıza yalnızca okuma erişimi sağlamak için EKL'sini değiştirmenizi öneririz. (Önce devralma devre dışı bırakılacaktır.) Daha sonra komut dosyasını yalnızca yükseltilmiş programlardan düzenleyebilirsiniz.