PowerShell チートシート
検索・印刷できる PowerShell リファレンス——コマンドレット、パイプライン、変数、ファイル、ループ、関数、オブジェクト、管理操作。無料。
ヘルプと探索
12Get-Help Get-Process
コマンドレットのヘルプを表示
Get-Help Get-Process -Examples
コマンドレットの使用例を表示
Get-Help Get-Process -Full
パラメータを含む完全なヘルプを表示
Get-Help about_Functions
概念的なabout_トピックを読む
Update-Help
最新のヘルプファイルをダウンロード
Get-Command -Noun Process
名詞に作用するコマンドレットを一覧
Get-Command -Verb Get
指定動詞を使うコマンドレットを一覧
Get-Command *service*
ワイルドカード名でコマンドを検索
Get-Process | Get-Member
オブジェクトのプロパティとメソッドを一覧
Get-Alias ls
エイリアスが解決するコマンドを表示
Get-Alias -Definition Get-ChildItem
コマンドレットの全エイリアスを一覧
$PSVersionTable
PowerShellのバージョンとエディションを表示
変数と型
13$x = 5
変数に値を代入
[int]$n = '42'
強い型付けの変数を宣言
$null
null/空の値
$true; $false
真偽値リテラル
$arr = @(1, 2, 3)
配列を作成
$arr += 4
配列に要素を追加
$arr[0]; $arr[-1]
配列の先頭と末尾の要素を参照
$hash = @{ Name = 'Ann'; Age = 30 }
ハッシュテーブルを作成
$hash['Name']; $hash.Name
キーでハッシュテーブル値を取得
$env:PATH
環境変数を読み取り
$env:MY_VAR = 'value'
セッション用に環境変数を設定
Get-Variable
定義済み全変数を一覧
[math]::Round(3.14159, 2)
静的な.NETメソッドを呼び出し
パイプラインとフィルタ
12Get-Process | Where-Object { $_.CPU -gt 10 }
条件でオブジェクトをフィルタ
Get-Process | ? CPU -gt 10
?エイリアスと簡易構文でフィルタ
Get-Process | ForEach-Object { $_.Name }
各オブジェクトでスクリプトブロックを実行
Get-Process | % { $_.Kill() }
%エイリアスで反復
Get-Process | Select-Object Name, Id
特定プロパティのみ保持
Get-Process | Select-Object -First 5
先頭N個のオブジェクトを取得
Get-Process | Sort-Object CPU -Descending
プロパティでオブジェクトをソート
Get-Process | Group-Object Company
プロパティでオブジェクトをグループ化
Get-Process | Measure-Object CPU -Sum
数値を集計(合計/平均)
Get-ChildItem | Select-Object -Unique
一意なオブジェクトを返す
1..5 | ForEach-Object { $_ * 2 }
範囲を変換にパイプ
Get-Process | Out-GridView
結果を対話型グリッドに送る
ファイルとパス
13Get-ChildItem -Path C:\Logs
ディレクトリ内の項目を一覧(別名ls/dir)
Get-ChildItem -Recurse -Filter *.log
マッチするファイルを再帰的に一覧
Get-Content .\file.txt
ファイルを 1 行ずつ読む
Get-Content .\file.txt -Tail 20
ファイルの末尾N行を読み込み
Set-Content .\file.txt -Value 'Hi'
テキストをファイルに書き込み(上書き)
Add-Content .\file.txt -Value 'Hi'
ファイルにテキストを追記
Copy-Item a.txt b.txt
ファイルまたはディレクトリをコピー
Move-Item a.txt .\dir\
項目を移動または改名
Remove-Item a.txt -Force
ファイルまたはディレクトリを削除
New-Item -ItemType Directory -Path .\dir
新規ファイルまたはディレクトリを作成
Test-Path .\file.txt
パスの存在を確認
Get-Location
現在のディレクトリを表示(別名pwd)
Set-Location C:\Temp
現在のディレクトリを変更(別名cd)
文字列とテキスト
12'Hello World' -match 'World'
正規表現で文字列を判定
'Hello' -replace 'l', 'L'
正規表現でテキストを置換
'a,b,c' -split ','
正規表現で文字列を配列に分割
'a-b-c'.Split('-')
.NET Stringメソッドで分割
'a', 'b' -join ', '
配列要素を文字列に結合
Select-String -Path *.log -Pattern 'error'
ファイル横断のgrep風検索
'{0} of {1}' -f 3, 10
プレースホルダで文字列を整形
' hi '.Trim()
前後の空白を除去
'Hello'.ToUpper()
文字列を大文字に変換
'Hello'.Substring(0, 3)
インデックスと長さで部分文字列を抽出
'Hello'.Contains('ell')
文字列が部分文字列を含むか判定
'Hello'.Length
文字数を取得
ループと条件分岐
12if ($x -gt 0) { 'pos' } elseif ($x -eq 0) { 'zero' } else { 'neg' }
if / elseif / elseで分岐
switch ($x) { 1 { 'one' } default { 'other' } }
値をケースと照合
foreach ($i in $arr) { $i }
コレクションを反復
for ($i = 0; $i -lt 5; $i++) { $i }
インデックス付きのカウントループ
while ($x -lt 10) { $x++ }
条件が真の間ループ
do { $x++ } while ($x -lt 10)
最低1回ループしてから判定
$x -eq 5; $x -ne 5
等値と不等値の比較
$x -gt 5; $x -lt 5
大なりと小なりの比較
$x -ge 5; $x -le 5
以上/以下の比較
'abc' -like 'a*'
ワイルドカード一致比較
@(1, 2, 3) -contains 2
配列のメンバーシップを判定
break; continue
現在のループ反復を終了またはスキップ
関数とスクリプト
12function Get-Sum { param($a, $b) $a + $b }
パラメータ付き関数を定義
Get-Sum -a 2 -b 3
名前付き引数で関数を呼び出し
function Test { param([int]$n = 1) }
デフォルト値付きの型付きパラメータ
param([Parameter(Mandatory)]$Name)
パラメータの指定を必須にする
return $value
関数から値を返す
function F { [CmdletBinding()] param() }
高度な関数を作成(共通パラメータ)
Write-Verbose 'msg' -Verbose
詳細メッセージストリームを出力
Write-Output $result
オブジェクトをパイプラインに送る
Write-Error 'failed'
エラーストリームに書き込み
.\script.ps1 -Arg value
引数付きでスクリプトファイルを実行
. .\functions.ps1
スクリプトをセッションにドットソース
try { } catch { $_ } finally { }
終了エラーを処理
オブジェクトとプロパティ
12Get-Process | Select-Object -ExpandProperty Name
オブジェクトでなく生のプロパティ値を返す
(Get-Process).Name
各オブジェクトのプロパティにアクセス
Get-Process | Select-Object Name, @{ Name = 'MB'; Expression = { $_.WS / 1MB } }
計算プロパティを追加
[PSCustomObject]@{ Name = 'Ann'; Age = 30 }
カスタムオブジェクトを構築
$obj | Add-Member -NotePropertyName Tag -NotePropertyValue 'x'
オブジェクトにプロパティを付加
$obj.PSObject.Properties.Name
オブジェクトのプロパティ名を一覧
$obj | Format-Table -AutoSize
オブジェクトを整列したテーブルで表示
$obj | Format-List *
全プロパティをリストで表示
$obj | ConvertTo-Json -Depth 5
オブジェクトをJSONにシリアライズ
Get-Content data.json | ConvertFrom-Json
JSONをオブジェクトに解析
$obj | Export-Csv out.csv -NoTypeInformation
オブジェクトをCSVファイルにエクスポート
Import-Csv data.csv
CSVファイルをオブジェクトに読み込み
プロセスとサービス
12Get-Process
実行中プロセスを一覧(別名ps)
Get-Process -Name chrome
名前でプロセスを取得
Stop-Process -Name notepad -Force
プロセスを終了
Start-Process notepad.exe
新規プロセスを起動
Get-Service
Windowsサービスを一覧
Get-Service -Name wuauserv
名前でサービスを取得
Start-Service -Name wuauserv
停止中サービスを開始
Stop-Service -Name wuauserv
実行中サービスを停止
Restart-Service -Name wuauserv
サービスを再起動
Set-Service -Name wuauserv -StartupType Manual
サービスの開始モードを変更
Get-EventLog -LogName System -Newest 20
最近の従来型イベントログを読み込み
Get-WinEvent -LogName Application -MaxEvents 20
最新のイベントログを照会
リモート処理とジョブ
12Enter-PSSession -ComputerName Srv01
対話型リモートセッションを開始
Exit-PSSession
対話型リモートセッションを終了
Invoke-Command -ComputerName Srv01 -ScriptBlock { Get-Service }
リモートホストでコマンドを実行
$s = New-PSSession -ComputerName Srv01
永続的なリモートセッションを作成
Invoke-Command -Session $s -ScriptBlock { hostname }
既存のリモートセッションを再利用
Remove-PSSession $s
リモートセッションを閉じて削除
Start-Job -ScriptBlock { Get-Process }
コマンドをバックグラウンドジョブとして実行
Get-Job
バックグラウンドジョブと状態を一覧
Receive-Job -Id 1 -Keep
ジョブの出力を取得
Wait-Job -Id 1
ジョブ完了までブロック
Stop-Job -Id 1; Remove-Job -Id 1
バックグラウンドジョブを停止して削除
Get-Process | Start-ThreadJob { $input }
軽量なインプロセススレッドジョブを実行
モジュールとパッケージ
12Get-Module
現在読み込み中のモジュールを一覧
Get-Module -ListAvailable
インストール済み全モジュールを一覧
Import-Module Pester
モジュールをセッションに読み込み
Remove-Module Pester
セッションからモジュールを解除
Find-Module -Name PSReadLine
ギャラリーでモジュールを検索
Install-Module PSReadLine -Scope CurrentUser
ギャラリーからモジュールをインストール
Update-Module PSReadLine
インストール済みモジュールを更新
Uninstall-Module PSReadLine
インストール済みモジュールを削除
Get-ExecutionPolicy
現在のスクリプト実行ポリシーを表示
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
署名済みとローカルスクリプトの実行を許可
Get-PSRepository
設定済みパッケージリポジトリを一覧
$PROFILE
現在のユーザープロファイルスクリプトのパス
「:q」に一致する項目はありません。
お困りですか?
このツールで問題が見つかりましたか?チームにお知らせください。