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 起動時」
、、、そうそう、プロファイルでやるんだった!