Powershellで覚えるべきたった一つのこと
「help」
ただし、読む根気が必要。ぐぐるのとどちらが早いかは慣れ次第。
以上、、、だと不親切なので、少し解説。
全ては「help」に
何か「うっ、あれなんだっけ?」と思ったら、とりあえず「help」。
そして読むのです。そこに答えがあるのです。
コマンド忘れた
基本的に動詞+名詞なので、タブ補完でなんとかなると思うけど、一覧が欲しい場合。
「help」さん曰く
get-command: コマンドレット コードからコマンドレットに関する情報を取得します。
「get-command」しよう。
「get-co」でタブを入力して、ターン!(Enter)
だーって出るし省略されてる?じゃ次。
出力をなんとかしたい
「help 出力」さん曰く
Out-Host Cmdlet 出力をコマンド ラインに送ります。 Out-File Cmdlet ファイルに出力を送ります。 Out-Printer Cmdlet プリンターに出力を送ります。 Out-String Cmdlet オブジェクトを一連の文字列としてホストに送ります。 Out-GridView Cmdlet 別のウィンドウの対話型の表に出力を送信します。
って、知っていればこその抽出ですね。(ずらずら出てくる、、、)
GUI使うのが嫌でなければ、「Out-GridView」は覚えたいところ。
では「get-co<#TAB> out-g<#TAB>」(UWSC表記)で<#CR>
一覧でました。
Out-GridViewで検索
「help out-gridview」
フィルターのエディットボックスに、探したいものを入れてください。
Get-Commandは、別名(Alias)・関数・コマンドレットが全て出ます。
「alias」と入れれば別名のみに絞れます。(好奇心で「条件の追加」を押すのもあり)
ちなみにGet-Commandの標準での別名は「alias get-command」とすると「gcm」とわかるかと思います。
「Get-Command | Out-GridView」は「gcm|ogv」でもOKです。
なお、「help 出力」だと文字列にフォーマットされているので、「help 出力」をOut-GridViewで見たいなら、「Get-Help 出力 | ogv」がお勧め。
ogvの出力はCtrl+Cでコピー可能。
演算子って何使えるの?
「help 算術演算子」さん曰く
about_Arithmetic_Operators HelpFile Windows PowerShell で算術演算を実行する演算子について説明します。 about_operators HelpFile Windows PowerShell でサポートされている演算子について説明します。
ということで「help about_ari」(一意になる範囲で省略可)とか
加減乗除は普通で、剰余は「%」だそうです。
比較演算子は?
「help 比較演算子」さん曰く
about_Comparison_Operators HelpFile Windows PowerShell で値を比較する演算子について説明します。
一覧は?
ファイル一覧はバッチと同じ「dir」。
でもこれは別名で「Get-ChildItem」。
Get-ChildItemはカレントディレクトリーの中身が見られるのだけど、同じようにPSドライブの中身が見られる。
PSドライブ、なんでしょ?
「Get-Help ドライブ | ogv」さん曰く
Get-PSDrive Cmdlet 現在のセッション内の Windows PowerShell ドライブを取得します。
ということで「get-psd<#TAB>」または「gdr」でEnterすると、「gci」で使える一覧が出ます。
Powershell管理の証明書「gci cert:」や環境変数「gci env:」関数や変数に一部レジストリーが、〜Item系コマンドで扱えることがわかります。
でも「gci variable:」や「get-variable」でも「$Env」は出てこないんですよね。
何かしら、この人。
「$env:username」は「(gci env:username).value」相当だから、特殊な別名かしらん?
「help 環境変数」からたぐると、構文として紹介されるけど。
環境変数
上で書いたけど「gci env:」
Uから始まる環境変数を知りたければ「$env:u<#TAB>連打」か「gci env:u<#TAB>連打」とか。
バッチの「set u」相当は、、、「gci env: | ?{$_.Name -match '^u'}」。
関数作った方が良いかもね。
「cmd /c "set u"」の方が早くなってしまう、、、ま、それもアリ。
xyz=abcを追加するなら「New-Item env:xyz -Value abc」(「-Value」とかもタブ補完or一意まで省略可)
もしくは「$env:xyz = 'abc'」
xyz=bcdに変更するなら「Set-Item env:xyz bcd」
もしくは「$env:xyz = 'bcd'」
xyzを削除するなら「Remove-Item env:xyz」
もしくは「$env:xyz = ''」
オブジェクトの調査をしたい
「help オブジェクト」で「New-Object」にたどり着く、、、かな。
「help メンバー」で「Get-Member」にたどり着く。(ま、この辺はすぐ覚える)
「VBScript.RegExp」の調査なら
「New-Object -ComObject VBScript.RegExp | Get-Member | ogv」
そうそう、正規表現の適用はExecuteメソッドで、マッチしているかを見るならTest。
(Powershellで正規表現を使うなら、-match演算子と$matches自動変数、または.netのRegExクラス)
まとめ
困ったら「help」さんに投げれば良い。
日本語も可。なんかヒントくれる。
Powershellで覚えなきゃいけないのは、「help」がすごく便利であるということ。
起動時に実行しておきたいスクリプトがある?
「help 起動時」
、、、そうそう、プロファイルでやるんだった!