好吧,所以我在学校有这个项目,我要从.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个新的来宾用户,而无需我更改脚本中的任何内容?
答案 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开始递增,如果没有找到,则中断循环并开始创建新用户。