Windows PowerShell入門の入門

Application data下のフォルダをWindows PowerShellでZIPファイルにしてバックアップ取るちなみにPowerShellって何って人は "PowerShell 入門" 辺りで検索してくださいとぶん投げましたが、入門の更に前に実行ポリシィの設定などで躓く人もいるのでそこについて解説することにします

この記事はWindows環境を使っておりWindows PowerShellを全く知らない人を対象にしています

Set-ExecutionPolicyがどんなコマンドレットか知っている人には不要です


Windows PowerShellWindows OS向けのシステム管理向けのプログラミング言語です

システム管理向けなので例えばゲーム開発には不向きです

一方、人間が手と目を使ってエクスプローラー上で行っているような作業をするには非常に強力です

例えばPCのストレージ容量が少なくなってきたので「ドキュメントフォルダ内のファイルで、最終更新日が1年以上前のファイルの一覧が欲しい」と思ったとき、Windows PowerShellでは以下のように実現する事ができます

[Environment]::GetFolderPath('MyDocuments') |
    Get-ChildItem -File -Recurse |
    Where-Object {$_.LastWriteTime -le [DateTime]::Now.AddYears(-1)}

このようにWindows PowerShellは従来のWindowsコマンド (DOSコマンド) によるバッチやWSHによるスクリプトファイルを置き換える時、非常に強力な言語です


Windows PowerShellWindows 7以降のWindows OSであれば標準的には C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe にインストールされています

Windows PowerShellは単にスタートメニューから起動する他にもスタートアイコンの右クリックやエクスプローラーのツールバーのファイルから起動することもできます

また、素のPowerShellの他に統合スクリプト環境 (Integrated Scripting Environment) のWindows PowerShell ISEの実行ファイル powershell_ise.exe もありますが、まずはpowershell.exeを起動してください

PowerShellを起動出来たらプロンプトに Write-Host "Hello World"; と打ち込んでみてください

画面に Hello World Hello World と表示されればPowerSHellHello Worldの完了です


Windows PowerShellHello Worldは以上の通りですが、引き続きファイルにコマンドを保存してバッチ処理化する環境を整えます

そこで先ほどのHello Worldをファイルに保存したい所ですが、初期状態ではWindows PowerShellスクリプトファイルからの読み込み、実効は無効になっている場合があり、仮に C ドライブ直下に Hello World.ps1 というPowerShellのファイルを保存して実行してもセキュリティエラーが発生する可能性があります

PS C:\>C:\Hello World.ps1
このシステムではスクリプトの実行が無効になっているため、ファイル C:\Hello World.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
    + CategoryInfo          : セキュリティ エラー: (: ) []、ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnauthorizedAccess

このため、まずはプロンプトで Get-ExecutionPolicy を実行してみましょう

もし、結果が Restricted の場合、個別のコマンドは許可されていますが、スクリプトファイルの読み込みや実行しない設定になっているのでこれを変更する必要があります

実行ポリシーを変更するにはSet-ExecutionPolicyというコマンドレットを使用します

PowerShellのプロンプトに Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser; と実行すると "実行ポリシーの変更" ダイアログが出ますので、はいを選択して設定を変更します

上記Set-ExecutionPolicyはその名の通り実行ポリシーを設定するコマンドレットで-ExecutionPolicy RemoteSignedはローカルコンピューター上で作成されたスクリプトは読み込み、実行できるが、インターネットからダウンロードされたファイルは信頼された発行元によってデジタル署名されていなければ実行できないポリシーを意味し、-Scope CurrentUserはこの実行ポリシーの変更は、今作業しているユーザーのみへの変更であることを意味します

実行ポリシーについての詳細は about_Execution_Policiesを読んでください


以上でPowerShellスクリプトファイルを実行できる環境が整いました

その上で、今後Windows PowerShellで何か開発する際は、PowerShell.exeより、Windows PowerShell ISEの方が便利なのでそちらを使うことをお勧めします

また、Windows PowerShellスクリプトファイルを保存する場合は、文字コードUTF-8 With BOM、改行コードについては CRLFで保存しておくのがおそらく無難です

これでWindows PowerShellの入門の入門は終了です

今度こそPowerShellって何って人は "PowerShell 入門" 辺りで検索してください