【改訂新版】 Windows PowerShell ポケットリファレンス
- 作者: 牟田口大介
- 出版社/メーカー: 技術評論社
- 発売日: 2013/02/23
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る
- 1. PowerShell入門(コマンドレット)
- 作者: Lee Holmes,マイクロソフト株式会社ITプロエバンジェリストチーム(監訳),菅野良二
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/10/23
- メディア: 大型本
- 購入: 4人 クリック: 72回
- この商品を含むブログ (15件) を見る
1. PowerShell入門(コマンドレット)
動作確認は Windows 10
/ PowerShell Version 5
にて行います。
1.1. 作業フォルダの作成
作業フォルダとして D:\tmp
を作成します。
1.2. PowerShellの開き方
エクスプローラで D:\tmp
を開き、アドレスバーに powershell
と入力し、Enterを押すと、PowerShellプロンプトが開きます。
1.3. コマンドレット
動作確認のスクリプトは、コマンドレットのエイリアスを使用していきます。
1.3.1. エイリアスの一覧
エイリアスの一覧は、次のコマンドレットで確認します。
> get-alias
1.3.2. エイリアスに関連付けられたコマンドレット
エイリアスからコマンドレットを知りたい場合は、次のコマンドで確認します。
> get-alias -Name ac CommandType Name Version Source ----------- ---- ------- ------ Alias ac -> Add-Content
1.3.3. ヘルプを取得
指定したコマンドレットのヘルプを取得します。
> get-help -name gc 名前 Get-Content 構文 Get-Content [-Path] <string[]> [<CommonParameters>] Get-Content [<CommonParameters>] エイリアス gc cat type 注釈 Get-Help を実行しましたが、このコンピューターにこのコマンドレットのヘルプ ファイルは見つかりませんでした。ヘルプの一部だけが表示されています。 -- このコマンドレットを含むモジュールのヘルプ ファイルをダウンロードしてインストールするには、Update-Help を使用してください。 -- このコマンドレットのヘルプ トピックをオンラインで確認するには、「Get-Help Get-Content -Online」と入力するか、 https://go.microsoft.com/fwlink/?LinkID=113310 を参照してください。
1.4. スクリプトの実行権限
TODO あとから書きます
1.5. ファイル
1.5.1. 空のファイルを作成
utf8のファイル作成します。
> ni -ItemType File t1.txt
1.5.2. 作成したファイルの存在を確認
> gci -File ./ ディレクトリ: D:\tmp Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2018/03/01 23:06 74 main.ps1 -a---- 2018/03/01 23:02 0 t1.txt
1.5.3. ファイルへテキストを出力
> ac t1.txt "12345"
1.5.4. ファイルの内容を確認
> gc t1.txt
12345
1.5.5. ファイルの削除
> rm t1.txt
これでファイルの作成、確認、削除を行えるようになりました。
1.6. ディレクトリ
1.6.1. ディレクトリの作成
> ni -ItemType Directory d1
1.6.2. 作成したディレクトリの確認
> gci -Directory ./ ディレクトリ: D:\tmp Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2018/03/01 23:34 d1
1.6.3. ディレクトリの削除
指定したディレクトリを削除します。
> rm -Recurse ./d1
パラメータ -Recurse
により、サブディレクトリを削除する場合に確認メッセージを表示しないようにしています。
これでディレクトリの作成、確認、削除を行えるようになりました。
1.7. パスの操作
1.7.1. パスの結合
パスとパスを結合します。
> join-path d:\tmp t1.txt
d:\tmp\t1.txt
結合するとき、プロバイダに応じたパス区切り文字(¥など)が適切に付加さ れます。
これでファイルのパスを結合することができるようになりました。
1.7.2. パスを分割
パスから要素を取り出します。
パスから親ディレクトリを取り出します。
> split-path d:\tmp\t1.txt -parent
d:\tmp
パスから親ファイル名を取り出します。
> split-path d:\tmp\t1.txt -leaf
t1.txt
これでファイルのパスから要素を取り出すことができるようになりました。
1.7.3. パスの存在を確認
パスが存在するかどうかを確認します。
> test-path ./t1.txt True > test-path ./t99.txt False
これでファイルのパスが存在を確認できるようになりました。
1.8. オブジェクト操作
1.8.1. オブジェクトを列挙する
> gci | foreach FullName D:\tmp\main.ps1 D:\tmp\t1.txt D:\tmp\t2.txt D:\tmp\t3.txt > gci | foreach {Write-warning $_.FullName} 警告: D:\tmp\main.ps1 警告: D:\tmp\t1.txt 警告: D:\tmp\t2.txt 警告: D:\tmp\t3.txt
入力オブジェクトで指定された複数のオブジェクトに対し、1オブジェクトずつ列挙スクリプトブロックで指定したスクリプトブロックを実行します。
これで複数のオブジェクトを列挙できるようになりました。
1.8.2. ソート
ファイル t3.txt
に下記のデータが含まれるとします。
banana apple orange banana banana apple
ファイル t3.txt
を読み取り、並べ替えます。
> gc t3.txt | sort apple apple banana banana banana orange
これでファイルの内容をソートすることができるようになりました。
1.8.3. ユニーク
重複しないようにするにはgu
を使用します。
> gc t3.txt | sort | gu apple banana orange
これでファイルの内容をユニークにすることができるようになりました。
1.8.4. フィルター
> gci | where Name -Match "^t1" ディレクトリ: D:\tmp Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2018/03/01 23:29 7 t1.txt
これでオブジェクトをフィルタリングすることができるようになりました。
1.8.5. セレクト
オブジェクトの指定した項目を選択します。
> gci | select Name,Length Name Length ---- ------ main.ps1 74 t1.txt 7 t2.txt 30 t3.txt 49
これでオブジェクトを選択することができるようになりました。
1.9. ロケーション
1.9.1. ロケーションを取得
PowerShellドライブ内で位置を取得します。
> gl Path ---- D:\tmp
これでドライブ内で位置を取得することができるようになりました。
1.10. ユーティリティ
1.10.1. ファイルを検索する
> sls -Path D:\tmp\*.* -Pattern orange
t3.txt:3:orange
パラメータ -Path
にディレクトリのみを指定するとエラーになります。
ファイルを検索する場合は、ディレクトリパス
と \*.*
を指定します。
これでフォルダ内を検索することができるようになりました。
1.10.2. 文字列を検索する
> gc t3.txt | sls -pattern apple apple apple
これでファイルから文字列を検索することができるようになりました。
1.10.3. ファイルの行数を数える
> (gc ./t3.txt).length
6
これでファイルの行数を数えるとができるようになりました。
1.10.4. コマンドの実行時間を計測する
> measure-command {gci} Days : 0 Hours : 0 Minutes : 0 Seconds : 0 Milliseconds : 2 Ticks : 21077 TotalDays : 2.43946759259259E-08 TotalHours : 5.85472222222222E-07 TotalMinutes : 3.51283333333333E-05 TotalSeconds : 0.0021077 TotalMilliseconds : 2.1077
これでコマンドの実行時間を計測できるようになりました。
1.10.5. メッセージを書き込む
> write-host -ForegroundColor Yellow test
test
このコマンドレットで文字列を表示する場合、後続パイプラインへの出力は行いません。
これでコンソールに文字列を表示できるようになりました。
1.10.6. オブジェクトを書き込む
> write test test
オブジェクトを標準ストリームに出力し、次のパイプラインに書き込みます。 リダイレクトやパイプラインを指定しない場合は、その場でオブジェクトがコンソールに表示されます。
1.10.7. エラーを表示
> write-error error! write-error error! : error! + CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException
エラーストリームに メッセージ もしくは 例外オブジェクト で指定したエラー、または エラーレコード で指定したエラーレコードを書き込みます。リダイレクトを記述しない場合は、コンソールにエラーを赤字で出力します。 カテゴリ にはエラーの種類を選択可能です。
これでコンソールにエラーを表示できるようになりました。
1.10.8. 警告を表示
> write-warning warn!
警告: warn!
これでコンソールに警告を表示できるようになりました。
1.10.9. デバッグを表示
> write-debug "debug" -debug デバッグ: debug
なお、このコマンドレットはシェル変数$DebugPreferenceによって動作が異なります。デフォルトは"SilentlyContinue"となっており、コンソールになにも表示しません。"Continue"を代入するとメッセージが表示されるようになります。"Stop"だとメッセージ表示後ストップエラーが表示されます。"Inquire"だとメッセージ表示後操作 の続行を確認するプロンプトが表示されます。
これでデバッグすることができるようになりました。
1.10.10. プログレスバーを表示
> 0..100 | foreach{Start-Sleep -Milliseconds 100; Write-Progress "now loading" "$_ $ complete..." -PercentComplete $_}
これでプログレスバーを表示することができるようになりました。
1.10.11. 日付を取得する
> get-date 2018年3月3日 0:26:51 > get-date -Format "yyyy/MM/dd HH:mm:ss" 2018/03/03 00:28:12
これで日付を取得することができるようになりました。
1.10.12. グリッドビューを表示
> gps | ogv
これでグリッドビューを表示することができるようになりました。
動くサンプルで学べる Windows PowerShell コマンド&スクリプティングガイド PowerShell 4.0対応
- 作者: 五十嵐貴之
- 出版社/メーカー: ソシム
- 発売日: 2015/03/13
- メディア: 単行本
- この商品を含むブログ (3件) を見る