0

我正在尝试运行一个将本地管理员添加到计算机的命令。但是,我正在努力将其与脚本结合起来,以将其推送到 Active Directory 中特定 OU 下的所有域计算机。

下面是脚本的第一部分,是我用来创建用户的命令。

我还有一个脚本可以将所有必需的 OU 计算机拉入 CSV,但我需要将以下脚本推送到此 CSV 中的 PC。这可能吗?我只希望它运行一次,而不是作为启动脚本,因为我不希望它创建多个用户。

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

if ($existing -eq $null) {
    Write-Host "Creating new local user $Username."
    & NET USER $Username $Password /add /y /expires:never

    Write-Host "Adding local user $Username to $group."
    & NET LOCALGROUP $group $Username /add
}

Write-Host "Ensuring password for $Username never expires."
& WMIC USERACCOUNT WHERE "Name='$Username'" SET PasswordExpires=FALSE
4

1 回答 1

1

如果您真的想在每台计算机上只运行一次脚本,所有计算机都已打开电源并激活 PowerShell 远程处理,您可以这样做:

Get-ADComputer -Filter * -SearchBase "OU=myOU,DC=mydomain,DC=tld" | foreach {

    Invoke-Command -ComputerName $_.DNSHostname -ScriptBlock {

        # Your script goes here...
    }
}

上面的示例从 Active Directory 的预定义 OU 中读取所有计算机对象,连接到每个对象并-Scriptblock {}在计算机上执行您的脚本(或 中的任何内容)。

于 2018-11-06T12:20:38.563 回答