7

7日以内に期限切れになるアカウントをクエリするPowerShellスクリプトを実行しようとしていますが、現在は

$ a =(get-date).AddDays(7); Search-ADAccount -AccountExpiring -TimeSpan "7" | Select-Object SamAccountName、AccountExpirationDate | ソートオブジェクトAccountExpirationDate| エクスポート-Csv7_days.csv

ただし、次の変更を行うと、問題が発生したようで、CSVファイルが空になってしまいます。最終的には、アカウントの有効期限が7日以内で、それ以上でもそれ以下でもないことを望んでいます。

$ a =(get-date).AddDays(7); Search-ADAccount -AccountExpiring -TimeSpan "7" | Select-Object SamAccountName、AccountExpirationDate | ソートオブジェクトAccountExpirationDate| Where-Object{$_。AccountExpirationDate-like$ a} | エクスポート-Csv7_days.csv

誰かが私が間違っていることを教えてもらえますか?「Where-Object{$_。AccountExpirationDate-like$ a}」の部分、または「-like」ではなく「-match」を移動してみましたが、あまり成功しませんでした。私はこれでどこが間違っているのですか?

4

4 に答える 4

10

更新:文字列値を渡すとアカウントを取得できます。整数を渡すと、タイムスパンが7ティックに初期化されます。

Search-ADAccount -AccountExpiring -TimeSpan "7"

その他の有効なオプション:

Search-ADAccount -AccountExpiring -TimeSpan (New-TimeSpan -Days 7)
Search-ADAccount -AccountExpiring -TimeSpan ([TimeSpan]::FromDays(7))

バグの可能性がありますが、私にとっても機能しません。回避策は次のとおりです。

$NeverExpires = 9223372036854775807
$ExpringIn = (Get-Date).AddDays(7) 

Get-ADUser -Filter * -Properties accountExpires | 
Where-Object {$_.accountExpires -ne $NeverExpires  -and [datetime]::FromFileTime([int64]::Parse($_.accountExpires)) -lt $ExpringIn }
于 2012-04-20T16:43:26.950 に答える
2

使用されている属性はaccountExpires、1600年から100ナノ秒のパキットで表現されています。

PS C:\Windows\system32> Get-ADuser user1 -Properties accountExpires


accountExpires    : 129821976000000000
DistinguishedName : CN=user1 users,OU=OUTest,DC=dom,DC=fr
Enabled           : True
GivenName         : user1
Name              : user1 users
ObjectClass       : user
ObjectGUID        : b1bef798-8e36-45ff-ad11-e79f89769efc
SamAccountName    : user1
SID               : S-1-5-21-3115856885-816991240-3296679909-1146
Surname           : Users
UserPrincipalName : user1@dom.fr

次のように[dateTime]に変換できます。

PS> [datetime](Get-ADuser user1 -Properties accountExpires).accountExpires

mardi 22 mai 0412 22:00:00
于 2012-04-20T16:46:22.827 に答える
2

これは古いスレッドですが..簡単なメモと注意の言葉を追加しましょう..

7日経過したアカウントを慎重に要求してください。7日と2時間は7日ではないため、クエリと一致しません(CSVが空である理由である可能性があります)。

したがって、7日以内のアカウントをすべてキャッチするには、常に7日以上8日未満(など)のアカウントを指定する必要があります。等...

さらに、上記のコード
[datetime](Get-ADuser user1 -Properties accountExpires).accountExpires
でエラーが発生
します。値「9223372036854775807」を「System.DateTime」に変換できません。エラー:「ティックはDateTime.MinValue.TicksとDateTime.MaxValue.Ticksの間にある必要があります。パラメータ名:ティック」

http://social.technet.microsoft.com/Forums/scriptcenter/en-US/b70113b1-a043-4543-afa0-dbba5757d035/powershell-windows-2008-getaduser-accountexpirationdate-returns-wrong-result ?フォーラム=ITCG

于 2014-05-28T16:28:11.873 に答える
2

次のPowerShellコマンドを試してください

Search-ADAccount -AccountExpiring -TimeSpan 6.00:00:00 | FT Name,ObjectClass -A

https://technet.microsoft.com/en-us/library/ee617247.aspx

于 2015-01-26T09:28:36.630 に答える