With reference to my previous question and responses received (which can be found here), I am seeking a help regarding a Batch Script. Based on the responses received to above m
1 - Retrieve as much information you can from each call to wmic
2 - Filter the output of wmic. In this case, i'm using find
to search the line containing the indicated node.
3 - If possible, to avoid having to remove the aditional CR at the end of the line, retrieve an aditional field that you will not read.
4 - Output from wmic is prefixed with the node name and fields ordered alphabetically. Define tokens
accounting for this.
@echo off
setlocal enableextensions disabledelayedexpansion
set "node=%~1"
ping -n 1 %node% | find "TTL=" > NUL
if errorlevel 1 goto endProcess
for /f "tokens=2-7 delims=," %%a in (
'wmic /node:"%node%" computersystem get domain^,manufacturer^,model^,name^,systemtype^,username^,wakeuptype /format:csv ^| find /i "%node%"'
) do (
set "_domain=%%a"
set "_manufacturer=%%b"
set "_model=%%c"
set "_name=%%d"
set "_systemType=%%e"
set "_userName=%%f"
)
for /f "tokens=2 delims=," %%a in (
'wmic /node:"%node%" bios get serialNumber^,version /format:csv ^| find /i "%node%"'
) do (
set "_serialNumber=%%a"
)
for /f "tokens=2-3 delims=," %%a in (
'wmic /node:"%node%" os get description^,totalvisiblememorysize^,version /format:csv ^| find /i "%node%"'
) do (
set "_osName=%%a"
set "_memory=%%b"
)
for /f "tokens=2 delims=," %%a in (
'wmic /node:"%node%" cpu get name^,version /format:csv ^| find /i "%node%"'
) do (
set "_cpu=%%a"
)
echo %_name%,%_domain%,%_userName%,%_manufacturer%,%_model%,%_systemType%,%_serialNumber%,%_osName%,%_memory%,%_cpu%
:endProcess
endlocal