读取变量的输出

时间:2015-07-14 13:45:24

标签: variables powershell active-directory

好吧,我正在为Active Directory中的大量用户创建代码。代码也必须自动创建用户名。

Import-Csv C:\Users\myname\Desktop\Test\Test.csv |  % {
$Firstname = $_.Firstname
$MiddleIntial = $_.MiddleIntial
$Lastname = $_.Lastname
$Username = $Firstname.substring(0,1).ToLower()+$MiddleIntial.ToLower()+$Lastname.ToLower()
$testname = (Get-ADUser $Username)
if($testname - $Error){
Write-Host $Username
}
}

我尝试做的是在代码继续实际创建部分之前验证用户名是否唯一。

2 个答案:

答案 0 :(得分:0)

运行Get-ADUser后,您可以测试$?的值以查看最后一条语句是否成功执行:

$testname = Get-ADUser -Filter "samaccountname -eq '$UserName'"
if(-not $?){
    # No users with samaccountname $UserName found, go ahead
}

答案 1 :(得分:0)

我会创建一个函数来测试可用的用户名,并在每次我想测试用户名是否可用时运行它。

该功能可能如下所示:

function Test-UsernameAvailable
{
    param($UserName)
    $Users = @(Get-ADUser -ldapFilter "(sAMAccountName=$UserName)" -ErrorAction Stop)
    if($Users.Count -eq 0)
    {
        return $true
    }
    else
    {
        return $false
    }
}

在@()中包含Get-ADUser强制结果为数组,这意味着它将始终具有一个名为count的属性。这样我可以测试count是否为0,这意味着名称可用。

稍后我可以在if语句中调用我的函数来检查用户名是否可用,例如:

if(Test-UsernameAvailable -Name $Username)
{
    #Username is available
}
else
{
    #Username is not available
}