PS1 ファイル形式とは?
.ps1 ファイルは、Microsoft によって開発された PowerShell スクリプト言語で記述されたプレーンテキストのスクリプトです。PowerShell は 2006年11月に Windows PowerShell 1.0 としてリリースされ、.NET ランタイム上で動作するオブジェクト指向シェルに基づいて構築された、古い .bat や .cmd バッチスクリプトに代わる現代的なツールです。
スクリプトには、コマンドレット、関数、変数、および制御フロー文のシーケンスが含まれます。ファイル上部のオプションの #Requires ヘッダーは、最小 PowerShell バージョンや必要なモジュールを指定し、param() ブロックはスクリプトのパラメータを宣言します。Windows では、デフォルトで実行がブロックされています。ExecutionPolicy が Restricted に設定されているため、Set-ExecutionPolicy でポリシーを緩和するか、右クリック → «PowerShell で実行» を介して起動するまでスクリプトは実行されません。
現在、2つのアクティブなブランチが並行して存在しています:
- Windows PowerShell 5.1 - Windows 10 および 11 に組み込まれています。デフォルトのエンコーディングは UTF-16 LE で、現在はアクティブな開発は行われていません。
- PowerShell 7 (旧称 PowerShell Core) - Windows、macOS、および Linux で動作するクロスプラットフォーム版です。デフォルトは BOM なしの UTF-8 で、アクティブにメンテナンスされています。
どちらのブランチも .ps1 ファイルを同様に読み取ります。Authenticode コード署名(Set-AuthenticodeSignature 経由)は、ファイルの末尾に # SIG # Begin signature block というトレーラーを追加します。署名後にファイルを編集すると、署名は無効になります。
セキュリティと安全性
リスク: HIGHPS1 は Windows におけるスクリプトマルウェアの最大の媒介です。PowerShell はペイロードのダウンロード、UAC のバイパス、ウイルス対策ソフトの無効化、ファイルの暗号化(ランサムウェア)、データの流出を実行可能です。Windows のデフォルトの実行ポリシー (Restricted) は実行をブロックしますが、攻撃者は -ExecutionPolicy Bypass やスクリプトの Base64 エンコード (-EncodedCommand) を用いて日常的にこれを回避します。注意すべき点:Invoke-WebRequest や IEX (Invoke-Expression) を実行するスクリプト、ウイルス対策を無効化するもの、メールの添付ファイルとして届くもの。安全な慣行:実行前に必ずテキストエディタでスクリプトを確認すること。企業システムでは PowerShell スクリプトブロックログ (EventID 4104) を活用してください。信頼できる証明書で署名されたスクリプト (Set-AuthenticodeSignature) はより安全ですが、万能ではありません。
形式の詳細
概要- Adobe PostScript Level 1 ファイル (.ps) - 稀なケース:一部のシステムでは .ps1 を PowerShell スクリプトとは異なる PostScript レベル 1 ファイルに関連付けることがあります。
PS1 ファイルを開くプログラム
powershell.exe -File script.ps1 winget install Microsoft.PowerShell)からインストールします。実行:pwsh -File script.ps1 winget install Microsoft.PowerShell)からインストールします。実行:pwsh -File script.ps1 winget install Microsoft.PowerShell)からインストールします。実行:pwsh -File script.ps1 技術的詳細
詳細仕様| エンコーディング | UTF-16 LE (Windows PowerShell 5.1 / ISE デフォルト) または BOM なし UTF-8 (PowerShell 7 デフォルト) |
| バイトオーダーマーク (BOM) | ISE からは UTF-16 LE BOM (FF FE) が一般的。PowerShell 7 はデフォルトで BOM を省略 |
| コンテナ | プレーンテキスト。バイナリラッパーなし |
| MIME タイプ | application/x-powershell (text/x-powershell および text/plain も使用される) |
| スクリプト構造 | コマンドレット、関数、変数、制御フロー。オプションの #Requires および param() ブロック |
| 実行ポリシー | Windows ではデフォルトでブロック (Restricted)。Set-ExecutionPolicy または右クリックの «PowerShell で実行» が必要 |
| コード署名 | Set-AuthenticodeSignature による Authenticode。# SIG # Begin signature block がプレーンテキストのトレーラーとして追加される。ファイルの編集は署名を無効化する |
| ランタイム | .NET Framework (Windows PowerShell 5.1); .NET 5+ (PowerShell 7) |
| クロスプラットフォーム対応 | Windows, macOS, Linux - PowerShell 7 のみ。Windows PowerShell 5.1 は Windows 専用 |
| モジュール統合 | スクリプトは .psm1 モジュールファイルをドットソース形式で読み込み、.psd1 モジュールマニフェストを参照可能 |
| バージョンディレクティブ | #Requires -Version X.Y は最小 PowerShell バージョンを強制。#Requires -Modules はモジュールの可用性を強制 |
| 典型的なサイズ | 1 KB - 1 MB。ほとんどのスクリプトは 100 KB 未満 |
| 関連するスクリプト形式 | .psm1 (モジュール), .psd1 (マニフェスト), .ps1xml (型および書式データ) |
| リリース日 | November 14, 2006 (Windows PowerShell 1.0) |
| 最新バージョン | PowerShell 7.5 (2025); format itself is plain text with no version field |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | learn.microsoft.com |
PS1 の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。PS1 ファイルについて最初の質問をしてみましょう。
よくある質問
Windows で PS1 ファイルを実行するにはどうすればよいですか?
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned を実行してから再試行してください。または、ファイルを右クリック → プロパティ → «ブロックの解除» を最初に行ってください。PowerShell で «このシステムではスクリプトの実行が無効になっている» と表示されます。どうすれば直りますか?
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser を実行してください。これにより、ローカルで作成されたスクリプトと署名済みのリモートスクリプトの実行が許可されます。企業の PC では、グループポリシーによってこれが上書きされている場合があります。PS1 ファイルを開いて編集するにはどうすればよいですか?
PS1 ファイルを開いても安全ですか?
PS1 ファイルは Mac や Linux でも実行できますか?
pwsh script.ps1 を実行してください。ただし、Windows 専用のコマンドレット(Get-WmiObject、レジストリ、COM など)を使用しているスクリプトは失敗します。PS1 スクリプトを自動実行するようにスケジュールするにはどうすればよいですか?
powershell.exe、引数に -NonInteractive -File 'C:\path\script.ps1' を指定します。