2016-06-01 14 views
1

たとえば、最近5分間のアクティブユーザー数をActive directoryにカウントするツールを作成しました。しかし、私のスクリプトは、夜間であっても、常に同じ量のアクティブユーザーを返すようになっています。ここでActive Directory powershellでアクティブなユーザーを取得

は、アクティブなユーザーをカウントし、私のスクリプトの一部です:

$Date=Get-Date #Getting the Date of the mesure 
$TpsDerLog= ($Date).AddMinutes(-5) #Creating the time marker for inactive user (mesure time - 5 minutes) 
$Liste= Get-ADUser -Server "reseau" -filter {(enabled -eq $True) -and (objectclass -eq "user")} #Getting all the enabled accounts in the Active Directory 
$ListeN = Get-ADUser -Server "reseau" -filter { (LastLogonTimeStamp -lt $TpsDerLog) -and (objectclass -eq "user") -and (enabled -eq $True) } -Properties LastLogonTimeStamp #Getting the inactive Enabled users 
$nb=($Liste.count)+(-$ListeN.count) #Substracting The inactive users to the total 
+0

'($ Date).AddHours(-0.08333)'の代わりに '($ Date).AddMinutes(-5)' ;-) –

+0

ありがとうございましたが、結果は変わりません:/ – BbsMentos

+0

Nahさん、可読性のために... –

答えて

0

あなたのやりたいことは、実際にはActive Directoryで実行できません。ユーザがドメインにログインし、セッションをロックしたままマシン/サーバから切断した後、家に帰ることがあります。

この情報はActive directoryに返されないため、ユーザーが戻ってマシンのロックを解除(ドメインコントローラに対して認証)するまで、変数は同じままです(LastLogon)。これは、帰宅しても夜間にユーザーをアクティブに見せる理由です。

セッションで使用が現在アクティブであるかどうかを確認できる唯一の方法は、使用していたマシンを調べてセッションステータスを返すことです。しかし、多くのドメインマシンに接続することは理想的ではありません。したがって、ログオンしたユーザーの数を把握するには、ドメインコントローラのイベントログを追跡し、ログオンイベントを持っているが設定された時間内にログオフイベントが発生していないユーザーを確認するのが最善の方法です。

0

あなたのコードは、あなたのすべてのアクティブな広告に掲載した(無効になっていないユーザ)($ LISTEに保存されている)とユーザの間の差を与えています最近ドメインにログインしています。 LastLogonTimeStamp属性が14日からランダムパーセンテージ(5日)を引いたものとして計算されるため、5分の差はあなたを助けません。

便利なリンク:

LastLogonTimeStamp Attribute

Difference between LastLogon and LastLogonTimeStamp

AddDays()メソッドで遊んでみてください、あなたは、ユーザーが日常的に自分のドメインへのログイン方法について、より正確な結果を得ることができます。

関連する問題