我正在尝试运行将本地管理员添加到计算机上的命令。但是,我正在努力将其与脚本结合使用,以将其推送到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
答案 0 :(得分:0)
如果您真的只想在每台计算机上运行脚本一次,所有计算机都已打开电源,并且已激活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 {}
中的任何内容)。