Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
súlyossági szint: Figyelmeztetési
Leírás
Ez a szabály a célzott PowerShell-platformon nem elérhető parancsokat azonosítja.
A PowerShell-platformot egy név azonosítja a következő formátumban:
<os-name>_<os-arch>_<os-version>_<ps-version>_<ps-arch>_<dotnet-version>_<dotnet-edition>
Hol:
-
<os-name>: A PowerShell operációs rendszer neve fut. Windows rendszeren ez tartalmazza az SKU-számot. Linuxon ez a disztribúció neve. -
<os-arch>: Az operációs rendszer gépi architektúrája (ez általábanx64). -
<os-version>: Az operációs rendszer saját jelentésű verziója (Linuxon ez a terjesztési verzió). -
<ps-version>: A PowerShell verziója ($PSVersionTable.PSVersion). -
<ps-arch>: A PowerShell-folyamat gépi architektúrája. -
<dotnet-version>: A .NET-futtatókörnyezet jelentett verziója, amelyen a PowerShell fut (System.Environment.Version). -
<dotnet-edition>: A .NET-futtatókörnyezeti powershell-verzió (jelenlegframeworkvagycore) fut.
Például:
-
win-4_x64_10.0.18312.0_5.1.18312.1000_x64_4.0.30319.42000_frameworkaz x64-hez készült Windows 10 Enterprise rendszeren (18312-ben készült) futó PowerShell 5.1. -
win-4_x64_10.0.18312.0_6.1.2_x64_4.0.30319.42000_corea PowerShell 6.1.2 ugyanazon az operációs rendszeren fut. -
ubuntu_x64_18.04_6.2.0_x64_4.0.30319.42000_coreaz Ubuntu 18.04-en futó PowerShell 6.2.0.
Egyes platformok JSON-fájlokként vannak csomagolva a PSScriptAnalyzerrel, így elnevezve a konfigurációban való célzáshoz.
Az alapértelmezés szerint csomagba csomagolt platformok a következők:
| PowerShell-verzió | Operációs rendszer | AZONOSÍTÓ |
|---|---|---|
| 3.0 | Windows Server 2012 | win-8_x64_6.2.9200.0_3.0_x64_4.0.30319.42000_framework |
| 4.0 | Windows Server 2012 R2 | win-8_x64_6.3.9600.0_4.0_x64_4.0.30319.42000_framework |
| 5.1 | Windows Server 2016 | win-8_x64_10.0.14393.0_5.1.14393.2791_x64_4.0.30319.42000_framework |
| 5.1 | Windows Server 2019 | win-8_x64_10.0.17763.0_5.1.17763.316_x64_4.0.30319.42000_framework |
| 5.1 | Windows 10 Pro | win-48_x64_10.0.17763.0_5.1.17763.316_x64_4.0.30319.42000_framework |
| 6.2 | Ubuntu 18.04 LTS | ubuntu_x64_18.04_6.2.4_x64_4.0.30319.42000_core |
| 6.2 | Windows 10.0.14393 | win-8_x64_10.0.14393.0_6.2.4_x64_4.0.30319.42000_core |
| 6.2 | Windows 10.0.17763 | win-8_x64_10.0.17763.0_6.2.4_x64_4.0.30319.42000_core |
| 6.2 | Windows 10.0.18362 | win-4_x64_10.0.18362.0_6.2.4_x64_4.0.30319.42000_core |
| 7.0 | Ubuntu 18.04 LTS | ubuntu_x64_18.04_7.0.0_x64_3.1.2_core |
| 7.0 | Windows 10.0.14393 | win-8_x64_10.0.14393.0_7.0.0_x64_3.1.2_core |
| 7.0 | Windows 10.0.17763 | win-8_x64_10.0.17763.0_7.0.0_x64_3.1.2_core |
| 7.0 | Windows 10.0.18362 | win-4_x64_10.0.18362.0_7.0.0_x64_3.1.2_core |
További profilok találhatók a GitHub-adattárban.
Saját platformprofilt is létrehozhat a PSCompatibilityCollector modullal.
A kompatibilitási profil beállításai a TargetProfilesalatt megcélzott platformok listáját tartalmazzák. A platform a következő módon adható meg:
- Egy platformnév (például
ubuntu_x64_18.04_6.1.1_x64_4.0.30319.42000_core), amely.jsonlesz hozzáadva a végéhez, és az alapértelmezett profilkönyvtárban keres. - Egy fájlnév (például
my_custom_platform.json), amelyet a rendszer az alapértelmezett profilkönyvtárban keres. - Egy fájl abszolút elérési útja (például
D:\PowerShellProfiles\TargetMachine.json).
Az alapértelmezett profilkönyvtár a PSScriptAnalzyer modul alatt található a $PSScriptRoot/compatibility_profiles (ahol $PSScriptRoot itt a PSScriptAnalyzer.psd1tartalmazó könyvtárra hivatkozik).
A kompatibilitási elemzés egy célprofilhoz és egy "egyesítő" profilhoz használt parancsot hasonlít össze (amely a profilban elérhető összes parancsot tartalmazza). Ha egy parancs nincs jelen az egyesítő profilban, akkor a rendszer feltételezi, hogy helyileg hozza létre és hagyja figyelmen kívül. Ellenkező esetben, ha egy parancs megtalálható az egyesítő profilban, de nem található meg egy célban, akkor a parancs nem kompatibilis a célval.
Konfigurációs beállítások
| Konfigurációs kulcs | Jelentés | Elfogadott értékek | Kötelező | Példa |
|---|---|---|---|---|
Enable |
Aktiválja a szabályt | bool ($true/$false) |
Nem (alapértelmezett: $false) |
$true |
TargetProfiles |
A megcélzandó PowerShell-profilok listája | string[]: a profilfájlok vagy profilok neveinek abszolút elérési útjai a profilkönyvtárban | Nem (alapértelmezett: @()) |
@('ubuntu_x64_18.04_6.1.3_x64_4.0.30319.42000_core', 'win-48_x64_10.0.17763.0_5.1.17763.316_x64_4.0.30319.42000_framework') |
ProfileDirPath |
A profilok név szerinti keresésének helye, és az egyesítő profilok létrehozása | sztring: az új profil dir abszolút elérési útja | Nem (alapértelmezés szerint compatibility_profiles könyvtár a PSScriptAnalyzer modulban |
C:\Users\me\Documents\pssaCompatProfiles |
IgnoreCommands |
Parancsok a szkriptek kompatibilitásának figyelmen kívül hagyásához | sztring[]: figyelmen kívül hagyandó parancsok neve | Nem (alapértelmezett: @()) |
@('Get-ChildItem','Import-Module') |
Egy példakonfiguráció a következőképpen nézhet ki:
@{
Rules = @{
PSUseCompatibleCommands = @{
Enable = $true
TargetProfiles = @(
'ubuntu_x64_18.04_6.1.3_x64_4.0.30319.42000_core'
'win-48_x64_10.0.17763.0_5.1.17763.316_x64_4.0.30319.42000_framework'
'MyProfile'
'another_custom_profile_in_the_profiles_directory.json'
'D:\My Profiles\profile1.json'
)
# You can specify commands to not check like this, which also will ignore its parameters:
IgnoreCommands = @(
'Install-Module'
)
}
}
}
Elnyomása
A parancskompatibilitási diagnosztikát letilthatja a szkriptblokk param blokkjának attribútuma, mint más szabályok esetén.
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseCompatibleCommands', '')]
A szabályt csak bizonyos parancsok esetén lehet letiltani:
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseCompatibleCommands',
'Start-Service')]
És csak paraméterek esetén is el van tiltva:
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseCompatibleCommands',
'Import-Module/FullyQualifiedName')]