メモ
PowerShellのバージョン情報を表示
$PSVersionTable
実行結果の例
Name Value
---- -----
PSVersion 5.1.14393.693
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.14393.693
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
補完
コマンドやパス等は途中まで入力してTAB
を押せば補完してくれる。
コマンドのヘルプ
書式
コマンド名 -?
man コマンド名 -Full
例
ls -?
ヘルプの更新
PowerShellを「管理者として実行」で起動し、以下のコマンドを入力
Update-Help -Force -UICulture en-US
Update-Help -Force -UICulture ja-JP
スクリプトファイルの実行ポリシー確認・設定
# 現在の実行ポリシー確認
Get-ExecutionPolicy
# 実行ポリシーを「ローカル保存のスクリプト実行可」に設定する場合
Set-ExecutionPolicy RemoteSigned
制御構文
if ($x -eq "a")
{
Write-Host "aaa"
}
elseif ($x -eq "b")
{
Write-Host "bbb"
}
else
{
Write-Host "ccc"
}
switch ($x)
{
"a" { Write-Host "aaa"; break }
"b" { Write-Host "bbb"; break }
default { Write-Host "ccc" }
}
$i = 0
$cnt = 5
while ($i -lt $cnt)
{
Write-Host $i
$i++
}
for ($i = 0; $i -lt $cnt; $i++)
{
Write-Host $i
}
BATファイルからPowerShellを起動してスクリプト実行
例1(Test1.bat)
@ECHO OFF
REM ------------------------------------------
REM スクリプト実行 ※予め実行ポリシーでスクリプトを実行できるようにしておくこと
REM ------------------------------------------
REM スクリプト実行
PowerShell.exe C:\Work\Script\Test_A.ps1
REM キー入力待ち
PAUSE
例2(Test2.bat)
@ECHO OFF
REM ------------------------------------------
REM 実行ポリシーを一時的に変更してスクリプト実行
REM ------------------------------------------
REM スクリプト実行(相対パス指定)
PowerShell.exe -ExecutionPolicy RemoteSigned .\Test_B.ps1
REM キー入力待ち
PAUSE
例3(Test3.bat)
@ECHO OFF
REM ------------------------------------------
REM PowerShellスクリプト側の終了コードを受け取る
REM ------------------------------------------
REM スクリプト実行
PowerShell.exe -Command ".\Test_C.ps1 'ok';EXIT $LASTEXITCODE"
REM 0が表示される
ECHO %ERRORLEVEL%
REM スクリプト実行
PowerShell.exe -Command ".\Test_C.ps1 'ng';EXIT $LASTEXITCODE"
REM 5が表示される
ECHO %ERRORLEVEL%
REM キー入力待ち
PAUSE
Test_C.ps1
Param([string]$flg)
# 引数チェック
if ($flg -eq "ok")
{
exit 0
}
else
{
exit 5
}
コマンド一覧を確認
Get-Command | Out-GridView
もっと短く
gcm | ogv
エイリアス一覧を確認
Get-Alias | Out-GridView
もっと短く
alias | ogv
関数一覧を確認
Get-ChildItem Function:
もっと短く
ls function:
関数の定義も表示する場合。
# 関数一覧と定義内容(の先頭部分)を表示
ls function: | select name,definition
# mkdir関数の定義内容を表示
(ls function:\mkdir).definition
環境変数
# 環境変数一覧を表示
Get-ChildItem Env:
もっと短く
# 環境変数一覧を表示
ls env:
# 環境変数を個別に参照
$env:appdata
$env:temp
データ型の確認
$obj1.GetType()
配列
$a = @(11,22,33)
$a[0] # 11
$b = 4,5,6
$b[0] # 4
$c = ,7,8,9
$c[0] # 7
$d = 10..12
$d[0] # 10
$d[1] # 11
$d[2] # 12
連想配列(ハッシュ)
$h = @{"い"=10; "ろ"=20; "は"=30}
$h["い"] # 10
$h.い # 10
$h.Contains("い") # True
$h.Contains("に") # False
$h.Keys # い ろ は ※順序は不定
$h.Values # 10 20 30 ※順序は不定
プロファイル
PowerShell起動時に自動的に実行されるスクリプト。
関数やエイリアスなどを登録しておく。
ファイルパスは以下で確認できる。
$PROFILE
初期状態ではこのファイルは存在しないので自分で作成し、起動時に実行したいコマンドを書いておく。
New-Item (Split-Path $PROFILE -Parent) -ItemType Directory -Force;Notepad.exe $PROFILE
で空ファイルを作成するのが楽。
※PowerShellとPowerShell ISEは参照するプロファイルは別なのでそれぞれの環境で上記コマンドを実行し、作成しておく。
比較演算子 早見表
演算子 | 意味 |
---|---|
-eq | = |
-ne | ≠ |
-gt | > |
-ge | ≧ |
-lt | < |
-le | ≦ |
-like | ワイルドカード |
-notlike | ワイルドカード(否定) |
-match | 正規表現 |
-notmatch | 正規表現(否定) |
大文字・小文字を区別する場合は頭にcを、区別しない場合はiを付ける。
例)-ceq
初期値は区別しない(i付きと同じ)。
VBのOption Explicit的なもの
Set-StrictMode -Version Latest
現在日時の文字列
(Get-Date).ToString("yyyy/MM/dd HH:mm:ss.fff")
簡易電卓
動作確認した環境
- PowerShell V4
- PowerShell V5