Я получаю сообщение об ошибке:
You must provide a value expression on the right-hand side of the '-and' operator.
At C:\shippinginterface\test.ps1:28 char:39
+ if (($TicketNumber.length -gt 0) -and <<<< IsNumeric($TicketNumber) -and IsNotVoid($DateOut))
+ CategoryInfo : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : ExpectedValueExpression
При запуске этого тестового скрипта.
function IsNumeric($value) {
return ($($value.Trim()) -match "^[-]?[0-9.]+$")
}
function IsNotVoid($value) {
$VoidPattern = [regex]"(?i)void"
return !$VoidPattern.Match($value).Success
}
############################
# START TEST
############################
$TicketNumber = "12345"
$DateOut = "3/14/2013"
## Verify there is a numeric ticket number, and row is not void for any reason
if (($TicketNumber.length -gt 0) -and IsNumeric($TicketNumber) -and IsNotVoid($DateOut))
{
write-host $intRow " " $TicketNumber
}
Почему ему не нравится то, что я использую -and
? Если я удалю первую оценку string.length, оператор будет работать, как ожидалось.
1 ответ
Я не могу точно сказать, почему ему не нравится ваш синтаксис, но это сработает:
if (($TicketNumber.length -gt 0) -and (IsNumeric $TicketNumber) -and (IsNotVoid $DateOut))
Это заставляет PowerShell использовать вывод выражения в круглых скобках.
Я также исправил вызовы функций. В синтаксисе PowerShell указано, что функции вызываются без скобок и путем разделения аргументов пробелами.
Похожие вопросы
Новые вопросы
powershell
PowerShell - это кроссплатформенная утилита командной строки и сценариев от Microsoft. Используйте этот тег только для вопросов о написании и выполнении сценариев PowerShell. Вопросы программирования, относящиеся к кроссплатформенной версии PowerShell Core (Windows, macOS и Linux), должны быть помечены [powershell-core]. Вопросы о системном администрировании следует задавать в случае сбоя суперпользователя или сервера.