Skip to main content

Collect Server Information with WMIC (OS, Disks, Partitions, Software, etc.)

I had to create a new test environment and to make it a true representation of the production one I had to install all the service packs, hot fixes, cumulative updates, etc. as in production.
So I decided to collect all essential information. And the simplest way (for me) was to use WMIC.

To collect information about OS:

WMIC OS GET BuildNumber, Caption, CSDVersion, CSName, OSArchitecture, OSLanguage, ServicePackMajorVersion, ServicePackMinorVersion, SystemDirectory, TotalVisibleMemorySize, Version, WindowsDirectory


about all installed software (and be patient because it takes a couple of minutes to complete)

WMIC PRODUCT GET Caption,Version

About Windows domains


WMIC NTDOMAIN GET Caption, ClientSiteName, DCSiteName, DnsForestName, DomainCOntrollerAddress, DomainControllerName, DOmainName


about disks

WMIC DISKDRIVE GET BytesPerSector, Name, SerialNumber, Signature,Size


about partitions

WMIC PARTITION GET BlockSize,Bootable,Name,Size,StartingOffset


installed hot fixes

WMIC QFE GET Description,HotFixID,InstalledBy,InstalledOn


Programs launched at start

WMIC STARTUP GET Caption,Command,Location,User

and finally all about your volumes

WMIC VOLUME GET BlockSize, BootVolume, Capacity, Caption, Compressed, DriveLetter, DriveType, FileSYstem, FreeSpace, Label, PageFilePresent, SystemVolume


and if you want everything in one place then download the CMD file (remove .TXT from the file name) and it will create a separate Unicode file for each command listed above.


https://docs.google.com/open?id=0B_w_zYDVhsO9YTU1MDIwOWUtYzgzZi00ZmJiLWJjMDAtYmYyNTNmNmUyNThm

 The file names will be <script name>-<computer name>-<command>.log.

If WMIC returns 0x80041010 error when you run WMIC PRODUCT


then you need to install "WMI Windows Installer Provider" which is a part of " Management and Monitoring Tools
=========================

Updated. Windows 2003 version of the script -->


@ECHO OFF
SETLOCAL


SET Log=%~dpn0-%computerName%
Echo.
Echo.
Echo Started collecting information from %ComputerName% on %date% at %time%
Echo Getting OS info ...
WMIC OS GET BuildNumber,Caption,CSDVersion,CSName,OSLanguage,ServicePackMajorVersion,ServicePackMinorVersion,SystemDirectory,TotalVisibleMemorySize,Version,WIndowsDirectory >>"%log%-OSinfo.LOG"


Echo Getting Installed Software info [it takes a while]...
WMIC PRODUCT GET Caption,Version >>"%log%-Software.LOG"


Echo Getting Disks info ...
WMIC DISKDRIVE GET BytesPerSector,Name,Signature,Size >>"%log%-Disks.LOG"


Echo Getting Domain info ...
WMIC NTDOMAIN GET Caption,ClientSiteName,DCSiteName,DnsForestName,DomainCOntrollerAddress,DomainControllerName,DOmainName >>"%log%-Domain.LOG"


Echo Getting Partition info ...
WMIC PARTITION GET BlockSize,Bootable,Name,Size,StartingOffset >>"%log%-Partition.LOG"


Echo Getting Installed Hotfixes info ...
WMIC QFE GET Description,HotFixID,InstalledBy,InstalledOn >>"%log%-HotFixes.LOG"


Echo Getting Startup Programs info ...
WMIC STARTUP GET Caption,Command,Location,User >>"%log%-Startup.LOG"


Echo Getting Volumes info ...
WMIC VOLUME GET BlockSize,Capacity,Caption,Compressed,DriveLetter,DriveType,FileSYstem,FreeSpace,Label >>"%log%-Volume.LOG"
Echo Finished collecting information from %ComputerName% on %date% at %time%
Echo.
Echo.
Echo Done. Results are in the %log%-^<name^>.LOG files
Echo.



Comments

Popular posts from this blog

Create 3-Node Windows 2012 Multi-subnet Cluster

Environment There are two Data centers connected via a WAN link. Two Windows 2012 Servers (called SQLDEV1 and SQLDEV2) are located in the Primary Data Center (on the IP subnet 192.168.79.0/24) and the third server is placed in the Secondary Data Center with the 192.168.69.0/24 subnet. We’ll be creating a three-node Windows cluster with no shared storage on the multi subnet network with a file share witness at the Primary Data Center. We’ll be using a file share witness to protect from the cluster failure in a situation when the network between the Data Centers is unavailable and one of the servers in the Primary Data Center is also down (or being rebooted). The final state will look like depicted above: -           Two Virtual IP’s will be assigned (192.168.76.218 and 192.168.69.134) to the cluster -           The servers at the Primary Data Center will have a vote (Vote=1) and the ...

Joining Windows 10 to Azure AD Domain

As of October 2016 to join Windows 10 computers to Azure AD Domain service requires these steps: Create a VNET in the classic portal . The VNET must be placed to a region where Azure AD domain service is available (( https://azure.microsoft.com/en-us/regions/services/ )  In the classic portal  go to Directory -> Configure and enable the domain service. And wait for ~ 30 min When completed the IP address will be populated Go back to the VNET configuration and add a DNS server with the IP (10.0.0.4 in this case) Create the "AAD DC Administrator" administrators group (again in Directory -> Group). Members of this group are granted administrative privileges on machines that are domain-joined to the Azure AD Domain Services managed domain. Add to the group your users who are supposed to have the administrative access on a Windows 10 computer go to Settings -> Accounts (this is true for Windows 10 version  1607) then select 'Access...

SQL 2012 AlwaysOn: Synchronous vs. Asynchronous commit. Performance impact

Recently I've had a chance to build a 3-server AlwaysOn environment distributed between the primary and secondary data centers. The configuration looks like this: Primary Data Center                         Secondary Data Center                        SQLDEV1                                        SQLDEV3          SQLDEV2 The availability group was crated with synchronous commit replicas on SQLDEV1 and SQLDEV2 and the replica on SQLDEV3 was configured for asynchronous commit. The link between the data centers was not great and when I pinged SQLDEV3 from SQLDEV1 I got these results Approximate round trip times in milli-seconds:     Minimum = 39ms, Maximum = 63ms, Average = 42ms I also created a very simp...