enter image description here enter image description here对严肃的批处理文件来说还很陌生。但是我有一个问题,我敢肯定可以用编码解决。我负责保持100多个单位的产品处于锁定状态,当它们变坏时,我们必须将其更换,但是有时它们不会被重新锁定,因此我试图找到一种方法来跟踪未激活的窗口单位。
在您询问“不”之前,我们没有批量许可证服务器,或者没有与此相关的任何东西。我的老板是老学校。
所以我的代码包含:
@echo off
for /f %%i in (computers.txt) do shutdown -r -t 0 -m %%i// and that works fine and restarts all pcs i have in the .txt file in ip address form. then i run around trying to catch all the activation windows before they dissapear. but im trying to get it to check windows activation and output that to a text file with all the units that are NOT activated.
@echo off
for /f %%i in (computers.txt) do cscript /nologo c:\windows\system32\slmgr.vbs /xpr > ActivatedStatus.txt | findstr /i /c:" will expire "> NUL 2>&1
if [%errorlevel%]==[0] (echo Not permanently activated.) else (echo Permanently activated)
pause
exit /b
它工作正常并检查本地PC即时消息,但我无法获取将命令推送到给定IP地址集的信息。任何帮助将不胜感激。从这里借来的代码片段来做到这一点。认为是时候寻求帮助了。
答案 0 :(得分:0)
如果您的目标操作系统是Windows 7
或更高版本,则也许可以通过以下方式帮助您:
@Echo Off
Set "XSL=csv"
For /F "EOL=MDelims=" %%A In ('"WMIc OS Get MUILanguages,Version"'
) Do For /F Tokens^=2^,4-5Delims^=.^"^ %%B In ("%%A"
) Do If %%C Equ 6 If %%D Equ 1 Set "XSL=%__APPDIR__%WBEM\%%B\%XSL%
WMIC /Output:Results.log /Node:@Computers.txt Path SoftwareLicensingProduct^
Where "PartialProductKey Is Not Null And Name Like 'Windows(R)%%' And Not LicenseStatus='1'"^
Get LicenseStatus,Name,ProductKeyID /Format:"%XSL%"
这个想法是它将检查当前工作目录中名为computers.txt
的文件中每行列出的每台计算机。如果Windows(R)
产品未显示为许可的(即1
),则在您当前的工作环境中,它也应将一些相关信息输出到名为Results.log
的文件中目录。
许可状态输出将转换为以下之一:
0
:未经许可
1
:已获许可
2
:OOB宽限期
3
:OOT宽限期
4
:非正版宽限期
5
:通知
6
:扩展宽限期
注意: 如果您不从以下位置进行检查,则可能不需要上面脚本的第3
-5
行Windows 7
机器上,我添加了这些机器,原因是该操作系统版本上的csv.xsl
文件的位置存在已知问题。