Powershell Gui如果声明不起作用

时间:2016-08-19 18:28:15

标签: powershell user-interface if-statement

我有一些powershell,我只需点击一下按钮即可创建一个名称在文本框中提供的AD组。真实的陈述有效,但虚假陈述不执行。我的代码如下:

    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

1 个答案:

答案 0 :(得分:3)

如果您指定的组不存在,则Get-ADGroup 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"
}

使用此代码,如果该组不存在,则不会产生错误(只是一个空响应),并且您的其他代码应该运行。