Jämförelse av kommandoskal

Bash , standardskalet på många GNU/Linux-system.

Ett kommandoskal är ett kommandoradsgränssnitt för att interagera med och manipulera en dators operativsystem .

Generella egenskaper

Skal Vanlig miljö Vanligtvis åberopas Introducerad Plattformsoberoende Standardinloggningsskal in Standard script skal in Licens Tillgänglighet för källkod Användargränssnitt Stöd för mus Unicode- stöd Stöd för ISO 8601 Konsolomdirigering Strömomdirigering _ Konfigurerbarhet Start-/avstängningsskript Batchskript Skogsavverkning Tillgänglig som statiskt länkad, oberoende körbar enkelfil
Thompson skal UNIX sh 1971 UNIX UNIX Ja Textbaserad CLI Nej Nej Ja
Bourne shell 1977 version 7:e upplagan. UNIX sh 1977 Ja 7:e upplagan. UNIX 7:e upplagan. UNIX , Proprietär Ja Textbaserad CLI Nej Nej Ja Ja ( godtycklig fds [ citat behövs ] ) Ja (via variabler och alternativ) Ja ( .profile ) Ja (Unix-funktion) Nej Ja
Bourne shell nuvarande version Olika UNIX sh 1977 Ja SunOS-5.x, FreeBSD (icke-rootanvändare) SunOS-5.x CDDL [ bättre källa behövs ] Ja Textbaserad CLI Nej Ja [ bättre källa behövs ] Ja Ja ( godtycklig fds [ citat behövs ] ) Ja (via variabler och alternativ) Ja ( .profile ) Ja (Unix-funktion) Ja Ja
POSIX skal POSIX sh 1992 POSIX Textbaserad CLI Nej Ja, om den används av den konfigurerade lokalen Ja Ja ( godtycklig fds [ citat behövs ] ) Ja (via variabler och alternativ) Ospecificerat ( .profil ges som exempel) Ja (Unix-funktion) Ja
bash (v4) POSIX bash, sh 1989 Ja GNU , Linux (standard för root), macOS 10.3–10.14 GNU , Linux , Haiku , macOS 10.3–10.14 GPL Ja Textbaserad CLI Nej Ja [ bättre källa behövs ] Ja ( printf inbyggd) Ja Ja ( godtycklig fds [ citat behövs ] ) Ja (via variabler och alternativ) Ja ( /etc/profile , .bash_profile , .bash_login , .profile , .bashrc ) Ja (Unix-funktion) Ja Ja
csh POSIX csh 1978 Ja SunOS ? BSD Ja Textbaserad CLI Nej Nej ? Ja Ja ( stdin , stdout , stdout+stderr ) Ja (via variabler och alternativ) Ja ( ~/.cshrc , ~/.login , ~/.logout ) Ja (Unix-funktion) Ja Ja
tcsh POSIX tcsh, csh 1983 Ja FreeBSD (standard för root), tidigare Mac OS X ? BSD Ja Textbaserad CLI Nej Ja ? Ja Ja ( stdin , stdout , stdout+stderr ) Ja (via variabler och alternativ) Ja ( /etc/csh.cshrc , /etc/csh.login , ~/.tcshrc , ~/.cshrc , ~/.history , ~/.login , ~/.cshdirs ) Ja (Unix-funktion) Ja Ja
Hamilton C-skal Win32 , OS/2 csh 1988 Ja (OS/2-versionen underhålls inte längre) Frivillig Frivillig Proprietär Nej Textbaserad CLI Nej Nej Ja (-t tidsstämpeloperatör) Ja Ja ( stdin , stdout , stdout+stderr ) Ja (via variabler och alternativ) Ja (via login.csh, startup.csh och logout.csh) Ja (kommandoradsalternativ) Ja Ja
Scsh POSIX scsh 1994 Ja ? ? BSD -stil Ja ? ? ? ? ? Ja ? ? ? ? Ja
ksh (ksh93t+) POSIX ksh 1983 Ja AIX , HP-UX OpenSolaris Gemensam offentlig licens Ja Textbaserad CLI Nej Ja Ja ( printf inbyggt med %(%F)T ) Ja Ja ( fds upp till 9) Ja (via variabler och alternativ) Ja (system och användarprofil och kshrc ) Ja (Unix-funktion) Ja Ja
pdksh POSIX ksh, sh 1989? Ja OpenBSD OpenBSD Allmängods Ja Textbaserad CLI Nej Nej Ja Ja ( godtycklig fds [ citat behövs ] ) Ja (via variabler och alternativ) Ja ( /etc/profile , .profile ) Ja (Unix-funktion) Ja Ja
zsh POSIX zsh 1990 Ja Deepin , GoboLinux , Grml , macOS 10.15+, Kali 2020.4+ Grml , macOS 10.15+ MIT -stil Ja Textbaserad CLI via tilläggskod Ja Ja (olika interna funktioner som involverar datumet, genom att använda %F strftime- formatet och alternativet -i för fc inbyggda) Ja Ja ( fds upp till 9) Ja (via variabler, alternativ, funktioner, stilar, etc.) Ja (system och användares zshenv , zprofile , zshrc , zlogin , zlogout ) Ja (Unix-funktion) Ja Ja
aska POSIX sh 1989 Ja Minix , BusyBox- baserade system NetBSD , Minix , BusyBox- baserade system BSD -stil Ja Textbaserad CLI Nej Partiell (för BusyBox, stöds i kommandoradsredigering, men inte i stränghantering) Ja Ja ( godtycklig fds [ citat behövs ] ) Ja (via variabler och alternativ) Ja ( /etc/profile , .profile ) Ja (Unix-funktion) Ja Ja
CCP CP/M , MP/M (CCP) 1976 (1974) Nej CP/M (ingen inloggning), MP/M CP/M , MP/M Gratisprogram (ursprungligen proprietärt) Ja (ursprungligen stängd källa) Textbaserad CLI Nej Nej Nej Nej Nej Nej Ja (automatiskt via $$$.SUB ) Partiell (endast via externt SUBMIT -kommando för att uppdatera $$$.SUB ) Nej Ja
COMMAND.COM DOS KOMMANDO 1980 Nej (tredje parts implementeringar, inte bundna till en specifik DOS-leverantör eller version, tillgänglig) DOS , Windows 95 , 98 , SE , ME DOS , Windows 95 , 98 , SE , ME leverantörsspecifik, t ex MS - EULA eller BSD / GPL (fria kloner) Nej (förutom OpenDOS, DR-DOS, PTS/DOS och FreeDOS) Textbaserad CLI Nej Nej Nej (förutom DR-DOS) Ja (via COMMAND con: eller CTTY con: ) Ja ( stdin , stdout ) Ja (via startparametrar och miljövariabler stöder DR-DOS även DIR /C /R användarstandard switchkommando) Ja (automatisk \AUTOEXEC.BAT för primärt skal, eller explicit via /P , /P:filnamn.bat eller /K startalternativ) Ja (via CALL -kommandot eller /C och /K startalternativ) Nej Ja
OS/2 CMD.EXE OS/2 , eComStation , ArcaOS CMD 1987 Nej OS/2 , eComStation , ArcaOS OS/2 , eComStation , ArcaOS IBM - EULA Nej Textbaserad CLI Nej Nej Nej Nej Ja ( stdin , stdout , stderr ) ? Partiell (endast via /K startalternativ) Ja (via CALL -kommandot eller /C och /K startalternativ) Nej Ja
Windows CMD.EXE Win32 CMD 1993 Nej Windows NT, 2000, XP, Server 2003, Vista Windows NT, 2000, XP, Server 2003, Vista MS - EULA Nej Textbaserad CLI Nej Partiell ( CHCP 65001 för UTF-8 , men programargument är fortfarande kodade i lokal teckentabell) Nej Nej Ja Ja (via register, startparametrar och miljövariabler) Ja (automatiskt via registret, eller uttryckligen via /K startalternativ) Ja (via CALL -kommandot eller /C och /K startalternativ) Nej Ja
4DOS , NDOS DOS , Windows 95 , 98 , SE , ME 4DOS , NDOS 1989 (1986) Nej (ej bunden till en specifik OS-leverantör eller version) Frivillig Frivillig MIT-licens , med begränsningar Ja Textbaserad CLI med TUI -tillägg Ja (popups, hjälpsystem, %_MOUSE intern variabel, INKEY /M kommando) Nej Ja Ja (via CTTY con: , förutom kommandon DRAWBOX , DRAWLINE , DRAWVLINE , LIST , SCREEN , SCRPUT , SELECT , VSCRPUT och fil-/katalogfärg) Ja ( stdin , stdout , stderr , stdout+stderr ) Ja (via 4DOS.INI / NDOS.INI -fil, startparametrar, miljövariabler, SETDOS- kommando) Ja (automatisk \AUTOEXEC.BAT för primärt skal och 4START.BTM / 4START.BAT samt 4EXIT.BTM / 4EXIT.BAT för alla skal, eller explicit via /P , /P:dir\filnamn.ext eller /K- start alternativ) Ja (via CALL -kommandot eller /C och /K startalternativ) Ja Ja
4OS2 OS/2 , eComStation , ArcaOS 4OS2 1992 Nej (ej bundet till specifika OS/2-versioner) Valfritt (men medföljer ArcaOS) Frivillig Gratisprogram Ja Textbaserad CLI Nej Nej Nej Nej Ja ( stdin , stdout , stderr , stdout+stderr ) Ja (via 4OS2.INI- fil, startparametrar, miljövariabler, SETDOS- kommando) Ja (automatiskt via 4START.CMD / 4START.BTM samt 4EXIT.CMD / 4EXIT.BTM -filer, eller uttryckligen via /K startup.cmd- alternativet) Ja (via CALL -kommandot eller /C och /K startalternativ) Ja ?
TCC (tidigare 4NT) Win32 TCC 1993 Nej (ej bunden till specifika NT-versioner) frivillig frivillig Shareware Nej Textbaserad CLI ( Take Command : GUI ) Ja (konsolmus, popup-fönster, hjälpsystem, %_XMOUSE , %_YMOUSE interna variabler, INKEY /M- kommando) Ja Ja Nej Ja ( stdin , stdout , stderr , stdout+stderr ) Ja (via register, TCMD.INI / 4NT.INI- fil, startparametrar, miljövariabler, SETDOS- kommando) Ja (automatiskt via registret och TCSTART / 4START samt TCEXIT / 4EXIT , eller uttryckligen via /K startalternativ) Ja (via CALL -kommandot eller /C och /K startalternativ) Ja Nej
VMS DCL OpenVMS Automatiskt för inloggning/interaktiv process 1977? Ja VMS VMS Proprietär, paketerad i VMS endast med särskild licens Textbaserad CLI med DECwindows/Motif Ja Ja, åtminstone till 1988 års standard Ja Ja ( sys$input , sys$output tilldelning) Ja (via symboler, logiska namn och alternativ) Ja (SYS$MANAGER:SYLOGIN.COM och användardefinierad LOGIN.COM) Ja Ja Nej
PowerShell
.NET , .NET Framework
PowerShell 2006 Ja Windows 10, 8, Server 2008, 7 Windows 10, 8, Server 2008, 7 MIT -stil Ja Grafisk CLI Ja Ja Ja Ja Ja Ja (via variabler och alternativ) Ja (%USERPROFILE%\Documents \WindowsPowerShell\Microsoft.PowerShell_profile.ps1) Ja (PowerShell-funktion) Ja Nej
rc Plan 9 , POSIX rc 1989 Ja Plan 9 , version 10 Unix Plan 9 , version 10 Unix MIT-licens Ja Textbaserad CLI ? Ja Ja ? Ja Ja (via alternativ) Ja ( $HOME/.rcrc ) Ja ? Ja
BeanShell Java ? 2005 Ja ? ? LGPL ? ? ? Ja ? ? Ja ? ? ? ? Nej
fisk POSIX fisk 2005 Ja GhostBSD ? GPL Ja Textbaserad CLI ? Ja ? ? Ja ( godtycklig fds [ citat behövs ] ) Ja (genom miljövariabler och via webbgränssnitt via fish_config ) Ja ( /etc/fish/config.fish och ~/.config/fish/config.fish ) Ja (Unix-funktion) Ja ( ~/.config/fish/fish_history* ) ?
Jon Redox , Linux Jon 2015 Ja Redox Redox MIT Ja Textbaserad CLI ? Ja Ja ? Ja ( godtycklig fds [ citat behövs ] ) Ja (följer XDG Base Directory-specifikationen) Ja ( ~/.config/ion/initrc ) Ja Ja ( ~/.local/share/ion/history ) Partiell (inte distribuerad som en fristående körbar, men den kan byggas som en)
Skal Vanlig miljö Vanligtvis åberopas Introducerad Plattformsoberoende Standardinloggningsskal in Standard script skal in Licens Tillgänglighet för källkod Användargränssnitt Stöd för mus Unicode- stöd Stöd för ISO 8601 Konsolomdirigering Strömomdirigering _ Konfigurerbarhet Start-/avstängningsskript Batchskript Skogsavverkning Tillgänglig som statiskt länkad, oberoende körbar enkelfil

