【问题标题】:If statements - Powershell如果语句 - Powershell
【发布时间】:2016-03-29 04:52:16
【问题描述】:
function contactOU
{
    #This selects which OU to place the contact in.
    write-host
    write-host '~Contact type~'
    write-host '1. Admin'
    write-host '2. Assistant Owner'
    write-host '3. Owner Partner'
    write-host '4. Owner'
    write-host '5. Team Leader'
    write-host
    $contacttype = (Read-host -prompt 'Which type of contact')
    if($contacttype = "1") {$contactOU = "OU=Admins,OU=Marketing Companies,OU=Contacts,DC=company,DC=com,DC=au"}
    if($contacttype = "2"){$contactOU = "OU=Assistant Owners,OU=Marketing Companies,OU=Contacts,DC=company,DC=com,DC=au"}
    if($contacttype = "3"){$contactOU = "OU=Owner Partner,OU=Marketing Companies,OU=Contacts,DC=company,DC=com,DC=au"}
    if($contacttype = "4"){$contactOU = "OU=Owners,OU=Marketing Companies,OU=Contacts,DC=company,DC=com,DC=au"}
    if($contacttype = "5"){$contactOU = "OU=Team Leaders,OU=Marketing Companies,OU=Contacts,DC=company,DC=com,DC=au"}
    else{write-host 'Please select a valid number',contactOU}

    #For testing
    write-host $contactOU

    #May put this in an individual function?
    New-ADObject -name $contactname -type Contact -Path $contactOU -OtherAttributes @{displayName=$contactname;mail=$emailaddress;targetAddress=$targetaddress}

}

我遇到的问题是,无论我选择什么数字,IF 语句都选择最后一个选项? (组长OU)。有人知道我的 IF 语句有什么问题吗?

【问题讨论】:

  • 实际上,在 if 语句中,您的 $contacttype 设置为 1,而不是 2, 3, 4 ,5,因为 '=' 是指赋值,而不是比较。

标签: powershell if-statement active-directory


【解决方案1】:

在您的 if 语句中使用 -eq

if($contacttype -eq "1")

about_Comparison_Operators

【讨论】:

    【解决方案2】:

    Kory Gill 已经在您的 if 语句中发现了问题。但是,请考虑使用 PowerShell 函数参数。示例:

    function Get-ContactOu
    {
        Param(
            [Parameter(Mandatory=$false, Position=0, ParameterSetName='Admin')]
            [switch]$Admin,
    
            [Parameter(Mandatory=$false, Position=0, ParameterSetName='AssistantOwner')]
            [switch]$AssistantOwner,
    
            [Parameter(Mandatory=$false, Position=0, ParameterSetName='OwnerPartner')]
            [switch]$OwnerPartner,
    
            [Parameter(Mandatory=$false, Position=0, ParameterSetName='Owner')]
            [switch]$Owner,
    
            [Parameter(Mandatory=$false, Position=0, ParameterSetName='TeamLeader')]
            [switch]$TeamLeader
            )
    
    
        $ou = '';
    
        if ($Admin) { $ou = 'Admins' } 
        if ($AssistantOwner) { $ou = 'Assistant Owners' } 
        if ($OwnerPartner) { $ou = 'Owner Partner' } 
        if ($Owner) { $ou = 'Owners' } 
        if ($TeamLeader) { $ou = 'Team Leaders' } 
    
        $path = 'OU={0},OU=Marketing Companies,OU=Contacts,DC=company,DC=com,DC=au' -f $ou
        New-ADObject -name $contactname -type Contact -Path $path -OtherAttributes @{displayName=$contactname;mail=$emailaddress;targetAddress=$targetaddress}
    }
    

    现在你可以用开关来使用这个功能了:

    Get-ContactOu -Admin
    

    【讨论】:

      猜你喜欢
      • 2020-07-21
      • 1970-01-01
      • 2019-01-04
      • 1970-01-01
      • 2012-11-19
      • 2018-12-10
      • 2021-11-11
      • 2013-07-08
      • 1970-01-01
      相关资源
      最近更新 更多