繁体   English   中英

Powershell脚本给出错误,但在Shell中运行

[英]Powershell script giving an error but runs in shell

我需要为特定经理创建和更新通讯组列表,以及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

使用时的快速解答-就像您需要对准则不太明确。

-like "*$Listname*"

Like正在寻找要搜索的项目开头的特定文本。 如果该项目可以出现在memberof的任何位置,那么您需要添加通配符或使用-match。 -match表示您的搜索项周围*。

由于该命令的大多数响应应以

CN=

您的会员组将不是它的第一件事

希望能有所帮助

-like和-match之间的区别

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM