Область действия Powershell - переменная становится пустой - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь понять область действия Powershell. Упрощенная выдержка из моего кода:

$AppData = (Get-Item env:appdata).value
$userName = $env:username
# The following 5 lines will query AD and get an ADUser object with all information
$filter = "(&(objectCategory=User)(samAccountName=$userName))"
$searcher = New-Object System.DirectoryServices.DirectorySearcher
$searcher.Filter = $filter
$ADUserPath = $searcher.FindOne()
$ADUser = $ADUserPath.GetDirectoryEntry()
write-host $ADUser.mobile
$usercell = $ADUser.mobile
write-host $usercell

If ($usercell = ""){
write-host "In if code "
write-host $usercell      
}
else{
write-host "In else code "
write-host $usercell}

Результат: -

+64 21 999 150
+64 21 999 150
In else code

Это говорит мне, что код успешно извлекает расширенный атрибут mobile из ADU и успешно копируя его в переменную $ usercell. Это также говорит мне, что значение $ usercell правильно считывается кодом; он вводит код «else». Так почему же этот код "else" не знает значения $ usercell?

1 Ответ

3 голосов
/ 28 мая 2020

$usercell = "" - это присвоение, вы, вероятно, имели в виду $usercell -eq ""

Вот соответствующий отрывок из вывода get-help about_Comparison_Operators:

Windows PowerShell includes the following comparison operators:

      -eq
      -ne
      -gt
      -ge
      -lt
      -le
      -Like
      -NotLike
      -Match
      -NotMatch
      -Contains
      -NotContains
      -In
      -NotIn
      -Replace

  -eq
      Description: Equal to. Includes an identical value.
      Example:

        PS C:\> "abc" -eq "abc"
        True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...