Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önem Derecesi: Uyarı
Açıklama
Bu kural, hedeflenen bir PowerShell platformunda kullanılamayan komutları tanımlar.
PowerShell platformu aşağıdaki biçimde bir adla tanımlanır:
<os-name>_<os-arch>_<os-version>_<ps-version>_<ps-arch>_<dotnet-version>_<dotnet-edition>
Nerede:
-
<os-name>: PowerShell'in üzerinde çalıştığı işletim sisteminin adı. Windows'ta bu, SKU numarasını içerir. Linux'ta bu, dağıtımın adıdır. -
<os-arch>: İşletim sisteminin üzerinde çalıştığı makine mimarisi (bu genelliklex64). -
<os-version>: İşletim sisteminin kendi kendine bildirilen sürümü (Linux'ta bu dağıtım sürümüdür). -
<ps-version>: PowerShell sürümü ($PSVersionTable.PSVersion). -
<ps-arch>: PowerShell işleminin makine mimarisi. -
<dotnet-version>: PowerShell çalışma zamanının bildirilen sürümü üzerinde çalışıyor (System.Environment.Version). -
<dotnet-edition>: PowerShell üzerinde çalışan .NET çalışma zamanı türü (şu andaframeworkveyacore).
Mesela:
-
win-4_x64_10.0.18312.0_5.1.18312.1000_x64_4.0.30319.42000_framework, x64 için Windows 10 Enterprise'da (derleme 18312) çalışan PowerShell 5.1'dir. -
win-4_x64_10.0.18312.0_6.1.2_x64_4.0.30319.42000_coreaynı işletim sisteminde çalışan PowerShell 6.1.2'dir. -
ubuntu_x64_18.04_6.2.0_x64_4.0.30319.42000_core, Ubuntu 18.04 üzerinde çalışan PowerShell 6.2.0'dır.
Bazı platformlar, yapılandırmanızda hedefleme için bu şekilde adlandırılan JSON dosyaları olarak PSScriptAnalyzer ile birlikte gelir.
Varsayılan olarak paketlenmiş platformlar şunlardır:
| PowerShell Sürümü | İşletim Sistemi | KİMLİĞİ |
|---|---|---|
| 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 |
Diğer profiller GitHub deposunda bulunabilir.
ayrıca
Uyumluluk profili ayarları, TargetProfilesaltında hedef edilecek platformların listesini alır. Bir platform şu şekilde belirtilebilir:
- Sonuna
ubuntu_x64_18.04_6.1.1_x64_4.0.30319.42000_coreeklenecek ve varsayılan profil dizininde aranacak bir platform adı (.jsongibi). - Varsayılan profil dizininde için aranacak bir dosya adı (
my_custom_platform.jsongibi). - Dosyanın mutlak yolu (
D:\PowerShellProfiles\TargetMachine.jsongibi).
Varsayılan profil dizini, $PSScriptRoot/compatibility_profiles'daki PSScriptAnalzyer modülünün altındadır (burada $PSScriptRootPSScriptAnalyzer.psd1içeren dizini ifade eder).
Uyumluluk analizi, hem hedef profil hem de 'birleşim' profili için kullanılan bir komutu karşılaştırır (profil dirindeki herhangi bir profili
Yapılandırma ayarları
| Yapılandırma anahtarı | Anlam | Kabul edilen değerler | Zorunlu | Örnek |
|---|---|---|---|---|
Enable |
Kuralı etkinleştirir | bool ($true/$false) |
Hayır (varsayılan: $false) |
$true |
TargetProfiles |
Hedeflene PowerShell profillerinin listesi | string[]: profil dizinindeki profil dosyalarının veya profil adlarının mutlak yolları | Hayır (varsayılan: @()) |
@('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 |
Profiller ada göre aranacak ve birleşim profili oluşturma için kullanılacak konum | string: yeni profil dirine mutlak yol | Hayır (PSScriptAnalyzer modülünde varsayılan olarak compatibility_profiles dizini kullanılır |
C:\Users\me\Documents\pssaCompatProfiles |
IgnoreCommands |
Betiklerin uyumluluğunu yoksaymak için komutlar | string[]: yoksaymak için komutların adları | Hayır (varsayılan: @()) |
@('Get-ChildItem','Import-Module') |
Örnek bir yapılandırma şöyle görünebilir:
@{
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'
)
}
}
}
Bastırma
Komut uyumluluğu tanılamaları, diğer kurallarda olduğu gibi bir betik bloğunun param bloğundaki bir öznitelikle gizlenebilir.
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseCompatibleCommands', '')]
Kural yalnızca belirli komutlar için de gizlenebilir:
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseCompatibleCommands',
'Start-Service')]
Ayrıca yalnızca parametreler için de gösterilmez:
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseCompatibleCommands',
'Import-Module/FullyQualifiedName')]