Interaktiva funktioner

Skal Färdigställande av kommandonamn

Slutförande av väg

Kommandoargument slutförande _
Slutförande av jokertecken

Kommandohistorik _


Obligatorisk argumentuppmaning _

Automatiska förslag


Färgade katalogförteckningar _

Textmarkering _

Syntaxmarkering _
Kataloghistorik, stack eller liknande funktioner

Implicit katalogändring _
Automatisk korrigering
Integrerad miljö
Utdrag
Värdeuppmaning _

Meny/alternativ uppmaning

Framstegsindikator _

Kontextkänslig hjälp _

Kommandobyggare _
Thompson skal Nej Nej Nej Nej Nej Nej Nej ? ? Nej Nej Nej Nej Nej Nej Nej Nej Nej Nej Nej
Bourne shell 1977 version Nej Nej Nej Nej Nej Nej Nej ? ? Nej Nej Nej Nej Nej Nej Ja Nej Extern Nej Nej
Bourne shell nuvarande version Nej Ja Nej Nej Ja Nej Nej Ja Ja Nej Ja (CDPATH, pushd, popd, dirs), CDPATH sedan SVr4 Nej Nej Nej Nej Ja Nej Extern Nej Nej
POSIX skal Nej Nej Nej Nej Ja Nej Nej Ja Ja Nej Ja ( CDPATH ) Nej Nej Nej Nej Ja Nej Extern Nej Nej
bash (v4.0) Ja Ja när den definieras Ja Ja Nej Nej Ja Ja Nej Ja ( CDPATH , pushd , popd ) frivillig Nej Nej Nej Ja Ja Extern Nej Nej
csh Ja Ja Nej Nej Ja Nej Nej Ja Ja Nej Ja ( cdpath , pushd , popd ) frivillig Nej Nej Nej Ja Nej Extern Nej Nej
tcsh Ja Ja när den definieras Nej Ja Nej Nej Ja Ja Nej Ja ( cdpath , pushd , popd ) frivillig Ja Nej Nej Ja Nej Extern Nej Nej
Hamilton C-skal Ja Ja Nej Ja Ja Nej Nej Ja Ja Nej Ja ( cdpath , pushd , popd ) Nej Nej Nej Nej Ja Nej Extern Nej Nej
Scsh Nej Nej Nej Nej Nej Nej Nej ? ? Nej Nej Nej Nej Nej Nej Ja Nej Extern Nej Nej
ksh (ksh93t+) Ja (förlängbar) Ja (förlängbar) Nej Nej Ja Nej Nej Ja Ja Nej Ja ( cdpath inbyggd, pushd , popd implementerad som funktioner) Nej Nej Nej Nej Ja Ja Extern Nej Nej
pdksh Ja Ja Nej Nej Ja Nej Nej Ja Ja Nej Nej Nej Nej Nej Nej Ja Ja Extern Nej Nej
zsh Ja Ja när den definieras Ja Ja Ja Ja (via förutsägelse eller användardefinierad) Ja Ja Tillägg från tredje part Ja frivillig Ja Nej när de definieras (som ZLE-widgets) Ja Ja Extern Ja Nej
aska Nej Nej Nej Nej Ja Nej Nej Ja Ja Nej Nej Nej Nej Nej Nej Ja Ja Extern Nej Nej
CCP Nej Nej Nej Nej Nej Nej Nej Nej Nej Nej Nej Nej Nej Nej Nej Nej Nej Nej Nej Nej
COMMAND.COM Nej Nej Nej Nej Nej Nej Nej Nej Nej (endast i DR-DOS till %$ON% , %$OFF% , %$HEADER% , %$FOOTER% ) Nej Nej Nej Nej Nej (endast enkelsteg med COMMAND /Y) Nej Nej Nej (endast via externt CHOICE- kommando, i DR-DOS även via SWITCH / DRSWITCH interna kommandon) Nej Nej Nej

