2017-10-04 91 views
1

我已經爲連接到AD域控制器的系統找到了此問題的答案。但是,這個問題適用於無法連接到域控制器的獨立系統。基本上,氣隙系統。列出所有用戶在非域名系統上的最後一次Windows密碼更改

短而甜:有沒有一種方法可以列出每個用戶最後一次將非密碼空閒系統(Windows 7或10)的Windows密碼更改爲批處理文件或PowerShell腳本?

我知道net user {username} |找到/我「上次設置的密碼」將一次爲他們做。然而,每臺機器運行多次會很繁瑣,而且我們有超過60個這種類型的系統。所以如果可能的話,我正在尋找一種方法來做到這一點。

作爲一個告誡,我們沒有選擇在PowerShell中爲此安裝activedirectory模塊。此外,由於大多數系統是Windows 7,我們無法訪問Windows 10中可用的Bash命令行工具。

任何和所有關於此的幫助表示讚賞。

+0

不'NET USER'列表中的本地帳戶?你可以編寫一個調用'NET USER'獲取賬戶的批處理腳本,然後遍歷該列表並調用'NET USER {username} |找到/我「密碼上次設置」? – aphoria

+0

是的,NET USER列出所有本地帳戶。但是,NET USER以一種格式返回它的輸出,由於字段的設置方式,我不確定如何處理。否則,是的,一個簡單的NET USER運行並將其管道化爲文本文件並通過循環機制讀取它將是一個簡單的選擇。 – EvilEuro

回答

2

下面是一個使用ADSI WinNT提供一種方法:

$computerName = [Net.Dns]::GetHostName() # i.e., local computer 
$computer = [ADSI] "WinNT://$computerName,Computer" 
$childObjects = $computer.Children 
foreach ($childObject in $childObjects) { 
    if ($childObject.Class -eq "User") { 
    if ($childObject.PasswordAge[0] -gt 0) { 
     $pwdLastSet = (Get-Date).AddSeconds(-$childObject.PasswordAge[0]) 
    } 
    else { 
     $pwdLastSet = $null 
    } 
    $childObject | Select-Object ` 
     @{Name="AdsPath";   Expression={$_.AdsPath}}, 
     @{Name="PasswordLastSet"; Expression={$pwdLastSet}} 
    } 
} 
+0

由於某種原因,當我們試圖運行它時,這個掛起。我們沒有得到任何產出,必須努力突破才能退出。不完全確定爲什麼,但我們也不能調用調試器。唯一出現的是腳本運行的完整路徑,但輸出爲零。奇怪的。 – EvilEuro

+0

我無法複製它。 –

+0

你在Powershell ISE中運行它嗎? – Compo

相關問題