PowerShell
wmic.exe is deprecated since 21H1 (no longer supported). Although the wmic.exe is still present and can be used it may cause problems in recent versions of Windows.
Developer versions of Win10/11 may remove wmic.exe, but release versions should still contain it (for backwards compatibility).
Here are some snippets below for using Powershell commands in .cmd files which perform an equivalent operation to some wmic.exe commands that I use.
When running powershell from a .cmd file, you can enclose the whole command in doublequotes - otherwise you may need to escape any pipe symbol | with a caret ^|
@echo off
setlocal EnableDelayedExpansion
set zzmac1=
set N=0
set X=powershell "Get-WmiObject win32_networkadapterconfiguration | select macaddress"
for /F "tokens=*" %%A in ('%X% ^| find ":"') do (
set /a N += 1
if not "%%A"==" " set "zzmac!N!=%%A"
)
endlocal & set zzmac1=%zzmac1% & set zzmac2=%zzmac2% & set zzmac3=%zzmac3% & set zzmac4=%zzmac4%
REM remove : from BC:EE:7B:87:6D:74
set zzmac1=%zzmac1::=%
set zzmac1=%zzmac1: =%
set zzmac2=%zzmac2::=%
set zzmac2=%zzmac2: =%
set zzmac3=%zzmac3::=%
set zzmac3=%zzmac3: =%
set zzmac4=%zzmac4::=%
set zzmac4=%zzmac4: =%
echo MAC1="%zzmac1%"
echo MAC2="%zzmac2%"
echo MAC3="%zzmac3%"
echo MAC4="%zzmac4%"
goto :eof
REM Rename computer
REM powershell Rename-Computer -newname "%NEWPC%"
goto :eof
@echo off
REM get serial numbers, etc.
set X=powershell "Get-CimInstance -classname Win32_bios | select-object Serialnumber"
for /F "tokens=*" %%A in ('%X%') do (set "zzbiosserial=%%A")
echo biosserial="%zzbiosserial%"
set X=powershell "Get-CimInstance -classname win32_systemenclosure | select-object SerialNumber"
for /F "tokens=*" %%A in ('%X%') do (set "zzserial=%%A")
echo chassisserial="%zzserial%"
set X=powershell "Get-CimInstance -ClassName Win32_ComputerSystemProduct | select Name"
for /F "tokens=*" %%A in ('%X%') do (set "zzprodname=%%A")
echo prodname="%zzprodname%"
set X=powershell "Get-CimInstance -ClassName Win32_ComputerSystemProduct | select Vendor"
for /F "tokens=*" %%A in ('%X%') do (set "zzprodvendor=%%A")
echo prodvendor="%zzprodvendor%"
set X=powershell "Get-CimInstance -classname win32_baseboard | select Product"
for /F "tokens=*" %%A in ('%X%') do (set "zzboardprod=%%A")
echo boardprod="%zzboardprod%"
set X=powershell "Get-CimInstance -classname win32_baseboard | select Version"
for /F "tokens=*" %%A in ('%X%') do (set "zzboardver=%%A")
echo boardver="%zzboardver%"
set X=powershell "Get-CimInstance -classname win32_baseboard | select SerialNumber"
for /F "tokens=*" %%A in ('%X%') do (set "zzboardserial=%%A")
echo boardserial="%zzboardserial%"
set X=powershell "Get-CimInstance -classname win32_systemenclosure | select-object ChassisTypes"
for /F "tokens=*" %%A in ('%X%') do (set "zztyperaw=%%A")
set zztype=PC
if "%zztyperaw:~1,1%"=="9" set zztype=nb
if "%zztyperaw:~1,1%"=="3" set zztype=pc
echo zztype="%zztype%"
set X=Powershell "Get-WmiObject -Class Win32_ComputerSystemProduct | Select-Object -Property UUID"
for /F "tokens=*" %%A in ('%X%') do (set "zzuuid=%%A")
set zzmbmac=%zzuuid:~-12%
echo UUID="%zzuuid%" MAC="%zzmbmac%" (??)
REM display RAM
powershell "gcim win32_physicalmemory | select banklabel,devicelocator,Partnumber,capacity"
REM display MAC adds
powershell "getmac /NH /V"
goto :eof
powershell "Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName
goto :eof
@echo off
wmic logicaldisk get caption,volumename,description,Size | %WINDIR%\System32\find.exe "Disk" | sort /+1
echo.
REM get all Local and Removable drives
powershell "Get-CimInstance Win32_LogicalDisk | ? drivetype -in 2,3 | select-object DeviceID,DriveType,Size,VolumeName"
echo.
:: powershell Get-Volume ^| select-object Driveletter,filesystemtype,drivetype,Size,filesystemLabel ^| format-table > "%temp%\t.txt"
powershell "Get-Volume | select-object Driveletter,filesystemtype,drivetype,Size,filesystemLabel | format-table" > "%temp%\t.txt"
type "%temp%\t.txt" | find /i "Fixed" > "%temp%\t1.txt"
type "%temp%\t.txt" | find /i "Removable" >> "%temp%\t1.txt"
type "%temp%\t1.txt" | sort /+1
if exist "%temp%\t1.txt" del "%temp%\t1.txt"
if exist "%temp%\t.txt" del "%temp%\t.txt"
goto :eof
REM get physical drive number of drive that has this file
:: FOR /F "tokens=2 delims=#," %%? IN ('WMIC Path Win32_LogicalDiskToPartition Get Antecedent^, Dependent ^|FIND "%~d0"') DO (set myphysdrive=%%?)
REM echo Physical Drive=%myphysdrive%
set myphysdrive=
powershell Get-CimInstance Win32_LogicalDiskToPartition ^| Select-Object Antecedent,Dependent | find "M:" > "%temp%\t.txt"
FOR /F "tokens=2 delims=#," %%? IN (%temp%\t.txt) DO (set myphysdrive=%%?)
echo myphysdrive=%myphysdrive%
goto :EOF
:: for /f "tokens=2 delims==" %%d in ('wmic logicaldisk where "name='%DLP2%'" get name /format:value') do set PTN2=%%d
set PS=powershell Get-CimInstance -ClassName Win32_logicaldisk ^| Select-Object deviceid,caption,mediatype | find /i "K:"
for /f "tokens=2 delims==" %%d in ('%PS%') do set PTN2=%%d
echo PTN2=%PTN2%
powershell Get-PhysicalDisk
REM Number FriendlyName SerialNumber MediaType CanPool OperationalStatus HealthStatus Usage Size
REM ------ ------------ ------------ --------- ------- ----------------- ------------ ----- ----
REM 2 TOSHIBA DT01ACA200 466H2G6GS HDD False OK Healthy Auto-Select 1.82 TB
REM 3 SanDisk SDSSDH31000G 182526803287 SSD False OK Healthy Auto-Select 931.51 GB
REM 4 Corsair Voyager GT 3.0 23011908550000040753 Unspecified False OK Healthy Auto-Select 29.85 GB
REM 0 Samsung SSD 850 EVO 500GB S21HNSAG426996H SSD False OK Healthy Auto-Select 465.76 GB
REM 1 ST2000DX001-1CM164 Z1E6XSP6 HDD False OK Healthy Auto-Select 1.82 TB
powershell Get-Volume
REM see all data using select *
powershell "get-volume | select *"
REM get all USB
powershell "Get-Disk | Where-Object -FilterScript {$_.Bustype -Eq 'USB'}"
powershell "Get-Disk | Where-Object -FilterScript {$_.Bustype -Eq 'USB'} | Select-Object Number,FriendlyName,Size"
:: display driveletter with size and freespace
powershell Get-CimInstance -ClassName Win32_logicaldisk ^| Where-Object -Property deviceid -eq 'K:'
powershell Get-CimInstance -ClassName Win32_logicaldisk ^| Where-Object -Property deviceid -eq 'K:' ^| select-object deviceid > t.txt
for /f "tokens=1" %%d in (t.txt) do set PP=%%d
echo %PP%
powershell Get-CimInstance -ClassName Win32_logicaldisk ^| Where-Object -Property deviceid -eq 'K:' ^| select-object size > t.txt
for /f "tokens=1" %%d in (t.txt) do set PP=%%d
echo %PP%
powershell Get-CimInstance -ClassName Win32_logicaldisk ^| Where-Object -Property deviceid -eq 'K:' ^| select-object freespace > t.txt
for /f "tokens=1" %%d in (t.txt) do set PP=%%d
echo %PP%
powershell Get-CimInstance -Namespace root/SecurityCenter2 -ClassName AntivirusProduct | findstr "displayName productState pathToSignedReportingExe"
powershell Get-CimInstance -Namespace root/SecurityCenter2 -ClassName FirewallProduct | findstr "displayName productState pathToSignedReportingExe"
powershell Get-CimInstance -Namespace root/SecurityCenter2 -ClassName AntiSpywareProduct | findstr "displayName productState pathToSignedReportingExe"
powershell Get-CimInstance -ClassName Win32_diskdrive ^| Select-Object deviceid,caption,mediatype
powershell Get-CimInstance -ClassName Win32_diskdrive ^| Select-Object deviceid,caption,mediatype | find /i "DRIVE4"
REM get non-system disks
powershell Get-Disk ^| Where-Object IsSystem -eq $False
powershell Get-CimInstance -ClassName Win32_diskdrive ^| Select-Object deviceid,caption
powershell Get-PhysicalDisk | Select FriendlyName, MediaType
powershell -command "&{Get-PhysicalDisk | Where-Object -Property MediaType -eq 'SSD'}"
REM USB drives
powershell -command "&{Get-PhysicalDisk | Where-Object -Property MediaType -eq 'unspecified'}"
REM bytes per sector
powershell Get-CimInstance -ClassName win32_diskdrive ^| Select-object DeviceID, BytesPerSector | find /i "DRIVE%DD%" > "%temp%\DD.tmp"
Get-CimAssociatedInstance -ResultClassName Win32_DiskPartition -InputObject $disk
:: wmic DISKDRIVE get caption, description, Deviceid, bytespersector | %WINDIR%\System32\find.exe /i "DRIVE%DD%" > "%temp%\DD.tmp"
setlocal enableDelayedExpansion
set FREE2=
set FREE3=
powershell Get-CimInstance -ClassName Win32_logicaldisk ^| Select-Object deviceid > %temp%\t.txt
for /f "delims=:" %%A in (t.txt) do set "drives=!drives:%%A=!"
::echo all unused letters = "%drives%"
::echo first unused letter = "%drives:~0,1%"
::echo 2nd unused letter = "%drives:~1,1%"
if not "%drives:~0,1%"=="" set "FREE2=LETTER %drives:~0,1%"
if not "%drives:~2,1%"=="" set "FREE3=LETTER %drives:~1,1%"
set FREE
if exist %temp%\t.txt del %temp%\t.txt
goto :eof
C:\temp\powershell>wmic alias list brief
FriendlyName PWhere Target
NICConfig Where Index=# Select * from Win32_NetworkAdapterConfiguration
SysDriver where Name='#' Select * from Win32_SystemDriver
TapeDrive Select * from Win32_TapeDrive
NTEventLog WHERE LogfileName='#' Select * from Win32_NTEventlogFile
UserAccount Select * from Win32_UserAccount
Job WHERE jobid=# Select * from Win32_ScheduledJob
SoftwareElement Select * from Win32_SoftwareElement
Volume Where DeviceID = '#' Select * from Win32_Volume
NetProtocol Select * from Win32_NetworkProtocol
QuotaSetting Select * from Win32_QuotaSetting
Group Select * from Win32_Group
BIOS Select * from Win32_BIOS
UPS Select * from Win32_UninterruptiblePowerSupply
Server Select * from Win32_PerfRawData_PerfNet_Server
VolumeUserQuota Where Account = # and Volume = # Select * from Win32_VolumeUserQuota
ShadowCopy Where ID = '#' Select * from Win32_ShadowCopy
RDAccount Where AccountName = '#' and TerminalName = '#' Select * from Win32_TSAccount
Port Select * from Win32_PortResource
PrinterConfig WHERE Name='#' Select * from Win32_PrinterConfiguration
Environment Select * from Win32_Environment
Registry Select * from Win32_Registry
BootConfig Select * from Win32_BootConfiguration
DesktopMonitor WHERE DEVICEID='#' Select * from WIN32_DESKTOPMONITOR
QFE Select * from Win32_QuickFixEngineering
PrintJob WHERE JobId=# Select * from Win32_PrintJob
DiskDrive WHERE Index=# Select * from Win32_DiskDrive
VolumeQuotaSetting Where Element = # and Setting = # Select * from Win32_VolumeQuotaSetting
RDToggle Where ServerName = '#' Select * from Win32_TerminalServiceSetting
Startup where Caption='#' Select * from Win32_StartupCommand
OS Select * from Win32_OperatingSystem
IRQ WHERE IRQNumber=# Select * from Win32_IRQResource
Share WHERE Name='#' Select * from Win32_Share
ComputerSystem Select * from Win32_ComputerSystem
ShadowStorage Where DiffVolume = # and Volume = # Select * from Win32_ShadowStorage
Service WHERE Name='#' Select * from Win32_Service
RDNIC Where TerminalName = '#' Select * from Win32_TSNetworkAdapterSetting
LOGON Select * from Win32_LogonSession
NTDOMAIN WHERE DomainName='#' Select * from Win32_NTDomain
RDPermissions Where TerminalName = '#' Select * from Win32_TSPermissionsSetting
PortConnector WHERE ExternalReferenceDesignator='#' Select * from Win32_PortConnector
IDECONTROLLER Select * from Win32_IDEController
MEMCACHE WHERE DeviceID='#' Select * from WIN32_CACHEMEMORY
TimeZone Select * from Win32_TimeZone
LogicalDisk WHERE Name='#' Select * from Win32_LogicalDisk
MemoryChip Where Tag = '#' Select * from Win32_PhysicalMemory
SoundDev WHERE Name='#' Select * from WIN32_SoundDevice
Product WHERE Name='#' Select * from Win32_Product
DMAChannel Where DMAChannel=# Select * from Win32_DMAChannel
DeviceMemoryAddress Select * from Win32_DeviceMemoryAddress
FSDir WHERE Name='#' Select * from Win32_Directory
NIC WHERE DeviceID=# Select * from Win32_NetworkAdapter
Temperature Select * from Win32_TemperatureProbe
DESKTOP WHERE Name='#' Select * from WIN32_DESKTOP
DiskQuota Select * from Win32_DiskQuota
DataFile Where Name = '#' Select * from CIM_DataFile
DCOMAPP WHERE Name='#' Select * from WIN32_DCOMApplication
Process WHERE ProcessId='#' Select * from Win32_Process
BaseBoard Select * from Win32_BaseBoard
LoadOrder Select * from Win32_LoadOrderGroup
PageFileSet Select * from Win32_PageFileSetting
Partition WHERE Index=# Select * from Win32_DiskPartition
SysAccount WHERE Name='#' Select * from Win32_SystemAccount
PageFile Select * from Win32_PageFileUsage
SystemSlot Select * from Win32_SystemSlot
SystemEnclosure Select * from Win32_SystemEnclosure
WMISet Select * from Win32_WMISetting
Voltage Select * from Win32_VoltageProbe
RecoverOS Select * from Win32_OSRecoveryConfiguration
CDROM Where Drive='#' Select * from Win32_CDROMDrive
NTEvent WHERE EventType=# Select * from Win32_NTLogEvent
Printer WHERE Name='#' Select * from Win32_Printer
OnBoardDevice Select * from Win32_OnBoardDevice
SoftwareFeature Select * from Win32_SoftwareFeature
MemPhysical Select * from Win32_PhysicalMemoryArray
NetUse WHERE LocalName='#' Select * from Win32_NetworkConnection
CPU Where DeviceID='#' Select * from WIN32_PROCESSOR
Alias Where FriendlyName = '#' Select * from Msft_CliAlias
NetLogin WHERE Name='#' Select * from Win32_NetworkLoginProfile
NetClient WHERE Name='#' Select * from WIN32_NetworkClient
SCSICONTROLLER Select * from Win32_SCSIController
CSProduct Select * from Win32_ComputerSystemProduct