2012年6月16日土曜日

◆イベントログを削除する

コマンドレットは用意されていないようだが.Netのクラスを使うと簡単に削除できる。

[System.Diagnostics.Eventing.Reader.EventLogSession]::GlobalSession.ClearLog("system")

当然「System」以外も「Security」とか「Application」とか「Windows PowerShell」とかを指定すればOK

2012年6月15日金曜日

◆レジストリ (規定)のPropertyType(種類)を変更する

SharePointの作業をしていて、手順書に以下のような作業が載っていた。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office Server\14.0\Search\Setup\ContentIndexCommon\Filters\Extension\.pdf
値が ”{E8978DA6-047F-4E3D-9C78-CDBE46041603}”である必要があります。違う値が入っている場合は、この決められた値に変更します。

まずは、該当の場所に「.pdf」キーを作成する。
すると以下の様なデフォルト値が作成される。
image

この値に”{E8978DA6-047F-4E3D-9C78-CDBE46041603}”を指定してあげれば良さそうだが、他の拡張子の設定値を見るとどれも「種類」が「REG_SZ」ではなく「REG_MULTI_SZ」になっている。
そこで、なんとかこれを「REG_MULTI_SZ」にしようと思ったのだが、どうにもこうにもやり方が見つからない。(もしかするとGUIではできないのかも)

仕方がないのでPowerShellで更新することに。

(既定)の更新の仕方や、種類の指定の仕方を調べて以下のような感じになった。

New-Itemproperty "HKLM:\SOFTWARE\Microsoft\Office Server\14.0\Search\Setup\ContentIndexCommon\Filters\Extension\.pdf" "(default)" -propertytype MultiString -value {E8978DA6-047F-4E3D-9C78-CDBE46041603}

(既定)はそのまま(default)で良いようだ。
また、「種類」はGUIでは以下の様になっているが、
image

PropertyTypeとしては以下から対応する値を指定する。
image

2012年6月11日月曜日

◆コンソールへのオルタネイト(alternate)表示

PowerShell: ◆svchostプロセスのサービスを纏めて表示するでの結果表示はプロセス毎なので、それぞれで色が変わったりすると見やすいと思い、ちょっと変更してみました。

001
002
003
004
005
006
007
008
009
010
011
012
013

$fgColors = "Cyan","Yellow"
$color = $fgColors[0]
$oldPid = 0

Get-WmiObject -Class Win32_Service | sort ProcessID | %
{
 
if((Get-Process -Id $_.ProcessID).ProcessName -eq "svchost"
){
 
if($oldPid -ne $_.
ProcessID){
   
$color = $fgColors[($color -eq $fgColors[0])]
    $oldPid = $_.
ProcessID
  }
   
Write-Host $_.ProcessID $_.displayname -ForegroundColor $color
  }
}

image

いい感じ。

ちなみに、グルーピングせずに単純にオルタネイト表示する場合は、こんな感じでしょうか。

001
002
003
004
005
006
007

$fgColors = "DarkCyan","Gray"
$color = $fgColors[0]

Get-Process | Out-String -Stream | %
{
   
$color = $fgColors[($color -eq $fgColors[0])]
    Write-Host $_ -BackgroundColor $color -ForegroundColor Blue
}

image

◆svchostプロセスのサービスを纏めて表示する

タスクマネージャでプロセスタブを見ていると「svchost」なるプロセスをたくさん見かける。

image

説明を見ると「Windowsサービスのホストプロセス」とある。
即ち、これらのプロセスが各種Windowsのサービスをホストしているという事になる。

それぞれのプロセスがどんなサービスをホストしているかは、該当プロセスを右クリックして表示されたコンテキストメニューから「サービスの表示」を選んであげると以下の様に表示される。
image

image

これを見ると、1つのプロセスが複数のサービスをホストしていることが判る。

 

次に、これらを纏めてPowerShellで表示させてみたのが以下のスクリプトである。

001
002
003
004
005

Get-WmiObject -Class Win32_Service | sort ProcessID | %{
 
if((Get-Process -Id $_.ProcessID).ProcessName -eq "svchost"
){
   
Write-Host $_.ProcessID $_.displayname 
  }
}

「Get-Service」コマンドレットではプロセスIDが見当たらなかったので、「Win32_Service」を使っている。
それ以外は特別なところは無い。

image

2012年6月8日金曜日

◆ActiveDirectoryオブジェクトのプロパティを比較する

以下のやり取りを見ていてActiveDirectoryオブジェクトのプロパティを調べてみたくなりちょっと試してみました。
LastlogonDate

「Get-ADObject」で返ってくるのは「Microsoft.ActiveDirectory.Management.ADObject」

「Get-ADUser」で返ってくるのは「Microsoft.ActiveDirectory.Management.ADUser」

この2つのオブジェクトのプロパティが比較的できればOK

AD関連のオブジェクトはサイズが大きいせいか明示的に「Property」パラメータで指定しないと返ってこないプロパティが多い。
全プロパティはどうなっているのか。
MSDNをちょっと探してみたが見つからない・・・。
仕方がないので適当にやってみたら「Property」パラメータに「*」を指定すると全部返ってくるみたい。ラッキー。

全プロパティが取ってこれればあとは比較するだけ。

こんな感じだろうか。

001
002
003
004
005
006
007
008

Import-Module ActiveDirectory

$adobject = Get-ADObject -filter {name -eq 'Administrator'} -property *  |
 
 
gm | ?{$_.MemberType -eq "Property"} | select -ExpandProperty name
$aduser = Get-ADUser administrator -property * |
 
 
gm | ?{$_.MemberType -eq "Property"} | select -ExpandProperty name
 
Compare-Object $aduser $adobject

image

2012年6月5日火曜日

◆Windows8RPのPowerShellヘルプ2

PowerShell: ◆Windows8RPのPowerShellヘルプの続き。

あまりに使いづらいのでもう少し調べてみました。

どうやら、ヘルプをダウンロードした時にローカルのヘルプファイルを更新する権限が無いような感じです。

「管理者として実行する」で一旦「Get-Help」を実行してダウンロードしておけばその後はダウンロードを要求されなくなるようです。
自分から取りに行く場合は「Update-Help」を実行するのかな。
オンライン側のHELPが更新されたのを知らせる仕組みがあるのかどうかは今のところ判りませんが・・・。

ちなみに、Windows7では「ユーザーアカウント制御の設定」を「通知しない」にするとPowerShellは通常でも管理者権限で起動するように思うのですが、Windows8ではそうならないようです。

2012年6月1日金曜日

◆Windows8RPのPowerShellヘルプ

Windows8RPがリリースされました。
それほど興味はないのですがPowerShellの最新版が使ってみたいのでインストールしてみました。

ヘルプファイルが追加されているか興味があったので早速Get-Help

すると以下のような問い合わせが表示され、「Y」をこたえると何やらダウンロードが始まった風。
キャプチャ1

キャプチャ2

これでやっと新コマンドの使い方が解るのかと期待したのもつかの間、表示されたヘルプ自体はDetailではない風。

残念。

しかもどうしたことかこのヘルプ君、どのコマンドをヘルプしても毎回ダウンロードを訪ねてくる。
コマンドごとにダウンロードファイルが違うのかと一瞬思ったが、プログレスを見ていると同じものっぽい。

とりあえず毎回「N]を答えるしかないのか・・・

--追記
PowerShell: ◆Windows8RPのPowerShellヘルプ2