コマンドレットは用意されていないようだが.Netのクラスを使うと簡単に削除できる。
| [System.Diagnostics.Eventing.Reader.EventLogSession]::GlobalSession.ClearLog("system") |
当然「System」以外も「Security」とか「Application」とか「Windows PowerShell」とかを指定すればOK
コマンドレットは用意されていないようだが.Netのクラスを使うと簡単に削除できる。
| [System.Diagnostics.Eventing.Reader.EventLogSession]::GlobalSession.ClearLog("system") |
当然「System」以外も「Security」とか「Application」とか「Windows PowerShell」とかを指定すればOK
SharePointの作業をしていて、手順書に以下のような作業が載っていた。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office Server\14.0\Search\Setup\ContentIndexCommon\Filters\Extension\.pdf
値が ”{E8978DA6-047F-4E3D-9C78-CDBE46041603}”である必要があります。違う値が入っている場合は、この決められた値に変更します。
まずは、該当の場所に「.pdf」キーを作成する。
すると以下の様なデフォルト値が作成される。
この値に”{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} |
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 } } |
いい感じ。
ちなみに、グルーピングせずに単純にオルタネイト表示する場合は、こんな感じでしょうか。
| 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 } |
タスクマネージャでプロセスタブを見ていると「svchost」なるプロセスをたくさん見かける。
説明を見ると「Windowsサービスのホストプロセス」とある。
即ち、これらのプロセスが各種Windowsのサービスをホストしているという事になる。
それぞれのプロセスがどんなサービスをホストしているかは、該当プロセスを右クリックして表示されたコンテキストメニューから「サービスの表示」を選んであげると以下の様に表示される。
これを見ると、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」を使っている。
それ以外は特別なところは無い。
以下のやり取りを見ていて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 |
PowerShell: ◆Windows8RPのPowerShellヘルプの続き。
あまりに使いづらいのでもう少し調べてみました。
どうやら、ヘルプをダウンロードした時にローカルのヘルプファイルを更新する権限が無いような感じです。
「管理者として実行する」で一旦「Get-Help」を実行してダウンロードしておけばその後はダウンロードを要求されなくなるようです。
自分から取りに行く場合は「Update-Help」を実行するのかな。
オンライン側のHELPが更新されたのを知らせる仕組みがあるのかどうかは今のところ判りませんが・・・。
ちなみに、Windows7では「ユーザーアカウント制御の設定」を「通知しない」にするとPowerShellは通常でも管理者権限で起動するように思うのですが、Windows8ではそうならないようです。
Windows8RPがリリースされました。
それほど興味はないのですがPowerShellの最新版が使ってみたいのでインストールしてみました。
ヘルプファイルが追加されているか興味があったので早速Get-Help
すると以下のような問い合わせが表示され、「Y」をこたえると何やらダウンロードが始まった風。
これでやっと新コマンドの使い方が解るのかと期待したのもつかの間、表示されたヘルプ自体はDetailではない風。
残念。
しかもどうしたことかこのヘルプ君、どのコマンドをヘルプしても毎回ダウンロードを訪ねてくる。
コマンドごとにダウンロードファイルが違うのかと一瞬思ったが、プログレスを見ていると同じものっぽい。
とりあえず毎回「N]を答えるしかないのか・・・