我有一些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
答案 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"
}
使用此代码,如果该组不存在,则不会产生错误(只是一个空响应),并且您的其他代码应该运行。