powershell导出随机密码和用户名

powershell导出随机密码和用户名,powershell,Powershell,我一直在通过下面这样的方式重置用户密码。我的问题是:如何获得下面这样的输出 期望输出: username,password user01,Wkyqnm7l user02,Wfyqrm8l 脚本: import-Csv c:\tmp\users.csv | ` ForEach-Object { $filenamedate = "C:\tmp\{0}.txt" -f (get-date -f 'MM-dd-yyyy hh-mm-ss') $PassWord

我一直在通过下面这样的方式重置用户密码。我的问题是:如何获得下面这样的输出

期望输出:

username,password
user01,Wkyqnm7l
user02,Wfyqrm8l
脚本:

import-Csv c:\tmp\users.csv  | `
    ForEach-Object { 
    $filenamedate = "C:\tmp\{0}.txt" -f (get-date -f 'MM-dd-yyyy hh-mm-ss')

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

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

    
    Set-ADAccountPassword -Identity $_.dn -Reset -NewPassword $SecPW }

如果DN实际上是DifferentizedName,则可以执行类似于
($\u.DN).Split(“,”)[0]-替换“CN=”
的操作来获取sAMAccountName

如果您希望每个用户有一个文件,那么
$fileNameDate
应该在循环中,但您还需要一个变量来标识文件

$charMap=[char[]]"!@#$%^&*0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"
$filenamedate = "C:\tmp\{0}.csv" -f (get-date -f 'MM-dd-yyyy hh-mm-ss')

import-Csv c:\tmp\users.csv | ForEach-Object {     
    $PassWord = -join ($charMap |Get-Random -Count 8)
    $SecPW = ConvertTo-SecureString -String $PassWord -AsPlainText -Force
    Set-ADAccountPassword -Identity $_.dn -Reset -NewPassword $SecPW 
    
    [pscustomobject]@{
        UserName=$_.DN # if the DN is actually the samAccountName
        Password=$Password
    } | Export-Csv $fileNameDate -NoTypeInformation -Append 
}

如果csv中的列
dn
实际上是用户
SamAccountName
,而不是
区分名称
,则可以使用

$filenamedate = "C:\tmp\{0}.csv" -f (get-date -f 'MM-dd-yyyy hh-mm-ss')
$result = Import-Csv c:\tmp\users.csv  |
    ForEach-Object { 
        $PassWord = -join ([char[]]"!@#$%^&*0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz" | Get-Random -Count 8)
        $SecPW = ConvertTo-SecureString -String $PassWord -AsPlainText -Force
        Set-ADAccountPassword -Identity $_.dn -Reset -NewPassword $SecPW
        
        # output an object
        [PsCustomObject]@{
            username = $_.dn
            password = $PassWord
        }
    }

$result | Export-Csv -Path $fileNameDate -NoTypeInformation

csv文件是否也包含用户samaccountname?嗨,theo,已经在
$\uDN.dn
变量中添加了用户samaccountname,因此
dn
值实际上不是dn?不是dn,已经在$\uDN.Variables中添加了用户samaccountname这比我的示例更快/更好。更少的磁盘I/O=更快的执行。@Theo我有一个问题。你有机会看看吗?