Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Tingkat Keparahan : Peringatan
Deskripsi
Aturan ini mengidentifikasi perintah yang tidak tersedia pada 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>
Mana:
-
<os-name>: Nama sistem operasi PowerShell sedang berjalan. Di 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 iniframeworkataucore).
Misalnya:
-
win-4_x64_10.0.18312.0_5.1.18312.1000_x64_4.0.30319.42000_frameworkadalah PowerShell 5.1 yang berjalan di Windows 10 Enterprise (build 18312) untuk x64. -
win-4_x64_10.0.18312.0_6.1.2_x64_4.0.30319.42000_coreadalah PowerShell 6.1.2 yang berjalan pada sistem operasi yang sama. -
ubuntu_x64_18.04_6.2.0_x64_4.0.30319.42000_coreadalah PowerShell 6.2.0 yang berjalan di Ubuntu 18.04.
Beberapa platform dilengkapi 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 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 |
Profil lain dapat ditemukan direpositori 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 memiliki.jsonditambahkan 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 $PSScriptRoot/compatibility_profiles (di mana $PSScriptRoot di sini mengacu pada direktori yang berisi PSScriptAnalyzer.psd1).
Analisis kompatibilitas membandingkan perintah yang digunakan untuk profil target dan profil 'union' (berisi semua perintah yang tersedia di profil apa pun di dir profil). Jika perintah tidak ada di profil gabungan, perintah diasumsikan dibuat dan diabaikan secara lokal. Jika tidak, jika perintah ada di profil serikat tetapi tidak ada dalam target, itu dianggap tidak kompatibel dengan target tersebut.
Pengaturan konfigurasi
| Kunci konfigurasi | Arti | 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 menggunakan untuk pembuatan profil gabungan | string: jalur absolut ke dir profil baru | Tidak (default ke direktori compatibility_profiles dalam modul PSScriptAnalyzer |
C:\Users\me\Documents\pssaCompatProfiles |
IgnoreCommands |
Perintah untuk mengabaikan kompatibilitas dalam skrip | string[]: nama perintah yang akan diabaikan | Tidak (default: @()) |
@('Get-ChildItem','Import-Module') |
Contoh konfigurasi mungkin terlihat seperti:
@{
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'
)
}
}
}
Penindasan
Diagnostik kompatibilitas perintah dapat ditekan dengan atribut pada blok param blok skrip seperti dengan aturan lain.
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseCompatibleCommands', '')]
Aturan juga dapat ditekan hanya untuk perintah tertentu:
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseCompatibleCommands',
'Start-Service')]
Dan juga ditekan hanya untuk parameter:
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseCompatibleCommands',
'Import-Module/FullyQualifiedName')]