在开始之前,请注意我是Powershell的初学者,所以我问的一些问题对于经验丰富的人来说可能看起来非常明显和愚蠢。
我的脚本有问题。如果我将它复制粘贴到Powershell本身,它可以正常工作。但是将它放在.ps1文件中,并使用Powershell执行它不起作用。任何人都可以告诉我为什么,以及我可以做些什么使它使用.ps1工作?这是代码:
$Group = import-csv -path C:\Output\Gruppe.csv
$DomainUsers = import-csv -path C:\Output\DomainUsers.csv
$ErrorActionPreference = "SilentlyContinue"
Get-ADGroupMember –identity Test –recursive | select "samaccountname" | Export-csv –path C:\Output\Gruppe.csv -NoTypeInformation
Get-ADUser –Filter * -SearchBase ”ou=Domain Users,dc=sfol,dc=local” | select "samaccountname" | Export-csv –path C:\Output\DomainUsers.csv –NoTypeInformation
Compare-Object $Group $DomainUsers -property samaccountname -IncludeEqual | where-object {$_.SideIndicator -eq "=="} | select "samaccountname" | Export-csv C:\Output\Difference.csv –NoTypeInformation
(Get-Content C:\Output\Difference.csv) | % {$_ -replace '"', ""} | out-file -FilePath C:\Output\Difference.csv -Force -Encoding ascii
$File = "C:\Output\Difference.csv"
$Time = Get-Date
ForEach ($User in (Get-Content $File))
{ Try {
Remove-ADGroupMember -Identity "Test" -Member $User -Confirm:$false -ErrorAction Stop
Add-Content c:\Output\Gruppelog.log -Value "$Time - $User slettet fra gruppen"
}
Catch {
Add-Content c:\Output\Gruppelog.log -Value "$Time - $User medlem kunne ikke blive slettet fra gruppen pga: $($Error[0])"
}
}
我在写这个问题时也注意到了另一个问题。此脚本的作用是从OU和组中打印出用户列表。然后,它使用打印出的两个文件将OU与组进行比较,并打印出一个新的用户列表,其中仅包含OU和组中存在的用户。然后,它使用新的用户列表从组中删除用户(以便OU和组中都不存在用户)。
此脚本在我第一次运行时运行良好,但如果我继续将用户重新添加到组中,再次运行脚本,有时它只会删除一些用户。如果我在运行脚本后执行ctrl + c和CLS,它可以正常工作。如上所述,我是这方面的初学者,所以我想知道为什么没有ctrl + c或cls它第二次不能100%工作。对不起,如果我不善于解释,我不希望你帮我这个,因为它不是问题的一部分。但如果可以,我会很感激。
亲切的问候,暗影
答案 0 :(得分:0)
问题是没有导入模块ActiveDirectory。我认为当你导入模块一次时,它将留在Powershell中以备将来使用。不是这样,所以我解决问题的方法是在代码的开头添加Import-Module ActiveDirectory
。我仍然没有想出我的奖金问题,所以如果有人可以提供帮助,那就太棒了。