UseCompatibleTypes
Önem Derecesi Düzeyi: Uyarı
Description
Bu kural, hedeflenen PowerShell platformlarında kullanılamayan (varsayılan olarak yüklenen) türleri tanımlar.
PowerShell platformu aşağıdaki biçimdeki bir adla tanımlanır:
<os-name>_<os-arch>_<os-version>_<ps-version>_<ps-arch>_<dotnet-version>_<dotnet-edition>
Konum:
<os-name>
: PowerShell'in üzerinde çalıştığı işletim sisteminin adı. Windows'da 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ü (sürümünden$PSVersionTable.PSVersion
).<ps-arch>
: PowerShell işleminin makine mimarisi.<dotnet-version>
: PowerShell'in bildirilen .NET çalışma zamanı sürümü üzerinde (sürümündenSystem.Environment.Version
) çalışıyor.<dotnet-edition>
: .NET çalışma zamanı özelliği PowerShell üzerinde çalışıyor (şu andaframework
veyacore
).
Örnek:
win-4_x64_10.0.18312.0_5.1.18312.1000_x64_4.0.30319.42000_framework
, x64 için Windows 10 Enterprise (derleme 18312) üzerinde çalışan PowerShell 5.1'dir.win-4_x64_10.0.18312.0_6.1.2_x64_4.0.30319.42000_core
aynı 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 | ID |
---|---|---|
3.0 | Windows Server 2012 | win-8_x64_6.2.9200.0_3.0_x64_4.0.30319.42000_framework |
4.0 | Windows Server 2012R2 | 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 1809 (RS5) | win-48_x64_10.0.17763.0_5.1.17763.316_x64_4.0.30319.42000_framework |
6.2 | Windows Server 2016 | win-8_x64_10.0.14393.0_6.2.4_x64_4.0.30319.42000_core |
6.2 | Windows Server 2019 | win-8_x64_10.0.17763.0_6.2.4_x64_4.0.30319.42000_core |
6.2 | Windows 10 1809 (RS5) | win-4_x64_10.0.17763.0_6.2.4_x64_4.0.30319.42000_core |
6.2 | Ubuntu 18.04 LTS | ubuntu_x64_18.04_6.2.4_x64_4.0.30319.42000_core |
7.0 | Windows Server 2016 | win-8_x64_10.0.14393.0_7.0.0_x64_3.1.2_core |
7.0 | Windows Server 2019 | win-8_x64_10.0.17763.0_7.0.0_x64_3.1.2_core |
7.0 | Windows 10 1809 (RS5) | win-4_x64_10.0.17763.0_6.2.4_x64_3.1.2_core |
7.0 | Ubuntu 18.04 LTS | ubuntu_x64_18.04_6.2.4_x64_3.1.2_core |
Diğer profiller GitHub deposunda bulunabilir.
PSCompatibilityCollector modülünü kullanarak kendi platform profilinizi de oluşturabilirsiniz.
Uyumluluk profili ayarları altında TargetProfiles
hedeflene platformların listesini alır. Platform şu şekilde belirtilebilir:
- Sonuna eklenecek ve varsayılan profil dizininde aranacak
.json
bir platform adı (gibiubuntu_x64_18.04_6.1.1_x64_4.0.30319.42000_core
). - Varsayılan profil dizininde için aranacak bir dosya adı (gibi
my_custom_platform.json
). - Bir dosyanın mutlak yolu (gibi
D:\PowerShellProfiles\TargetMachine.json
).
Varsayılan profil dizini, konumundaki PSScriptAnalzyer modülünün $PSScriptRoot/PSCompatibilityCollector/profiles
altındadır (burada $PSScriptRoot
öğesini içeren PSScriptAnalyzer.psd1
dizine başvurur).
Uyumluluk analizi, hem hedef profil hem de 'birleşim' profili için kullanılan bir türü karşılaştırır (profil dizinindeki herhangi bir profilde kullanılabilen tüm türleri içerir). Birleşim profilinde bir tür yoksa, yerel olarak oluşturulduğu ve yoksayıldığı varsayılır. Aksi takdirde, birleşim profilinde bir tür varsa ancak bir hedefte yoksa, bu hedefle uyumsuz olduğu kabul edilir.
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 |
Ada göre profil aranacak ve birleşim profili oluşturma için kullanılacak konum | string: yeni profil dizininin mutlak yolu | Hayır (PSScriptAnalyzer modülünde varsayılan compatibility_profiles olarak dizindir) |
C:\Users\me\Documents\pssaCompatProfiles |
IgnoreTypes |
Betiklerdeki uyumluluğu yoksaymak için türlerin veya tür hızlandırıcılarının tam adları | string[]: yoksaymak için türlerin adları | Hayır (varsayılan: @() ) |
@('System.Collections.ArrayList','string') |
Örnek bir yapılandırma şöyle görünebilir:
@{
Rules = @{
PSUseCompatibleTypes = @{
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 types to not check like this, which will also ignore methods and members on it:
IgnoreTypes = @(
'System.IO.Compression.ZipFile'
)
}
}
}
Alternatif olarak, aşağıdaki gibi bir ayarlar nesnesi sağlayabilirsiniz:
PS> $settings = @{
Rules = @{
PSUseCompatibleTypes = @{
Enable = $true
TargetProfiles = @('win-48_x64_10.0.17763.0_5.1.17763.316_x64_4.0.30319.42000_framework')
}
}
}
PS> Invoke-ScriptAnalyzer -Settings $settings -ScriptDefinition '[System.Management.Automation.SemanticVersion]'1.18.0-rc1''
RuleName Severity ScriptName Line Message
-------- -------- ---------- ---- -------
PSUseCompatibleTypes Warning 1 The type 'System.Management.Automation.SemanticVersion' is
not available by default in PowerShell version
'5.1.17763.316' on platform 'Microsoft Windows 10 Pro'
Gizleme
Komut uyumluluğu tanılamaları, diğer kurallarda olduğu gibi bir betik bloğu bloğundaki param
bir öznitelikle gizlenebilir.
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseCompatibleTypes', '')]
Kural yalnızca belirli türler için de gizlenebilir:
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseCompatibleTypes', 'System.Management.Automation.Security.SystemPolicy')]
Ayrıca yalnızca tür üyeleri için de gösterilmez:
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseCompatibleCommands', 'System.Management.Automation.LanguagePrimitives/ConvertTypeNameToPSTypeName')]
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin