我正在使用支持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" />
我不认为条件是对的,我不知道是否应该使用像IsEmpty
,IsObject
或IsNull
这样的函数。
答案 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
对象。