2016-03-29 2 views
2
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, выбирает последний вариант? (Руководитель группы). Кто-нибудь знает, что не так с моими заявлениями IF?Если заявления - Powershell

+0

На самом деле, ваш $ contacttype устанавливается в 1, чем 2, 3, 4, 5 во время, если-заявления, потому что '=' предназначен для присвоения значения, а не для сравнения. – Martin

ответ

2

Kory Гилл уже нашли проблему в ваших если заявления. Однако рассмотрите возможность использования параметров функции 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 
Смежные вопросы