A rendszerhéjkörnyezet testreszabása
A PowerShell-profilok olyan szkriptek, amelyek a PowerShell indításakor futnak. A profillal testre szabhatja a környezetet. A következőket teheti:
- aliasok, függvények és változók hozzáadása
- modulok betöltése
- PowerShell-meghajtók létrehozása
- tetszőleges parancsok futtatása
- és a beállítások módosítása
Ha ezeket a beállításokat a profiljában helyezi el, azok mindig elérhetők lesznek, amikor elindítja a PowerShellt a rendszeren.
Feljegyzés
A szkriptek Windows rendszerben való futtatásához a PowerShell végrehajtási szabályzatát legalább be kell állítani RemoteSigned
. A végrehajtási szabályzatok nem vonatkoznak a macOS-ra és a Linuxra. További információ: about_Execution_Policy.
A $PROFILE változó
Az $PROFILE
automatikus változó tárolja az aktuális munkamenetben elérhető PowerShell-profilok elérési útját.
Négy lehetséges profil érhető el a különböző felhasználói hatókörök és a különböző PowerShell-gazdagépek támogatásához. Az egyes profilszkriptekhez tartozó teljes elérési utak a következő tagtulajdonságokban $PROFILE
vannak tárolva.
- AllUsersAllHosts
- AllUsersCurrentHost
- CurrentUserAllHosts
- CurrentUserCurrentHost
Létrehozhat profilszkripteket, amelyek az összes felhasználóhoz vagy csak egy felhasználóhoz, a CurrentUserhez futnak. A CurrentUser-profilok a felhasználó kezdőlapján vannak tárolva.
Vannak olyan profilok is, amelyek az összes PowerShell-gazdagéphez vagy adott gazdagéphez futnak. Az egyes PowerShell-gazdagépek profilszkriptjének neve egyedi az adott gazdagéphez. A windowsos standard konzolgazda fájlneve vagy más platformokon Microsoft.PowerShell_profile.ps1
az alapértelmezett terminálalkalmazás neve. A Visual Studio Code (VS Code) fájlneve a következő Microsoft.VSCode_profile.ps1
: .
További információ: about_Profiles.
Alapértelmezés szerint a $PROFILE
változóra való hivatkozás az "Aktuális felhasználó, Aktuális gazdagép" profil elérési útját adja vissza. A többi profil elérési útja a változó tulajdonságain $PROFILE
keresztül érhető el.
Példa:
PS> $PROFILE
C:\Users\user1\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
PS> $PROFILE.AllUsersAllHosts
C:\Program Files\PowerShell\7\profile.ps1
Személyes profil létrehozása
Amikor először telepíti a PowerShellt egy rendszerre, a profilszkriptfájlok és azok könyvtárai nem léteznek. A következő parancs létrehozza az "Aktuális felhasználó, aktuális gazdagép" profilszkriptfájlt, ha az nem létezik.
if (!(Test-Path -Path $PROFILE)) {
New-Item -ItemType File -Path $PROFILE -Force
}
A parancsmag Force paramétere New-Item
létrehozza a szükséges mappákat, ha nem léteznek.
Miután létrehozta a szkriptfájlt, a kedvenc szerkesztőjével testre szabhatja a rendszerhéj-környezetet.
Testreszabások hozzáadása a profilhoz
Az előző cikkek a tabulátorkiegészítésről, a parancs-előrejelzőkről és az aliasokról szólnak. Ezek a cikkek bemutatták a szükséges modulok betöltéséhez, egyéni befejezők létrehozásához, kulcskötések definiálásához és egyéb beállításokhoz használt parancsokat. Ezek azok a testreszabások, amelyeket minden PowerShell-interaktív munkamenetben el szeretneérhetővé tenni. Ezekhez a beállításokhoz a profilszkript a hely.
A profilszkript szerkesztésének legegyszerűbb módja a fájl megnyitása a kedvenc kódszerkesztőben. A következő parancs például megnyitja a profilt a VS Code-ban.
code $PROFILE
Windows rendszeren, vi
Linuxon vagy bármely más szövegszerkesztőben is használhatónotepad.exe
.
Az alábbi profilszkript példákat mutat be az előző cikkekben említett számos testreszabáshoz. Ezeket a beállításokat a saját profiljában is használhatja.
## Map PSDrives to other registry hives
if (!(Test-Path HKCR:)) {
$null = New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
$null = New-PSDrive -Name HKU -PSProvider Registry -Root HKEY_USERS
}
## Customize the prompt
function prompt {
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = [Security.Principal.WindowsPrincipal] $identity
$adminRole = [Security.Principal.WindowsBuiltInRole]::Administrator
$prefix = if (Test-Path variable:/PSDebugContext) { '[DBG]: ' } else { '' }
if ($principal.IsInRole($adminRole)) {
$prefix = "[ADMIN]:$prefix"
}
$body = 'PS ' + $PWD.path
$suffix = $(if ($NestedPromptLevel -ge 1) { '>>' }) + '> '
"${prefix}${body}${suffix}"
}
## Create $PSStyle if running on a version older than 7.2
## - Add other ANSI color definitions as needed
if ($PSVersionTable.PSVersion.ToString() -lt '7.2.0') {
# define escape char since "`e" may not be supported
$esc = [char]0x1b
$PSStyle = [pscustomobject]@{
Foreground = @{
Magenta = "${esc}[35m"
BrightYellow = "${esc}[93m"
}
Background = @{
BrightBlack = "${esc}[100m"
}
}
}
## Set PSReadLine options and keybindings
$PSROptions = @{
ContinuationPrompt = ' '
Colors = @{
Operator = $PSStyle.Foreground.Magenta
Parameter = $PSStyle.Foreground.Magenta
Selection = $PSStyle.Background.BrightBlack
InLinePrediction = $PSStyle.Foreground.BrightYellow + $PSStyle.Background.BrightBlack
}
}
Set-PSReadLineOption @PSROptions
Set-PSReadLineKeyHandler -Chord 'Ctrl+f' -Function ForwardWord
Set-PSReadLineKeyHandler -Chord 'Enter' -Function ValidateAndAcceptLine
## Add argument completer for the dotnet CLI tool
$scriptblock = {
param($wordToComplete, $commandAst, $cursorPosition)
dotnet complete --position $cursorPosition $commandAst.ToString() |
ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
}
}
Register-ArgumentCompleter -Native -CommandName dotnet -ScriptBlock $scriptblock
Ez a profilszkript a következő testreszabásra kínál példákat:
- Két új PSDrive-ot ad hozzá a többi gyökérregisztrációs adatbázishoz.
- Létrehoz egy testre szabott kérést , amely megváltozik, ha emelt szintű munkamenetben fut.
- Konfigurálja a PSReadLine-t , és hozzáadja a kulcskötést. A színbeállítások a $PSStyle funkcióval határozzák meg az ANSI színbeállításait.
- A dotnet CLI-eszköz lapkiegészítését adja hozzá. Az eszköz paramétereket biztosít a parancssori argumentumok feloldásához. A Register-ArgumentCompleter szkriptblokkja ezzel a funkcióval biztosítja a lap befejezését.