Invoke-ScriptAnalyzer
Mengevaluasi skrip atau modul berdasarkan aturan praktik terbaik yang dipilih
Sintaks
Invoke-ScriptAnalyzer
[-Path] <string>
[-CustomRulePath <string[]>]
[-RecurseCustomRulePath]
[-IncludeDefaultRules]
[-ExcludeRule <string[]>]
[-IncludeRule <string[]>]
[-Severity <string[]>]
[-Recurse]
[-SuppressedOnly]
[-Fix]
[-EnableExit]
[-Settings <Object>]
[-SaveDscDependency]
[-ReportSummary]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Invoke-ScriptAnalyzer
[-Path] <string>
-IncludeSuppressed
[-CustomRulePath <string[]>]
[-RecurseCustomRulePath]
[-IncludeDefaultRules]
[-ExcludeRule <string[]>]
[-IncludeRule <string[]>]
[-Severity <string[]>]
[-Recurse]
[-Fix]
[-EnableExit]
[-Settings <Object>]
[-SaveDscDependency]
[-ReportSummary]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Invoke-ScriptAnalyzer
[-ScriptDefinition] <string>
-IncludeSuppressed
[-CustomRulePath <string[]>]
[-RecurseCustomRulePath]
[-IncludeDefaultRules]
[-ExcludeRule <string[]>]
[-IncludeRule <string[]>]
[-Severity <string[]>]
[-Recurse]
[-EnableExit]
[-Settings <Object>]
[-SaveDscDependency]
[-ReportSummary]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Invoke-ScriptAnalyzer
[-ScriptDefinition] <string>
[-CustomRulePath <string[]>]
[-RecurseCustomRulePath]
[-IncludeDefaultRules]
[-ExcludeRule <string[]>]
[-IncludeRule <string[]>]
[-Severity <string[]>]
[-Recurse]
[-SuppressedOnly]
[-EnableExit]
[-Settings <Object>]
[-SaveDscDependency]
[-ReportSummary]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Deskripsi
Invoke-ScriptAnalyzer
mengevaluasi skrip atau file modul (.ps1
, .psm1
, dan .psd1
file) berdasarkan kumpulan aturan praktik terbaik dan mengembalikan objek yang mewakili pelanggaran aturan. Ini juga termasuk aturan khusus untuk menganalisis sumber daya DSC.
Invoke-ScriptAnalyzer
dilengkapi dengan seperangkat aturan bawaan. Secara default, ia menggunakan semua aturan. Anda dapat menggunakan parameter IncludeRule dan ExcludeRule untuk memilih aturan yang Anda inginkan. Anda dapat menggunakan Get-ScriptAnalyzerRule
cmdlet untuk memeriksa dan memilih aturan yang ingin Anda sertakan atau kecualikan dari evaluasi.
Anda juga dapat menggunakan aturan yang dikustomisasi yang Anda tulis di skrip PowerShell, atau mengompilasi dalam rakitan menggunakan C#. Aturan kustom juga dapat dipilih menggunakan parameter IncludeRule dan ExcludeRule .
Anda juga dapat menyertakan aturan dalam analisis, tetapi menekan output aturan tersebut untuk fungsi atau skrip yang dipilih. Fitur ini harus digunakan hanya jika perlu. Untuk mendapatkan aturan yang ditekan, jalankan Invoke-ScriptAnalyzer
dengan parameter SuppressedOnly .
Untuk penggunaan dalam sistem CI, EnableExit keluar dari shell dengan kode keluar yang sama dengan jumlah rekaman kesalahan.
Contoh
CONTOH 1 - Menjalankan semua aturan Penganalisis Skrip pada skrip
Invoke-ScriptAnalyzer -Path C:\Scripts\Get-LogData.ps1
CONTOH 2 - Jalankan semua aturan Penganalisis Skrip pada semua file di direktori Modul
Contoh ini menjalankan semua aturan Script Analyzer pada semua .ps1
file dan .psm1
di direktori berbasis Modules
pengguna Anda dan subdirektorinya.
Invoke-ScriptAnalyzer -Path $home\Documents\WindowsPowerShell\Modules -Recurse
CONTOH 3 - Menjalankan satu aturan pada modul
Contoh ini hanya menjalankan aturan PSAvoidUsingPositionalParameters pada file di PSDiagnostics
folder modul. Anda dapat menggunakan perintah seperti ini untuk menemukan semua instans pelanggaran aturan tertentu.
Invoke-ScriptAnalyzer -Path C:\Windows\System32\WindowsPowerShell\v1.0\Modules\PSDiagnostics -IncludeRule PSAvoidUsingPositionalParameters
CONTOH 4 - Jalankan semua aturan kecuali dua pada modul Anda
Contoh ini menjalankan semua aturan kecuali untuk PSAvoidUsingCmdletAliases dan PSAvoidUsingInternalURLs pada .ps1
file dan .psm1
di MyModules
direktori dan di subdirektorinya.
Invoke-ScriptAnalyzer -Path C:\ps-test\MyModule -Recurse -ExcludeRule PSAvoidUsingCmdletAliases, PSAvoidUsingInternalURLs
CONTOH 5 - Jalankan Penganalisis Skrip dengan aturan kustom
Contoh ini menjalankan Script Analyzer dengan Test-Script.ps1
aturan dan aturan standar di C:\CommunityAnalyzerRules
jalur.
Invoke-ScriptAnalyzer -Path D:\test_scripts\Test-Script.ps1 -CustomRulePath C:\CommunityAnalyzerRules -IncludeDefaultRules
CONTOH 6 - Jalankan hanya aturan yang merupakan tingkat keparahan Kesalahan dan memiliki nama sumber PSDSC
$DSCError = Get-ScriptAnalyzerRule -Severity Error | Where SourceName -eq PSDSC
$Path = "$home\Documents\WindowsPowerShell\Modules\MyDSCModule"
Invoke-ScriptAnalyzerRule -Path $Path -IncludeRule $DSCError -Recurse
CONTOH 7 - Menyembunyikan pelanggaran aturan
Contoh ini menunjukkan cara menekan pelaporan pelanggaran aturan dalam fungsi dan cara menemukan pelanggaran aturan yang ditekan.
Contoh menggunakan SuppressMessageAttribute
atribut untuk menekan aturan PSUseSingularNouns dan PSAvoidUsingCmdletAliases untuk Get-Widgets
fungsi dalam Get-Widgets.ps1
skrip.
Anda dapat menggunakan atribut ini untuk menekan aturan untuk modul, skrip, kelas, fungsi, parameter, atau baris.
Perintah pertama menjalankan Script Analyzer pada file skrip yang berisi fungsi . Output melaporkan pelanggaran aturan. Meskipun lebih banyak aturan dilanggar, aturan yang ditekan tidak dilaporkan.
function Get-Widgets
{
[CmdletBinding()]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseSingularNouns", "")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSAvoidUsingCmdletAliases", "", Justification="Resolution in progress.")]
Param()
dir $pshome
...
}
Invoke-ScriptAnalyzer -Path .\Get-Widgets.ps1
RuleName Severity FileName Line Message
-------- -------- -------- ---- -------
PSProvideCommentHelp Information ManageProf 14 The cmdlet 'Get-Widget' does not have a help comment.
iles.psm1
Invoke-ScriptAnalyzer -Path .\Get-Widgets.ps1 -SuppressedOnly
Rule Name Severity File Name Line Justification
--------- -------- --------- ---- -------------
PSAvoidUsingCmdletAliases Warning ManageProf 21 Resolution in progress.
iles.psm1
PSUseSingularNouns Warning ManageProf 14
iles.psm1
Perintah kedua menggunakan parameter SuppressedOnly untuk melaporkan pelanggaran aturan yang merupakan file skrip yang ditekan.
CONTOH 8 - Menganalisis file skrip menggunakan definisi profil
Dalam contoh ini, kami membuat profil Script Analyzer dan menyimpannya dalam ScriptAnalyzerProfile.txt
file di direktori saat ini. Kami menjalankan Invoke-ScriptAnalyzer
pada file modul BitLocker . Nilai parameter Profil adalah jalur ke profil Script Analyzer.
# In .\ScriptAnalyzerProfile.txt
@{
Severity = @('Error', 'Warning')
IncludeRules = 'PSAvoid*'
ExcludeRules = '*WriteHost'
}
Invoke-ScriptAnalyzer -Path $pshome\Modules\BitLocker -Profile .\ScriptAnalyzerProfile.txt
Jika Anda menyertakan parameter yang bertentangan dalam Invoke-ScriptAnalyzer
perintah, seperti -Severity Error
, cmdlet menggunakan nilai profil dan mengabaikan parameter .
CONTOH 9 - Menganalisis skrip yang disimpan sebagai string
Contoh ini menggunakan parameter ScriptDefinition untuk menganalisis fungsi di baris perintah. String fungsi diapit dalam tanda kutip.
Invoke-ScriptAnalyzer -ScriptDefinition "function Get-Widgets {Write-Host 'Hello'}"
RuleName Severity FileName Line Message
-------- -------- -------- ---- -------
PSAvoidUsingWriteHost Warning 1 Script
because
there i
suppres
Write-O
PSUseSingularNouns Warning 1 The cmd
noun sh
Saat Anda menggunakan parameter ScriptDefinition , properti FileName dari objek DiagnosticRecord adalah $null
.
Parameter
-Confirm
Meminta Anda mengonfirmasi sebelum menjalankan cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CustomRulePath
Masukkan jalur ke file yang menentukan aturan atau direktori yang berisi file yang menentukan aturan.
Karakter kartubebas didukung. Ketika CustomRulePath ditentukan, hanya aturan kustom yang ditemukan di jalur yang ditentukan yang digunakan untuk analisis. Jika Invoke-ScriptAnalyzer
tidak dapat menemukan aturan di , aturan standar akan dijalankan tanpa pemberitahuan.
Untuk menambahkan aturan yang ditentukan dalam subdirektori jalur, gunakan parameter RecurseCustomRulePath . Untuk menyertakan aturan bawaan, tambahkan parameter IncludeDefaultRules .
Type: | String[] |
Aliases: | CustomizedRulePath |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-EnableExit
Setelah menyelesaikan analisis, parameter ini keluar dari sesi PowerShell dan mengembalikan kode keluar yang sama dengan jumlah rekaman kesalahan. Ini dapat berguna dalam alur integrasi berkelanjutan (CI).
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ExcludeRule
Menghilangkan aturan yang ditentukan dari pengujian Script Analyzer. Karakter kartubebas didukung.
Masukkan daftar nama aturan yang dipisahkan koma, variabel yang berisi nama aturan, atau perintah yang mendapatkan nama aturan. Anda juga dapat menentukan daftar aturan yang dikecualikan dalam file profil Script Analyzer. Anda dapat mengecualikan aturan dan aturan standar dalam jalur aturan kustom.
Saat Anda mengecualikan aturan, aturan tidak berjalan pada salah satu file di jalur. Untuk mengecualikan aturan pada baris, parameter, fungsi, skrip, atau kelas tertentu, sesuaikan parameter Jalur atau tekan aturan. Untuk informasi tentang menekan aturan, lihat contohnya.
Jika aturan ditentukan dalam koleksi ExcludeRule dan IncludeRule , aturan dikecualikan.
Type: | String[] |
Position: | Named |
Default value: | All rules are included. |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Fix
Memperbaiki peringatan tertentu yang berisi perbaikan di DiagnosticRecord mereka.
Saat Anda menggunakan Perbaikan, Invoke-ScriptAnalyzer
menerapkan perbaikan sebelum menjalankan analisis. Pastikan Anda memiliki cadangan file saat menggunakan parameter ini. Ini mencoba mempertahankan pengodean file tetapi masih ada beberapa kasus di mana pengodean dapat berubah.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-IncludeDefaultRules
Panggil aturan default bersama dengan aturan Kustom.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-IncludeRule
Hanya menjalankan aturan yang ditentukan dalam pengujian Script Analyzer. Secara default, PSScriptAnalyzer menjalankan semua aturan.
Masukkan daftar nama aturan yang dipisahkan koma, variabel yang berisi nama aturan, atau perintah yang mendapatkan nama aturan. Karakter kartubebas didukung. Anda juga dapat menentukan nama aturan dalam file profil Script Analyzer.
Saat Anda menggunakan parameter CustomizedRulePath , Anda dapat menggunakan parameter ini untuk menyertakan aturan dan aturan standar di jalur aturan kustom.
Jika aturan ditentukan dalam koleksi ExcludeRule dan IncludeRule , aturan dikecualikan.
Parameter Tingkat Keparahan lebih diutamakan daripada IncludeRule. Misalnya, jika Tingkat Keparahan adalah Error
, Anda tidak dapat menggunakan IncludeRule untuk menyertakan Warning
aturan.
Type: | String[] |
Position: | Named |
Default value: | All rules are included. |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-IncludeSuppressed
Sertakan diagnostik yang ditekan dalam output.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Menentukan jalur ke skrip atau modul yang akan dianalisis. Karakter kartubebas didukung.
Masukkan jalur ke skrip (.ps1
) atau file modul (.psm1
) atau ke direktori yang berisi skrip atau modul. Jika direktori berisi jenis file lain, file akan diabaikan.
Untuk menganalisis file yang tidak berada di direktori akar jalur yang ditentukan, gunakan karakter kartubebas (C:\Modules\MyModule\*
) atau parameter Berulang .
Type: | String |
Aliases: | PSPath |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-Recurse
Menjalankan Script Analyzer pada file di direktori Jalur dan semua subdirektori secara rekursif.
Pengulangan hanya berlaku untuk nilai parameter Jalur. Untuk mencari CustomRulePath secara rekursif, gunakan parameter RecurseCustomRulePath .
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RecurseCustomRulePath
Menambahkan aturan yang ditentukan dalam subdirektori lokasi CustomRulePath . Secara default, Invoke-ScriptAnalyzer
hanya menggunakan aturan kustom yang ditentukan dalam file atau direktori yang ditentukan. Untuk menyertakan aturan bawaan, gunakan parameter IncludeDefaultRules .
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ReportSummary
Tulis ringkasan pelanggaran yang ditemukan kepada host.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SaveDscDependency
Mengatasi dependensi sumber daya DSC.
Ketika Invoke-ScriptAnalyzer
dijalankan dengan parameter ini, ia mencari instans Import-DSCResource -ModuleName <somemodule>
. Jika <somemodule>
tidak dapat ditemukan dengan mencari $env:PSModulePath
, Invoke-ScriptAnalyzer
mengembalikan kesalahan penguraian. Kesalahan ini disebabkan oleh pengurai PowerShell tidak dapat menemukan simbol untuk <somemodule>
.
Jika Invoke-ScriptAnalyzer
menemukan modul di Galeri PowerShell, modul yang hilang akan diunduh ke jalur sementara. Jalur sementara kemudian ditambahkan ke $env:PSModulePath
selama pemindaian.
Lokasi sementara dapat ditemukan di $LOCALAPPDATA/PSScriptAnalyzer/TempModuleDir
.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ScriptDefinition
Menjalankan analisis pada perintah, fungsi, atau ekspresi dalam string. Anda dapat menggunakan fitur ini untuk menganalisis pernyataan, ekspresi, dan fungsi, terlepas dari konteks skripnya.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Settings
Jalur ke file yang berisi profil yang ditentukan pengguna atau objek hashtable yang berisi pengaturan untuk ScriptAnalyzer.
Invoke-ScriptAnalyzer
Berjalan dengan parameter dan nilai yang ditentukan dalam file atau hashtable.
Jika jalur atau konten file atau hashtable tidak valid, jalur akan diabaikan. Parameter dan nilai dalam profil lebih diutamakan daripada parameter dan nilai yang sama yang ditentukan pada baris perintah.
File profil Script Analyzer adalah file teks yang berisi hashtable dengan satu atau beberapa kunci berikut:
- CustomRulePath
- ExcludeRules
- IncludeDefaultRules
- IncludeRules
- RecurseCustomRulePath
- Aturan
- Tingkat keparahan
Kunci dan nilai dalam profil ditafsirkan seolah-olah itu adalah parameter standar dan nilai Invoke-ScriptAnalyzer
, mirip dengan percikan. Untuk informasi selengkapnya, lihat about_Splatting.
Type: | Object |
Aliases: | Profile |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Severity
Setelah menjalankan Script Analyzer dengan semua aturan, parameter ini memilih pelanggaran aturan dengan tingkat keparahan yang ditentukan.
Nilai yang valid adalah:
- Kesalahan
- Peringatan
- Informasi.
Anda dapat menentukan satu atau lebih nilai keparahan.
Parameter memfilter pelanggaran aturan hanya setelah menjalankan semua aturan. Untuk memfilter aturan secara efisien, gunakan Get-ScriptAnalyzerRule
untuk memilih aturan yang ingin Anda jalankan.
Parameter Tingkat Keparahan lebih diutamakan daripada IncludeRule. Misalnya, jika Tingkat Keparahan adalah Error
, Anda tidak dapat menggunakan IncludeRule untuk menyertakan Warning
aturan.
Type: | String[] |
Position: | Named |
Default value: | All rule violations |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SuppressedOnly
Mengembalikan pelanggaran hanya untuk aturan yang ditekan.
Mengembalikan objek SuppressedRecord (Microsoft.Windows.PowerShell.ScriptAnalyzer.Generic.SuppressedRecord).
Untuk menekan aturan, gunakan SuppressMessageAttribute. Untuk bantuan, lihat contohnya.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Menunjukkan yang akan terjadi jika cmdlet dijalankan. Cmdlet tidak dijalankan.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Input
None
Anda tidak dapat menyalurkan input ke cmdlet ini.
Output
Microsoft.Windows.PowerShell.ScriptAnalyzer.Generic.DiagnosticRecord
Secara default, Invoke-ScriptAnalyzer
mengembalikan satu objek DiagnosticRecord untuk setiap pelanggaran aturan.
Microsoft.Windows.PowerShell.ScriptAnalyzer.Generic.SuppressedRecord
Jika Anda menggunakan parameter SuppressedOnly , Invoke-ScriptAnalyzer
sebaliknya mengembalikan objek SuppressedRecord .
Link Terkait
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