OS/2 CMD.EXE
Ja Ja Nej Nej Ja Nej Nej Nej Nej Nej Nej Nej Nej Nej Nej Nej Nej Nej Nej Nej

Windows CMD.EXE
partiell partiell Nej Nej Ja ( F8 ) Nej Nej Nej Nej Nej Ja ( PUSHD , POPD ) Nej Nej Nej Nej Ja (via kommandot SET /P ) Nej Nej Nej Nej
4DOS Ja Ja Ja Ja Ja Nej Nej Ja Nej Nej (via popup, utökade katalogsökningar, CDPATH , PUSHD , POPD , DIRHISTORY , DIRS , CDD , CD - kommandon och %@DIRSTACK[] funktion) Ja Nej Ja Nej Ja (via INPUT , INKEY och ESET -kommandon) Ja (via @SELECT[] -funktionen och indirekt via en kombination av INKEY , INPUT , SWITCH -kommandon) Nej Ja Nej (förutom OPTION -kommandot för INI-fildirektiv)
4OS2 ? ? ? ? Ja Nej Nej Ja Nej Nej Ja Ja Nej ? Nej ? ? Nej Ja Nej
TCC (tidigare 4NT) Ja Ja Ja Ja Ja Nej Nej Ja Nej Ja (via popup, utökade katalogsökningar, CDPATH , PUSHD , POPD , DIRHISTORY , DIRS , CDD , CD - kommandon och %@DIRSTACK[] funktion) Ja Nej Ja Nej Ja (via INPUT , INKEY , ESET och SET /P kommandon) Ja (via @SELECT[] -funktionen och indirekt via en kombination av INKEY , INPUT , SWITCH -kommandon) Nej Ja Nej
PowerShell Ja Ja Ja Ja Ja ( F8 ) Ja Ja; via PSReadLine-modul (medföljer i v5.0) eller i ISE Tillägg från tredje part Ja Ja; via PSReadLine-modul (medföljer i v5.0) eller i ISE Ja (flera stackar; flera platstyper; Push-Location , Pop-Location ) Ja, i PSReadLine-modulen Ja, i ISE Ja, i ISE Ja Ja Ja Ja, i ISE pop-up fönster Ja, i ISE
rc Ja Ja Nej Nej Ja Nej Nej Nej ? Nej Nej Nej Nej Nej Nej ? Nej Nej Nej Nej
BeanShell Ja Ja Nej Nej Nej Nej Nej ? ? Nej Nej Nej Nej Nej Nej Nej Nej Nej Nej Nej
VMS DCL Minsta unika system Nej Nej Nej Ja Ja Nej ? ? Nej Nej Nej Nej Nej Nej Ja Nej Nej Nej Nej
fisk Ja Ja när den är definierad eller tolkbar på man-sidor Ja Ja Nej Ja Ja Ja (inbyggd hjälpare tillgänglig) Ja Ja Ja Ja Ja Ja, med kommandot abbr Ja (via kommandot fish_config ) Nej Nej Nej
Skal Färdigställande av kommandonamn

Slutförande av väg

Kommandoargument slutförande _
Slutförande av jokertecken

Kommandohistorik _


Obligatorisk argumentuppmaning _

Automatiska förslag


Färgade katalogförteckningar _

Textmarkering _

Syntaxmarkering _
Kataloghistorik, stack eller liknande funktioner

