使用安全密码创建本地管理员帐户的隐形 powershell 脚本

Invisible powershell script to create local admin account with secured password

我对 Whosebug 和 Powershell 不是很熟悉。 抱歉格式化,请让我知道如何改进我的 post 以获得更多可见性。

我一直在尝试获取一个不可见的 powershell 脚本,该脚本将在创建帐户之前检查该帐户是否存在。 如果该帐户不存在,则该脚本将使用安全密码创建一个属于管理员组的本地管理员帐户。 该帐户将在下次登录时强制更改密码。

我已经尝试了一些东西,我有 2 个独立的脚本,一个用于在 .txt 文件中创建安全密码,然后我将这个文件调用到主脚本中。

到目前为止,脚本不是无声的(不可见的),密码也没有保存。 该帐户确实已创建,但是当我输入密码时它说我有错误。 如果我以不安全的方式设置密码它会起作用并要求我在下次登录时更改它。

不幸的是,如果该帐户已经存在,它不会退出脚本,而是更改密码。

密码创建:

Read-Host -Prompt "Saisir mot de passe " -AsSecureString | ConvertFrom-SecureString | Out-File C:\script2\init.pwd

主要脚本:

$Password = cat C:\script2\init.pwd | ConvertTo-SecureString

$group = "Administrators"

$adsi = [ADSI]"WinNT://$env:COMPUTERNAME"
$existing = $adsi.Children | where {$_.SchemaClassName -eq 'user' -and $_.Name -eq $Username }

if ($existing -eq $Username) {
        exit
}
else {
        NET USER $Username $Password /add /y /expires:never
        NET LOCALGROUP $group $Username /add

}

$Username = "su"
$Usrstring = "WinNT://localhost/"+$Username  
$usr=[ADSI] $Usrstring  
$usr.passwordExpired = 1  
$usr.setinfo()

我想你可以使用 try-catch 方法和 New-localuser 来做到这一点。

$username = "TestUser"
$Password = cat C:\script2\init.pwd | ConvertTo-SecureString
#Changing this back to what would work for you. I was supplying a plaintext password
#$Password = Read-Host -Prompt "Password" -AsSecureString

try
{
    Get-LocalUser -Name $username -ErrorAction Stop
    #"User Already exists"
}
catch
{
    New-LocalUser -Name $username -Password $Password
    Add-LocalGroupMember -Group "Administrators" -Member $username

    $usr=[ADSI]"WinNT://localhost/$username"
    $usr.passwordExpired = 1
    $usr.setinfo()
}

如果将其保存为脚本,请说 Create-localUser.ps1 您可以使用命令

RunTask Schedulerlogon batch script 调用它

powershell.exe -windowstyle Hidden -file C:\temp\create-Localuser.ps1

并对登录用户隐藏它。我假设这就是你所说的隐形的意思。