if和$ null语句不起作用

时间:2014-05-16 20:25:00

标签: powershell if-statement

我写了这个脚本来复制安全组。如果该组不存在,则脚本应在源组的相同位置创建该组。我遇到的问题是我的脚本没有进入if声明。任何人都知道如何让这个工作?

Param(
[Parameter(Position=0,mandatory=$true)]
[string]$SourceGroup,

[Parameter(Position=0,mandatory=$true)]
[string]$DestinationGroup
)

$SourceGroupCheck = Get-ADGroup -Identity $SourceGroup 
$DestinationGroupCheck = Get-ADGroup -Identity $DestinationGroup -ErrorAction SilentlyContinue


 Function copy-to-Group{
 $Group = Get-ADGroupMember -Identity $SourceGroupCheck.SamAccountName

 if($DestinationGroupCheck -ne $null){
   foreach ($Person in $Group) { 
      Add-ADGroupMember -Identity $DestinationGroupCheck.SamAccountName -Members $Person.distinguishedname 

                                 }
                            }

 else {
 New-ADGroup -Name $DestinationGroup -Path ($SourceGroupCheck.DistinguishedName -replace '^[^,]*,','') -GroupScope Global
    foreach ($Person in $Group) { 
      Add-ADGroupMember -Identity $DestinationGroup.SamAccountName -Members $Person.distinguishedname 

                                 }
 }
                         }

copy-to-Group

1 个答案:

答案 0 :(得分:0)

对我有一个现有的目的地组,但我猜你在目的地组不存在时遇到了问题。我假设您收到的错误类似于:" Get-ADGroup:找不到具有标识的对象:''在:' DC =,DC = com"当你得到错误时,你的if else语句就会失败......

你可以通过这样做来绕过它:

$DestinationGroupCheck = Get-ADGroup -filter {sAMAccountName -eq $DestinationGroup}

这样可以防止在找不到组时发生任何错误,并且if else检查会正确启动。正如疯狂技术人员所说,不确定为什么要使用某个功能,如果你愿意,你可以用它来做。