5
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PowerShellメモ 基本

Last updated at Posted at 2016-10-05

メモ

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

p02.png

関数一覧を確認

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

で空ファイルを作成するのが楽。
PowerShellPowerShell 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")

簡易電卓

数式を入力してEnterで計算結果を表示。
p01.png

動作確認した環境

  • PowerShell V4
  • PowerShell V5

参考サイト

5
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?