Проверьте, существует ли переменная или не существует - PullRequest
0 голосов
/ 18 мая 2018

Я использую XML-файл, который поддерживает условия VBScript, который я затем использую с переменными последовательности задач SCCM.Из всего поиска в Интернете, который я сделал, не совсем понятно, что я должен использовать, чтобы определить, существует ли переменная или нет.Например, у меня есть две переменные, одна называется %DriveIndex1%, а другая %DriveIndex2%.Эти переменные существуют только в случае обнаружения определенных дисков.Так как же выглядит код, чтобы определить, существует ли какая-либо из этих переменных или не существует?Вот фрагмент кода:

<CheckboxInput Condition='%DriveIndex1% OR %DriveIndex2% <> ""' Variable="FormatAll" Question="Also partition and format the other drive(s)?" CheckedValue="True" UncheckedValue="False" Default="True" />

Я не думаю, что это правильное условие, и я не знаю, стоит ли мне вместо этого использовать функцию типа IsEmpty, IsObject или IsNull.

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

%DriveIndex1% OR %DriveIndex2% <> "" не будет оценивать, как вы хотите.Этот синтаксис оценивает два условия: одно %DriveIndex1% и другое %DriveIndex2% <> "".Вам нужно что-то вроде

%DriveIndex1% <> "" OR %DriveIndex2% <> ""

, но

в VBScript "" не равно Empty, а необъявленные переменные Empty, поэтому, если ваши переменные TS не существуют, вы захотите

Not IsEmpty(%DriveIndex1%) And Not IsEmpty(%DriveIndex2%)

Вы также можете включить проверки для Null и "", например,

Not IsEmpty(%DriveIndex1%) And Not IsEmpty(%DriveIndex2%) and Not IsNull(%DriveIndex1%) And Not IsNull(%DriveIndex2%) And %DriveIndex1% <> "" And %DriveIndex2% <> ""

Наконец, я не знаком с тем, как вы проверяете условия vbscript в xml, но, насколько мне известно, переменные TS имеют доступ через объект Microsoft.SMS.TSEnvironment, подобный этому

Set env = CreateObject("Microsoft.SMS.TSEnvironment")
env("MyVariable") = "value"
If env("MyOtherVariable") Then etc...

В этом контексте ваше условие будет

Not IsEmpty(env("DriveIndex1")) And Not IsEmpty(env("DriveIndex2"))

Это предполагает, что при вызове условного выражения из XML-файла уже создан объект env.

0 голосов
/ 18 мая 2018

Обычно я бы совмещал isEmpty и isNull для учета обоих:

if isnull(testvalue) or isempty(testvalue) then
    Response.Write "true"
else
    Response.Write "false"
end if

Это, вероятно, самое простое решение, хотя у меня нет опыта работы с sccm ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...