0

Win7 でスクリプトが管理者権限で実行されるかどうかを判断しようとしていますが、「net」コマンドを実行した後、エラーレベルが一貫して設定されないようです...

これは(簡略化された)私のコードです:

net session >null 2>$1
if %errorLevel% == 0 (
  echo This seems to be mighty ADMIN...
) else (
  echo Poor sod... no Admin, no glory - errorLevel: %errorLevel%
)

@SETLOCAL
@set TSTHOME=%~dp0
@set TSTNAME=%~n0

set SAL=NO
set SCL=NO
:VAL_PARM
  if .%1 == . @goto :VAL_PARM_END
  if /i %1 == SAL (
    net session >null 2>$1
    if %errorLevel% == 0 (
      set SAL=YES
    ) else (
      echo Option "SAL" requires Administrator priviliges (run "as Admin" or from an elevated command prompt)
      goto :EOF
    )
  ) else (
    if /i %1 == SCL (
      set SCL=YES
    ) else (
      echo off
      echo Invalid argument "%1"; correct syntax: %TSTNAME% [SAL] [SCL]
      echo                        where:   SAL: save agent  logs of each command
      echo                                 SCL: save client logs of each command
      echo                        NOTE: "SAL" requires "Administrator" privileges
      goto :EOF
    )
  )
  shift
  goto :VAL_PARM
:VAL_PARM_END

しかし、通常のコマンド プロンプトからこれを実行すると、次のような出力が表示されます。

C:\MyDir>isAdmin サル

C:\MyDir>ネット セッション 1>null 2>$1

C:\MyDir>if 2 == 0 (echo これは強力な ADMIN のようです... ) else (echo 貧しい sod... 管理者なし、栄光なし - errorLevel: 2 )
貧しい sod... 管理者なし、栄光なし- エラーレベル: 2

C:MyDir>set SAL=NO

C:\MyDir>set SCL=NO

C:\MyDir>if .sal == .

C:\MyDir>if /I sal == SAL (
net session 1>null 2>$1
if 0 == 0 (set SAL=YES )
else (echo オプション "SAL" には管理者権限が必要です ("as Admin" または昇格したコマンドプロンプト )
goto :EOF )

なぜ天国のために、2番目の「ネットセッション」がerrorLevelを設定していないのですか???

4

1 に答える 1