Powershell 基本文法
形式
- 拡張子は.ps1 テキストファイルで作成し、拡張子を変更する。
- 右クリック→編集で、Powershell ISEが開くので、そこで編集する。
- Powershellの実行には権限が必要。一度管理者権限でWindows Powershellを起動し、権限を取得する
権限の確認、変更
PowerShellはデフォルトでは無効化されているので、事前に有効化が必要。
- 権限の確認
get-excutionpolicy -list を実行する。
デフォルトでは、各権限がUndefined(未定義)になっている。
PS C:\WINDOWS\system32> get-executionpolicy -list Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Undefined Process Undefined CurrentUser Undefined LocalMachine Undefined
- 権限の有効化
set-excutionpolicy unristricted を実行する。
実行時に確認があるので、「y」を入力する。
変更後に再度-listを確認すると、LocalMachineがUnrestricted(制限なし)に変わっていることが分かる。
PS C:\WINDOWS\system32> set-executionpolicy unrestricted 実行ポリシーの変更 実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170) で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか? [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"): y PS C:\WINDOWS\system32> get-executionpolicy -list Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Undefined Process Undefined CurrentUser Undefined LocalMachine Unrestricted
コメントアウト
# ここはコメントアウト <# 範囲コメントアウト #>
コンソール出力(エコー)
> echo コンソール出力 コンソール出力
一時停止
- Powershell ISEでデバッグする際、F9でブレークポイントを設定できる。
ディレクトリ変更
set-location C:\myapps\powershell
変数定義、代入、表示
>[Int] $x = 10 >[String] $str = "hoge" >$x 10 >$str hoge
明示的に型宣言をしなくても、自動で型が割り振られる。 後から型を確認するときは、.GetType()を使う。
>$y=20 > $y.Gettype() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True Int32 System.ValueType
- 配列
> [Array]$datas=(10, 20, 30) > $datas[0] 10 > $datas[1] 20 > $datas[2] 30
配列は.lengthで要素数を取り出せる。
> $data.length 3
比較演算子
-lt Less Than、より小さい、< -gt Greater Than、より大きい、> -eq EQual、イコール、== -ne Not Equal、ノットイコール、!= -le Less than or Equal、以下、<= -ge Greater than or Equal、以上、<=
For文
[Array]$datas=(10,20,30) for($i=0; $i -lt $datas.length; $i++){ echo $datas[$i] }
IF文、コンソール入力を受け取る。
$input = Read-Host "実行しますか?(y/n)" if ($input -eq "y"){ echo "実行しました。" }elseif ($input -eq "Y"){ echo "実行しました。" }else{ echo "キャンセルしました" }