about_Scripts
Deskripsi singkat
Menjelaskan cara menjalankan dan menulis skrip di PowerShell.
Deskripsi panjang
Skrip adalah file teks biasa yang berisi satu atau beberapa perintah PowerShell.
Skrip PowerShell memiliki .ps1
ekstensi file.
Menjalankan skrip sangat mirip dengan menjalankan cmdlet. Anda mengetik jalur dan nama file skrip dan menggunakan parameter untuk mengirimkan data dan mengatur opsi. Anda bisa menjalankan skrip pada komputer Anda atau dalam sesi jarak jauh pada komputer lain.
Menulis skrip menyimpan perintah untuk digunakan nanti dan memudahkan untuk berbagi dengan orang lain. Yang terpenting, ini memungkinkan Anda menjalankan perintah hanya dengan mengetik jalur skrip dan nama file. Skrip bisa sesingkat satu perintah dalam file atau selektivitas program yang kompleks.
Skrip memiliki fitur tambahan, seperti #Requires
komentar khusus, penggunaan parameter, dukungan untuk bagian data, dan penandatanganan digital untuk keamanan.
Anda juga dapat menulis topik Bantuan untuk skrip dan untuk fungsi apa pun dalam skrip.
Cara menjalankan skrip
Sebelum dapat menjalankan skrip di Windows, Anda perlu mengubah kebijakan eksekusi PowerShell default. Kebijakan eksekusi tidak berlaku untuk PowerShell yang berjalan di platform non-Windows.
Kebijakan eksekusi default, Restricted
, mencegah semua skrip berjalan, termasuk skrip yang Anda tulis di komputer lokal. Untuk informasi selengkapnya, lihat about_Execution_Policies.
Kebijakan eksekusi disimpan di registri, jadi Anda hanya perlu mengubahnya sekali di setiap komputer.
Untuk mengubah kebijakan eksekusi, gunakan prosedur berikut.
Pada command prompt, ketik:
Set-ExecutionPolicy AllSigned
or
Set-ExecutionPolicy RemoteSigned
Perubahan segera berlaku.
Untuk menjalankan skrip, ketik nama lengkap dan jalur lengkap ke file skrip.
Misalnya, untuk menjalankan skrip Get-ServiceLog.ps1 di direktori C:\Scripts, ketik:
C:\Scripts\Get-ServiceLog.ps1
Untuk menjalankan skrip di direktori saat ini, ketik jalur ke direktori saat ini, atau gunakan titik untuk mewakili direktori saat ini, diikuti dengan garis miring terbelakang jalur (.\
).
Misalnya, untuk menjalankan skrip ServicesLog.ps1 di direktori lokal, ketik:
.\Get-ServiceLog.ps1
Jika skrip memiliki parameter, ketik parameter dan nilai parameter setelah nama file skrip.
Misalnya, perintah berikut menggunakan parameter ServiceName dari skrip Get-ServiceLog untuk meminta log aktivitas layanan WinRM.
.\Get-ServiceLog.ps1 -ServiceName WinRM
Sebagai fitur keamanan, PowerShell tidak menjalankan skrip saat Anda mengklik dua kali ikon skrip di File Explorer atau ketika Anda mengetik nama skrip tanpa jalur lengkap, bahkan ketika skrip berada di direktori saat ini. Untuk informasi selengkapnya tentang menjalankan perintah dan skrip di PowerShell, lihat about_Command_Precedence.
Menjalankan dengan PowerShell
Dimulai di PowerShell 3.0, Anda dapat menjalankan skrip dari File Explorer.
Untuk menggunakan fitur "Jalankan dengan PowerShell":
Jalankan File Explorer, klik kanan nama file skrip lalu pilih "Jalankan dengan PowerShell".
Fitur "Jalankan dengan PowerShell" dirancang untuk menjalankan skrip yang tidak memiliki parameter yang diperlukan dan tidak mengembalikan output ke prompt perintah.
Untuk informasi selengkapnya, lihat about_Run_With_PowerShell.
Menjalankan skrip pada komputer lain
Untuk menjalankan skrip pada satu atau beberapa komputer jarak jauh, gunakan parameter FilePath cmdlet Invoke-Command
.
Masukkan jalur dan nama file skrip sebagai nilai parameter FilePath . Skrip harus berada di komputer lokal atau di direktori yang dapat diakses komputer lokal.
Perintah berikut menjalankan Get-ServiceLog.ps1
skrip pada komputer jarak jauh bernama Server01 dan Server02.
Invoke-Command -ComputerName Server01,Server02 -FilePath `
C:\Scripts\Get-ServiceLog.ps1
Mendapatkan bantuan untuk skrip
Cmdlet Get-Help mendapatkan topik bantuan untuk skrip serta untuk cmdlet dan jenis perintah lainnya. Untuk mendapatkan topik bantuan untuk skrip, ketik Get-Help
diikuti dengan jalur dan nama file skrip. Jika jalur skrip ada di variabel lingkungan Anda Path
, Anda dapat menghilangkan jalur.
Misalnya, untuk mendapatkan bantuan untuk skrip ServicesLog.ps1, ketik:
get-help C:\admin\scripts\ServicesLog.ps1
Cara menulis skrip
Skrip dapat berisi perintah PowerShell yang valid, termasuk perintah tunggal, perintah yang menggunakan alur, fungsi, dan struktur kontrol seperti pernyataan If dan Untuk perulangan.
Untuk menulis skrip, buka file baru di editor teks, ketik perintah, dan simpan dalam file dengan nama file yang valid dengan .ps1
ekstensi file.
Contoh berikut adalah skrip sederhana yang mendapatkan layanan yang berjalan pada sistem saat ini dan menyimpannya ke file log. Nama file log dibuat dari tanggal saat ini.
$date = (get-date).dayofyear
get-service | out-file "$date.log"
Untuk membuat skrip ini, buka editor teks atau editor skrip, ketik perintah ini, lalu simpan dalam file bernama ServiceLog.ps1
.
Parameter dalam skrip
Untuk menentukan parameter dalam skrip, gunakan pernyataan Param. Pernyataan Param
harus menjadi pernyataan pertama dalam skrip, kecuali untuk komentar dan pernyataan apa pun #Require
.
Parameter skrip berfungsi seperti parameter fungsi. Nilai parameter tersedia untuk semua perintah dalam skrip. Semua fitur parameter fungsi, termasuk atribut Parameter dan argumen bernamanya, juga valid dalam skrip.
Saat menjalankan skrip, pengguna skrip mengetik parameter setelah nama skrip.
Contoh berikut menunjukkan Test-Remote.ps1
skrip yang memiliki parameter ComputerName . Kedua fungsi skrip dapat mengakses nilai parameter ComputerName .
param ($ComputerName = $(throw "ComputerName parameter is required."))
function CanPing {
$error.clear()
$tmp = test-connection $computername -erroraction SilentlyContinue
if (!$?)
{write-host "Ping failed: $ComputerName."; return $false}
else
{write-host "Ping succeeded: $ComputerName"; return $true}
}
function CanRemote {
$s = new-pssession $computername -erroraction SilentlyContinue
if ($s -is [System.Management.Automation.Runspaces.PSSession])
{write-host "Remote test succeeded: $ComputerName."}
else
{write-host "Remote test failed: $ComputerName."}
}
if (CanPing $computername) {CanRemote $computername}
Untuk menjalankan skrip ini, ketik nama parameter setelah nama skrip. Contohnya:
C:\PS> .\test-remote.ps1 -computername Server01
Ping succeeded: Server01
Remote test failed: Server01
Untuk informasi selengkapnya tentang pernyataan Param dan parameter fungsi, lihat about_Functions dan about_Functions_Advanced_Parameters.
Menulis bantuan untuk skrip
Anda dapat menulis topik bantuan untuk skrip dengan menggunakan salah satu dari dua metode berikut:
Bantuan Berbasis Komentar untuk Skrip
Buat topik Bantuan dengan menggunakan kata kunci khusus di komentar. Untuk membuat Bantuan berbasis komentar untuk skrip, komentar harus ditempatkan di awal atau akhir file skrip. Untuk informasi selengkapnya tentang Bantuan berbasis komentar, lihat about_Comment_Based_Help.
Bantuan Berbasis XML untuk Skrip
Buat topik Bantuan berbasis XML, seperti jenis yang biasanya dibuat untuk cmdlet. Bantuan berbasis XML diperlukan jika Anda menerjemahkan topik Bantuan ke dalam beberapa bahasa.
Untuk mengaitkan skrip dengan topik Bantuan berbasis XML, gunakan . Kata kunci komentar Bantuan ExternalHelp. Untuk informasi selengkapnya tentang kata kunci ExternalHelp, lihat about_Comment_Based_Help. Untuk informasi selengkapnya tentang bantuan berbasis XML, lihat Cara Menulis Bantuan Cmdlet.
Mengembalikan nilai keluar
Secara default, skrip tidak mengembalikan status keluar saat skrip berakhir. Anda harus menggunakan exit
pernyataan untuk mengembalikan kode keluar dari skrip. Secara default, exit
pernyataan mengembalikan 0
. Anda dapat memberikan nilai numerik untuk mengembalikan status keluar yang berbeda. Kode keluar bukan nol biasanya menandakan kegagalan.
Pada Windows, angka apa pun antara [int]::MinValue
dan [int]::MaxValue
diperbolehkan.
Pada Unix, hanya angka positif antara [byte]::MinValue
(0) dan [byte]::MaxValue
(255) yang diizinkan. Angka negatif dalam rentang -1
through -255
secara otomatis diterjemahkan ke dalam angka positif dengan menambahkan 256. Misalnya, -2
diubah menjadi 254
.
Di PowerShell, exit
pernyataan menetapkan nilai $LASTEXITCODE
variabel. Di Windows Command Shell (cmd.exe), pernyataan keluar menetapkan nilai %ERRORLEVEL%
variabel lingkungan.
Argumen apa pun yang non-numerik atau di luar rentang khusus platform diterjemahkan ke nilai 0
.
Cakupan skrip dan sumber titik
Setiap skrip berjalan dalam cakupannya sendiri. Fungsi, variabel, alias, dan drive yang dibuat dalam skrip hanya ada dalam cakupan skrip. Anda tidak dapat mengakses item ini atau nilainya dalam cakupan tempat skrip berjalan.
Untuk menjalankan skrip dalam cakupan yang berbeda, Anda dapat menentukan cakupan, seperti Global atau Lokal, atau Anda dapat membuat sumber titik skrip.
Fitur sumber titik memungkinkan Anda menjalankan skrip dalam cakupan saat ini alih-alih dalam cakupan skrip. Saat Anda menjalankan skrip yang bersumber titik, perintah dalam skrip berjalan seolah-olah Anda telah mengetikkannya di prompt perintah. Fungsi, variabel, alias, dan drive yang dibuat skrip dibuat dalam cakupan tempat Anda bekerja. Setelah skrip berjalan, Anda dapat menggunakan item yang dibuat dan mengakses nilainya di sesi Anda.
Untuk membuat sumber titik skrip, ketik titik (.) dan spasi sebelum jalur skrip.
Contohnya:
. C:\scripts\UtilityFunctions.ps1
or
. .\UtilityFunctions.ps1
UtilityFunctions.ps1
Setelah skrip berjalan, fungsi dan variabel yang dibuat skrip ditambahkan ke cakupan saat ini.
Misalnya, UtilityFunctions.ps1
skrip membuat New-Profile
fungsi dan $ProfileName
variabel .
#In UtilityFunctions.ps1
function New-Profile
{
Write-Host "Running New-Profile function"
$profileName = split-path $profile -leaf
if (test-path $profile)
{write-error "Profile $profileName already exists on this computer."}
else
{new-item -type file -path $profile -force }
}
Jika Anda menjalankan UtilityFunctions.ps1
skrip dalam cakupan skripnya sendiri, New-Profile
fungsi dan $ProfileName
variabel hanya ada saat skrip berjalan. Saat skrip keluar, fungsi dan variabel dihapus, seperti yang ditunjukkan dalam contoh berikut.
C:\PS> .\UtilityFunctions.ps1
C:\PS> New-Profile
The term 'new-profile' is not recognized as a cmdlet, function, operable
program, or script file. Verify the term and try again.
At line:1 char:12
+ new-profile <<<<
+ CategoryInfo : ObjectNotFound: (new-profile:String) [],
+ FullyQualifiedErrorId : CommandNotFoundException
C:\PS> $profileName
C:\PS>
Saat Anda melakukan sumber skrip dan menjalankannya, skrip membuat New-Profile
fungsi dan $ProfileName
variabel dalam sesi Anda dalam cakupan Anda. Setelah skrip berjalan, Anda dapat menggunakan New-Profile
fungsi dalam sesi Anda, seperti yang ditunjukkan dalam contoh berikut.
C:\PS> . .\UtilityFunctions.ps1
C:\PS> New-Profile
Directory: C:\Users\juneb\Documents\WindowsPowerShell
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 1/14/2009 3:08 PM 0 Microsoft.PowerShellISE_profile.ps1
C:\PS> $profileName
Microsoft.PowerShellISE_profile.ps1
Untuk informasi selengkapnya tentang cakupan, lihat about_Scopes.
Skrip dalam modul
Modul adalah sekumpulan sumber daya PowerShell terkait yang dapat didistribusikan sebagai unit. Anda dapat menggunakan modul untuk mengatur skrip, fungsi, dan sumber daya lainnya. Anda juga dapat menggunakan modul untuk mendistribusikan kode Anda kepada orang lain, dan untuk mendapatkan kode dari sumber tepercaya.
Anda dapat menyertakan skrip dalam modul, atau Anda dapat membuat modul skrip, yang merupakan modul yang terdiri sepenuhnya atau terutama dari skrip dan sumber daya pendukung. Modul skrip hanyalah skrip dengan ekstensi file .psm1.
Untuk informasi selengkapnya tentang modul, lihat about_Modules.
Fitur skrip lainnya
PowerShell memiliki banyak fitur berguna yang dapat Anda gunakan dalam skrip.
#Requires
- Anda dapat menggunakan#Requires
pernyataan untuk mencegah skrip berjalan tanpa modul atau snap-in tertentu dan versi PowerShell tertentu. Untuk informasi selengkapnya, lihat about_Requires.$PSCommandPath
- Berisi jalur lengkap dan nama skrip yang sedang dijalankan. Parameter ini valid di semua skrip. Variabel otomatis ini diperkenalkan di PowerShell 3.0.$PSScriptRoot
- Berisi direktori tempat skrip dijalankan. Di PowerShell 2.0, variabel ini hanya valid dalam modul skrip (.psm1
). Dimulai di PowerShell 3.0, ini valid di semua skrip.$MyInvocation
- Variabel$MyInvocation
otomatis berisi informasi tentang skrip saat ini, termasuk informasi tentang cara memulai atau "dipanggil." Anda dapat menggunakan variabel ini dan propertinya untuk mendapatkan informasi tentang skrip saat sedang berjalan. Misalnya,$MyInvocation
. Variabel MyCommand.Path berisi jalur dan nama file skrip.$MyInvocation
. Baris berisi perintah yang memulai skrip, termasuk semua parameter dan nilai.Dimulai di PowerShell 3.0,
$MyInvocation
memiliki dua properti baru yang menyediakan informasi tentang skrip yang memanggil atau memanggil skrip saat ini. Nilai properti ini hanya diisi ketika pemanggil atau pemanggil adalah skrip.PSCommandPath berisi jalur lengkap dan nama skrip yang memanggil atau memanggil skrip saat ini.
PSScriptRoot berisi direktori skrip yang memanggil atau memanggil skrip saat ini.
$PSCommandPath
Tidak seperti variabel dan$PSScriptRoot
otomatis, yang berisi informasi tentang skrip saat ini, properti PSCommandPath dan PSScriptRoot dari$MyInvocation
variabel berisi informasi tentang skrip yang disebut skrip saat ini.Bagian data - Anda dapat menggunakan
Data
kata kunci untuk memisahkan data dari logika dalam skrip. Bagian data juga dapat mempermudah pelokalan. Untuk informasi selengkapnya, lihat about_Data_Sections dan about_Script_Internationalization.Penandatanganan Skrip - Anda dapat menambahkan tanda tangan digital ke skrip. Bergantung pada kebijakan eksekusi, Anda dapat menggunakan tanda tangan digital untuk membatasi berjalannya skrip yang dapat menyertakan perintah yang tidak aman. Untuk informasi selengkapnya, lihat about_Execution_Policies dan about_Signing.
Lihat juga
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