1

このWMI メソッド '.IsEnabled'を使用 している場合、if ステートメントで結果をどのように処理しているかに注意する必要があります。メソッドが bool 値を返す場合でも、Not を使用できますか、または次のようなことを行う必要があります

if myStatus <> 0 OR isTPMEnabled <> True then

これが私のコードです

function isTPMReadyToBeOwned(myTPMService)
        dim myStatus, isTPMEnabled, isTPMActivated, isTPMOwnershipAllowed

        myStatus = myTPMService.IsEnabled(isTPMEnabled)
        if myStatus <> 0 or not(isTPMEnabled) then
            oLogging.CreateEntry "TPM isn't enable and must be enabled and activated manually, errorcode " & Hex(myStatus), LogTypeWarning
            isTPMReadyToBeOwned = False
            exit Function
        end If

        myStatus = myTPMService.IsActivated(isTPMActivated)
        If myStatus <> 0 or not(isTPMActivated) then
            oLogging.CreateEntry "TPM isn't active and must be activated manually, errorcode " & Hex(myStatus), LogTypeWarning
            isTPMReadyToBeOwned = False
            exit Function
        end If

        myStatus = myTPMService.isOwnershipAllowed(isTPMOwnershipAllowed)
        if myStatus <> 0 or not(isTPMOwnershipAllowed) then 
            oLogging.CreateEntry "TPM ownership is not allowed, errorcode " & Hex(myStatus), LogTypeWarning
            isTPMReadyToBeOwned = False
            exit Function
        end If

        isTPMReadyToBeOwned = True
    end Function
4

1 に答える 1

0

ブール式/変数は、ブール値リテラルと比較しないでください。これにより、余分なレベルの複雑さ (演算子とオペランド) が追加されるためです。を使用しますNot isTPMEnabledNot関数でも配列でもないので、param list/index (); は使用しないでください。優先順位をオーバーライドする場合のために () を予約します。

wrt コメントを更新:

() VBScript には (多すぎる) 関数があります

  1. 関数呼び出しのパラメーター リスト (): x = f(y, z)
  2. インデックス (): a = SomeArray(4711)
  3. 優先度オーバーライド: 2 + 3 * 4 = 14、(2 + 3) * 5 = 25

ブール式の () は、タイプ 3 のみにする必要があります。

于 2014-08-08T18:05:34.310 に答える