PowerShell スクリプト作成
はじめに
PowerShell は強力なコマンドラインスクリプト言語であり、対話的にコマンドを実行できるだけでなく、コマンドをスクリプトファイルにまとめて複雑な自動化タスクを実現できます。
この記事では、PowerShell スクリプト開発の基礎スキルを段階的に習得できます。以下の内容を含みます:
- 作成方法と実行方法
.ps1スクリプト - 関数の定義方法と使用方法
- モジュール化開発を行い、スクリプトロジックを再利用する方法
一、PowerShell スクリプト入門
スクリプトファイルの作成(.ps1)
PowerShell スクリプトファイルは.ps1を拡張子とするプレーンテキストファイルで、実行する一連の PowerShell コマンドが含まれています。
例:hello.ps1
# hello.ps1 Write-Output "Hello from PowerShell script!"
任意のテキストエディタ(VS Code 推奨)で作成できます。.ps1ファイル。
実行ポリシー(Execution Policy)
Windows はセキュリティ上の理由から、デフォルトではスクリプトの実行が許可されていません。実行ポリシーを設定する必要があります。
現在のポリシーを確認する:
Get-ExecutionPolicy
ローカルスクリプトの実行を一時的に許可する設定:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
RemoteSigned:ローカルスクリプトは署名なしで実行できますが、ダウンロードしたスクリプトは信頼できる発行元による署名が必要です。
スクリプトの実行方法
コマンドラインで実行:
.\hello.ps1
PowerShell 実行プログラムを指定して実行:
powershell.exe -File .\hello.ps1 pwsh.exe -File .\hello.ps1 # PowerShell 7+
右クリック「PowerShell で実行」(ポリシー設定と併用する必要があります)
パラメータの受け渡しと処理
スクリプト内で外部パラメータを受け取る方法を定義できます:
例:パラメータ付きスクリプト greet.ps1
param (
[string]$name,
[int]$age
)
Write-Output "你好,$name,你的年龄是 $age 岁。"
実行時にパラメータを渡す:
.\greet.ps1 -name "小明" -age 18
デフォルト値とパラメータ検証にも対応しています:
param (
[Parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[string]$City = "北京"
)
二、関数の使用
関数の定義と呼び出し
function Say-Hello {
Write-Output "Hello from function"
}
Say-Hello
パラメータの宣言と検証
関数にはパラメータを付けることもでき、paramparamブロックで定義します:
function Add-Numbers {
param (
[int]$a,
[int]$b
)
return $a + $b
}
Add-Numbers -a 3 -b 5 # 输出 8
位置パラメータを使用することもできます:
function Add {
param ($x, $y)
$x + $y
}
Add 10 20
戻り値の処理
PowerShell 関数はデフォルトですべての出力を返します(Write-Output)。
return の使用をお勧めしますreturn明示的に返す:
function Get-Square {
param ([int]$num)
return $num * $num
}
$result = Get-Square -num 6
Write-Output $result
関数のスコープ
関数内で定義した変数は、デフォルトではローカル変数です:
function Demo-Scope {
$message = "Hello"
}
Demo-Scope
Write-Output $message # 无法访问
外部から変数にアクセスする場合は、スコーププレフィックスを使用できます:
$global:x = 5
三、モジュール化開発
PowerShell モジュールとは
モジュール(Module)は、複数の関数、スクリプト、リソースの集まりであり、コードを整理して再利用を容易にするためのものです。
一般的なモジュールの種類:
- スクリプトモジュール(
.psm1) - マニフェストモジュール(
.psd1) - バイナリモジュール(.dll)
モジュールのインポートと使用
Import-Module を使用してImport-Moduleモジュールをインポートします:
Import-Module MyModule.psm1
読み込み済みのモジュールを確認する:
Get-Module
モジュール内の関数を呼び出す:
Say-Hello
PowerShell Gallery の概要
PowerShell GalleryPowerShell 公式のモジュールリポジトリであり、数千のモジュールをダウンロードしてインストールできます。
モジュールのインストール例:
Install-Module -Name PSReadLine
モジュールの更新:
Update-Module PSReadLine
簡単なカスタムモジュールの作成
MyModule.psm1 ファイルを新規作成し、関数を追加します:
# MyModule.psm1
function Greet-User {
param ([string]$name)
Write-Output "欢迎你,$name"
}
スクリプト内でインポートして呼び出す:
Import-Module .\MyModule.psm1 Greet-User -name "小红"
ヒント:モジュールファイルを
$env:PSModulePath内のパスに配置すると、システムが自動的に認識します。
四、まとめ
| 内容 | 説明 |
|---|---|
.ps1.ps1 ファイル |
PowerShell スクリプトの拡張子で、コマンドを格納します |
param |
スクリプト/関数のパラメータを定義するために使用します |
Set-ExecutionPolicy |
スクリプトの実行を許可するかどうかを制御します |
| 関数 | コードをカプセル化して再利用し、構造の明確さを向上させます |
モジュール(.psm1) |
複数の関数を整理し、移植性を実現します |
| PowerShell Gallery | 公式モジュールリポジトリで、サードパーティ製モジュールをダウンロードできます |