PowerShellでイベントログを取得!

▼ 【アプリケーション】の【警告】の最新【3】件のイベントログを取得
-
new!
Get-WinEvent -FilterHashtable @{ LogName=”Application”; Level=3 } -MaxEvents 3
-
Get-EventLog -LogName Application -EntryType Warning -Newest 3



▼ 参考サイト様

[ActiveDirectory] ユーザー管理(1) Get-ADUser コマンドレット

今回より何回かに分けて、Active Directoryモジュールを使用したユーザーの管理方法について説明していきたいと思います。

最初に、ユーザー管理に使用できるコマンドレットを見てみましょう。

Active Directoryモジュールでは、ユーザー操作に関するコマンドレットの名詞部には必ず「ADUser」という文字が含まれています。

そこで、「ADUser」が含まれるコマンドレットを探してみると、下記のように5つあることがわかります。

コマンドレット 説明
Get-ADUser 1人以上のADユーザーを取得する
Get-ADUserResultantPasswordPolicy ユーザーのパスワードポリシーの結果を取得する
New-ADUser 新しくADユーザーを作成する
Remove-ADUser ADユーザーを削除する
Set-ADUser ADユーザーを修正する

今回は Get-ADUser の使用方法を見ていきましょう。


Get-ADUser

Get-ADUser は非常に多くのパラメータを持っており、一口に「ADユーザーを取得する」といっても、その取得方法は多様です。

次に示すように、使用方法は3つあります

  1. Filterパラメータを使用してPowerShellの記述言語でクエリ文字列を作成しADユーザーを取得する方法
  2. Identityパラメータを使用して取得するADユーザーを指定する方法
  3. LDAPFilterパラメータを使用してLDAPクエリ文字列でADユーザーを取得する方法

Filterパラメーターを使用する

もっとも汎用性の高いパラメーターで、ユーザー検索の条件を指定することができます。

たとえば、「メールアドレスの先頭が”Sato”から始まっているユーザーを取得したい」、「最終ログオン日時が2011/2/1移行のユーザーを取得したい」といった検索で使用します。

・全ユーザーの取得

全ユーザーを取得するには、-Filterパラメーターにワイルドカード(*)を指定するだけです。

Get-ADUser -Filter *

・メールアドレスによるユーザーの取得

メールアドレスが”hiro”で始まるユーザーを検索してみましょう。

「メールアドレスが”hiro”で始まる」を式で表すと 「mail -like ‘hiro*’」 となるので、コマンドは以下のようになります。

Get-ADUser -Filter {mail -like "hiro*"}

メールアドレスでユーザーを検索する以外にも、ユーザーが持つ属性による(性(givenname)、名(surnname)、電話番号(telephonenumber))検索も可能です。

・特定のOUに属するユーザーの取得

今度は-SearchBase パラメータを追加して任意のOUに属するユーザーを取得してみましょう。

下記はcorp.contoso.comのITに属するユーザーを検索します。

Get-ADUser -Filter * -SearchBase "OU=IT,DC=corp,DC=contoso,DC=com"

Identityパラメータを使用する

Identityパラメータには次のプロパティのいずれかを指定した検索を行うことができます。

  • 識別名
  • GUID
  • セキュリティ識別子
  • SAMアカウント名

例としてGUIDによる検索例を見てみましょう。

Get-ADUser -Identity "S-1-5-21-4193795416-3281483866-4073542180-1110"


LDAPFilterパラメータを使用する

LDAPFilterパラメータを使用すると、LADPクエリ文字列による検索をすることができます。

下記はcorp.contoso.comのIT組織(OU)の中から名前が”HIRO”で始まるオブジェクトを検索します。

Get-ADUser -LDAPFilter "(name=HIRO*)" -SearchScope Subtree -SearchBase "OU=IT,DC=corp,DC=contoso,DC=com"

このほかにも様々なパラメータがありますので、興味があるかたは是非ヘルプを参照ください。

詳細なヘルプを見たい場合は下記コマンドを実行してください。

