Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell脚本出现错误,但在shell中运行_Powershell_Powershell 2.0 - Fatal编程技术网

Powershell脚本出现错误,但在shell中运行

Powershell脚本出现错误,但在shell中运行,powershell,powershell-2.0,Powershell,Powershell 2.0,我需要为特定经理和两级以下的直接下属创建和更新通讯组列表。我承认我不是一个有创造力的人,所以我使用了powershell,并用我能想到的最好的方式来做。问题是,这将计划每两周运行一次,以更新列表,因此需要查看是否存在用户,如果不存在,则添加他。在执行此操作的If语句中,我在运行脚本时遇到了错误,但是如果我拉出代码部分并在powershell中手动运行,它就会工作 我的执行策略设置为无限制,因此我认为这不是问题所在。 我们正在运行Powershell 2,不幸的是,我无法改变这一点 这是我的脚本和

我需要为特定经理和两级以下的直接下属创建和更新通讯组列表。我承认我不是一个有创造力的人,所以我使用了powershell,并用我能想到的最好的方式来做。问题是,这将计划每两周运行一次,以更新列表,因此需要查看是否存在用户,如果不存在,则添加他。在执行此操作的If语句中,我在运行脚本时遇到了错误,但是如果我拉出代码部分并在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

快速回答时使用-喜欢你需要少一些具体的标准

-比如*$Listname*

Like正在查找项目开头的特定文本 搜索。如果该项可以出现在memberof中的任何位置,则需要添加通配符或使用-match-“匹配”意味着搜索项周围有*个字符

因为该命令的大多数响应都应该以

CN=

您的成员组不会是它找到的第一个对象

希望有帮助


看起来,如果文件没有BOM,POWER SUBAR不会检测到UTF-8,所以将您的文件保存为UTF-8与BOM,或者消除ASCII字符,例如:“”,与代码问题无关,但是如果使用Exchange,则考虑改为定制动态分发组。如果组设置正确,则无需反复运行脚本。这是文件的确切内容吗?因为第25行中没有字符143或{。