检查变量是否存在

时间:2018-05-18 14:40:19

标签: vbscript sccm

我正在使用支持VBScript条件的XML文件,然后将其与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" />

我不认为条件是对的,我不知道是否应该使用像IsEmptyIsObjectIsNull这样的函数。

2 个答案:

答案 0 :(得分:1)

我通常将isEmpty和isNull结合起来考虑两者:

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

这可能是最简单的解决方案,但我没有sccm的经验......

答案 1 :(得分:1)

%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% <> ""

最后,我不熟悉你是如何检查xml中的vbscript条件的,但据我所知,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对象。