Cmdletを試す

引き続きMicrosoft Command Shell(Monad Shell)で遊ぶ。
sh等の既存のシェルで言う所のbuiltin Commandに該当するのがCmdletだ。
verb-nounという形式に命名法が統一されているのに感心した。
もちろん、普通使いたいコマンドにはaliasが切ってあるので、cdとかlsできる。

まぁ、まずは触ってみようということで、とりあえずレジストリをいじってみた。

まずは目的の位置に移動。

MSHのプロンプトを起動した後、まずは移動して、Get-Itemで現在の内容を見る。

MSH> cd hkcu:\software\microsoft\windows\currentversion
MSH> get-item run


   Hive: Registry::HKEY_CURRENT_USER\software\microsoft\windows\currentversion

SKC  VC Name                           Property
---  -- ----                           --------
 0   1 run                            {ctfmon.exe}

New-Propertyで新しい項目を登録する。

Windowsの起動時に電卓が立ち上がるようにしてみた。

MSH> new-property -path run -property "calc.exe" -value "C:\windows\system32\cal
c.exe"


MshPath       : Registry::HKEY_CURRENT_USER\software\microsoft\windows\currentv
               ersion\run
MshParentPath : Registry::HKEY_CURRENT_USER\software\microsoft\windows\currentv
               ersion
MshChildName  : run
MshDrive      : HKCU
MshProvider   : System.Management.Automation.ProviderInfo
calc.exe      : C:\windows\system32\calc.exe

値が変わって、calc.exeが増えているのがわかる。

MSH> get-item run


   Hive: Registry::HKEY_CURRENT_USER\software\microsoft\windows\currentversion

SKC  VC Name                           Property
---  -- ----                           --------
 0   2 run                            {ctfmon.exe, calc.exe}

実際に登録されているかどうか、Get-Propertyで確認する。

MSH> get-property -path run -property calc.exe


MshPath       : Registry::HKEY_CURRENT_USER\software\microsoft\windows\currentv
               ersion\run
MshParentPath : Registry::HKEY_CURRENT_USER\software\microsoft\windows\currentv
               ersion
MshChildName  : run
MshDrive      : HKCU
MshProvider   : System.Management.Automation.ProviderInfo
calc.exe      : C:\windows\system32\calc.exe

はい、確かにcalc.exeがレジストリに登録されています。

Remove-Propertyで削除する。

本当に起動時に電卓が立ち上がってもジャマなので。

MSH> remove-property -path run -property calc.exe
MSH> get-item run


   Hive: Registry::HKEY_CURRENT_USER\software\microsoft\windows\currentversion

SKC  VC Name                           Property
---  -- ----                           --------
 0   1 run                            {ctfmon.exe}

.NETのオブジェクトも扱えるようだが、ちょっとまだ良くやり方が分からない。
っていうか、本当にドキュメントが無い。