2014年4月30日水曜日

◆UNCパスをTest-Pathで確認する

Testing UNC Paths - Power Tips - PowerShell.com – PowerShell Scripts, Tips, Forums, and Resources

Set-Location HKCU:\

とかやった後に、Test-Path \\Server\myfolder

とかでUNCパスを確認しようとするとうまくいかないってお話。

\\Server というレジストリーを探しに行っちゃうって事でしょうか。

コンテキストの影響を受けずに確認するには、

Test-Path  FileSystem::\\Server\myfolder

とやると良いとの事。

2014年4月22日火曜日

◆レジストリへのアクセス

レジストリへのアクセスは専用のプロバイダーが用意されていて、通常のファイルシステムのようにアクセスできる。
 特に難しいわけではないのでこれまでも適当に使ってきたが、それほど頻繁に使うわけでもないので、結局毎回試行錯誤しながら使うことになる。

そこで、いまさらの感はあるが使い方を自分用にメモしておく。

基本的には「Get-Item」と「Get-ItemProperty」を使ってアクセスする。(と思う)

以下のレジストリにアクセスしてみる。

image

Get-Item」で「TortoiseSVN」キーにアクセスするとこんな感じになる。

PS>Get-Item hkcu:software\TortoiseSVN


    Hive: HKEY_CURRENT_USER\software


SKC  VC Name                           Property
---  -- ----                           --------
  7  12 TortoiseSVN                    {SoundUtils KeyPath, TortoiseSVN,

「SKC」というのは「SubKeyCount」の略で、以下の部分の個数を表す。
image

「VC」は「ValueCount」の略で、以下の部分の個数を表す。
image

「プロパティ」は以下を指すようだ。
image

 

「Get-Item」を「Get-ChildItem」に変えると以下のようにサブキー毎に同様の情報が表示される。

PS>Get-ChildItem hkcu:software\TortoiseSVN


    Hive: HKEY_CURRENT_USER\software\TortoiseSVN


SKC  VC Name                           Property
---  -- ----                           --------
  0  17 DiffTools                      {.dll, .exe, .doc, .docm...}
  1   1 History                        {lastCheckoutPath}
  0   4 LastUsedUUIDsForGrouping       {0, 1, 2, 3}
  0   1 LogCache                       {Version}
  0   6 MergeTools                     {.doc, .docm, .docx, .ods...}
  0   6 StatusColumns                  {CommitDlgVersion, CommitDlg,
  1   0 TortoiseProc                   {}

プロパティの一覧は以下のように取得

PS>(Get-item hkcu:software\TortoiseSVN).property
SoundUtils KeyPath
TortoiseSVN
TortoiseMerge
TortoiseIDiff
DiffProps
CurrentVersion
CheckNewerWeek
RepoBrowserColumnWidth
ErrorOccurred
NewVersionLink
NewVersionText
NewVersion

これでも同じっぽい

PS>(Get-item hkcu:software\TortoiseSVN).getvaluenames()

ただし、どちらも取得できるのは文字列の情報。

以下の一行の情報をオブジェクトで取得できるのかと思ったのだが、どうにも見当たらない。
image

とりあえずダイレクトにバリューを取得するには、

PS>(Get-item hkcu:software\TortoiseSVN).GetValue("CheckNewerWeek")
16

ここで、「Get-ItemProperty」を試してみると、こちらは以下のオブジェクトを返してくる。(1つのオブジェクト)
「Get-Item」と違ってサブキーの情報は取得できない。
名前の通り、自身のプロパティに特化した情報といった感じ。
image

左側の「名前」(プロパティ)をその名の通りプロパティとして持っているオブジェクトなので、ダイレクトにバリューを取得するには、

PS>(Get-ItemProperty hkcu:software\TortoiseSVN).CheckNewerWeek
16

となる。

これを踏まえて「Get-Item」を使って一覧表示するには、プロパティ(ValueName)を纏めて取得し、その一つずつに対して「GetValue()」でバリュー、「GetValueKind()」で種類を取得する。
image

image

種類が不要であれば「Get-ItemProperty」だけで事足りる。(が、こちらは余計なプロパティも含まれる)

PS>Get-ItemProperty hkcu:software\TortoiseSVN


PSPath                 : Microsoft.PowerShell.Core\Reg
PSParentPath           : Microsoft.PowerShell.Core\Reg
PSChildName            : TortoiseSVN
PSDrive                : HKCU
PSProvider             : Microsoft.PowerShell.Core\Reg
SoundUtils KeyPath     : keypath
TortoiseSVN            : TortoiseSVN
TortoiseMerge          : TortoiseMerge
TortoiseIDiff          : TortoiseIDiff
DiffProps              :
CurrentVersion         : 1.8.4.24972
CheckNewerWeek         : 16
RepoBrowserColumnWidth : 00000000000000000000000000000
ErrorOccurred          : 0
NewVersionLink         :
http://tortoisesvn.net
NewVersionText         : A new version of TortoiseSVN
NewVersion             : 1.8.6.25419