【问题标题】:Powershell AD automatic creation of guest usersPowershell AD 自动创建访客用户
【发布时间】:2020-09-28 06:59:33
【问题描述】:

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

之后我创建了这样我可以使用脚本创建 x 数量的访客用户,如果我创建 10 个访客用户,他们将被命名为“guest1”“guest2”等等。 然后我的导师问我如果我再次运行它会怎样,我显然得到了很多错误,因为用户 1..10 已经存在。

现在,我已经苦苦挣扎了几天,想知道如何让它检查最后一个用户的编号,然后从那时起继续,所以如果我运行脚本并创建 guest1 ->来宾 10,然后再次运行它,它将创建来宾 11 -> 来宾 20。

现在我的代码如下所示:

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

这会成功创建来宾用户,但是很遗憾,它无法从上次创建的用户继续 onworth,也没有我将 $count 更改为 11..20,等等。

旁注:第二个代码片段中的所有变量都与第一个相同,只是没有包含它们,因为它们都在另一台电脑上,我无法复制,所以不得不在这里写下来,又懒得把所有的变量都写一遍。

任何人都可以帮助我如何让它继续与用户计数吗?比如,我应该如何向我展示代码以继续运行代码以不断创建 10 个新的访客用户而不需要我更改脚本中的任何内容?

【问题讨论】:

  • 提示:请参阅example 2 关于Get-ADUser

标签: powershell


【解决方案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开始递增,并且在检查时,如果没有找到则打破循环并开始创建新用户。

【讨论】:

  • 当我运行此代码时,我会不断出错。我得到的错误说:Get-ADUser:解析查询时出错:'name -like guest1(guest1)' Error Message_'syntax error'
  • 请在没有sub-exp运算符的情况下进行检查,目前我无法在AD环境中检查
猜你喜欢
  • 2016-01-26
  • 2021-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多