PowerShell-profilnaptár hozzáadása
Lehet, hogy néhányan ismerik a PSCalendar modulomat, amelyet a PowerShell galériából telepíthet. A modul olyan parancsokat tartalmaz, amelyek segítségével konzolalapú naptárt jeleníthet meg. A naptárparancsok segítségével megadhatja a kiemelendő napokat. Ezek a napok különleges eseményekkel vagy találkozókkal járhatnak. Általában a Show-Calendar parancsot használom, amikor az ír a gazdagépre és színezi a kimenetet.
Ennek a parancsnak van egy paramétere is, amely lehetővé teszi, hogy pozíciót adjon meg a konzolon. Más szavakkal, megadhatja a PowerShellnek, hogy hol jelenítse meg a naptárt. Nemrég javítottam egy hibát a paranccsal, amely az optimálisnál kevesebb eredményt hozott. Most már használhatom a PowerShell prompt funkciómat a naptár megjelenítésére. Először is telepítenie kell a PSCalendar modul legalább 1.10.0-s verzióját. Győződjön meg róla, hogy működik.
Mostantól egy prompt funkcióval naptárat adhat hozzá a konzolhoz. Itt van az alapértelmezett PowerShell prompt funkció a naptár megjelenítéséhez további kóddal.
#requires -modules @{ModuleName="PSCalendar";ModuleVersion="1.10.0"}
Function prompt {
#define a buffercell fill
$fill = [system.management.automation.host.buffercell]::new(" ",$host.ui.RawUI.BackgroundColor,$host.ui.RawUI.BackgroundColor,"complete")
#define a rectangle with an upper left corner X distance from the edge
$left =$host.ui.RawUI.WindowSize.width - 42
#need to adjust positioning based on buffer size of the console
#is the cursor beyond the window size, ie have we scrolled down?
if ($host.UI.RawUI.CursorPosition.Y -gt $host.UI.RawUI.WindowSize.Height) {
$top = $host.ui.RawUI.CursorPosition.Y - $host.UI.RawUI.WindowSize.Height
}
else {
$top = 0
}
# System.Management.Automation.Host.Rectangle new(int left, int top, int right, int bottom)
$r = [System.Management.Automation.Host.Rectangle]::new($left, 0, $host.ui.rawui.windowsize.width,$top+10)
#clear the area for the calendar display
$host.ui.rawui.SetBufferContents($r,$fill)
#show the calendar in the upper right corner of the console
$pos = [system.management.automation.host.coordinates]::new($left,0)
Show-Calendar -Position $pos
"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) ";
# .Link
# https://go.microsoft.com/fwlink/?LinkID=225750
# .ExternalHelp System.Management.Automation.dll-help.xml
}
Ezt külön PowerShell-szkriptfájlként mentem, és pontforrásként a profilszkriptemben. Ezt a funkciót nem a PowerShell ISE-hez tervezték, és előfordulhat, hogy nem működik megfelelően a VS Code PowerShell terminálokban. Még azt sem garantálhatom, hogy működni fog a PowerShell-konzolokon. Vegyük ezt a kódot a koncepció bizonyítékának, és ne gyártásra késznek.
A funkció megjeleníti az aktuális hónap naptárát a konzol jobb felső sarkában. A prompt funkció törli ezt a területet, és újraírja a naptárt. Ez akkor működik a legjobban, ha a konzolja legalább 120 karakter széles. Ellenkező esetben játszania kell a kóddal.
A prompt funkció minden alkalommal lefut, amikor megnyomja az Entert.
A Windows terminálon futok, de ennek a funkciónak egy hagyományos PowerShell-konzolon kell működnie, ahol nagy görgetőpufferrel rendelkezhet.
A naptár zöld színnel jelzi a dátumokat. Néhány értéket beállítottam a profilom $PSDefaultParameterValues használatával.
$PSDefaultParameterValues["*-*calendar:Highlightdate"]="1/18","1/8","1/16"
Kitalálhatja, hol szerezheti be az Ön számára fontos dátumokat, és feltöltheti a hashtablet. Remélem, elmondja, mit gondol erről az egészről. És most, hogy azt hiszem, van egy fogantyú a konzolpufferekkel és a téglalapokkal kapcsolatban, talán újranézek néhány régebbi prompt függvényt. Remélhetőleg lesz még néhány szórakoztató cuccom, amivel játszhatsz. Addig is ne hagyja ki a következő eseményt. Élvezd!