2016-08-19 142 views
0

我有一點PowerShell的即時通訊運行點擊一個按鈕來創建一個AD組與文本框中提供的名稱。真實的陳述有效,但虛假陳述不會執行。我的代碼如下:Powershell Gui如果聲明不起作用

function Button_Click() 
{ 
    $Nameofgroup = $TextBox1.text 

    if (Get-adgroup $nameofgroup) 
    { 
     [System.Windows.Forms.MessageBox]::Show(" $nameofgroup Already exists", "Alert") 
     } 
     else 
    { 
     [System.Windows.Forms.MessageBox]::Show(" $nameofgroup Created", "Alert") 
      NEW-ADGroup –name $Nameofgroup –groupscope Global –path 「OU=example,OU=example,DC=Example,DC=example,DC=example」 
    } 

如果您想在不使用GUI的情況下進行測試,可以使用下面的代碼。

$Nameofgroup = $TextBox1.text 

if (Get-adgroup $nameofgroup) 
{ 
    Write-host "Already Exists" 
    } 
    else 
{ 
    Write-Host "Created Successfully" 
     NEW-ADGroup –name $Nameofgroup –groupscope Global –path 「OU=example,OU=example,DC=Example,DC=example,DC=example」 
} 

如果你自己測試AD組創建代碼,這工作正常。

請讓我知道如果你有任何想法如何解決這個問題。

感謝,

SG

回答

3

一開始廣告組cmdlet的,如果你指定的組不存在拋出異常。您可以使用try catch語句來捕獲異常,但在我看來,使用filter參數指定組名稱(如果過濾器不產生任何結果,將不會產生異常):

if (Get-ADGroup -Filter { Name -eq $nameofgroup }) 
{ 
    [System.Windows.Forms.MessageBox]::Show(" $nameofgroup Already exists", "Alert") 
} 
else 
{ 
    [System.Windows.Forms.MessageBox]::Show(" $nameofgroup Created", "Alert") 
    New-ADGroup –name $Nameofgroup –groupscope Global –path "OU=example,OU=example,DC=Example,DC=example,DC=example" 
} 

使用此代碼,如果該組不存在,則不會生成錯誤(只是空響應),而您的其他代碼應該運行。

+0

非常感謝,非常完美! – user3290171