5
में समाप्त होने

मैं एक powershell स्क्रिप्ट खातों कि 7 दिनों में समाप्त हो के लिए प्रश्नों को चलाने के लिए कोशिश कर रहा हूँ लगता है, मैं वर्तमानPowershell उन 7 दिन

$a = (get-date).AddDays(7) ; Search-ADAccount -AccountExpiring -TimeSpan "7" | Select-Object SamAccountName,AccountExpirationDate | Sort-Object AccountExpirationDate | Export-Csv 7_days.csv

है लेकिन जब मैं निम्नलिखित परिवर्तन करना है, यह है करने के लिए लगता है कुछ परेशानी और मैं एक खाली सीएसवी फ़ाइल प्राप्त करने के अंत में। आखिरकार, मैं खाता 7 दिनों में समाप्त करना चाहता हूं, अधिक नहीं, कम नहीं।

$a = (get-date).AddDays(7) ; Search-ADAccount -AccountExpiring -TimeSpan "7" | Select-Object SamAccountName,AccountExpirationDate | Sort-Object AccountExpirationDate | Where-Object {$_.AccountExpirationDate -like $a } | Export-Csv 7_days.csv

क्या कोई मुझे बता सकता है कि मैं क्या गलत कर रहा हूं? मैंने "कहां ऑब्जेक्ट {$ _। AccountExpirationDate -like $ a}" चारों ओर टुकड़ा, या "-like" के बजाय "-match" को स्थानांतरित करने का प्रयास किया है, हालांकि इन्हें मुझे बहुत सफलता नहीं मिली है। मैं इसके साथ गलत कहां जा रहा हूं?

उत्तर

9

अद्यतन: यदि आप स्ट्रिंग मान पास करते हैं तो आप खाते प्राप्त कर सकते हैं, एक पूर्णांक गुजरने से टाइम्स पैन 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 } 
+0

यह निकटतम जवाब अब तक है की कोशिश करो, मैं नहीं मिला है वांछित परिणाम अभी तक, लेकिन आपकी मदद के लिए धन्यवाद करीब आ गया है: $ NeverExpires = 9223372036854775807; $ ExpringIn = (Get-Date) .ddDays (7); foreach ($ item प्राप्त करें -एडयूसर -फिल्टर * -प्रॉपर्टीज अकाउंट एक्सपेयर | कहां ऑब्जेक्ट {$ _। खाता एक्स्पेयर्स- कोई $ NeverExpires- और [डेटाटाइम] :: FromFileTime ([int64] :: पार्स ($ _। खाता एक्स्पायर)) -lt $ ExpringIn} | चयन-ऑब्जेक्ट SamAccountName, खाता एक्स्पायर्स) {लिखें-होस्ट $ आइटम। सैमएक्वाउंटनाम ([डेटाटाइम] :: सेफाइलटाइम (($ item.accountExpires)। "msDS-userPasswordExpiryTimeComputed")) – perlnoob

+0

हाय, मुझे cmdlet कहां मिल सकता है "Get- एड्यूसर "से? –

+0

यह एडी मॉड्यूल का एक हिस्सा है जो आरएसएटी (रिमोट सर्वर एडमिनिस्ट्रेशन टूल्स) का हिस्सा है। http://www.microsoft.com/en-us/download/details.aspx?id=7887 –

2

उपयोग में विशेषता accountExpires है और के बाद से 1600

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 : [email protected] 

100 नैनो दूसरे के pacquet में एक्सप्रेस है आप [DATETIME] इस तरह करने के लिए इसे परिवर्तित कर सकते हैं:

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

mardi 22 mai 0412 22:00:00 
1

हालांकि यह एक पुराना धागा है .. मुझे एक त्वरित नोट और सावधानी का शब्द जोड़ने दें ..

7 दिनों के खातों के लिए पूछने योग्य बनें। 7 दिन और 2 घंटे 7 दिन नहीं होंगे और इसलिए क्वेरी से मेल नहीं खाएंगे (हो सकता है कि आपका सीएसवी खाली क्यों हो)।

इसलिए आप 7 वें दिन के भीतर सभी को पकड़ने के लिए हमेशा 7 दिन और उससे कम 8 (आदि) खाते को कहना चाहते हैं। आदि ...

साथ ही,
ऊपर कोड [datetime] (Get-ADuser user1 -Properties accountExpires) .accountExpires
मुझे एक त्रुटि दे
कनवर्ट नहीं कर सकता मूल्य "9223372036854775807" करने के लिए "System.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?forum=ITCG