此函数在一次正确行为后循环两次。我不知道为什么。
function Kürzel {
$samaccountname = Read-Host -prompt "Kürzel eingeben"
Get-ADUser -F {SamAccountName -eq $SamAccountName}
}
do {
if (Kürzel) {
Write-Host "Kürzel schon vorhanden"
Start-Sleep -s 1
}
} until (-not(Kürzel)
这是结果。我故意把 samaccountname 弄错了 5 次,但它只写了 3 次主机。
Kürzel eingeben: pat
Kürzel schon vorhanden
Kürzel eingeben: pat
Kürzel eingeben: pat
Kürzel schon vorhanden
Kürzel eingeben: pat
Kürzel eingeben: pat
Kürzel schon vorhanden
Kürzel eingeben: cet
答案 0 :(得分:1)
这是因为您在 Kürzel
和 if
条件中调用了 until
函数。您可以通过引入一个变量并省略第二个函数调用来简单地解决这个问题:
function Kürzel {
$samaccountname = Read-Host -prompt "Kürzel eingeben"
Get-ADUser -F { SamAccountName -eq $SamAccountName }
}
$isUnique = $true
do {
if (Kürzel) {
Write-Host "Kürzel schon vorhanden"
$isUnique = $false
Start-Sleep -s 1
} else {
$isUnique = $true
}
} until ($isUnique)
答案 1 :(得分:1)
在循环内保存对 Kürzel
的调用结果,这样您就不必再次调用它:
do {
$vorhandenerKonto = Kürzel
if ($vorhandenerKonto) {
Write-Host "Kürzel schon vorhanden"
Start-Sleep -s 1
}
} until (-not($vorhandenerKonto))