Get-USB – Using WMI Association Classes in PowerShell

PowerShell Team

Last Thursday, we had our first meeting of PowerShell Script Club on the Microsoft Campus. Script Clubs are really cool. They’re kind of like a hands on lab with no set topic or teacher. You bring an idea for a script, and ask your fellow PowerShell users about help getting the script written.  Leave a comment if you’d like to set up a local script club.

One of the questions I helped answer involved using a WMI association class, which is a class in WMI that links two other classes together. Association classes are pretty common, and pretty useful, once you get the hang of them.

One association class is Win32_USBControllerDevice. Here’s a quick function that resolves the association class and returns all USB devices from WMI. The function is one line, and the inline help is 8 lines.


Gets USB devices attached to the system

Detailed Description:

Uses WMI to get the USB Devices attached to the system


    -------------------------- EXAMPLE 1 --------------------------
    -------------------------- EXAMPLE 2 --------------------------
Get-USB | Group-Object Manufacturer

Here’s Get-USB:

function Get-USB {
    #    Gets USB devices attached to the system
    #    Uses WMI to get the USB Devices attached to the system
    #    Get-USB
    #    Get-USB | Group-Object Manufacturer
    Get-WmiObject Win32_USBControllerDevice | Foreach-Object { [Wmi]$_.Dependent }

Automatically generated with Write-CommandBlogPost


Comments are closed. Login to edit/delete your existing comments