我写了这个脚本来复制安全组。如果该组不存在,则脚本应在源组的相同位置创建该组。我遇到的问题是我的脚本没有进入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
答案 0 :(得分:0)
对我有一个现有的目的地组,但我猜你在目的地组不存在时遇到了问题。我假设您收到的错误类似于:" Get-ADGroup:找不到具有标识的对象:''在:' DC =,DC = com"当你得到错误时,你的if else语句就会失败......
你可以通过这样做来绕过它:
$DestinationGroupCheck = Get-ADGroup -filter {sAMAccountName -eq $DestinationGroup}
这样可以防止在找不到组时发生任何错误,并且if else检查会正确启动。正如疯狂技术人员所说,不确定为什么要使用某个功能,如果你愿意,你可以用它来做。