Implicit katalogändring _
Automatisk korrigering
Integrerad miljö
Utdrag
Värdeuppmaning _

Meny/alternativ uppmaning

Framstegsindikator _

Kontextkänslig hjälp _

Kommandobyggare _

Bakgrundsutförande

Bakgrundsexekvering tillåter ett skal att köra ett kommando utan användarinteraktion i terminalen, vilket frigör kommandoraden för ytterligare arbete med skalet. POSIX-skal och andra Unix-skal tillåter körning i bakgrunden genom att använda & i slutet av kommandot. I PowerShell kan cmdletarna Start -Process eller Start-Job användas.

Slutföranden

Kommandoradskomplettering i Bash .

Kompletteringsfunktioner hjälper användaren att skriva kommandon på kommandoraden genom att leta efter och föreslå matchande ord för ofullständiga. Komplettering begärs vanligtvis genom att trycka på kompletteringstangenten (ofta Tab ↹- tangenten).

Kommandonamnskomplettering är slutförandet av namnet på ett kommando. I de flesta skal kan ett kommando vara ett program i kommandosökvägen (vanligtvis $PATH ), ett inbyggt kommando, en funktion eller alias.

Slutförande av sökväg är slutförandet av sökvägen till en fil, relativ eller absolut.

Jokerteckens komplettering är en generalisering av sökvägskomplettering, där ett uttryck matchar valfritt antal filer, med hjälp av vilken syntax som stöds för filmatchning .

Variabelkomplettering är kompletteringen av namnet på ett variabelnamn ( miljövariabel eller skalvariabel). Bash, zsh och fish har komplettering för alla variabelnamn. PowerShell har kompletteringar för miljövariabelnamn, skalvariabelnamn och - inifrån användardefinierade funktioner - parameternamn.

Kommandoargumentkomplettering är slutförandet av ett specifikt kommandos argument. Det finns två typer av argument, namngivna och positionella: Namngivna argument, ofta kallade alternativ , identifieras med deras namn eller bokstav som föregår ett värde, medan positionsargument endast består av värdet. Vissa skal tillåter komplettering av argumentnamn, men få stöder kompletteringsvärden.

Bash, zsh och fish erbjuder komplettering av parameternamn genom en definition utanför kommandot, distribuerad i en separat kompletteringsdefinitionsfil. För komplettering av kommandoparameternamn/värde antar dessa skal att sökvägen/filnamnet är slutfört om ingen komplettering är definierad för kommandot. Komplettering kan ställas in för att föreslå slutföranden genom att anropa en skalfunktion. Fiskskalet stöder dessutom analys av man-sidor för att extrahera parameterinformation som kan användas för att förbättra kompletteringar/förslag. I PowerShell exponerar alla typer av kommandon (cmdlets, funktioner, skriptfiler) data om namn, typer och giltiga värdeområden/listor för varje argument. Denna metadata används av PowerShell för att automatiskt stödja argumentnamn och värdekomplettering för inbyggda kommandon/funktioner, användardefinierade kommandon/funktioner samt för skriptfiler. Enskilda cmdlets kan också definiera dynamiskt slutförande av argumentvärden där kompletteringsvärdena beräknas dynamiskt på det körande systemet.

Kommandohistorik

Användare av ett skal kan hitta på att skriva något som liknar det de har skrivit tidigare. Stöd för kommandohistorik innebär att en användare kan återkalla ett tidigare kommando i kommandoradsredigeraren och redigera det innan det eventuellt ändrade kommandot utfärdas.

Skal som stöder slutförande kan också direkt slutföra kommandot från kommandohistoriken givet en partiell/initial del av det föregående kommandot.

De flesta moderna skal stöder kommandohistorik. Skal som stöder kommandohistorik i allmänhet stöder också komplettering från historik snarare än att bara återkalla kommandon från historiken. Förutom den vanliga kommandotexten, registrerar PowerShell även start- och sluttid för exekvering och exekveringsstatus i kommandohistoriken.

Obligatorisk argumentuppmaning

Obligatoriska argument/parametrar är argument/parametrar som måste tilldelas ett värde vid anrop av kommandot, funktionen eller skriptfilen. Ett skal som kan avgöra före anropet att det saknas obligatoriska värden, kan hjälpa den interaktiva användaren genom att fråga efter dessa värden istället för att låta kommandot misslyckas. Att ha skalprompten för saknade värden gör det möjligt för författaren av ett skript, kommando eller funktion att markera en parameter som obligatorisk istället för att skapa skriptkod för att antingen fråga efter de saknade värdena (efter att ha fastställt att den körs interaktivt) eller misslyckas med en meddelande.

PowerShell tillåter kommandon, funktioner och skript för att definiera argument/parametrar som obligatoriska . Skalet bestämmer före anropet om det finns några obligatoriska argument/parametrar som inte har bundits, och kommer sedan att fråga användaren om värdet/värdena före faktisk anrop.

Automatiska förslag

Kommandoradskomplettering i PowerShell .

Skal med automatiska förslag visar valfria kommandoradskompletteringar när användaren skriver. PowerShell och fiskskal stöder den här funktionen ; genom att trycka på Tab ↹ -tangenten infogas kompletteringen.

Implementering av denna funktion kan skilja sig åt mellan skal; PowerShell och zsh använder till exempel en extern modul för att tillhandahålla kompletteringar, och fish hämtar sina slutföranden från användarens kommandohistorik.

Kataloghistorik, stack eller liknande funktioner

Skal kan registrera en historik över kataloger som användaren har varit i och möjliggöra snabb växling till valfri inspelad plats. Detta kallas för en "katalogstack". Konceptet hade realiserats redan 1978 i releasen av C-skalet (csh).

PowerShell tillåter att flera namngivna stackar används. Platser (kataloger) kan skjutas till/poppas från den aktuella stacken eller en namngiven stack. Vilken stack som helst kan bli den aktuella (standard) stacken. Till skillnad från de flesta andra skal tillåter PowerShells platskoncept platsstackar att hålla filsystemsplatser såväl som andra platstyper som t.ex. Active Directory- organisationsenheter/grupper, SQL Server -databaser/tabeller/objekt, Internet Information Server- applikationer/webbplatser/virtuella kataloger.

Kommandoradstolkarna 4DOS och dess grafiska efterföljare Take Command Console har också en katalogstack.

Implicit katalogändring

Ett katalognamn kan användas direkt som ett kommando som implicit ändrar den aktuella platsen till katalogen.

Detta måste särskiljas från en icke-relaterad laddningsenhetsfunktion som stöds av Concurrent DOS , Multiuser DOS , System Manager och REAL/32 , där enhetsbokstaven L: kommer att uppdateras underförstått för att peka på laddningsvägen för en laddad applikation, vilket gör att applikationer kan referera till filer som finns i deras laddningskatalog under en standardiserad enhetsbeteckning istället för under en absolut sökväg.

