2016-05-06 13 views
0

私はフィルタなしで動作する以下のpowershellを持っています。しかし、もし私がpasswordlastsetが今日だったかどうかを知りたければ、それはエラーを投げます。私は日付を(時間なしで)比較しようとしています。Powershell - Active Directory - 今日までにPasswordLastSetをフィルタ

この行は、エラーがスローされます。

Get-ADUser -identity svc-sap-dataRead -ldapfilter passwordlastset=get-date -properties passwordlastset 

Get-ADUser -identity svc-sap-dataRead -properties passwordlastset 

DistinguishedName : CN=svc-sap-dataRead,OU=Service Accounts,OU=SAP- 
        OG,OU=Applications,OU=Prod-Groups,DC=csi,DC=com 
Enabled   : True 
GivenName   : 
Name    : svc-sap-dataRead 
ObjectClass  : user 
ObjectGUID  : dcbadba0-3cd7-4e51-9d14-d0e8a6be17f5 
PasswordLastSet : 5/6/2016 8:44:13 AM 
SamAccountName : svc-sap-dataRead 
SID    : S-1-5-21-3791487480-1111548175-1301309645-519760 
Surname   : 
UserPrincipalName : [email protected] 

ただ、次のコードを試してみました:それはエラーも私に戻って何かを与えていません。

Get-ADUser -identity svc-sap-dataRead -properties passwordlastset | 
where {$_.passwordlastset -eq (get-date)}|select-object passwordlastset, name 
+0

のGet-ADUser -Identity SVC-SAP-dataRead -properties passwordlastset | {$ _。passwordlastset -lt(get-date)} | passwordlastsetを選択すると、この構文が機能します。 passwordlastsetとget-dateの両方から時間を無視する方法があります。そうすれば、-eqが動作するように動作します。 –

答えて

0

あなたは一日だけでなく完全な日時を比較しています。言い換えれば、あなたは分に比例しています。あなたのwhereブロックでこれを入れて:

$pw = $_.passwordLastset; 
$pw.ToShortDateString() -eq $(Get-Date).ToShortDateString() 

編集:ここでは完全なコマンドです:

Get-ADUser -Identity svc-sap-dataRead -Properties passwordLastSet | Where-Object { 
    $pw = $_.passwordLastSet 
    if ($pw -ne $null) { 
     $pw.ToShortDateString() -eq (Get-Date).ToShortDateString() 
    } 
} | Select-Object passwordLastSet, Name 

Where-Objectは、この場合には、そのブロック内の基準を満たしていないユーザーを除外するために起こっているあなたパスワードを今日リセットしていないユーザー。

あなたはちょうど彼らが今日の自分のパスワードをリセットしたかどうかのブール値をしたい場合は、このような何か試してみてください:

$adUser = Get-ADUser -Identity svc-sap-dataRead -Properties passwordLastSet | Select-Object passwordLastSet, Name 
$pw = $adUser.passwordLastSet 
$resetPasswordToday = if ($pw -ne $null) { $pw.ToShortDateString() -eq (Get-Date).ToShortDateString() } else { $false } 

これは、passwordLastSet属性を取得し、それがnullかどう見ている場合見ていない場合はされ今日は今日です。
(。手動で "ユーザーがパスワードを変更しなければならない" ボックスをチェックして、パスワードを期限切れならば、これは本質的passwordLastSetヌルになり、心に留めておいてください)

+0

@langstormありがとうございます。 –

+0

$ pwはオブジェクトなので、このオブジェクトから日付を取得する必要があります。他の誰もがそのための方法を知っている –

+0

あなたは明確にすることができますか?特定の文字列形式で日付が必要ですか?オブジェクトの型は 'DateTime' https://msdn.microsoft.com/en-us/library/system.datetime%28v=vs.110%29.aspxです。日付を取得する方法はいくつかあります。 – langstrom

関連する問題