てみブログ

てみブログ

個人的な覚書用です

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 コンソール出力
コンソール出力

一時停止

ディレクトリ変更

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 "キャンセルしました"
}