Automatisk korrigering

Zsh autokomplettering och autokorrigering demo för ett telnet -program.

När en kommandorad inte matchar ett kommando eller argument direkt, kan stavningskontroll automatiskt korrigera vanliga skrivfel (som skiftlägeskänslighet , saknade bokstäver). Det finns två synsätt på detta; skalet kan antingen föreslå troliga korrigeringar vid kommandoanrop, eller så kan detta ske tidigare som en del av en komplettering eller autosuggestion.

Tcsh- och zsh - skalen har valfri stavningskontroll/korrigering vid kommandoanrop.

Fish gör autokorrigeringen vid komplettering och autosuggestion. Funktionen är därför inte i vägen när du skriver ut hela kommandot och trycker på enter, medan omfattande användning av tabb- och högerpiltangenterna gör skalet mestadels skiftlägesokänsligt.

PSReadLine PowerShell-modulen (som levereras med version 5.0) ger möjlighet att ange ett CommandValidationHandler ScriptBlock som körs innan kommandot skickas. Detta möjliggör anpassad korrigering av vanliga felskrivna kommandon och verifiering innan kommandot faktiskt körs.

Framstegsindikator

Ett skalskript (eller jobb) kan rapportera framsteg för långvariga uppgifter till den interaktiva användaren.

Unix/Linux-system kan erbjuda andra verktygsstöd med hjälp av framstegsindikatorer från skript eller som fristående kommandon, såsom programmet "pv". Dessa är dock inte integrerade funktioner i skalen.

PowerShell har ett inbyggt kommando och API-funktioner (som ska användas vid författande av kommandon) för att skriva/uppdatera en förloppsindikator. Meddelanden i förloppsindikatorn skickas separat från vanliga kommandoutdata och förloppsindikatorn visas alltid på den ultimata interaktiva användarkonsolen oavsett om förloppsmeddelandena kommer från ett interaktivt skript, från ett bakgrundsjobb eller från en fjärrsession.

Färgade katalogförteckningar

JP Softwares kommandoradsprocessorer tillhandahåller användarkonfigurerbar färgsättning av fil- och katalognamn i kataloglistor baserat på deras filtillägg och/eller attribut genom en valfritt definierad miljövariabel %COLORDIR%.

För Unix/Linux-skalen är detta en funktion för ls -kommandot och terminalen.

Textmarkering

