Я использую UserPrincipal для сбора сведений о локальных пользователях на серверах-членах, не являющихся доменами. Я хочу отправлять пользователям сообщения, когда их пароли истекают или истекли.POWERSHELL: Получить пароль с датой использования UserPrincipal
У меня есть все, кроме Max Password Age. Я не могу получить эту ценность, и все, что я нахожу, говорит о подключениях Active Directory, которые мне не нужны. Когда я пытаюсь адаптировать его к локальному серверу, он не работает.
Вот что у меня есть:
$date = Get-Date
$contextType = [System.DirectoryServices.AccountManagement.ContextType]::Machine
$principalContext = New-Object System.DirectoryServices.AccountManagement.PrincipalContext($contextType)
$principalSearcher = New-Object System.DirectoryServices.AccountManagement.PrincipalSearcher(New-Object System.DirectoryServices.AccountManagement.UserPrincipal($principalContext))
ForEach($userPrincipal in $principalSearcher.FindAll())
{
$maxPasswordAge = 90
$name = $userPrincipal.Name
$samAccountName = $userPrincipal.SamAccountName
$description = $userPrincipal.Description
$fullname = $userPrincipal.DisplayName
$lastPasswordSet = $userPrincipal.LastPasswordSet
$passwordExpires = $lastPasswordSet.AddDays($maxPasswordAge)
$passwordExpiresDays = New-TimeSpan -Start $date -End $passwordExpires
$passwordExpiresDays = [Math]::Floor($passwordExpiresDays.TotalDays)
Write-Host "Name: "$name
Write-Host "SAM Account Name: "$samAccountName
Write-Host "Full Name: "$fullName
Write-Host "Password last set: "$lastPasswordSet
Write-Host "Password expires: "$passwordExpiresDays
Write-Host "Max Password Age: "$maxPasswordAge
}
В коде выше я вручную установить значение 90, чтобы получить мой код для работы. Мне нужно заменить это кодом, чтобы получить правильное значение.
Я попытался следующий, чтобы извлечь объект DirectoryEntry из моего UserPrincipal, а затем собственный объект, но я не могу заставить его работать:
$directoryEntry = $userPrincipal.GetUnderlyingObject()
$native = [ADSI]$directoryEntry.NativeObject
Я уверен, что его легко, и я проглядел что-то очевидное ....
Это имело бы смысл код мудрый, но наши учетные записи этого срок действия и требуют пароля для быть изменен. – neildeadman
см. Обновление для ответа –
Это похоже на работу, просто тестирование и возвращение к вам. Благодарю. – neildeadman