Как мне поместить логический результат в переменную в Powershell?

#powershell

#powershell

Вопрос:

Если у меня есть переменная $count с числом в ней, есть ли однострочник, чтобы установить для переменной значение true или false в зависимости от того, является ли $count = 1?

Я думал, что

 $result = ($count -eq 1)
 

сделал бы это, но в итоге в нем хранится значение «1» или null (в зависимости от того, равно ли оно 1 или нет).

Есть идеи, что я делаю не так?

РЕДАКТИРОВАТЬ: моя ошибка — у меня на самом деле не было «1» в этой переменной. У меня был ArrayList, который выглядел так, как будто это было число 1. Закрываем это.

Полный код:

 get-acl C:WindowsSystem32driversetc | select -expand access | where {$_.IdentityReference -eq "SomeACL"} | measure | select -expand count -OutVariable aclCount
$aclFound = ($aclCount –eq 1)
$TodayDate = Get-Date -Format "dd/MM/yyyy hh:mm:ss"
Add-Content f:myfile.log "$TodayDate $aclFound "
 

Исправлено путем ввода [0] после $aclCount в строке 2.
(Очевидно, что ACL там был тем, который я проверял)

Комментарии:

1. Вы ранее приводили $count как целочисленный тип? Если это так, логическое значение, присвоенное ему, будет динамически преобразовано в 0 или 1. Что меня смущает, так это то, что вы говорите, что это может закончиться нулем, а AFAIK ($count -eq 1) никогда не должен возвращать значение null. При каких обстоятельствах вы получаете значение null в качестве значения $result ? т.Е. Каковы значения if $result и $count перед выполнением этого оператора?

2.Хорошо, я только что видел вашу правку. Однако одного факта, что в $result был какой-то другой тип, недостаточно, чтобы преобразовать тип нового значения, присвоенного ему (это тип переменной, который должен измениться), если вы на самом деле не приведете $result как другой тип. А вы?

3. Я обновил код.

Ответ №1:

Вы всегда можете использовать If/Then /Else для этого.

 If($Count -eq 1){$result = $true}else{$result = $false}
 

Комментарии:

1. Или короче: $result = [bool]($count -eq 1)

Ответ №2:

Не удается воспроизвести.

 PS C:> $count = 3
PS C:> $result = ($count -eq 1)
PS C:> $result
False
PS C:> $result.GetType().Name
Boolean