Set-StrictMode
Kódolási szabályokat hoz létre és kényszerít ki kifejezésekben, szkriptekben és szkriptblokkokban.
Syntax
Version (Alapértelmezett)
Set-StrictMode
-Version <Version>
[<CommonParameters>]
Off
Set-StrictMode
[-Off]
[<CommonParameters>]
Description
A Set-StrictMode parancsmag szigorú módot konfigurál az aktuális hatókörhöz és az összes gyermekhatókörhöz, és be- és kikapcsolja azt. Ha a szigorú mód be van kapcsolva, a PowerShell megszüntetési hibát okoz, ha egy kifejezés, szkript vagy szkriptblokk tartalma megsérti az alapvető ajánlott eljárás kódolási szabályait.
A Verzió paraméter használatával határozza meg a kikényszeríteni kívánt kódolási szabályokat.
Set-PSDebug -Strict parancsmag bekapcsolja a globális hatókör szigorú módját.
Set-StrictMode csak az aktuális hatókört és annak gyermek hatóköreit érinti. Ezután egy szkriptben vagy függvényben is használhatja a globális hatókörtől örökölt beállítás felülbírálásához.
Ha Set-StrictMode ki van kapcsolva, a PowerShell a következő viselkedést követi:
- Az nem inicializált változók típustól függően
0(nulla) vagy$Nullértékkel rendelkeznek - A nem létező tulajdonságokra mutató hivatkozások
$Null - A helytelen függvényszintaxis eredménye a hibafeltételek függvényében változik
- Ha egy tömbben érvénytelen index használatával próbál értéket lekérni, az
$Null
Példák
1. példa: A szigorú mód bekapcsolása 1.0-s verzióként
# Strict mode is off by default.
$a -gt 5
False
Set-StrictMode -Version 1.0
$a -gt 5
InvalidOperation: The variable '$a' cannot be retrieved because it has not been set.
A szigorú mód 1.0verzióra van állítva, és nem inicializált változókra próbál hivatkozni.
2. példa: A szigorú mód bekapcsolása 2.0-s verzióként
# Strict mode is off by default.
function add ($a, $b) {
'$a = ' + $a
'$b = ' + $b
'$a+$b = ' + ($a + $b)
}
add 3 4
$a = 3
$b = 4
$a+$b = 7
add(3,4)
$a = 3 4
$b =
$a+$b = 3 4
Set-StrictMode -Version 2.0
add(3,4)
InvalidOperation: The function or command was called as if it were a method. Parameters should be separated by spaces. For information about parameters, see the about_Parameters Help topic.
Set-StrictMode -Off
$string = "This is a string."
$null -eq $string.Month
True
Set-StrictMode -Version 2.0
$string = "This is a string."
$null -eq $string.Month
PropertyNotFoundException: The property 'Month' cannot be found on this object. Verify that the property exists.
Ez a parancs bekapcsolja a szigorú módot, és beállítja a 2.0verzióra. Ennek eredményeképpen a PowerShell hibát ad vissza, ha zárójeleket és vesszőket használó metódusszintaxist használ függvényhíváshoz, vagy nem inicializált változókra vagy nem létező tulajdonságokra hivatkozik.
A mintakimenet a 2.0 szigorú mód hatását mutatja.
A 2.0 szigorú mód nélkül a (3,4) értéket egyetlen tömbobjektumként értelmezi a rendszer, amelyhez semmit sem ad hozzá. A verzió 2.0 szigorú mód esetén a rendszer helyesen értelmezi hibás szintaxisként két érték beküldéséhez.
A 2.0verzió nélkül a sztring nem létező Hónap tulajdonságára való hivatkozás csak $Nullad vissza. A 2.0verzióval a rendszer helyesen értelmezi hivatkozási hibaként.
3. példa: A szigorú mód bekapcsolása 3.0-s verzióként
Ha a szigorú mód ki, akkor az indexek érvénytelen vagy kívül esik, az eredmény null értékeket ad vissza.
# Strict mode is off by default.
$a = @(1)
$null -eq $a[2]
$null -eq $a['abc']
True
True
Set-StrictMode -Version 3.0
$a = @(1)
$null -eq $a[2]
$null -eq $a['abc']
OperationStopped: Index was outside the bounds of the array.
InvalidArgument: Cannot convert value "abc" to type "System.Int32". Error: "Input string was not in a correct format."
Ha a szigorú mód 3 vagy újabb verzióra van állítva, az érvénytelen vagy a korláton kívüli indexek hibákat eredményeznek.
Paraméterek
-Off
Azt jelzi, hogy ez a parancsmag kikapcsolja a szigorú módot az aktuális hatókörhöz és az összes gyermekhatókörhöz.
Paramétertulajdonságok
| Típus: | SwitchParameter |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
Off
| Position: | Named |
| Kötelező: | True |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-Version
Megadja azokat a feltételeket, amelyek hibát okoznak szigorú módban. Ez a paraméter bármilyen érvényes PowerShell-verziószámot elfogad. A 3-nél nagyobb számokat a Latestkezeli. A megadott értéknek Latest vagy System.Version típussá konvertálható sztringnek kell lennie. A verziónak meg kell egyeznie a PowerShell érvényes kiadási verziójával.
A paraméter érvényes értékei a következők:
1.0- Tiltja a nem nemi alapú változókra mutató hivatkozásokat, kivéve a sztringekben lévő nemi változókat.
2.0- Tiltja a nem inicializált változókra mutató hivatkozásokat. Ide tartoznak a sztringek nem nemializált változói.
- Tiltja az objektumok nem létező tulajdonságaira mutató hivatkozásokat.
- Tiltja a metódusok hívásához használt szintaxist használó függvényhívásokat.
3.0- Tiltja a nem inicializált változókra mutató hivatkozásokat. Ide tartoznak a sztringek nem nemializált változói.
- Tiltja az objektumok nem létező tulajdonságaira mutató hivatkozásokat.
- Tiltja a metódusok hívásához használt szintaxist használó függvényhívásokat.
- Tiltsa ki a korlátokat vagy a nem feloldható tömbindexeket.
Latest- Kiválasztja a legújabb elérhető verziót. A legújabb verzió a legszigorúbb. Ezzel az értékkel győződjön meg arról, hogy a szkriptek a legszigorúbb elérhető verziót használják, még akkor is, ha új verziókat adnak hozzá a PowerShellhez.
Figyelmeztetés
Az Latest használata verzió szkriptekben nem determinisztikus. A Latest jelentése változhat a PowerShell új kiadásaiban. A PowerShell egy régebbi, Set-StrictMode -Version Latest használó verziójához írt szkriptre szigorúbb szabályok vonatkoznak, amikor a PowerShell újabb verzióiban futnak.
Paramétertulajdonságok
| Típus: | Version |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
| Aliasok: | v |
Paraméterkészletek
Version
| Position: | Named |
| Kötelező: | True |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
CommonParameters
Ez a parancsmag a következő gyakori paramétereket támogatja: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction és -WarningVariable. További információért lásd about_CommonParameters.
Bevitelek
None
Ehhez a parancsmaghoz nem lehet objektumokat csövezni.
Kimenetek
None
Ez a parancsmag nem ad vissza kimenetet.
Jegyzetek
Bár a Verzió paraméter a 3.0értéknél nagyobb értékeket fogad el, a 3.0-nél magasabbra nincs meghatározva további szabály.
Set-StrictMode csak a gyermek hatókörében és hatókörében érvényes. A PowerShell hatóköreiről további információt a about_Scopescímű témakörben talál.