help Get-ADUser -Detailed

Windows Server 2008 R2 のPowerShell

Windows Server 2008 R2 (以降Win2008 R2)では PowerShell の Ver.2.0が標準搭載されています。

これは、Win2008 R2をインストールするとタスクバーにPowerShellのアイコンがあることからもわかります。

PowerShell のバージョンは 自動変数 $PSVersionTable で確認することができます。

(PSVersionのところが「2.0」と表示されます)

PowerShell 2.0では専用のエディタPowerShell ISEが使用できるのですが、デフォルトではインストールされていません。

もしもPowerShell ISEを使用したい場合には「機能の追加ウィザード」で「Windows PowerShell Integrated Environment(ISE)」にチェックを付けてインストールを行います。

もしも、.NET Framaework 3.5.1 がインストールされていない場合には下図のようにインストールするかどうかを聞かれるので、[必要な機能を追加]ボタンを押してインストールをしましょう。

下記のように、.NET Framework のインストールおよび PowerShell ISE がインストールされます。

インストールが完了すると、[アクセサリ]-[Windows PowerShell] に PowerShell ISE が追加されます。

今回は、Win2008 R2 で PowerShell を使用するための準備について説明しました。

今後は Active Directoryを管理する方法について書いていこうと検討中です。

[PowerShell 2.0 入門] PSドライブ

PSドライブとは、PowerShellからファイル、フォルダ、レジストリなどにアクセスするための手段です。

従来のコマンドプロンプトの場合はファイル操作しかできなかったのですが、PowerShell で取り入れられたPSドライブによって、ファイル、フォルダ、レジストリなどに一貫した操作方法で取り扱うことができます。

PSドライブとして扱うことができるもののリストは Get-PSDrive コマンドレットで取得することができます。

Providerという列を見ると、Alias(エイリアス)やCertificate(デジタル署名)、Environment(環境変数)、Registry(レジストリ)、FileSystem(ファイルシステム)、Variable(変数)、WSMan(WinRMサービス)などがあることを確認できます。

もしもファイルシステムの一覧のみを取得したい場合には -PSProvider パラメータを使用して(Provider列にある名称を指定することができます)

Get-PSDrive -PSProvider filesystem

と入力します。

レジストリの一覧を取得したい場合には

Get-PSDrive -PSProvider Registry

と入力します。

さて、PSドライブの一覧を取得する方法がわかりました。

PSドライブは、ファイルシステムを操作する要領でアクセスできるので

Set-Location HKCU:

とすると、レジストリのHKEY_CURRENT_USERにアクセスすることができるようになります。

Set-Location コマンドレットはカレント変更するコマンドレットです)

コンソールウィンドウをよく見ると、 カレントが「PS C:\Work」から「PS HKCU:」に変わっていることを確認できます。

ファイルシステムに戻る場合も Set-Location コマンドレットを使用して

Set-Location C:\

のように入力します。

Set-Location コマンドレットは、cd というエイリアスを持っていますので

cd c:\

と入力することも可能です。

このようにPSドライブという仕組みがあることで、レジストリやその他のプロバイダもファイルシステムを操作するように取り扱うことが可能です。

[PowerShell 2.0 入門] 出力結果を1ページずつ表示する

出力結果が大きいと1ページに収まりきらない場合があります。

このような場合は、Out-Host コマンドレットを使用すると、出力結果を1ページずつ参照することができます。

Out-Host コマンドレットの書式は下記の通りです。

Out-Host [-InputObject <psobject>] [-Paging] [<CommonParameters>]

たとえば、Get-Command でコマンドレットの一覧を取得して1ページずつ見るには

PS> $cmd = Get-Command
PS> Out-Host -InputObject $cmd -Pageing

Out-Host コマンドレットはパイプラインから受け取ることもできるので

PS> Get-Command | Out-Host -Pageing

のように記述することもできます。

また、more関数を利用して

PS> Get-Command | more

と記述しても、同様の結果を得ることができます。