我試圖編寫一個腳本,在腳本執行後,從服務器列表中的哪個位置顯示Windows「已許可」或「未經許可」。我已經編寫了這個腳本,但問題是,未激活的服務器也會給出「許可」輸出。獲取所有「已激活」和「未激活」Windows服務器的列表
這裏是腳本 -
@echo off
Set RESULTFILE=C:\users\v7t7adm\desktop\result.txt
Set SERVERLIST=C:\users\v7t7adm\desktop\server.txt
:START-SCRIPT
@for /F "tokens=1-10 delims=" %%a in ('type %SERVERLIST%') do (
Set SERVERNAME=%%a
Call :SCRIPT
)
:SCRIPT
@for /F "tokens=1-10 delims=:" %%a in ('cscript c:\Windows\System32\slmgr.vbs %SERVERNAME% /dli ^| findstr /I /C:"License Status:"') do Set STATUS=%%b
Call :ECHO-RESULT
Goto :EOF
:ECHO-RESULT
IF %STATUS% neq "Licensed " set %STATUS% = "Not Licensed"
echo %SERVERNAME% - %STATUS% >> %RESULTFILE%
echo %SERVERNAME% - %STATUS%
Goto :EOF
當我遠程運行的 「cscript C:\ WINDOWS \ SYSTEM32 \ slmgr.vbs的SERVERNAME%%/ DLI」 未激活的服務器上,它提供了一個輸出作爲 -
連到服務器X
(空白)
所需的輸出是 -
服務器X - 未獲得許可
服務器Ÿ - 許可
但我得到的輸出 -
服務器X - 許可
服務器ÿ - 許可
由於輸出是空的,的'%的值STATUS%'沒有被改變,只是報告前一個服務器的狀態。在'for'命令之前添加'set STATUS = NONE'或類似的參數來設置默認值。 –
@HarryJohnston出於這個原因,我試着將「Not Activated」服務器作爲列表中的第一個服務器,這樣就沒有冗餘。 –
除非您打開一個新的命令窗口,否則該變量可能仍然是從以前的腳本運行中設置的。 –