UseCompatibleTypes
Tingkat Keparahan: Peringatan
Deskripsi
Aturan ini mengidentifikasi jenis yang tidak tersedia (dimuat secara default) di platform PowerShell yang ditargetkan.
Platform PowerShell diidentifikasi dengan nama dalam format berikut:
<os-name>_<os-arch>_<os-version>_<ps-version>_<ps-arch>_<dotnet-version>_<dotnet-edition>
Di mana:
<os-name>
: Nama sistem operasi PowerShell sedang berjalan. Pada Windows, ini termasuk nomor SKU. Di Linux, ini adalah nama distribusi.<os-arch>
: Arsitektur mesin yang dijalankan sistem operasi (ini biasanyax64
).<os-version>
: Versi sistem operasi yang dilaporkan sendiri (di Linux, ini adalah versi distribusi).<ps-version>
: Versi PowerShell (dari$PSVersionTable.PSVersion
).<ps-arch>
: Arsitektur mesin dari proses PowerShell.<dotnet-version>
: Versi yang dilaporkan dari PowerShell runtime .NET berjalan pada (dariSystem.Environment.Version
).<dotnet-edition>
: PowerShell rasa runtime .NET berjalan pada (saat iniframework
ataucore
).
Contohnya:
win-4_x64_10.0.18312.0_5.1.18312.1000_x64_4.0.30319.42000_framework
adalah PowerShell 5.1 yang berjalan pada Windows 10 Enterprise (build 18312) untuk x64.win-4_x64_10.0.18312.0_6.1.2_x64_4.0.30319.42000_core
adalah PowerShell 6.1.2 yang berjalan pada sistem operasi yang sama.ubuntu_x64_18.04_6.2.0_x64_4.0.30319.42000_core
adalah PowerShell 6.2.0 yang berjalan di Ubuntu 18.04.
Beberapa platform dibundel dengan PSScriptAnalyzer sebagai file JSON, dinamai dengan cara ini untuk penargetan dalam konfigurasi Anda.
Platform yang dibundel secara default adalah:
Versi PowerShell | Sistem Operasi | 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 | Server Windows 2016 | win-8_x64_10.0.14393.0_5.1.14393.2791_x64_4.0.30319.42000_framework |
5.1 | Server Windows 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 | Server Windows 2016 | win-8_x64_10.0.14393.0_6.2.4_x64_4.0.30319.42000_core |
6.2 | Server Windows 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 | Server Windows 2016 | win-8_x64_10.0.14393.0_7.0.0_x64_3.1.2_core |
7.0 | Server Windows 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 |
Profil lain dapat ditemukan di repositori GitHub.
Anda juga dapat membuat profil platform Anda sendiri menggunakan modul PSCompatibilityCollector.
Pengaturan profil kompatibilitas mengambil daftar platform untuk ditargetkan di bawah TargetProfiles
. Platform dapat ditentukan sebagai:
- Nama platform (seperti
ubuntu_x64_18.04_6.1.1_x64_4.0.30319.42000_core
), yang akan.json
ditambahkan ke akhir dan dicari di direktori profil default. - Nama file (seperti
my_custom_platform.json
), yang akan dicari di direktori profil default. - Jalur absolut ke file (seperti
D:\PowerShellProfiles\TargetMachine.json
).
Direktori profil default berada di bawah modul PSScriptAnalzyer di (di mana $PSScriptRoot
di $PSScriptRoot/PSCompatibilityCollector/profiles
sini mengacu pada direktori yang berisi PSScriptAnalyzer.psd1
).
Analisis kompatibilitas membandingkan jenis yang digunakan untuk profil target dan profil 'gabungan' (berisi semua jenis yang tersedia di profil apa pun dir profil). Jika jenis tidak ada di profil gabungan, diasumsikan dibuat dan diabaikan secara lokal. Jika tidak, jika jenis ada di profil serikat tetapi tidak ada dalam target, itu dianggap tidak kompatibel dengan target tersebut.
Pengaturan konfigurasi
Kunci Konfigurasi | Makna | Nilai yang diterima | Wajib | Contoh |
---|---|---|---|---|
Enable |
Mengaktifkan aturan | bool ($true /$false ) |
Tidak (default: $false ) |
$true |
TargetProfiles |
Daftar profil PowerShell yang akan ditargetkan | string[]: jalur absolut ke file profil atau nama profil di direktori profil | Tidak (default: @() ) |
@('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 |
Lokasi untuk mencari profil berdasarkan nama dan digunakan untuk pembuatan profil gabungan | string: jalur absolut ke dir profil baru | Tidak (default ke compatibility_profiles direktori dalam modul PSScriptAnalyzer |
C:\Users\me\Documents\pssaCompatProfiles |
IgnoreTypes |
Nama lengkap jenis atau jenis akselerator untuk mengabaikan kompatibilitas dalam skrip | string[]: nama jenis yang akan diabaikan | Tidak (default: @() ) |
@('System.Collections.ArrayList','string') |
Contoh konfigurasi mungkin terlihat seperti:
@{
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'
)
}
}
}
Atau, Anda dapat menyediakan objek pengaturan sebagai berikut:
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'
Supresi
Diagnostik kompatibilitas perintah dapat ditekan dengan atribut pada param
blok blok skrip seperti halnya aturan lain.
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseCompatibleTypes', '')]
Aturan juga dapat ditekan hanya untuk jenis tertentu:
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseCompatibleTypes', 'System.Management.Automation.Security.SystemPolicy')]
Dan juga ditekan hanya untuk anggota jenis:
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseCompatibleCommands', 'System.Management.Automation.LanguagePrimitives/ConvertTypeNameToPSTypeName')]
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk