【问题标题】:Powershell: Must provide a value expression on the right-hand side of the '-' operatorPowershell:必须在“-”运算符的右侧提供值表达式
【发布时间】:2014-07-24 06:35:38
【问题描述】:
#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 字符:29

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

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

我不明白为什么会出现这个错误,是

-in $list.SamAccountName

不正确?

感谢您的帮助,stackoverflow!第一次发帖,期待 Powershell 越来越好,回馈社区。​​p>

【问题讨论】:

    标签: powershell-2.0


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多