У меня есть небольшой сценарий PowerShell, который я пишу, что позволяет мне захватывать пользователя из Active Directory и произвольно генерировать для них пароль.Система возвращает имя класса вместо переменной
$Alphabet=$NULL
for ($a=48; $a –le 70; $a++) {
$Alphabet += ,[char][byte]$a
}
function Get-TempPassword() {
Param (
[int]$Length=10,
[string[]]$Source
)
for ($loop=1; $loop –le $length; $loop++) {
$TempPassword += ($Source | Get-Random)
}
return $TempPassword
}
$Password = Get-TempPassword -Length 10 -Source $Alphabet
$NewPassword = ConvertTo-SecureString -String $Password -AsPlainText -Force
Set-ADAccountPassword -Identity $User -NewPassword $NewPassword
Set-ADUser –Identity $User –ChangePasswordAtLogon $true
Unlock-ADAccount $User | Out-Null
$Name = (Get-ADUser $User -Properties Name).Name
Write-Host "Okay, $Name's new password has been set to '$NewPassword'."
Вместо последней строки возвращающегося
Хорошо, новый пароль пользователя был установлен в '[Пароль].
это возвращение
Хорошо, новый пароль пользователя был установлен в 'System.Security.SecureString'.
Я считаю, что он возвращает этот класс и не устанавливает его как пароль, потому что я не могу войти с ним в качестве пароля для пользователя. Я предполагаю, что я что-то пропускаю, но я смотрел на него довольно долгое время и не вижу, что мне не хватает. Я также попытался закомментировать строку
$NewPassword = ConvertTo-SecureString -String $Password -AsPlainText -Force
и это, кажется, не помогает, что я ожидал ошибок, потому что больше не переменная спички.
Вы не можете распечатать прямую ссылку на экран непосредственно – bluuf
Спасибо @Hackerman, я не был уверен, как сформулировать свою проблему и не смог найти другую тему. –