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 公式モジュールリポジトリで、サードパーティ製モジュールをダウンロードできます
その他の拡張