コマンドレットの探し方
ワイルドカード指定で候補のコマンドレット表示が可能
> Get-*Permission
Get-Commandでも同様の事が可能
> Get-Command Get-*Permission
Get-historyコマンドで履歴確認
コマンドレットは[動詞]+[名詞]の命名規則あり
Getは参照系。コマンド名からリスク判定可能。学習コスト軽減。
Get-Command -Noun [機能]
Nounは名詞の意味
特定の機能に関するコマンドレット一覧の出力が可能
Get-Verb
[動詞]の一覧を出力
ヘルプの見方
Get-help コマンドレットでオンラインヘルプ表示可能
-?
ヘルプ表示
他
PowerShell起動時にスクリプト実行が可能
よく使う環境変市数設定等の自動化が可能
以下にファイルを生成する(全ユーザー適用)
C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1
統合開発環境Visual Studio Codeの利用も可能
コマンドレット共通
-?
ヘルプ表示
-WhatIf
ドライラン
-Confirm
実行確認の指定($true確認、$false確認しない)
-ErrorAction
例外発生時の処理指定
Continue(規定) エラー表示し続行
Stop エラー表示し停止
SilentContinue エラー表示せず処理継続
-Verbose
詳細情報出力
-Debug
詳細情報出力(開発者向け)
実行方法
`でコマンドを複数行に分けて記載できる
コマンドA; コマンドBで1行で複数コマンド実行
コマンドを記述したps1ファイルを実行可能。
ps1ファイルのパスにスペース含む場合は以下で実行
& 'パス'
変数定義方法
$で始まり、英数字、アンダースコアで定義
大文字小文字区別しない
${}で上記以外の文字も利用可能
> ${-a-} = "a" > Write-Host ${-a-} a
変数はオブジェクト。型は動的に決定。
型変換は以下で可能。
> $a = "a"; $b = 1 > $a + $b a1 > $b + $a 値 "a" を型 "System.Int32" に変換できません。エラー: "入力文字列の形式が正しくありません。" 発生場所 行:1 文字:1 + $b + $a + ~~~~~~~ + CategoryInfo : InvalidArgument: (:) []、RuntimeException + FullyQualifiedErrorId : InvalidCastFromStringToInteger > [string]$b + $a 1a
ショートカットと.NET Framework完全クラス名
[string]→[System.String]
ショートカットは他に以下があり。
[datetime]、[double]、[single]、[int]、[bool]
自動変数
自動的に設定される変数
変数名 | 内容 |
---|---|
$_ | パイプで渡す前のコマ。ンドの出力 |
$? | 直前コマンドの終了ステータス |
$args | 引数リスト |
他にもたくさんある。
PowerShellの環境変数と自動変数 - Qiita
【連載】PowerShell Core入門 - 基本コマンドの使い方 [16] 自動変数|サーバ/ストレージ|IT製品の事例・解説記事
Get-Variableコマンドで一覧表示可能
パイプ処理
オブジェクト渡し
オブジェクトを受ける主要コマンドは以下。エイリアスあり。
コマンドレット | エイリアス | 内容 |
---|---|---|
Select-Object | select | 限定・追加 |
Sort-Object | sort | 並べ替え |
Where-Object | whereまたは? | 並べ替え |
ForEach-Object | foreachまたは% | ループ実行 |
上記は出力加工で使われる。
一括処理でもパイプは利用される。同一機能のコマンドレットのGet-* | Set-*
別機能でも利用可能なケースもあり 例) Get-User ...| Get-MailboxStatistics
サンプル
> Get-Process | Sort-Object CPU -Descending | select -First 5 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 2091 71 118912 188896 173.08 10484 1 chrome 1062 40 194092 223228 159.64 10692 1 chrome 234 13 2680 11668 122.94 9340 1 DCSHelper 3027 127 91668 174568 72.69 2248 1 explorer 795 56 182292 217188 57.92 10404 1 powershell_ise >
文字列の扱い
"で囲う
"を文字列内で使う場合は、
①""
②\"(エスケープ文字`を利用)
"内の変数は展開される
展開したくない場合、変数記述をエスケープする
> Write-Host $hoge a > Write-Host `$hoge $hoge
特殊文字(改行等)は以下で利用可能
\0(NULL)、`b(バックスペース)、`t(タブ)、`r(CR)、`n(改行)
変数、特殊文字を展開したくない場合、'で囲う'を'内で使いたい場合は、
①''
②\'(エスケープ文字`を利用)
ヒアドキュメント
@"~"@ 変数展開あり
@'~'@ 変数展開なし