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