Powershell:必须在' - '的右侧提供价值表达。操作者

时间:2014-07-23 22:20:38

标签: powershell-v2.0

#GET TEXT FILE WITH LIST OF "SAMACCOUNTNAME" TO LIST VARIABLE
    $list = Get-Content C:\PSSCripts\listofusers.txt

#PULL INFORMATION FROM ACTIVE DIRECTORY TO USERRESULTS VARIABLE
    $UserResults = Get-AdUser -filter * -searchbase "OU=THISOU,DC=THISDOMAIN,DC=int" -Properties displayname

#DETERMINE IF USER IS IN THE TXT LIST

    foreach ($user in $UserResults)
    {
        if ($user.SamAccountName -in $list.SamAccountName)
        {
#ECHO THEIR NAME TO VERIFY

        write-host $user.displayName
        }
    }

#VERIFY USER TO BE OFFBOARDED VIA Y/N PROMPT - VISUALLY INSPECT LIST


    $choice = ""
    while ($choice -notmatch "[y|n]"){
    $choice = read-host "The following user profiles have been loaded for offboarding. Do you want to continue? Please Verify the users before continuing. (Y/N)"
    }

if ($choice -eq "y"){

        # LOOP THROUGH USERS AND APPLY CHANGES
        foreach ($user in $UserResults)
        {
            #DETERMINE IF USER IS IN TXT FILE
            if ($user.SamAccountName -in $list.SamAccountName)
                {
                # DISABLE ACCOUNT
                Disable-ADAccount -Identity $user

                # CHANGE DISPLAYNAME AND DESCRIPTION TO DISPLAY TERMINATED - $USER
                $newname = "Terminated - " + $user.displayName 
                Get-ADUser -Identity $user | Set-ADObject -Description $newname -DisplayName $newname

                # CHANGE USER PASSWORD TO "Password1"
                $password = "Password1" | ConvertTo-SecureString -AsPlainText -Force
                Set-ADAccountPassword -NewPassword $password -Identity $user -Reset

                # MOVE USER TO DIFFERENT LOCATION, Disabled Users organizational unit
                Move-ADObject -Identity $user -TargetPath "OU=DisabledUsers,DC=THATDOMAIN,DC=int" -Confirm:$false
                }

        }



    }

else {write-host "Script aborted!"}

获得以下错误: *您必须在' - '运算符的右侧提供值表达式。在:11 char:29

if ($user.SamAccountName - <<<< in $list.SamAccountName)
Category Info          : ParserError (:) [], ParseException
FullyQualifiedErrorID : ExpectedValueExpression

我在文本文件中有一个用户列表,标题为SAMACCOUNTNAME。正在根据特定OU中的用户列表检查这些用户。 Powershell会将我的文本列表中的用户列表回显给我(在AD中对该OU中的所有用户进行检查后 - 确认没有出现任何错误的离线/更改),在移动之前提示验证(y | n)转发并执行我之前在/ r / powershell的一些redditors的帮助下编写的脚本。

我不明白为什么我会收到这个错误,是

-in $list.SamAccountName

不正确?

感谢您的帮助,stackoverflow!第一次发布,期待通过Powershell变得更好并回馈社区。

1 个答案:

答案 0 :(得分:0)

你应该使用“-eq”或“-contains”(我不确定什么是标量值以及程序中的数组是什么)。