Kommandoradsprocessorerna i DOS Plus , Multiuser DOS , REAL/32 och i alla versioner av DR-DOS stöder ett antal valfria miljövariabler för att definiera escape-sekvenser som gör det möjligt att styra textmarkering, reversion eller färgsättning för visning eller utskrift i kommandon som t.ex. TYP . Alla nämnda kommandoradsprocessorer stöder %$ON% och %$OFF% . Om de definieras kommer dessa sekvenser att sändas före och efter filnamn. En typisk sekvens för %$ON% skulle vara \033[1m i kombination med ANSI.SYS , \033p för en ASCII- terminal eller \016 för en IBM- eller ESC/P- skrivare. På samma sätt skulle typiska sekvenser för %$OFF% vara \033[0m, \033q, \024, respektive. Variablerna %$HEADER% och %$FOOTER% stöds endast av COMMAND.COM i DR-DOS 7.02 och högre för att definiera sekvenser som sänds ut före och efter textblock för att kontrollera textmarkering, sidnumrering eller andra formateringsalternativ.

För Unix/Linux-skalen är detta en funktion i terminalen.

Syntaxmarkering

En definierande egenskap hos fiskskalet är inbyggd syntaxmarkering. När användaren skriver färgas texten för att representera om inmatningen är ett giltigt kommando eller inte (den körbara filen finns och användaren har behörighet att köra den) och en giltig fil vägar är understrukna.

Ett oberoende projekt erbjuder syntaxmarkering som ett tillägg till Z Shell (zsh). Detta är dock inte en del av skalet.

PowerShell tillhandahåller anpassningsbar syntaxmarkering på kommandoraden via PSReadLine-modulen. Den här modulen kan användas med PowerShell v3.0+, och den ingår i v5.0. Dessutom laddas den som standard i kommandoradsvärden "powershell.exe" i v5.0. PowerShell ISE inkluderar också syntaxmarkering på kommandoraden såväl som i skriptfönstret. Take Command Console (TCC) erbjuder syntaxmarkering i den integrerade miljön.

Kontextkänslig hjälp

4DOS, 4OS2, 4NT / Take Command Console och PowerShell (i PowerShell ISE) letar upp sammanhangskänslig hjälpinformation när F1 trycks ned.

Zsh tillhandahåller olika former av konfigurerbar kontextkänslig hjälp som en del av sin run-help- widget, kommandot _complete_help , eller i slutförandet av alternativ för vissa kommandon.

Fiskskalet ger korta beskrivningar av ett kommandos flaggor när flikarna slutförs.

Kommandobyggare

En kommandobyggare är en guidad dialogruta som hjälper användaren att fylla i ett kommando. PowerShell har en kommandobyggare som är tillgänglig i PowerShell ISE eller som kan visas separat via Show-Command- cmdleten.

Programmeringsfunktioner

Skal Funktioner Undantagshantering Sök & ersätt på variabla ersättningar Aritmetisk Flytpunkt Matematisk funktionsbibliotek Linjära arrayer eller listor Associativa arrayer Lambdafunktioner eval funktion Generering av pseudoslumptal Bytekod
Bourne shell 1977 version Nej Ja (via fälla ) Nej Nej Nej Nej Nej Nej Nej Ja Nej Nej
Bourne shell nuvarande version Ja sedan SVR2 Ja (via fälla ) Nej Ja Nej Nej Nej Nej Nej Ja Nej Nej
POSIX skal Ja Ja (via fälla ) Nej Ja Nej Nej Nej Nej Nej Ja Nej Nej
bash (v4.0) Ja Ja (via fälla ) Ja (via ${// }-syntax) Ja Nej Nej Ja Ja Nej Ja Ja ( $RANDOM ) Nej
csh Nej Nej Ja (via $var:s/// syntax) Ja Nej Nej Ja Nej Nej Ja Nej Nej
tcsh Nej Nej Ja (via $var:s/// syntax) Ja Nej Nej Ja Nej Nej Ja Nej Nej
Hamilton C-skal Ja Nej Ja (via $var:s/// syntax) Ja Ja Ja Ja Nej Nej Ja Ja (slumpmässigt verktyg) Nej
Scsh Ja ? Ja (via strängfunktioner och reguljära uttryck) ? ? ? Ja ? Ja Ja Ja (slumpmässigt heltal, slumpmässigt verkligt) Ja (kompilatorn är Scheme48 virtuell maskin, via scshvm )
ksh (ksh93t+) Ja Ja (via fälla ) Ja (via ${// }-syntax och inbyggda kommandon) Ja Ja Ja Ja Ja Nej Ja Ja ( $RANDOM ) Ja (kompilatorn heter shcomp )
pdksh Ja Ja (via fälla ) Nej Ja Nej Nej Ja Nej Nej Ja Ja ( $RANDOM ) Nej
zsh Ja Ja Ja (via syntaxen ${:s// } och ${// }) Ja Ja Ja ( zsh/mathfunc -modul) Ja Ja Nej Ja Ja ( $RANDOM ) Ja (inbyggt zcompile- kommando)
aska Ja Ja (via fälla ) Nej Ja (sedan 1992) Nej Nej Nej Nej Nej Ja Nej Nej
CCP Nej ? Nej Nej ? ? Nej Nej Nej Nej Nej Nej
COMMAND.COM Nej Partiell (endast Auto-fail (via COMMAND /F (eller /N i vissa versioner av DR-DOS)) Nej Nej Nej Nej Nej Nej Nej Nej Nej Nej
OS/2 CMD.EXE Nej Nej Nej ? Nej Nej ? Nej Nej Nej Nej Nej
Windows CMD.EXE Ja (via CALL :label ) Nej Ja (via SET % varname : uttryckssyntax ) Ja (via SET /A ) Nej Nej Ja (via SET ) Nej Nej Nej Ja ( %random % ) Nej
4DOS Ja Ja (via ON- kommando, valfritt Auto-fail via 4DOS /F ) Ja (via %@Replace[...]- funktionen) Ja (via SET /A ) ? ? Ja (via intervall, inkludera listor, @ fillistor och FOR -kommandot) Nej Nej Ja Ja ( %@Random[...] funktion) Ja (via BATCOMP- kommandot)
4OS2 ? ? ? ? ? ? ? ? Nej Ja Ja ( %@Random[...] funktion) ?
TCC (tidigare 4NT) Ja Ja (via ON och olika ...MONITOR- kommandon) Ja (via %@Replace[...]- funktionen) Ja (via SET /A ) ? ? Ja (via intervall, inkludera listor, @ fillistor och FOR -kommandot) ? Nej Ja Ja ( %@Random[...] funktion) Ja (via BATCOMP- kommandot)
PowerShell Ja Ja (Try-Catch-Äntligen) Ja ( -ersätt operatör) Ja Ja [Matematik klass Ja Ja Ja Ja Ja Ja, automatiskt
rc Ja Ja Nej Ja ? ? Ja ? Nej Ja Nej Nej
BeanShell Ja Ja ? Ja ? ? Ja Ja Nej Ja Ja Ja
VMS DCL Ja Ja Nej Ja Nej ja, för kompilerade program Ja Nej Nej Nej Nej Nej
fisk Ja Ja (via fälla ) Ja, via inbyggt strängkommando Ja Ja Ja Ja Nej Nej Ja Ja ( slumpmässigt ) Nej

Strängbearbetning och filnamnsmatchning

Skal Strängbearbetning Alternering ( Blackexpansion ) Mönstermatchning ( inbyggda reguljära uttryck ) Mönstermatchning (filnamn globbing ) Globbing-kvalificerare (filnamnsgenerering baserat på filattribut) Rekursiv globbing (genererar filer från alla nivåer av underkataloger)
Bourne shell 1977 version ? Nej Nej Ja ( * , ? , [...] ) Nej Nej
Bourne shell senaste versionen Partiell (prefix- och suffixstrippning i variabel expansion) Nej Nej Ja ( * , ? , [...] ) Nej Nej
POSIX skal Partiell (prefix- och suffixstrippning i variabel expansion) Nej Nej Ja ( * , ? , [...] ) Nej Nej
bash (v4.0) Partiell (prefix- och suffixstrippning i variabel expansion) Ja Ja Ja ( * , ? , [...] , {... }) Nej Ja ( **/... )
csh Ja (:s och andra redigeringsoperatorer) Ja Nej Ja Nej Nej
tcsh Ja (:s och andra redigeringsoperatorer) Ja Ja Ja Nej Nej
Hamilton C-skal Ja (:s och andra redigeringsoperatorer + substr, strlen, strindex, printf, reverse, övre, nedre, concat och andra inbyggda funktioner) Ja Nej Ja Nej Ja (via obestämd katalog "..." jokertecken)
Scsh ? ? Ja Ja Nej Nej
ksh (ksh93t+) Partiell (prefix, suffixstrippning och strängbyte i variabel expansion) Ja Ja Ja ( * , ? , [...] ) Nej Ja (med set -G , ingen följning av symboliska länkar)
pdksh ? Ja Nej Ja Nej Nej
zsh Ja (genom variabel bearbetning: t.ex. delsträngsextraktion, olika transformationer via parameterexpansion) Ja Ja Ja ( * , ? , [...] , utökad globbing ) Ja Ja ( **/... eller ***/... för att följa symlinks)
aska ? ? Nej Ja Nej Nej
CCP Nej Nej Nej Nej Nej Nej
COMMAND.COM Nej Nej Nej Ja ( * ,? ) Nej Nej
OS/2 CMD.EXE Nej Nej Nej Ja ( * ,? ) Partiell (endast i kommandot DIR /A:... ) Nej
Windows CMD.EXE Partiell (endast genom FOR /F och SET /A ) Nej Nej Ja ( * ,? ) Partiell (endast i kommandot DIR /A:... ) Ja (via FOR /R- kommando, eller, om tillgängligt, indirekt via /S- underkatalogalternativ)
4DOS Ja (genom variabelfunktionerna %@...[] , utökad miljövariabelbehandling, olika strängkommandon och FOR /F och SET /A ) Nej Nej Ja ( * , ? , [...] , utökade jokertecken , SELECT popup-kommando) Ja (via /A:... attribut och /I"..." beskrivningsalternativ och /[S...] storlek, /[T...] tid, /[D...] datum och / [!...] filexkluderingsintervall) Ja (via FOR /R- kommando, eller indirekt via GLOBAL- kommando eller, om tillgängligt, /S subdir-alternativ)
4OS2 ? Nej Nej ? ? ?
TCC (tidigare 4NT) Ja (genom variabelfunktionerna %@...[] , utökad miljövariabelbehandling, olika strängkommandon och FOR /F och SET /A ) Nej Ja Ja ( * , ? , [...] , utökade jokertecken , SELECT popup-kommando) Ja (via /A:... attribut och /I"..." beskrivningsalternativ och /[S...] storlek, /[T...] tid, /[D...] datum, /[ O...] ägare och /[!...] filexkluderingsintervall) Ja (via FOR /R- kommando, eller indirekt via GLOBAL- kommando eller, om tillgängligt, /S subdir-alternativ)
PowerShell Ja (Concat/Substring/Insert/Remove/Replace, ToLower/ToUpper, Trim/TrimStart/TrimEnd, Compare, Contains/StartsWith/EndWith, Format, IndexOf/LastIndexOf, Pad/PadLeft/PadRight, Split/Join, reguljära uttrycksfunktioner och andra .NET-strängfunktioner) Områdesoperatör för siffror Ja (fullständigt stöd för regex) Ja ( * , ? , [...] ) ? ?
rc ? ? Nej Ja Nej Nej
BeanShell ? ? Ja ? ? ?
VMS DCL Ja Nej Nej Ja Nej Ja (via [SUBDIR...] )
fisk Ja (inbyggd strängfunktion) Ja ja (via inbyggd strängmatchning och strängersättningsfunktioner ) Ja ( * , ? , {... }) Nej Ja ( **/... )

Kommunikation mellan processer

Skal Rör Kommandosubstitution Processsubstitution Subshells TCP / UDP -anslutningar som strömmar Tangenttryckning stapling
Bourne skal byte samtidigt Ja Nej Ja Nej
POSIX skal byte samtidigt Ja Nej Ja Nej
bash (v4.0) byte samtidigt Ja Ja (om systemet stöder /dev/fd/ ⟨n⟩ eller namngivna rör) Ja Ja (endast klient)
csh byte samtidigt Ja Nej Ja Nej
tcsh byte samtidigt Ja Nej Ja Nej
Hamilton C-skal byte samtidigt Ja Nej Ja Nej ?
Scsh text ? ? ? Ja
ksh (ksh93t+) bytes (kan innehålla serialiserade objekt om print -C används) samtidigt Ja ( $(...) och ${<mellanslag>...; }) Ja (om systemet stöder /dev/fd/ ⟨n⟩ ) Ja Ja (och SCTP-stöd, endast klient)
pdksh byte samtidigt Ja Nej Ja Nej
zsh byte samtidigt Ja Ja Ja Ja (klient och server, men bara TCP)
aska byte samtidigt Ja Nej Ja Nej
CCP Nej Nej Nej Nej Nej Nej
COMMAND.COM textsekventiella temporära filer Nej Nej Partiell (endast under DR-DOS multitasker via COMMAND.COM /T ) Nej Nej
OS/2 CMD.EXE text samtidigt Nej Nej ? Nej Nej
Windows CMD.EXE text samtidigt Ja (via FOR /F kommando) Nej Ja (Backtick: ` i FOR /F usebackq ) Nej Nej
4DOS textsekventiella temporära filer Ja (via FOR /F kommando) ? Partiell (via %@EXECSTR[] och %@EXEC[] , eller via SET /M , ESET /M och UNSET /M och %@MASTER[...] ) Nej Ja (via KEYSTACK och KSTACK )
4OS2 text samtidigt ? ? ? Nej Ja (via KEYSTACK )
TCC (tidigare 4NT) text samtidigt Ja (via FOR /F kommando) ? Partiell (via %@EXECSTR[] och %@EXEC[] ) Ja (via FTP , TFTP , FTPS , SFTP , HTTP , HTTPS och IFTP , endast klient) Ja (via KEYSTACK )
PowerShell objekt samtidigt Ja Nej Ja Ja ?
rc text samtidigt Ja Ja (via: <{cmd } om systemet stöder /dev/fd/ ⟨n⟩ ) Ja Nej ?
BeanShell stöds inte ? ? ? Ja ?
VMS DCL text (via PIPE- kommando) Ja Nej Ja (spawn) Ja (endast server TCP) Nej
fisk byte samtidigt Ja ( ... ) Nej (trasig) Nej Nej

Tangenttryckning stapling

I väntan på vad en given applikation kan acceptera som tangentbordsinmatning, instruerar användaren av skalet skalet att generera en sekvens av simulerade tangenttryckningar, som applikationen kommer att tolka som en tangentbordsinmatning från en interaktiv användare. Genom att skicka tangenttryckningssekvenser kan användaren styra applikationen att utföra åtgärder som skulle vara omöjliga att uppnå genom omdirigering av inmatning eller annars skulle kräva en interaktiv användare. Till exempel, om en applikation agerar på tangenttryckningar, som inte kan omdirigeras, skiljer mellan normala och utökade tangenter, rensar kön innan den accepterar ny inmatning vid start eller under vissa förhållanden, eller för att den inte läser igenom standardinmatning alls. Tangentslagsstapling ger vanligtvis också medel för att kontrollera timingen för simulerade nycklar som skickas eller för att fördröja nya nycklar tills kön tömdes etc. Det gör det också möjligt att simulera nycklar som inte finns på ett tangentbord (eftersom motsvarande nycklar inte finns fysiskt eller eftersom en annan tangentbordslayout används) och därför skulle vara omöjlig att skriva av en användare.

Säkerhetsfunktioner

Skal Säker (lösenord) prompt Krypterade variabler/parametrar Fil-/kataloglösenord Utför behörighet Otillförlitlig skriptblockering Begränsad skaldelmängd Säker dataundergrupp
Bourne skal via stty Nej ? Nej Ja Nej
POSIX skal via stty Nej ? Nej Nej Nej
bash (v4.0) läsa -s Nej ? Nej Ja Nej
csh via stty Nej ? Nej Ja Nej
tcsh via stty Nej ? Nej Ja Nej
Hamilton C-skal Nej Nej Nej Nej Nej Nej Nej
Scsh via stty Nej ? Nej Nej Nej
ksh (ksh93t+) via stty Nej ? Nej Ja Nej
pdksh via stty Nej ? Nej Ja Nej
zsh läsa -s Nej ? Nej Ja Nej
aska via stty Nej ? Nej Ja Nej
CCP Nej Nej Nej Nej Nej Nej Nej
COMMAND.COM Partiell (endast under DR-DOS, frågar efter lösenord om filen/katalogen är skyddad) Nej Partiell (endast under DR-DOS via \dirname;dirpwd\filename;filepwd- syntax) Partiell (endast under DR-DOS, om filerna är lösenordsskyddade för läsning och/eller exekveringstillstånd) Nej Nej Nej
OS/2 CMD.EXE Nej Nej Nej Nej Nej Nej Nej
Windows CMD.EXE Nej Nej Nej Nej Nej Nej Nej
4DOS Ja (via INPUT /P eller INKEY /P ) Nej Partiell (endast under DR-DOS via \dirname;;dirpwd\filename;;filepwd- syntax) Partiell (endast under DR-DOS, om filerna är lösenordsskyddade för läsning och/eller exekveringstillstånd) Nej Nej Nej
4OS2 ? Nej Nej Nej Nej Nej Nej
TCC (tidigare 4NT) Ja (via INPUT /P , INKEY /P eller QUERYBOX /P ) Nej Nej Nej Nej Nej Nej
PowerShell Ja Ja Nej Nej Ja Ja Ja
rc via stty Nej ? Nej Ja Nej
BeanShell ? ? ? ? ? ? ?
VMS DCL Ja Nej Nej Ja Nej Ja Nej
fisk läsa -s Nej ? Nej Ja (via fisk -l ) ?

Säker uppmaning

Vissa skalskript måste fråga användaren efter känslig information som lösenord , privata digitala nycklar, PIN-koder eller annan konfidentiell information. Känslig inmatning ska inte ekas tillbaka till skärmen/inmatningsenheten där den kan hämtas av obehöriga personer. Plaintext minnesrepresentation av känslig information bör också undvikas eftersom det kan göra att informationen äventyras, t.ex. genom swap-filer, kärndumpar etc.

Skalen bash, zsh och PowerShell erbjuder detta som en specifik funktion. Skal som inte erbjuder detta som en specifik funktion kan fortfarande kunna stänga av eko på något annat sätt. Skal som körs på ett Unix/Linux-operativsystem kan använda det stty för att stänga av/aktivera eko av inmatade tecken. Förutom att inte eka tillbaka tecknen, krypterar PowerShells -AsSecureString- alternativ också inmatningen tecken-för-tecken under inmatningsprocessen, vilket säkerställer att strängen aldrig representeras okrypterad i minnet där den kan äventyras genom minnesdumpar, skanning, transkription etc. .

Krypterade variabler/parametrar

Om ett skript läser in ett lösenord i en miljövariabel finns det i minnet i vanlig text, och kan därför nås via en kärndump. Det finns också i processmiljön, som kan vara tillgänglig för andra processer som startas av skriptet.

PowerShell kan arbeta med krypterade strängvariabler/parametrar. Krypterade variabler säkerställer att värden inte avslöjas av misstag genom t.ex. transkript, eko, loggfiler, minnes- eller kraschdumpar eller till och med skadlig minnesskanning. PowerShell stöder även lagring av sådana krypterade strängar i textfiler, skyddade av en nyckel som ägs av den aktuella användaren.

Utför behörighet

Vissa operativsystem definierar en exekveringsbehörighet som kan ges till användare/grupper för en fil.

På Unix-system styr exekveringsbehörigheten åtkomsten till att anropa filen som ett program, och gäller både för körbara filer och skript. Eftersom tillståndet upprätthålls i programladdaren , behövs ingen skyldighet från det anropande programmet, eller det anropade programmet, för att upprätthålla exekveringstillståndet – detta gäller även för skal och andra tolkprogram. Beteendet styrs av POSIX C-biblioteket som används för gränssnitt med kärnan. POSIX anger att exec -familjen av funktioner ska misslyckas med EACCESS (behörighet nekad) om filen nekar exekveringstillstånd (se execve – System Interfaces Reference, The Single UNIX Specification , Version 4 från The Open Group ).

Exekveringsbehörigheten gäller endast när skriptet körs direkt . Om ett skript anropas som ett argument till tolkningsskalet, kommer det att exekveras oavsett om användaren har exekveringsbehörigheten för det skriptet.

Även om Windows också anger en exekveringsbehörighet , blockerar inget av de Windows-specifika skalen skriptkörning om behörigheten inte har beviljats.

Otillförlitlig skriptblockering

Vissa skal blockerar skript som bedöms vara opålitliga, eller vägrar att köra skript om de beordras av en systemadministratör.

Begränsning för körning av skriptursprung

PowerShell kan ställas in för att blockera exekvering av skript som har markerats som erhållna från ett okänt/otillförlitligt ursprung (t.ex. Internet). Internetanslutna applikationer som webbläsare, IM-klienter, e-postläsare etc. markerar filer som laddats ner från internet med ursprungszonen i en alternativ dataström som förstås av PowerShell.

Signerad skriptbegränsning

Manus-/kodsigneringspolicyer kan användas för att säkerställa att en driftsavdelning endast kör godkända skript/kod som har granskats och signerats av en betrodd granskare/godkännare. Signeringsregimer skyddar också mot manipulering. Om ett skript skickas från leverantören till en klient kan klienten använda signatur för att säkerställa att skriptet inte har manipulerats under överföringen och att skriptet verkligen kommer från leverantören och inte en angripare som försöker social ingenjör en operatör att köra en attackskript.

PowerShell kan ställas in för att tillåta exekvering av på annat sätt blockerade skript (t.ex. som kommer från en opålitlig zon) om skriptet har signerats digitalt med ett betrodd digitalt certifikat.

Utförandepolicyer på flera nivåer

Ett företag kan vilja upprätthålla utförandebegränsningar globalt inom företaget och/eller vissa delar av företaget. Det kanske vill ställa in en policy för att köra signerade skript men tillåta vissa delar av företaget att ställa in sina egna policyer för zonindelade begränsningar.

PowerShell tillåter att skriptblockeringspolicyer tillämpas på flera nivåer: lokal dator, nuvarande användare etc. En policy på högre nivå åsidosätter en policy på lägre nivå, t.ex. om en policy är definierad för den lokala maskinen är den på plats för alla användare av den lokala maskinen , endast om den lämnas odefinierad på den högre nivån kan den definieras för de lägre nivåerna.

Begränsad skaldelmängd

Flera skal kan startas eller konfigureras för att starta i ett läge där endast en begränsad uppsättning kommandon och åtgärder är tillgängliga för användaren. Även om det inte är en säkerhetsgräns ( kommandot som får åtkomst till en resurs är blockerat snarare än resursen) används detta vanligtvis för att begränsa användarnas handlingar innan de loggar in.

Ett begränsat läge är en del av POSIX- specifikationen för skal, och de flesta av Linux/Unix-skalen stöder ett sådant läge där flera av de inbyggda kommandona är inaktiverade och endast externa kommandon från en viss katalog kan anropas.

PowerShell stöder begränsade lägen genom sessionskonfigurationsfiler eller sessionskonfigurationer. En sessionskonfigurationsfil kan definiera synliga (tillgängliga) cmdlets, alias, funktioner, sökvägsleverantörer och mer.

Säker dataundergrupp

Skript som anropar andra skript kan utgöra en säkerhetsrisk eftersom de potentiellt kan exekvera främmande kod i sammanhanget för användaren som startade det ursprungliga skriptet. Skript kommer vanligtvis att utformas för att uteslutande inkludera skript från kända säkra platser; men i vissa fall, t.ex. när man erbjuder användaren ett sätt att konfigurera miljön eller laddar lokaliserade meddelanden, kan skriptet behöva inkludera andra skript/filer. Ett sätt att hantera denna risk är att skalet erbjuder en säker delmängd av kommandon som kan köras av ett inkluderat skript.

PowerShell- datasektioner kan innehålla konstanter och uttryck med en begränsad delmängd av operatorer och kommandon. PowerShell-datasektioner används när t.ex. lokaliserade strängar behöver läsas från en extern källa samtidigt som det skyddas mot oönskade biverkningar.

Anteckningar

externa länkar