【问题标题】:Export Random Password - Import and reset user password导出随机密码 - 导入和重置用户密码
【发布时间】:2019-04-03 11:28:45
【问题描述】:

是否可以导入随机生成的密码并将其设置为用户帐户?

以下仅带回以下内容:

无法将“System.String”类型的“Password”值转换为“System.Security.SecureString”类型。


$testing1 = read-host "Enter name"
$usertesting = Get-Aduser -Filter "DisplayName -eq '$testing1'" 

$fileNameDate = Get-Date
$fileNameDate = $fileNameDate.ToString('MM-dd-yyyy hh-mm-ss')

$Password = New-Object -TypeName PSObject
$Password | Add-Member -MemberType ScriptProperty -Name "Password" -Value { ("!@#$%^&*0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz".tochararray() | sort {Get-Random})[0..12] -join '' }
$Password | Export-csv -Path "C:\Output\$fileNameDate.txt" -notypeinformation

$passwordImport = import-csv "C:\Output\$fileNameDate.txt" | ForEach-Object { Set-ADAccountPassword -identity $testing1 -NewPassword $_.Password | ConvertTo-SecureString -AsPlainText -Force }

【问题讨论】:

  • 您需要预先在脚本中创建 SecureString 或将其括在括号中:-NewPassword ($_.Password | ConvertTo-SecureString -AsPlainText -Force)。另外,我不确定 CSV 文件在您的代码中添加了什么(额外的复杂性除外)。

标签: powershell import passwords export


【解决方案1】:

我很好奇您为什么保存密码(作为 csv)并在将其转换为安全字符串之前将其读回?

试试这个(未经测试)

## Q:\Test\2018\10\30\SO_53064023.ps1

$testing1 = read-host "Enter name"
$usertesting = Get-Aduser -Filter "DisplayName -eq '$testing1'" 

$filenamedate = "C:\Output\{0}.txt" -f (get-date -f 'MM-dd-yyyy hh-mm-ss')

$PassWord = -join ([char[]]"!@#$%^&*0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz" |Get-Random -Count 13)
$Password | Export-csv -Path $fileNameDate -NoTypeInformation

$SecPW = ConvertTo-SecureString -String $PassWord -AsPlainText -Force

Set-ADAccountPassword -identity $testing1 -NewPassword $SecPW 

【讨论】:

  • 将帐户设置为随机通行证是可以的,但我们不会知道。这是一些自动化测试的一部分。
猜你喜欢
  • 2016-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-18
  • 1970-01-01
  • 2011-09-06
相关资源
最近更新 更多