Powershell AD自动创建来宾用户

时间:2020-09-28 06:59:33

标签: powershell

好吧,所以我在学校有这个项目,我要从.CSV文件创建脚本,我的指导老师告诉我,如果文件为空等,我应该尝试创建来宾用户。

此后,我创建了一个脚本,可以创建x个来宾用户,如果我创建10个来宾用户,它们将被命名为“ guest1”,“ guest2”,依此类推。 然后我的教练问我是否可以再次运行它,并且由于用户1..10已经存在,所以我显然遇到了很多错误。

现在,我已经努力了几天,以找出如何使其检查最后一个用户的编号,然后从这一点继续,因此,如果我运行脚本并创建guest1-> guest 10,然后再次运行它,然后它将创建guest11-> guest20。

现在我的代码如下:

if($users -eq "NULL"){
   $path     = "OU=test,DC=test,DC=local"
   $username = read-host "Input your ADUser name here"
   $count    = 1

   For($count; $count -ge $count + 10 ; $count++){
      New-ADUser `
      -Name $Username$Count `
      -Path $path `
      -enabled $true `
      -ChangePasswordAtLogon $false `
      -AccountPassword (ConvertTo-SecureString $defpassword -asplaintext -force) `
      -passthru
    }
} 

$ defpassword只是我用密码创建的变量,因此我不必一直写它,并且一切正常。

上面的代码是我从程序员那里得到的帮助(尽管他从未做过任何Powershell工作,但他确实很擅长编程),但是由于某种原因,它实际上并没有做任何事情。当我运行它时,它只是询问我提供的ADUser名称,然后它在那里结束脚本而没有创建来宾用户。

无论哪种方式,我朋友之前来帮助我的代码是:

$count = 1..10

foreach($i in $count){
  -Name $Username$i `
      -Path $path `
      -enabled $true `
      -ChangePasswordAtLogon $false `
      -AccountPassword (ConvertTo-SecureString $defpassword -asplaintext -force) `
      -passthru

这成功地创建了来宾用户,但是可惜,它无法继续从最后创建的用户继续赚钱,而无需将$ count更改为11..20,依此类推。

旁注:第二个代码片段中的所有变量与第一个代码片段相同,只是不包含它们,因为它们都在另一台PC上,而且我无法复制,因此必须在此处手写,并且懒得再次写所有变量。

有人可以帮助我如何使其继续向用户计数吗?例如,应该如何向我展示代码,使其继续运行该代码以不断创建10个新的来宾用户,而无需我更改脚本中的任何内容?

1 个答案:

答案 0 :(得分:1)

是的,请使用修改后的脚本:

$i=1
for(){
$n="guest$($i)"
if(Get-ADUser -Filter "Name -like $n"){$i++}else{break}}
$x=$i+9
$path = "OU=test,DC=test,DC=local"
$username = read-host "Input your ADUser name here"
($i)..($x)|%{
      New-ADUser `
      -Name "$($Username)$($_)" `
      -Path $path `
      -enabled $true `
      -ChangePasswordAtLogon $false `
      -AccountPassword (ConvertTo-SecureString $defpassword -asplaintext -force) `
      -passthru
}

它将首先检查guestN用户是否存在,其中N从1开始递增,如果没有找到,则中断循环并开始创建新用户。