我需要为特定经理创建和更新分发列表,并直接下报2级。我承认我不是一个富有创造力的人,所以我使用了powershell,并且这是我能想到的最佳方式。问题是这将安排每隔几周运行一次以更新列表,因此需要查看用户是否存在,如果没有,则添加他。在"如果"执行此操作的语句我在运行脚本时遇到错误,但是如果我将代码部分拉出来并且只是在powershell中手动运行它就可以了。
我的执行政策设置为不受限制,所以我不认为这是问题所在。 我们正在运行Powershell 2,不幸的是我无法改变它。
这是我的脚本和我得到的错误。我发现在代码的下半部分有两个字符串不匹配,即使它们对不同的文件都做同样的事情。如果我在第一个错误中遇到错误,我应该能够将相同的代码放入其中以使其工作。任何帮助将不胜感激。
$Identity="User"
$Listname="Global-Leader"
# This Script will work from a specified Manager and get his direct reports down 2 Levels then #add them to a specified list. This Script works in the AD Module.
# ====================
#| My Company
#| SCRIPT NAME: Leader
#| VERSION: 1
#| VERSION DATE: 3/24/2015
#| AUTHOR: Powershell Rookie
#====================
#load ActiveDirectory module If not already loaded.
if (!(Get-Module -Name ActiveDirectory)) {import-module ActiveDirectory}
Get-AdUser $Identity -properties DirectReports | Select-Object -ExpandProperty DirectReports | Get-ADUser -Property * | Select SamAccountName, DisplayName, Office | Export-csv c:\work\leaders.csv
Import-Csv c:\work\Leaders.csv | ForEach-Object {Get-AdUser $_.SamAccountName -Property DirectReports | Select-Object -ExpandProperty DirectReports | Get-Aduser -Property * | Select SamAccountName, DisplayName, Office} | Export-csv c:\work\leaders1.csv
Import-csv C:\work\leaders.csv | Foreach-Object If (!(Get-ADUser $_.SamAccountName –properties MemberOf).MemberOf –like “$listname”) {Add-ADGroupMember $listname –member $_.samAccountName}
Import-csv C:\work\leaders1.csv | Foreach-Object If ((Get-ADUser $_.SamAccountName –properties MemberOf).MemberOf –like “$listname”) {Add-ADGroupMember $listname –member $_.samAccountName}
if ((Get-ADUser $user -Properties MemberOf).memberOf -like "$listName") {
Write-Host -ForegroundColor Green "$user is already a member of $listName"
} else {
Write-Host -ForegroundColor Yellow "Adding $user to $listName"
Add-ADGroupMember $ListName -member $user
}
以下是我不断得到的错误:
[PS] C:\work>.\leader.ps1
Unexpected token '{' in expression or statement.
At C:\work\leader.ps1:25 char:143
+ Import-csv C:\work\leaders.csv | Foreach-Object If (!(Get-ADUser $_.SamAccountName â?"properties MemberOf).MemberOf â?"like â?o$listnameâ
??) { <<<< Add-ADGroupMember $listname â?"member $_.samAccountName}
+ CategoryInfo : ParserError: ({:String) [], ParseException
+ FullyQualifiedErrorId : UnexpectedToken
答案 0 :(得分:0)
使用时的快速回答 - 你需要不那么具体的标准。
-like "*$Listname*"
就像在项目开头寻找特定文本一样 搜索。如果该项目可以出现在memberof的任何位置,那么您需要添加通配符或使用-match。 -match暗示*围绕您的搜索项目。
由于该命令的大多数响应都应以
开头 CN=
您的会员群体不会是它找到的第一件事
希望有所帮助