Generate random password , rather than $password = “Password” to the following script

#Define variables

$computers = Get-Content C:\scripts\Computers1.txt

$username = “user0707”

$password = “Password”

$fullname = “Local Administrator”

$local_security_group = “Administrators”

$description = “Description”

Foreach ($computer in $computers) {

$users = $null

$comp = [ADSI]”WinNT://$computer”

#Check if username exists

Try {

$users = $comp.psbase.children | Select-Object -expand name

if ($users -like $username) {

Write-Host “$username already exists on $computer”

} else {

#Create the account

$user = $comp.Create(“User”,”$username”)

$user.SetPassword(“$password”)

$user.Put(“Description”,”$description”)

$user.Put(“Fullname”,”$fullname”)

$user.SetInfo()

#Set password to never expire

#And set user cannot change password

$ADS_UF_DONT_EXPIRE_PASSWD = 0x10000

$ADS_UF_PASSWD_CANT_CHANGE = 0x40

$user.userflags = $ADS_UF_DONT_EXPIRE_PASSWD + $ADS_UF_PASSWD_CANT_CHANGE

$user.SetInfo()

#Add the account to the local admins group

$group = [ADSI]”WinNT://$computer/$local_security_group,group”

$group.add(“WinNT://$computer/$username”)

#Validate whether user account has been created or not

$users = $comp.psbase.children | Select-Object -expand name

if ($users -like $username) {

Write-Host “$username has been created on $computer”

} else {

Write-Host “$username has not been created on $computer”

}

}

}

Catch {

Write-Host “Error creating $username on $($computer.path): $($Error[0].Exception.Message)”

}

}

Hi, welcome to the forum :wave:

Firstly, when posting code in the forum, please can you use the preformatted text </> button. It really helps us with readability, and copying and pasting your code (we don’t have to faff about replacing curly quote marks to get things working).

How to format code on PowerShell.org

As to your question, consider using the GeneratePassword() method:

Add-Type -AssemblyName System.Web
$password = [System.Web.Security.Membership]::GeneratePassword(16,3)