SysInfo.psm1
Function Get-AcceleratorCapabilitiesCode { param ([uint16[]]$Code) if ($Code.Count -ne 0){ switch ($Code){ 0 {'Unknown'} 1 {'Other'} 2 {'Graphics Accelerator'} 3 {'3D Accelerator'} default {'Invalid Code'} } } Return } Function Get-Access { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Unknown'} 1 {'Readable'} 2 {'Writeable'} 3 {'Read/Write Supported'} 4 {'Write Once'} 5 {'Not Applicable'} default {'Invalid Code'} } } Return } Function Get-Architecture { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'x86'} 1 {'MIPS'} 2 {'Alpha'} 3 {'PowerPC'} 5 {'ARM'} 6 {'ia64 - Itanium-based systems'} 9 {'x64'} 10 {'PGA'} 11 {'RIMM'} 12 {'SODIMM'} 13 {'SRIMM'} 14 {'SMD'} 15 {'SSMP'} 16 {'QFP'} 17 {'TQFP'} 18 {'SOIC'} 19 {'LCC'} 20 {'PLCC'} 21 {'BGA'} 22 {'FPBGA'} 23 {'LGA'} default {'Invalid Code'} } } Return } Function Get-Associativity { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'Direct Mapped'} 4 {'2-way Set-Associative'} 5 {'4-way Set-Associative'} 6 {'Fully Associative'} 7 {'8-way Set-Associative'} 8 {'16-way Set-Associative'} default {'Invalid Code'} } } Return } Function Get-AttributesCode { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Queued'} 2 {'Direct'} 4 {'Default'} 8 {'Shared'} 16 {'Network'} 32 {'Hidden'} 64 {'Local'} 128 {'EnableDevQ'} 256 {'KeepPrintedJobs'} 512 {'DoCompleteFirst'} 1024 {'WorkOffline'} 2048 {'EnableBIDI'} 4096 {'RAW Only'} 8192 {'Published'} default {'Invalid Code'} } } Return } function Get-Availability { param ([uint16] $Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'Running or Full Power'} 4 {'Warning'} 5 {'In Test'} 6 {'Not Applicable'} 7 {'Power Off'} 8 {'Off Line'} 9 {'Off Duty'} 10 {'Degraded'} 11 {'Not Installed'} 12 {'Install Error'} 13 {'Power Save - Unknown'} 14 {'Power Save - Low Power Mode'} 15 {'Power Save - Standby'} 16 {'Power Cycle'} 17 {'Power Save - Warning'} 18 {'Pause'} 19 {'Not Ready'} 20 {'Not Configured'} 21 {'Quiesced - Device is Quiet'} default {'Invalid or No Code'} } } Return } Function Get-BatteryStatus { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other - The battery is discharging'} 2 {'Unknown - The system has access to AC so no battery is being discharged. However, the battery is not necessarily charging.'} 3 {'Fully Charged'} 4 {'Low'} 5 {'Critical'} 6 {'Charging'} 7 {'Charging and High'} 8 {'Charging and Low'} 9 {'Charging and Critical'} 10 {'Undefined'} 11 {'Partially Charged'} default {'Invalid Code'} } } Return } Function Get-BiosCharacteristicsCode { param ([uint16[]]$Code) if ($Code.Count -ne 0){ switch ($Code){ 0 {'Reserved'} 1 {'Reserved'} 2 {'Unknown'} 3 {'BIOS Characteristics Not Supported'} 4 {'ISA is supported'} 5 {'MCA is supported'} 6 {'EISA is supported'} 7 {'PCI is supported'} 8 {'PC Card (PCMCIA) is supported'} 9 {'Plug and Play is supported'} 10 {'APM is supported'} 11 {'BIOS is Upgradeable (Flash)'} 12 {'BIOS shadowing is allowed'} 13 {'VL-VESA is supported'} 14 {'ESCD support is available'} 15 {'Boot from CD is supported'} 16 {'Selectable Boot is supported'} 17 {'BIOS ROM is socketed'} 18 {'Boot From PC Card (PCMCIA) is supported'} 19 {'EDD (Enhanced Disk Drive) Specification is supported'} 20 {'Int 13h - Japanese Floppy for NEC 9800 1.2mb (3.5\", 1k Bytes/Sector, 360 RPM) is supported'} 21 {'Int 13h - Japanese Floppy for Toshiba 1.2mb (3.5\", 360 RPM) is supported'} 22 {'Int 13h - 5.25\" / 360 KB Floppy Services are supported'} 23 {'Int 13h - 5.25\" /1.2MB Floppy Services are supported'} 24 {'Int 13h - 3.5\" / 720 KB Floppy Services are supported'} 25 {'Int 13h - 3.5\" / 2.88 MB Floppy Services are supported'} 26 {'Int 5h, Print Screen Service is supported'} 27 {'Int 9h, 8042 Keyboard services are supported'} 28 {'Int 14h, Serial Services are supported'} 29 {'Int 17h, printer services are supported'} 30 {'Int 10h, CGA/Mono Video Services are supported'} 31 {'NEC PC-98'} 32 {'ACPI supported'} 33 {'USB Legacy is supported'} 34 {'AGP is supported'} 35 {'I2O boot is supported'} 36 {'LS-120 boot is supported'} 37 {'ATAPI ZIP Drive boot is supported'} 38 {'1394 boot is supported'} 39 {'Smart Battery supported'} 40 {'Reserved for BIOS vendor'} 41 {'Reserved for BIOS vendor'} 42 {'Reserved for BIOS vendor'} 43 {'Reserved for BIOS vendor'} 44 {'Reserved for BIOS vendor'} 45 {'Reserved for BIOS vendor'} 46 {'Reserved for BIOS vendor'} 47 {'Reserved for BIOS vendor'} 48 {'Reserved for system vendor'} 49 {'Reserved for system vendor'} 50 {'Reserved for system vendor'} 51 {'Reserved for system vendor'} 52 {'Reserved for system vendor'} 53 {'Reserved for system vendor'} 54 {'Reserved for system vendor'} 55 {'Reserved for system vendor'} 56 {'Reserved for system vendor'} 57 {'Reserved for system vendor'} 58 {'Reserved for system vendor'} 59 {'Reserved for system vendor'} 60 {'Reserved for system vendor'} 61 {'Reserved for system vendor'} 62 {'Reserved for system vendor'} 63 {'Reserved for system vendor'} default {'Invalid Code'} } } Return } Function Get-BusType { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ -1 {'Undefined'} 0 {'Internal'} 1 {'ISA'} 2 {'EISA'} 3 {'MicroChannel'} 4 {'TurboChannel'} 5 {'PCI Bus'} 6 {'VME Bus'} 7 {'NuBus'} 8 {'PCMCIA Bus'} 9 {'C Bus'} 10 {'MPI Bus'} 11 {'MPSA Bus'} 12 {'Internal Processor'} 13 {'Internal Power Bus'} 14 {'PNP ISA Bus'} 15 {'PNP Bus'} 16 {'Maximum Interface Type'} default {'Invalid Code'} } } Return } Function Get-CacheType { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'Instruction'} 4 {'Data'} 5 {'Unified'} default {'Invalid Code'} } } Return } Function Get-ChassisType { param ([uint16[]]$Code) if ($Code.Count -ne 0){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'Desktop'} 4 {'Low Profile Desktop'} 5 {'Pizza Box'} 6 {'Mini Tower'} 7 {'Tower'} 8 {'Portable'} 9 {'Laptop'} 10 {'Notebook'} 11 {'Hand Held'} 12 {'Docking Station'} 13 {'All in One'} 14 {'Sub Notebook'} 15 {'Space-Saving'} 16 {'Lunch Box'} 17 {'Main System Chassis'} 18 {'Expansion Chassis'} 19 {'SubChassis'} 20 {'Bus Expansion Chassis'} 21 {'Peripheral Chassis'} 22 {'Storage Chassis'} 23 {'Rack Mount Chassis'} 24 {'Sealed-Case PC'} default {'Invalid Code'} } } Return } Function Get-Chemistry { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'Lead Acid'} 4 {'Nickel Cadmium'} 5 {'Nickel Metal Hydride'} 6 {'Lithium-ion'} 7 {'Zinc air'} 8 {'Lithium Polymer'} default {'Invalid Code'} } } Return } Function Get-Color { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Monochrome (true black)'} 2 {'Color'} default {'Invalid Code'} } } Return } Function Get-Compression { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Disabled'} 1 {'Enabled'} default {'Invalid Code'} } } Return } Function Get-ConfigManagerErrorCode { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'This device is working properly.'} 1 {'This device is not configured correctly.'} 2 {'Windows cannot load the driver for this device.'} 3 {'The driver for this device might be corrupted, or your system may be running low on memory or other resources.'} 4 {'This device is not working properly. One of its drivers or your registry might be corrupted.'} 5 {'The driver for this device needs a resource that Windows cannot manage.'} 6 {'The boot configuration for this device conflicts with other devices.'} 7 {'Cannot filter.'} 8 {'The driver loader for the device is missing.'} 9 {'This device is not working properly because the controlling firmware is reporting the resources for the device incorrectly.'} 10 {'This device cannot start.'} 11 {'This device failed.'} 12 {'This device cannot find enough free resources that it can use.'} 13 {"Windows cannot verify this device's resources."} 14 {'This device cannot work properly until you restart your computer.'} 15 {'This device is not working properly because there is probably a re-enumeration problem.'} 16 {'Windows cannot identify all the resources this device uses.'} 17 {'This device is asking for an unknown resource type.'} 18 {'Reinstall the drivers for this device.'} 19 {'Failure using the VxD loader.'} 20 {'Your registry might be corrupted.'} 21 {'System failure: Try changing the driver for this device. If that does not work, see your hardware documentation. Windows is removing this device.'} 22 {'This device is disabled.'} 23 {"System failure: Try changing the driver for this device. If that doesn't work, see your hardware documentation."} 24 {'This device is not present, is not working properly, or does not have all its drivers installed.'} 25 {'Windows is still setting up this device.'} 26 {'Windows is still setting up this device.'} 27 {'This device does not have valid log configuration.'} 28 {'The drivers for this device are not installed.'} 29 {'This device is disabled because the firmware of the device did not give it the required resources.'} 30 {'This device is using an Interrupt Request (IRQ) resource that another device is using.'} 31 {'This device is not working properly because Windows cannot load the drivers required for this device.'} deafult {'Invalid Code'} } } Return } Function Get-CpuStatus { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Unknown'} 1 {'CPU Enabled'} 2 {'CPU Disabled by User via BIOS Setup'} 3 {'CPU Disabled By BIOS (POST Error)'} 4 {'CPU is Idle'} 5 {'Reserved'} 6 {'Reserved'} 7 {'Other'} default {'Invalid Code'} } } Return } Function Get-CurrentCapabilitiesCode { param ([uint16[]]$Code) if ($Code.Count -ne 0){ switch ($Code){ 0 {'Unknown'} 1 {'Other'} 2 {'Color Printing'} 3 {'Duplex Printing'} 4 {'Copies'} 5 {'Collation'} 6 {'Stapling'} 7 {'Transparency Printing'} 8 {'Punch'} 9 {'Cover'} 10 {'Bind'} 11 {'Black and White Printing'} 12 {'One Sided'} 13 {'Two Sided Long Edge'} 14 {'Two Sided Short Edge'} 15 {'Portrait'} 16 {'Landscape'} 17 {'Reverse Portrait'} 18 {'Reverse Landscape'} 19 {'Quality High'} 20 {'Quality Normal'} 21 {'Quality Low'} default {'Invalid Code'} } } Return } Function Get-CurrentLanguage { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'PCL'} 4 {'HPGL'} 5 {'PJL'} 6 {'PS'} 7 {'PSPrinter'} 8 {'IPDS'} 9 {'PPDS'} 10 {'EscapeP'} 11 {'Epson'} 12 {'DDIF'} 13 {'Interpress'} 14 {'ISO6429'} 15 {'Line Data'} 16 {'MODCA'} 17 {'REGIS'} 18 {'SCS'} 19 {'SPDL'} 20 {'TEK4014'} 21 {'PDS'} 22 {'IGP'} 23 {'CodeV'} 24 {'DSCDSE'} 25 {'WPS'} 26 {'LN03'} 27 {'CCITT'} 28 {'QUIC'} 29 {'CPAP'} 30 {'DecPPL'} 31 {'Simple Text'} 32 {'NPAP'} 33 {'DOC'} 34 {'imPress'} 35 {'Pinwriter'} 36 {'NPDL'} 37 {'NEC201PL'} 38 {'Automatic'} 39 {'Pages'} 40 {'LIPS'} 41 {'TIFF'} 42 {'Diagnostic'} 43 {'CaPSL'} 44 {'EXCL'} 45 {'LCDS'} 46 {'XES'} 47 {'MIME'} 48 {'XPS'} 49 {'HPGL2'} 50 {'PCLXL'} default {'Invalid Code'} } } Return } Function Get-CurrentScanMode { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'Interlaced'} 4 {'Non Interlaced'} default {'Invalid Code'} } } Return } Function Get-CurrentSRAM { param ([uint16[]]$Code) if ($Code.Count -ne 0){ switch ($Code){ 0 {'Other'} 1 {'Unknown'} 2 {'Non-Burst'} 3 {'Burst'} 4 {'Pipeline Burst'} 5 {'Synchronous'} 6 {'Asynchronous'} default {'Invalid Code'} } } Return } Function Get-DataExecutionPreventionSupportPolicy { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Always Off'} 1 {'Always On'} 2 {'Opt In'} 3 {'Opt Out'} default {'Invalid Code'} } } Return } Function Get-DefaultCapabilitiesCode { param ([uint16[]]$Code) if ($Code.Count -ne 0){ switch ($Code){ 0 {'Unknown'} 1 {'Other'} 2 {'Color Printing'} 3 {'Duplex Printing'} 4 {'Copies'} 5 {'Collation'} 6 {'Stapling'} 7 {'Transparency Printing'} 8 {'Punch'} 9 {'Cover'} 10 {'Bind'} 11 {'Black and White Printing'} 12 {'One Sided'} 13 {'Two Sided Long Edge'} 14 {'Two Sided Short Edge'} 15 {'Portrait'} 16 {'Landscape'} 17 {'Reverse Portrait'} 18 {'Reverse Landscape'} 19 {'Quality High'} 20 {'Quality Normal'} 21 {'Quality Low'} default {'Invalid Code'} } } Return } Function Get-DefaultLanguage { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'PCL'} 4 {'HPGL'} 5 {'PJL'} 6 {'PS'} 7 {'PSPrinter'} 8 {'IPDS'} 9 {'PPDS'} 10 {'EscapeP'} 11 {'Epson'} 12 {'DDIF'} 13 {'Interpress'} 14 {'ISO6429'} 15 {'Line Data'} 16 {'MODCA'} 17 {'REGIS'} 18 {'SCS'} 19 {'SPDL'} 20 {'TEK4014'} 21 {'PDS'} 22 {'IGP'} 23 {'CodeV'} 24 {'DSCDSE'} 25 {'WPS'} 26 {'LN03'} 27 {'CCITT'} 28 {'QUIC'} 29 {'CPAP'} 30 {'DecPPL'} 31 {'Simple Text'} 32 {'NPAP'} 33 {'DOC'} 34 {'imPress'} 35 {'Pinwriter'} 36 {'NPDL'} 37 {'NEC201PL'} 38 {'Automatic'} 39 {'Pages'} 40 {'LIPS'} 41 {'TIFF'} 42 {'Diagnostic'} 43 {'CaPSL'} 44 {'EXCL'} 45 {'LCDS'} 46 {'XES'} 47 {'MIME'} 48 {'XPS'} 49 {'HPGL2'} 50 {'PCLXL'} default {'Invalid Code'} } } Return } Function Get-DetectedErrorState { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Unknown'} 1 {'Other'} 2 {'No Error'} 3 {'Low Paper'} 4 {'No Paper'} 5 {'Low Toner'} 6 {'No Toner'} 7 {'Door Open'} 8 {'Jammed'} 9 {'Offline'} 10 {'Service Requested'} 11 {'Output Bin Full'} default {'Invalid Code'} } } Return } Function Get-DeviceInterface { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'Serial'} 4 {'PS/2'} 5 {'Infrared'} 6 {'HP-HIL'} 7 {'Bus Mouse'} 8 {'ADB (Apple Desktop Bus)'} 160 {'Bus mouse DB-9'} 161 {'Bus mouse micro-DIN'} 162 {'USB'} default {'Invalid Code'} } } Return } Function Get-DisplayType { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Unknown'} 1 {'Other'} 2 {'Multiscan Color'} 3 {'Multiscan Monochrome'} 4 {'Fixed Frequency Color'} 5 {'Fixed Frequency Monochrome'} default {'Invalid Code'} } } Return } Function Get-DitherType { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'No Dithering'} 2 {'Coarse Brush'} 3 {'Fine Brush'} 4 {'Line Art'} 5 {'Grayscale'} default {'Invalid Code'} } } Return } Function Get-DriveType { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Unknown'} 1 {'No Root Directory'} 2 {'Removable Disk'} 3 {'Local Disk'} 4 {'Network Drive'} 5 {'Compact Disc'} 6 {'RAM Disk'} default {'Invalid Code'} } } Return } Function Get-ECC { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Does not support hardware error corrention (ECC)'} 1 {'Supports hardware error corrention (ECC)'} default {'Invalid Code'} } } Return } Function Get-ErrorAccess { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'Read'} 4 {'Write'} 5 {'Partial Write'} default {'Invalid Code'} } } Return } Function Get-ErrorCorrectType { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Reserved'} 1 {'Other'} 2 {'Unknown'} 3 {'None'} 4 {'Parity'} 5 {'Single-bit ECC'} 6 {'Multi-bit ECC'} default {'Invalid Code'} } } Return } Function Get-ErrorDataOrder { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Unknown'} 1 {'Least Significant Byte First'} 2 {'Most Significant Byte First'} default {'Invalid Code'} } } Return } Function Get-ErrorGranularity { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'Device level'} 4 {'Memory partition level'} default {'Invalid Code'} } } Return } Function Get-ErrorInfo { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'OK'} 4 {'Bad Read'} 5 {'Parity Error'} 6 {'Single-Bit Error'} 7 {'Double-Bit Error'} 8 {'Multi-Bit Error'} 9 {'Nibble Error'} 10 {'Checksum Error'} 11 {'CRC Error'} 12 {'Corrected single-bit error'} 13 {'Corrected error'} 14 {'Uncorrectable error'} default {'Invalid Code'} } } Return } Function Get-ExtendedDetectedErrorState { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Unknown'} 1 {'Other'} 2 {'No Error'} 3 {'Low Paper'} 4 {'No Paper'} 5 {'Low Toner'} 6 {'No Toner'} 7 {'Door Open'} 8 {'Jammed'} 9 {'Service Requested'} 10 {'Output Bin Full'} 11 {'Paper Problem'} 12 {'Cannot Print Page'} 13 {'User Intervention Required'} 14 {'Out of Memory'} 15 {'Server Unknown'} default {'Invalid Code'} } } Return } Function Get-ExtendedPrinterStatus { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'Idle'} 4 {'Printing'} 5 {'Warming Up'} 6 {'Stopped Printing'} 7 {'Offline'} 8 {'Paused'} 9 {'Error'} 10 {'Busy'} 11 {'Not Available'} 12 {'Waiting'} 13 {'Processing'} 14 {'Initialization'} 15 {'Power Save'} 16 {'Pending Deletion'} 17 {'I/O Active'} 18 {'Manual Feed'} default {'Invalid Code'} } } Return } Function Get-Family { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'8086'} 4 {'80286'} 5 {'80386 - Intel386(TM) Processor'} 6 {'80486 - Intel486(TM) Processor'} 7 {'8087'} 8 {'80287'} 9 {'80387'} 10 {'80487'} 11 {'Pentium(R) brand'} 12 {'Pentium(R) Pro'} 13 {'Pentium(R) II'} 14 {'Pentium(R) processor with MMX(TM) technology'} 15 {'Celeron(TM)'} 16 {'Pentium(R) II Xeon(TM)'} 17 {'Pentium(R) III'} 18 {'M1 Family'} 19 {'M2 Family'} 20 {'Intel(R) Celeron(R) M processor'} 21 {'Intel(R) Pentium(R) 4 HT processor'} 24 {'K5 Family - AMD Duron(TM) Processor Family'} 25 {'K6 Family'} 26 {'K6-2'} 27 {'K6-3'} 28 {'AMD Athlon(TM) Processor Family'} 29 {'AMD(R) Duron(TM) Processor'} 30 {'AMD29000 Family'} 31 {'K6-2+'} 32 {'Power PC Family'} 33 {'Power PC 601'} 34 {'Power PC 603'} 35 {'Power PC 603+'} 36 {'Power PC 604'} 37 {'Power PC 620'} 38 {'Power PC X704'} 39 {'Power PC 750'} 40 {'Intel(R) Core(TM) Duo Processor'} 41 {'Intel(R) Core(TM) Duo Mobile Processor'} 42 {'Intel(R) Core(TM) Solo Mobile Processor'} 43 {'Intel(R) Atom(TM) Processor'} 48 {'Alpha Family'} 49 {'Alpha 21064'} 50 {'Alpha 21066'} 51 {'Alpha 21164'} 52 {'Alpha 21164PC'} 53 {'Alpha 21164a'} 54 {'Alpha 21264'} 55 {'Alpha 21364'} 56 {'AMD Turion(TM) II Ultra Dual-Core Mobile M Processor Family'} 57 {'AMD Turion(TM) II Dual-Core Mobile M Processor Family'} 58 {'AMD Athlon(TM) II Dual-Core Mobile M Processor Family'} 59 {'AMD Opteron(TM) 6100 Series Processor'} 60 {'AMD Opteron(TM) 4100 Series Processor'} 61 {'AMD Opteron(TM) 6200 Series Processor'} 62 {'AMD Opteron(TM) 4200 Series Processor'} 63 {'AMD FX(TM) Series Processor'} 64 {'MIPS Family'} 65 {'MIPS R4000'} 66 {'MIPS R4200'} 67 {'MIPS R4400'} 68 {'MIPS R4600'} 69 {'MIPS R10000'} 70 {'AMD C-Series Processor'} 71 {'AMD E-Series Processor'} 72 {'AMD A-Series Processor'} 73 {'AMD G-Series Processor'} 74 {'AMD Z-Series Processor'} 80 {'SPARC Family'} 81 {'SuperSPARC'} 82 {'microSPARC II'} 83 {'microSPARC IIep'} 84 {'UltraSPARC'} 85 {'UltraSPARC II'} 86 {'UltraSPARC IIi'} 87 {'UltraSPARC III'} 88 {'UltraSPARC IIIi'} 96 {'68040'} 97 {'68xxx Family'} 98 {'68000'} 99 {'68010'} 100 {'68020'} 101 {'68030'} 112 {'Hobbit Family'} 120 {'Crusoe(TM) TM5000 Family'} 121 {'Crusoe(TM) TM3000 Family'} 122 {'Efficeon(TM) TM8000 Family'} 128 {'Weitek'} 130 {'Itanium(TM) Processor'} 131 {'AMD Athlon(TM) 64 Processor Family'} 132 {'AMD Opteron(TM) Family'} 133 {'AMD Sempron(TM) Processor Family'} 134 {'AMD Turion(TM) 64 Mobile Technology'} 135 {'Dual-Core AMD Opteron(TM) Processor Family'} 136 {'AMD Athlon(TM) 64 X2 Dual-Core Processor Family'} 137 {'AMD Turion(TM) 64 X2 Mobile Technology'} 138 {'Quad-Core AMD Opteron(TM) Processor Family'} 139 {'Third-Generation AMD Opteron(TM) Processor Family'} 140 {'AMD Phenom(TM) FX Quad-Core Processor Family'} 141 {'AMD Phenom(TM) X4 Quad-Core Processor Family'} 142 {'AMD Phenom(TM) X2 Dual-Core Processor Family'} 143 {'AMD Athlon(TM) X2 Dual-Core Processor Family'} 144 {'PA-RISC Family'} 145 {'PA-RISC 8500'} 146 {'PA-RISC 8000'} 147 {'PA-RISC 7300LC'} 148 {'PA-RISC 7200'} 149 {'PA-RISC 7100LC'} 150 {'PA-RISC 7100'} 160 {'V30 Family'} 161 {'Quad-Core Intel(R) Xeon(R) processor 3200 Series'} 162 {'Dual-Core Intel(R) Xeon(R) processor 3000 Series'} 163 {'Quad-Core Intel(R) Xeon(R) processor 5300 Series'} 164 {'Dual-Core Intel(R) Xeon(R) processor 5100 Series'} 165 {'Dual-Core Intel(R) Xeon(R) processor 5000 Series'} 166 {'Dual-Core Intel(R) Xeon(R) processor LV'} 167 {'Dual-Core Intel(R) Xeon(R) processor ULV'} 168 {'Dual-Core Intel(R) Xeon(R) processor 7100 Series'} 169 {'Quad-Core Intel(R) Xeon(R) processor 5400 Series'} 170 {'Quad-Core Intel(R) Xeon(R) processor'} 171 {'Dual-Core Intel(R) Xeon(R) processor 5200 Series'} 172 {'Dual-Core Intel(R) Xeon(R) processor 7200 Series'} 173 {'Quad-Core Intel(R) Xeon(R) processor 7300 Series'} 174 {'Quad-Core Intel(R) Xeon(R) processor 7400 Series'} 175 {'Multi-Core Intel(R) Xeon(R) processor 7400 Series'} 176 {'Pentium(R) III Xeon(TM)'} 177 {'Pentium(R) III Processor with Intel(R) SpeedStep(TM) Technology'} 178 {'Pentium(R) 4'} 179 {'Intel(R) Xeon(TM)'} 180 {'AS400 Family'} 181 {'Intel(R) Xeon(TM) Processor MP'} 182 {'AMD AthlonXP(TM) Family'} 183 {'AMD AthlonMP(TM) Family'} 184 {'Intel(R) Itanium(R) 2'} 185 {'Intel Pentium M Processor'} 186 {'Intel(R) Celeron(R) D processor'} 187 {'Intel(R) Pentium(R) D processor'} 188 {'Intel(R) Pentium(R) Processor Extreme Edition'} 189 {'Intel(R) Core(TM) Solo Processor'} 190 {'K7'} 191 {'Intel(R) Core(TM)2 Duo Processor'} 192 {'Intel(R) Core(TM)2 Solo processor'} 193 {'Intel(R) Core(TM)2 Extreme processor'} 194 {'Intel(R) Core(TM)2 Quad processor'} 195 {'Intel(R) Core(TM)2 Extreme mobile processor'} 196 {'Intel(R) Core(TM)2 Duo mobile processor'} 197 {'Intel(R) Core(TM)2 Solo mobile processor'} 198 {'Intel Coreâ„¢ i7-2760QM'} 199 {'Dual-Core Intel(R) Celeron(R) Processor'} 200 {'IBM390 Family'} 201 {'G4'} 202 {'G5'} 203 {'G6'} 204 {'z/Architecture Base'} 205 {'Intel(R) Core(TM) i5 processor'} 206 {'Intel(R) Core(TM) i3 processor'} 210 {'VIA C7(TM)-M Processor Family'} 211 {'VIA C7(TM)-D Processor Family'} 212 {'VIA C7(TM) Processor Family'} 213 {'VIA Eden(TM) Processor Family'} 214 {'Multi-Core Intel(R) Xeon(R) processor'} 215 {'Dual-Core Intel(R) Xeon(R) processor 3xxx Series'} 216 {'Quad-Core Intel(R) Xeon(R) processor 3xxx Series'} 217 {'VIA Nano(TM) Processor Family'} 218 {'Dual-Core Intel(R) Xeon(R) processor 5xxx Series'} 219 {'Quad-Core Intel(R) Xeon(R) processor 5xxx Series'} 221 {'Dual-Core Intel(R) Xeon(R) processor 7xxx Series'} 222 {'Quad-Core Intel(R) Xeon(R) processor 7xxx Series'} 223 {'Multi-Core Intel(R) Xeon(R) processor 7xxx Series'} 224 {'Multi-Core Intel(R) Xeon(R) processor 3400 Series'} 228 {'AMD Opteron(TM) 3000 Series Processor'} 229 {'AMD Sempron(TM) II Processor Family'} 230 {'Embedded AMD Opteron(TM) Quad-Core Processor Family'} 231 {'AMD Phenom(TM) Triple-Core Processor Family'} 232 {'AMD Turion(TM) Ultra Dual-Core Mobile Processor Family'} 233 {'AMD Turion(TM) Dual-Core Mobile Processor Family'} 234 {'AMD Athlon(TM) Dual-Core Processor Family'} 235 {'AMD Sempron(TM) SI Processor Family'} 236 {'AMD Phenom(TM) II Processor Family'} 237 {'AMD Athlon(TM) II Processor Family'} 238 {'Six-Core AMD Opteron(TM) Processor Family'} 239 {'AMD Sempron(TM) M Processor Family'} 250 {'i860'} 251 {'i960'} 260 {'SH-3'} 261 {'SH-4'} 280 {'ARM'} 281 {'StrongARM'} 300 {'6x86'} 301 {'MediaGX'} 302 {'MII'} 320 {'WinChip'} 350 {'DSP'} 500 {'Video Processor'} default {'Invalid Code'} } } Return } Function Get-FileSystemFlagsEx { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Case Sensitive Search'} 2 {'Case Preserved Names'} 4 {'Unicode On Disk'} 8 {'Persistent ACLs'} 16 {'File Compression'} 32 {'Volume Quotas'} 64 {'Supports Sparse Files'} 128 {'Supports Reparse Points'} 256 {'Supports Remote Storage'} 16384 {'Supports Long Names'} 32768 {'Volume Is Compressed'} 524289 {'Read Only Volume'} 65536 {'Supports Object IDS'} 131072 {'Supports Encryption'} 262144 {'Supports Named Streams'} default {'Invalid Code'} } } Return } Function Get-ForegroundApplicationBoost { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'None'} 1 {'Minimum'} 2 {'Maximum'} default {'Invalid Code'} } } Return } Function Get-FormFactor { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Unknown'} 1 {'Other'} 2 {'SIP'} 3 {'DIP'} 4 {'ZIP'} 5 {'SOJ'} 6 {'Proprietary'} 7 {'SIMM'} 8 {'DIMM'} 9 {'TSOP'} 10 {'PGA'} 11 {'RIMM'} 12 {'SODIMM'} 13 {'SRIMM'} 14 {'SMD'} 15 {'SSMP'} 16 {'QFP'} 17 {'TQFP'} 18 {'SOIC'} 19 {'LCC'} 20 {'PLCC'} 21 {'BGA'} 22 {'FPBGA'} 23 {'LGA'} default {'Invalid Code'} } } Return } Function Get-Handedness { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Unknown'} 1 {'Not Applicable'} 2 {'Right Handed Operation'} 3 {'Left Handed Operation'} default {'Invalid Code'} } } Return } Function Get-ICMIntent { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Saturation'} 2 {'Contrast'} 3 {'Exact Color'} default {'Invalid Code'} } } Return } Function Get-ICMMethod { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Disabled'} 2 {'Windows'} 3 {'Device Driver'} 4 {'Device'} default {'Invalid Code'} } } Return } Function Get-IGMPLevel { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'No Multicast'} 1 {'IP Multicast'} 2 {'IP & IGMP multicast'} default {'Invalid Code'} } } Return } function Get-Info { param ( [String]$ClassName, [String[]]$ComputerName, [String]$Protocol, [String[]]$Properties) if (($ComputerName.Count -eq 0) -and ($Protocol -eq '')){ $Info = Get-CimInstance -ClassName $ClassName -Property $Properties | Select-Object $Properties } elseif (($ComputerName.Count -eq 0) -and ($Protocol -ieq 'WinRM')){ throw "You have not specified any 'ComputerName'." } elseif (($ComputerName.Count -eq 0) -and ($Protocol -ieq 'DCOM')){ throw "You have not specified any 'ComputerName'." } elseif (($ComputerName -ne '') -and ($Protocol -eq '')) { $Info = Get-CimInstance -ClassName $ClassName -ComputerName $ComputerName -Property $Properties | Select-Object $Properties } elseif (($ComputerName -ne '') -and ($Protocol -ieq "WinRM")) { $SessionProtocolOption = New-CimSessionOption -Protocol Wsman $Session = New-CimSession -ComputerName $ComputerName -SessionOption $SessionProtocolOption $Info = Get-CimInstance -ClassName $ClassName -CimSession $Session -Property $Properties | Select-Object $Properties Remove-CimSession -CimSession $Session | Out-Null } elseif (($ComputerName -ne '') -and ($Protocol -ieq "DCOM")) { $SessionProtocolOption = New-CimSessionOption -Protocol DCOM $Session = New-CimSession -ComputerName $ComputerName -SessionOption $SessionProtocolOption $Info = Get-CimInstance -ClassName $ClassName -CimSession $Session -Property $Properties | Select-Object $Properties Remove-CimSession -CimSession $Session | Out-Null } Write-Output $Info } Function Get-InterleavePosition { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Noninterleaved'} 1 {'First position'} 2 {'Second position'} default {'Invalid Code'} } } Return } Function Get-IPXFrameType { param ([uint32[]]$Code) if ($Code.Count -ne 0){ switch ($Code){ 0 {'Ethernet II'} 1 {'Ethernet 802.3'} 2 {'Ethernet 802.2'} 3 {'Ethernet SNAP'} 255 {'Auto'} default {'Invalid Code'} } } Return } Function Get-IPXMediaType { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Ethernet'} 2 {'Token ring'} 3 {'FDDI'} 8 {'ARCNET'} default {'Invalid Code'} } } Return } Function Get-LanguagesSupported { param ([uint16[]]$Code) if ($Code.Count -ne 0){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'PCL'} 4 {'HPGL'} 5 {'PJL'} 6 {'PS'} 7 {'PSPrinter'} 8 {'IPDS'} 9 {'PPDS'} 10 {'EscapeP'} 11 {'Epson'} 12 {'DDIF'} 13 {'Interpress'} 14 {'ISO6429'} 15 {'Line Data'} 16 {'MODCA'} 17 {'REGIS'} 18 {'SCS'} 19 {'SPDL'} 20 {'TEK4014'} 21 {'PDS'} 22 {'IGP'} 23 {'CodeV'} 24 {'DSCDSE'} 25 {'WPS'} 26 {'LN03'} 27 {'CCITT'} 28 {'QUIC'} 29 {'CPAP'} 30 {'DecPPL'} 31 {'Simple Text'} 32 {'NPAP'} 33 {'DOC'} 34 {'imPress'} 35 {'Pinwriter'} 36 {'NPDL'} 37 {'NEC201PL'} 38 {'Automatic'} 39 {'Pages'} 40 {'LIPS'} 41 {'TIFF'} 42 {'Diagnostic'} 43 {'CaPSL'} 44 {'EXCL'} 45 {'LCDS'} 46 {'XES'} 47 {'MIME'} 48 {'XPS'} 49 {'HPGL2'} 50 {'PCLXL'} default {'Invalid Code'} } } Return } Function Get-LargeSystemCache { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Optimize for Applications'} 1 {'Optimize for System Performance'} default {'Invalid Code'} } } Return } Function Get-Layout { param ([String] $Code) if ($Code -ne ''){ Switch ($Code){ '0000041c' {'Albanian'} '00000401' {'Arabic (101)'} '00010401' {'Arabic (102)'} '00020401' {'Arabic (102) AZERTY'} '0000042b' {'Armenian Eastern'} '0002042b' {'Armenian Phonetic'} '0003042b' {'Armenian Typewriter'} '0001042b' {'Armenian Western'} '0000044d' {'Assamese - Inscript'} '0001042c' {'Azerbaijani (Standard)'} '0000082c' {'Azerbaijani Cyrillic'} '0000042c' {'Azerbaijani Latin'} '0000046d' {'Bashkir'} '00000423' {'Belarusian'} '0001080c' {'Belgian (Comma)'} '00000813' {'Belgian (Period)'} '0000080c' {'Belgian French'} '00000445' {'Bangla (Bangladesh)'} '00020445' {'Bangla (India)'} '00010445' {'Bangla (India - Legacy)'} '0000201a' {'Bosnian (Cyrillic)'} '000b0c00' {'Buginese'} '0030402' {'Bulgarian'} '00010402' {'Bulgarian (Latin)'} '00020402' {'Bulgarian (phonetic layout)'} '00040402' {'Bulgarian (phonetic traditional)'} '00000402' {'Bulgarian (Typewriter)'} '00001009' {'Canadian French'} '00000c0c' {'Canadian French (Legacy)'} '00011009' {'Canadian Multilingual Standard'} '0000085f' {'Central Atlas Tamazight'} '00000429' {'Central Kurdish'} '0000045c' {'Cherokee Nation'} '0001045c' {'Cherokee Nation Phonetic'} '00000804' {'Chinese (Simplified) - US Keyboard'} '00000404' {'Chinese (Traditional) - US Keyboard'} '00000c04' {'Chinese (Traditional, Hong Kong S.A.R.)'} '00001404' {'Chinese (Traditional Macao S.A.R.) US Keyboard'} '00001004' {'Chinese (Simplified, Singapore) - US keyboard'} '0000041a' {'Croatian'} '00000405' {'Czech'} '00010405' {'Czech (QWERTY)'} '00020405' {'Czech Programmers'} '00000406' {'Danish'} '00000439' {'Devanagari-INSCRIPT'} '00000465' {'Divehi Phonetic'} '00010465' {'Divehi Typewriter'} '00000413' {'Dutch'} '00000C51' {'Dzongkha'} '00000425' {'Estonian'} '00000438' {'Faeroese'} '0000040b' {'Finnish'} '0001083b' {'Finnish with Sami'} '0000040c' {'French'} '00120c00' {'Futhark'} '00000437' {'Georgian'} '00020437' {'Georgian (Ergonomic)'} '00010437' {'Georgian (QWERTY)'} '00030437' {'Georgian Ministry of Education and Science Schools'} '00040437' {'Georgian (Old Alphabets)'} '00000407' {'German'} '00010407' {'German (IBM)'} '000c0c00' {'Gothic'} '00000408' {'Greek'} '00010408' {'Greek (220)'} '00030408' {'Greek (220) Latin'} '00020408' {'Greek (319)'} '00040408' {'Greek (319) Latin'} '00050408' {'Greek Latin'} '00060408' {'Greek Polytonic'} '0000046f' {'Greenlandic'} '00000474' {'Guarani'} '00000447' {'Gujarati'} '00000468' {'Hausa'} '0000040d' {'Hebrew'} '00010439' {'Hindi Traditional'} '0000040e' {'Hungarian'} '0001040e' {'Hungarian 101-key'} '0000040f' {'Icelandic'} '00000470' {'Igbo'} '000004009' {'India'} '0000085d' {'Inuktitut - Latin'} '0001045d' {'Inuktitut - Naqittaut'} '00001809' {'Irish'} '00000410' {'Italian'} '00010410' {'Italian (142)'} '00000411' {'Japanese'} '00110c00' {'Javanese'} '0000044b' {'Kannada'} '0000043f' {'Kazakh'} '00000453' {'Khmer'} '00010453' {'Khmer (NIDA)'} '00000412' {'Korean'} '00000440' {'Kyrgyz Cyrillic'} '00000454' {'Lao'} '0000080a' {'Latin American'} '00020426' {'Latvian (Standard)'} '00010426' {'Latvian (Legacy)'} '00070c00' {'Lisu (Basic)'} '00080c00' {'Lisu (Standard)'} '00010427' {'Lithuanian'} '00000427' {'Lithuanian IBM'} '00020427' {'Lithuanian Standard'} '0000046e' {'Luxembourgish'} '0000042f' {'Macedonia (FYROM)'} '0001042f' {'Macedonia (FYROM) - Standard'} '0000044c' {'Malayalam'} '0000043a' {'Maltese 47-Key'} '0001043a' {'Maltese 48-key'} '00000481' {'Maori'} '0000044e' {'Marathi'} '00000850' {'Mongolian (Mongolian Script - Legacy)'} '00020850' {'Mongolian (Mongolian Script - Standard)'} '00000450' {'Mongolian Cyrillic'} '00010c00' {'Myanmar'} '00090c00' {'N ko'} '00000461' {'Nepali'} '00020c00' {'New Tai Lue'} '00000414' {'Norwegian'} '0000043b' {'Norwegian with Sami'} '00000448' {'Odia'} '000d0c00' {'Ol Chiki'} '000f0c00' {'Old Italic'} '000e0c00' {'Osmanya'} '00000463' {'Pashto (Afghanistan)'} '0x00000429' {'Persian'} '00050429' {'Persian (Standard)'} '000a0c00' {'Phags-pa'} '00010415' {'Polish (214)'} '00000415' {'Polish (Programmers)'} '00000816' {'Portuguese'} '00000416' {'Portuguese (Brazilian ABNT)'} '00010416' {'Portuguese (Brazilian ABNT2)'} '00000446' {'Punjabi'} '00000418' {'Romanian (Legacy)'} '00020418' {'Romanian (Programmers)'} '00010418' {'Romanian (Standard)'} '00000419' {'Russian'} '00020419' {'Russian - Mnemonic'} '00010419' {'Russian (Typewriter)'} '00000485' {'Sakha'} '0002083b' {'Sami Extended Finland-Sweden'} '0001043b' {'Sami Extended Norway'} '00011809' {'Scottish Gaelic'} '00000c1a' {'Serbian (Cyrillic)'} '0000081a' {'Serbian (Latin)'} '0000046c' {'Sesotho sa Leboa'} '00000432' {'Setswana'} '0000045b' {'Sinhala'} '0001045b' {'Sinhala - wij 9'} '0000041b' {'Slovak'} '0001041b' {'Slovak (QWERTY)'} '00000424' {'Slovenian'} '00100c00' {'Sora'} '0001042e' {'Sorbian Extended'} '0002042e' {'Sorbian Standard'} '0000042e' {'Sorbian Standard (Legacy)'} '0000040a' {'Spanish'} '0001040a' {'Spanish Variation'} '0000041d' {'Swedish'} '0000083b' {'Swedish with Sami'} '0000100c' {'Swiss French'} '00000807' {'Swiss German'} '0000045a' {'Syriac'} '0001045a' {'Syriac Phonetic'} '00030c00' {'Tai Le'} '00000428' {'Tajik'} '00000449' {'Tamil'} '00010444' {'Tatar'} '00000444' {'Tatar (Legacy)'} '0000044a' {'Telugu'} '0000041e' {'Thai Kedmanee'} '0002041e' {'Thai Kedmanee (non-ShiftLock)'} '0001041e' {'Thai Pattachote'} '0003041e' {'Thai Pattachote (non-ShiftLock)'} '00010451' {'Tibetan (PRC - Standard)'} '00000451' {'Tibetan (PRC - Legacy)'} '00050c00' {'Tifinagh (Basic)'} '00060c00' {'Tifinagh (Full)'} '0001041f' {'Turkish F'} '0000041f' {'Turkish Q'} '00000442' {'Turkmen'} '0x00010408' {'Uyghur'} '00000480' {'Uyghur (Legacy)'} '00000422' {'Ukrainian'} '00020422' {'Ukrainian (Enhanced)'} '00000809' {'United Kingdom'} '00000452' {'United Kingdom Extended'} '00010409' {'United States - Dvorak'} '00020409' {'United States - International'} '00030409' {'United States - Dvorak for left hand'} '00040409' {'United States - Dvorak for right hand'} '00000409' {'United States - English'} '00000420' {'Urdu'} '00010480' {'Uyghur'} '00000843' {'Uzbek Cyrillic'} '0000042a' {'Vietnamese'} '00000488' {'Wolof'} '0x00000485' {'Yakut'} '0000046a' {'Yoruba'} Deafult {'Invalid Code'} } } Return } Function Get-LengthCM { param ([float]$Inches) if ($Inches -ne ''){[math]::round($Inches * 2.54,2)} Return } Function Get-Level { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'Primary'} 4 {'Secondary'} 5 {'Tertiary'} 6 {'Not Applicable'} default {'Invalid Code'} } } Return } Function Get-Locale { param ([String] $Code) if ($Code -ne ''){ Switch ($Code){ '0436' {'Afrikaans - South Africa'} '041c' {'Albanian - Albania'} '0484' {'Alsatian - France'} '045e' {'Amharic - Ethiopia'} '1401' {'Arabic - Algeria'} '3c01' {'Arabic - Bahrain'} '0c01' {'Arabic - Egypt'} '0801' {'Arabic - Iraq'} '2c01' {'Arabic - Jordan'} '3401' {'Arabic - Kuwait'} '3001' {'Arabic - Lebanon'} '1001' {'Arabic - Libya'} '1801' {'Arabic - Morocco'} '2001' {'Arabic - Oman'} '4001' {'Arabic - Qatar'} '0401' {'Arabic - Saudi Arabia'} '2801' {'Arabic - Syria'} '1c01' {'Arabic - Tunisia'} '3801' {'Arabic - U.A.E.'} '2401' {'Arabic - Yemen'} '042b' {'Armenian - Armenia'} '044d' {'Assamese - India'} '082c' {'Azerbaijani - Azerbaijan (Cyrillic)'} '042c' {'Azerbaijani - Azerbaijan (Latin)'} '0845' {'Bangla (Bangladesh)'} '0445' {'Bangla - India (Bengali Script)'} '046d' {'Bashkir - Russia'} '042d' {'Basque - Basque'} '0423' {'Belarusian - Belarus'} '201a' {'Bosnian - Bosnia and Herzegovina (Cyrillic)'} '141a' {'Bosnian - Bosnia and Herzegovina (Latin)'} '047e' {'Breton - France'} '0402' {'Bulgarian - Bulgaria'} '0455' {'Burmese - Myanmar'} '0403' {'Catalan - Catalan'} '040c' {'Central Atlas Tamazight (Latin) - Algeria'} '085f' {'Central Atlas Tamazight (Latin) - Algeria'} '105f' {'Central Atlas Tamazight (Tifinagh) - Morocco'} '0492' {'Central Kurdish (Iraq)'} '045c' {'Cherokee (Cherokee, United States)'} '0804' {'Chinese - PRC'} '0404' {'Chinese - Taiwan'} '0483' {'Corsican - France'} '101a' {'Croatian - Bosnia and Herzegovina'} '041a' {'Croatian - Croatia'} '0405' {'Czech - Czech Republic'} '0406' {'Danish - Denmark'} '048c' {'Dari - Afghanistan'} '0465' {'Divehi - Maldives'} '0813' {'Dutch - Belgium'} '0413' {'Dutch - Netherlands'} '0c51' {'Dzongkha'} '0c09' {'English - Australia'} '2809' {'English - Belize'} '1009' {'English - Canada'} '2409' {'English - Caribbean'} '4009' {'English - India'} '1809' {'English - Ireland'} '2009' {'English - Jamaica'} '4409' {'English - Malaysia'} '1409' {'English - New Zealand'} '3409' {'English - Philippines'} '4809' {'English - Singapore'} '1c09' {'English - South Africa'} '2c09' {'English - Trinidad'} '0809' {'English - Great Britain'} '0409' {'English - United States'} '3009' {'English - Zimbabwe'} '0425' {'Estonian - Estonia'} '0438' {'Faroese - Faroe Islands'} '0464' {'Filipino - Philippines'} '040b' {'Finnish - Finland'} '080c' {'French - Belgium'} '0c0c' {'French - Canada'} '040c' {'French - France'} '140c' {'French - Luxembourg'} '180c' {'French - Monaco'} '100c' {'French - Switzerland'} '0462' {'Frisian - Netherlands'} '0867' {'Fulah (Latin, Senegal)'} '0456' {'Galician - Galician'} '0437' {'Georgian - Georgia'} '0c07' {'German - Austria'} '0407' {'German - Germany'} '1407' {'German - Liechtenstein'} '1007' {'German - Luxembourg'} '0807' {'German - Switzerland'} '0408' {'Greek - Greece'} '046f' {'Greenlandic - Greenland'} '0474' {'Guarani - Paraguay'} '0447' {'Gujarati - India (Gujarati Script)'} '0468' {'Hausa (Latin) - Nigeria'} '0475' {'Hawaiian - United States'} '040d' {'Hebrew - Israel'} '0439' {'Hindi - India'} '040e' {'Hungarian - Hungary'} '040f' {'Icelandic - Iceland'} '0470' {'Igbo - Nigeria'} '243b' {'Inari Sami - Finland'} '0421' {'Indonesian - Indonesia'} '085d' {'Inuktitut (Latin) - Canada'} '045d' {'Inuktitut (Syllabics) - Canada'} '083c' {'Irish - Ireland'} '0434' {'isiXhosa / Xhosa - South Africa'} '0435' {'isiZulu / Zulu - South Africa'} '0410' {'Italian - Italy'} '0810' {'Italian - Switzerland'} '0411' {'Japanese - Japan'} '0c00' {'Javanese (Latin) - Indonesia'} '044b' {'Kannada - India (Kannada Script)'} '043f' {'Kazakh - Kazakhstan'} '0453' {'Khmer - Cambodia'} '0486' {"K'iche - Guatemala"} '0487' {'Kinyarwanda - Rwanda'} '0457' {'Konkani - India'} '0412' {'Korean(Extended Wansung) - Korea'} '0440' {'Kyrgyz - Kyrgyzstan'} '0454' {'Lao - Lao PDR'} '0426' {'Latvian - Standard'} '0427' {'Lithuanian - Lithuania'} '082e' {'Lower Sorbian - Germany'} '103b' {'Lule Sami - Norway'} '143b' {'Lule Sami - Sweden'} '046e' {'Luxembourgish - Luxembourg'} '042f' {'Macedonian - F.Y.R.O.M'} '083e' {'Malay - Brunei'} '043e' {'Malay - Malaysia'} '044c' {'Malayalam - India (Malayalam Script)'} '043a' {'Maltese - Malta'} '0481' {'Maori - New Zealand'} '047a' {'Mapudungun - Chile'} '044e' {'Marathi - India'} '047c' {'Mohawk - Mohawk'} '0450' {'Mongolian (Cyrillic)'} '0c50' {'Mongolian (Mongolian) - Mongolia'} '0850' {'Mongolian (Mongolian– PRC – Standard)'} '0c00' {"N'ko – Guinea"} '0461' {'Nepali - Federal Democratic Republic of Nepal'} '0c3b' {'Northern Sami - Finland'} '043b' {'Northern Sami - Norway'} '083b' {'Northern Sami - Sweden'} '0414' {'Norwegian - Norway (Bokmål)'} '0814' {'Norwegian - Norway (Nynorsk)'} '0482' {'Occitan - France'} '0448' {'Odia - India (Odia Script)'} '0463' {'Pashto - Afghanistan'} '0429' {'Persian'} '0415' {'Polish - Poland'} '0416' {'Portuguese - Brazil'} '0816' {'Portuguese - Portugal'} '0446' {'Punjabi - India (Gurmukhi Script)'} '0846' {'Punjabi (Islamic Republic of Pakistan)'} '046b' {'Quechua - Bolivia'} '086b' {'Quechua - Ecuador'} '0c6b' {'Quechua - Peru'} '0418' {'Romanian - Romania'} '0417' {'Romansh - Switzerland'} '0419' {'Russian - Russia'} '0485' {'Sakha - Russia'} '044f' {'Sanskrit - India'} '0491' {'Scottish Gaelic - Great Britain'} '1c1a' {'Serbian - Bosnia and Herzegovina (Cyrillic)'} '181a' {'Serbian - Bosnia and Herzegovina (Latin)'} '301a' {'Serbian - Montenegro (Cyrillic)'} '2c1a' {'Serbian - Montenegro (Latin)'} '281a' {'Serbian - Serbia (Cyrillic)'} '241a' {'Serbian - Serbia (Latin)'} '0c1a' {'Serbian - Serbia and Montenegro (Former) (Cyrillic)'} '081a' {'Serbian - Serbia and Montenegro (Former) (Latin)'} '046c' {'Sesotho sa Leboa / Northern Sotho - South Africa'} '0832' {'Setswana / Tswana - Botswana'} '0432' {'Setswana / Tswana - South Africa'} '0c00' {'Shona – Zimbabwe'} '0859' {'Sindhi (Islamic Republic of Pakistan)'} '045b' {'Sinhala - Sri Lanka'} '203b' {'Skolt Sami - Finland'} '041b' {'Slovak - Slovakia'} '0424' {'Slovenian - Slovenia'} '183b' {'Southern Sami - Norway'} '1c3b' {'Southern Sami - Sweden'} '2c0a' {'Spanish - Argentina'} '200a' {'Spanish - Bolivarian Republic of Venezuela'} '400a' {'Spanish - Bolivia'} '340a' {'Spanish - Chile'} '240a' {'Spanish - Colombia'} '140a' {'Spanish - Costa Rica'} '1c0a' {'Spanish - Dominican Republic'} '300a' {'Spanish - Ecuador'} '440a' {'Spanish - El Salvador'} '100a' {'Spanish - Guatemala'} '480a' {'Spanish - Honduras'} '580a' {'Spanish - Latin America'} '080a' {'Spanish - Mexico'} '4c0a' {'Spanish - Nicaragua'} '180a' {'Spanish - Panama'} '3c0a' {'Spanish - Paraguay'} '280a' {'Spanish - Peru'} '500a' {'Spanish - Commonwealth of Puerto Rico'} '0c0a' {'Spanish - Spain (International Sort)'} '040a' {'Spanish - Spain (Traditional Sort)'} '540a' {'Spanish - United States'} '380a' {'Spanish - Uruguay'} '0c00' {'Standard Moroccan Tamazight - Morocco'} '0441' {'Swahili - Kenya'} '081d' {'Swedish - Finland'} '041d' {'Swedish - Sweden'} '045a' {'Syriac - Syria'} '0428' {'Tajik - Tajikistan'} '0449' {'Tamil - India'} '0849' {'Tamil - Sri Lanka'} '0444' {'Tatar – Russia (Standard)'} '044a' {'Telugu - India (Telugu Script)'} '041e' {'Thai - Thailand'} '0451' {'Tibetan - PRC'} '0473' {'Tigrinya (Ethiopia)'} '041f' {'Turkish - Turkey'} '0442' {'Turkmen - Turkmenistan'} '0422' {'Ukrainian - Ukraine'} '042e' {'Upper Sorbian - Germany'} '0820' {'Urdu – India'} '0420' {'Urdu (Islamic Republic of Pakistan)'} '0480' {'Uyghur - PRC'} '0843' {'Uzbek - Uzbekistan (Cyrillic)'} '0443' {'Uzbek - Uzbekistan (Latin)'} '0803' {'Valencian - Valencia'} '042a' {'Vietnamese - Vietnam'} '0452' {'Welsh - Great Britain'} '0488' {'Wolof - Senegal'} '0478' {'Yi - PRC'} '046a' {'Yoruba - Nigeria'} Deafult {'Invalid Code'} } } Return } Function Get-Location { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Internal'} 1 {'External'} 2 {'Reserved'} 3 {'Unknown'} default {'Invalid Code'} } } Return } Function Get-LogicalDiskMediaType { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Format is unknown'} 1 {'5 1/4-Inch Floppy Disk - 1.2 MB - 512 bytes/sector'} 2 {'3 1/2-Inch Floppy Disk - 1.44 MB - 512 bytes/sector'} 3 {'3 1/2-Inch Floppy Disk - 2.88 MB - 512 bytes/sector'} 4 {'3 1/2-Inch Floppy Disk - 20.8 MB - 512 bytes/sector'} 5 {'3 1/2-Inch Floppy Disk - 720 KB - 512 bytes/sector'} 6 {'5 1/4-Inch Floppy Disk - 360 KB - 512 bytes/sector'} 7 {'5 1/4-Inch Floppy Disk - 320 KB - 512 bytes/sector'} 8 {'5 1/4-Inch Floppy Disk - 320 KB - 1024 bytes/sector'} 9 {'5 1/4-Inch Floppy Disk - 180 KB - 512 bytes/sector'} 10 {'5 1/4-Inch Floppy Disk - 160 KB - 512 bytes/sector'} 11 {'Removable media other than floppy'} 12 {'Fixed hard disk media'} 13 {'3 1/2-Inch Floppy Disk - 120 MB - 512 bytes/sector'} 14 {'3 1/2-Inch Floppy Disk - 640 KB - 512 bytes/sector'} 15 {'5 1/4-Inch Floppy Disk - 640 KB - 512 bytes/sector'} 16 {'5 1/4-Inch Floppy Disk - 720 KB - 512 bytes/sector'} 17 {'3 1/2-Inch Floppy Disk - 1.2 MB - 512 bytes/sector'} 18 {'3 1/2-Inch Floppy Disk - 1.23 MB - 1024 bytes/sector'} 19 {'5 1/4-Inch Floppy Disk - 1.23 MB - 1024 bytes/sector'} 20 {'3 1/2-Inch Floppy Disk - 128 MB - 512 bytes/sector'} 21 {'3 1/2-Inch Floppy Disk - 230 MB - 512 bytes/sector'} 22 {'8-Inch Floppy Disk - 256 KB - 128 bytes/sector'} default {'Invalid Code'} } } Return } Function Get-MarkingTechnology { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'Electrophotographic LED'} 4 {'Electrophotographic Laser'} 5 {'Electrophotographic Other'} 6 {'Impact Moving Head Dot Matrix 9pin'} 7 {'Impact Moving Head Dot Matrix 24pin'} 8 {'Impact Moving Head Dot Matrix Other'} 9 {'Impact Moving Head Fully Formed'} 10 {'Impact Band'} 11 {'Impact Other'} 12 {'Inkjet Aqueous'} 13 {'Inkjet Solid'} 14 {'Inkjet Other'} 15 {'Pen'} 16 {'Thermal Transfer'} 17 {'Thermal Sensitive'} 18 {'Thermal Diffusion'} 19 {'Thermal Other'} 20 {'Electroerosion'} 21 {'Electrostatic'} 22 {'Photographic Microfiche'} 23 {'Photographic Imagesetter'} 24 {'Photographic Other'} 25 {'Ion Deposition'} 26 {'eBeam'} 27 {'Typesetter'} default {'Invalid Code'} } } Return } Function Get-MemoryErrorCorrection { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Reserved'} 1 {'Other'} 2 {'Unknown'} 3 {'None'} 4 {'Parity'} 5 {'Single-bit ECC'} 6 {'Multi-bit ECC'} 7 {'CRC'} default {'Invalid Code'} } } Return } Function Get-MemoryType { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Unknown'} 1 {'Other'} 2 {'DRAM'} 3 {'Synchronous DRAM'} 4 {'Cache DRAM'} 5 {'EDO'} 6 {'EDRAM'} 7 {'VRAM'} 8 {'SRAM'} 9 {'RAM'} 10 {'ROM'} 11 {'Flash'} 12 {'EEPROM'} 13 {'FEPROM'} 14 {'EPROM'} 15 {'CDRAM'} 16 {'3DRAM'} 17 {'SDRAM'} 18 {'SGRAM'} 19 {'RDRAM'} 20 {'DDR'} 21 {'DDR2'} 22 {'BRAM'} 23 {'FB-DIMM'} 24 {'DDR3'} 25 {'FBD2'} 26 {'DDR4'} 27 {'LPDDR'} 28 {'LPDDR2'} 29 {'LPDDR3'} 30 {'LPDDR4'} default {'Invalid Code'} } } Return } Function Get-NetConnectionStatus { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Disconnected'} 1 {'Connecting'} 2 {'Connected'} 3 {'Disconnecting'} 4 {'Hardware Not Present'} 5 {'Hardware Disabled'} 6 {'Hardware Malfunction'} 7 {'Media Disconnected'} 8 {'Authenticating'} 9 {'Authentication Succeeded'} 10 {'Authentication Failed'} 11 {'Invalid Address'} 12 {'Credentials Required'} {13..65535 -contains $Code} {'Other'} default {'Invalid Code'} } } Return } Function Get-OperatingSystemSKU { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Undefined'} 1 {'Ultimate Edition'} 2 {'Home Basic Edition'} 3 {'Home Premium Edition'} 4 {'Enterprise Edition'} 6 {'Business Edition'} 7 {'Windows Server Standard Edition (Desktop Experience installation)'} 8 {'Windows Server Datacenter Edition (Desktop Experience installation)'} 9 {'Small Business Server Edition'} 10 {'Enterprise Server Edition'} 11 {'Starter Edition'} 12 {'Datacenter Server Core Edition'} 13 {'Standard Server Core Edition'} 14 {'Enterprise Server Core Edition'} 17 {'Web Server Edition'} 19 {'Home Server Edition'} 20 {'Storage Express Server Edition'} 21 {'Windows Storage Server Standard Edition (Desktop Experience installation)'} 22 {'Windows Storage Server Workgroup Edition (Desktop Experience installation)'} 23 {'Storage Enterprise Server Edition'} 24 {'Server For Small Business Edition'} 25 {'Small Business Server Premium Edition'} 27 {'Windows Enterprise Edition'} 28 {'Windows Ultimate Edition'} 29 {'Windows Server Web Server Edition (Server Core installation)'} 36 {'Windows Server Standard Edition without Hyper-V'} 37 {'Windows Server Datacenter Edition without Hyper-V (full installation)'} 38 {'Windows Server Enterprise Edition without Hyper-V (full installation)'} 39 {'Windows Server Datacenter Edition without Hyper-V (Server Core installation)'} 40 {'Windows Server Standard Edition without Hyper-V (Server Core installation)'} 41 {'Windows Server Enterprise Edition without Hyper-V (Server Core installation)'} 42 {'Microsoft Hyper-V Server'} 43 {'Storage Server Express Edition (Server Core installation)'} 44 {'Storage Server Standard Edition (Server Core installation)'} 45 {'Storage Server Workgroup Edition (Server Core installation)'} 46 {'Storage Server Enterprise Edition (Server Core installation)'} 50 {'Windows Server Essentials (Desktop Experience installation)'} 63 {'Small Business Server Premium (Server Core installation)'} 64 {'Windows Compute Cluster Server without Hyper-V'} 97 {'Windows RT'} 101 {'Windows Home'} 103 {'Windows Professional with Media Center'} 104 {'Windows Mobile'} 123 {'Windows IoT (Internet of Things) Core'} 143 {'Windows Server Datacenter Edition (Nano Server installation)'} 144 {'Windows Server Standard Edition (Nano Server installation)'} 147 {'Windows Server Datacenter Edition (Server Core installation)'} 148 {'Windows Server Standard Edition (Server Core installation)'} default {'Invalid Code'} } } Return } Function Get-Orientation { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Portrait'} 2 {'Landscape'} default {'Invalid Code'} } } Return } Function Get-OSLanguage { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 1025 {'Arabic (Saudi Arabia)'} 1026 {'Bulgarian (Bulgaria)'} 3076 {'Chinese (Hong Kong SAR)'} 2052 {'Chinese (PRC)'} 1028 {'Chinese (Taiwan)'} 1050 {'Croatian (Croatia)'} 1029 {'Czech (Czech Republic)'} 1030 {'Danish (Denmark)'} 1043 {'Dutch (Netherlands)'} 1033 {'English (United States)'} 2057 {'English (United Kingdom)'} 1061 {'Estonian (Estonia)'} 1035 {'Finnish (Finland)'} 3084 {'French (Canada)'} 1036 {'French (France)'} 1031 {'German (Germany)'} 1032 {'Greek (Greece)'} 1037 {'Hebrew (Israel)'} 1038 {'Hungarian (Hungary)'} 1040 {'Italian (Italy)'} 1041 {'Japanese (Japan)'} 1042 {'Korean (Korea)'} 1062 {'Latvian (Latvia)'} 1063 {'Lithuanian (Lithuania)'} 1044 {'Norwegian, Bokmål (Norway)'} 1045 {'Polish (Poland)'} 1046 {'Portuguese (Brazil)'} 2070 {'Portuguese (Portugal)'} 1048 {'Romanian (Romania)'} 1049 {'Russian (Russia)'} 2074 {'Serbian (Latin, Serbia)'} 9242 {'Serbian (Latin, Serbia)'} 1051 {'Slovak (Slovakia)'} 1060 {'Slovenian (Slovenia)'} 2058 {'Spanish (Mexico)'} 3082 {'Spanish (Spain)'} 1053 {'Swedish (Sweden)'} 1054 {'Thai (Thailand)'} 1055 {'Turkish (Turkey)'} 1058 {'Ukrainian (Ukraine)'} 1078 {'Afrikaans (South Africa)'} 1052 {'Albanian (Albania)'} 1118 {'Amharic (Ethiopia)'} 1067 {'Armenian (Armenia)'} 1101 {'Assamese (India)'} 1068 {'Azerbaijan'} 2117 {'Bangla (Bangladesh)'} 1069 {'Basque (Basque)'} 1059 {'Belarusian'} 1093 {'Bangla (India)'} 5146 {'Bosnian (Latin)'} 1027 {'Catalan'} 1170 {'Central Kurdish'} 1116 {'Cherokee'} 1164 {'Dari'} 1124 {'Filipino'} 1110 {'Galician'} 1079 {'Georgian (Georgia)'} 1095 {'Gujarati (India)'} 1128 {'Hausa (Latin, Nigeria)'} 1081 {'Hindi (India)'} 1039 {'Icelandic (Iceland)'} 1136 {'Igbo (Nigeria)'} 1057 {'Indonesian (Indonesia)'} 2141 {'Inuktitut (Latin, Canada)'} 2108 {'Irish (Ireland)'} 1076 {'isiXhosa (South Africa)'} 1077 {'isiZulu (South Africa)'} 1099 {'Kannada (India)'} 1087 {'Kazakh (Kazakhstan)'} 1107 {'Khmer (Cambodia)'} 1158 {"K'iche' (Guatemala)"} 1159 {'Kinyarwanda'} 1089 {'Kiswahili (Kenya)'} 1111 {'Konkani (India)'} 1088 {'Kyrgyz (Kyrgyzstan)'} 1108 {'Lao (Laos)'} 1134 {'Luxembourgish (Luxembourg)'} 1071 {'Macedonian (FYROM)'} 1086 {'Malay (Malaysia, Brunei, and Singapore)'} 1100 {'Malayalam (India)'} 1082 {'Maltese (Malta)'} 1153 {'Maori (New Zealand)'} 1102 {'Marathi (India)'} 1104 {'Mongolian (Cyrillic)'} 1121 {'Nepali (Federal Democratic Republic of Nepal)'} 2068 {'Norwegian, Nynorsk (Norway)'} 1096 {'Odia (India)'} 1065 {'Persian'} 1094 {'Punjabi (India)'} 2118 {'Punjabi (Arabic)'} 3179 {'Quechua (Peru)'} 1169 {'Scottish Gaelic'} 7194 {'Serbian (Cyrillic, Bosnia and Herzegovina)'} 3098 {'Serbian (Cyrillic, Serbia)'} 10266 {'Serbian (Cyrillic, Serbia)'} 1132 {'Sesotho sa Leboa (South Africa)'} 1074 {'Setswana (South Africa)'} 2137 {'Sindhi (Arabic)'} 1115 {'Sinhala (Sri Lanka)'} 1064 {'Tajik (Cyrillic)'} 1097 {'Tamil (India)'} 1092 {'Tatar (Russia)'} 1098 {'Telugu (India)'} 1139 {'Tigrinya'} 1090 {'Turkmen'} 1056 {'Urdu'} 1152 {'Uyghur'} 1091 {'Uzbek (Latin)'} 2051 {'Valencian'} 1066 {'Vietnamese'} 1106 {'Welsh (Great Britain)'} 1160 {'Wolof'} 1130 {'Yoruba (Nigeria)'} default {'Invalid Code'} } } Return } Function Get-OSProductSuite { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Microsoft Small Business Server was once installed, but may have been upgraded to another version of Windows.'} 2 {'Windows Server 2008 Enterprise is installed.'} 4 {'Windows BackOffice components are installed.'} 8 {'Communication Server is installed.'} 16 {'Terminal Services is installed.'} 32 {'Microsoft Small Business Server is installed with the restrictive client license.'} 64 {'Windows Embedded is installed.'} 128 {'A Datacenter edition is installed.'} 256 {'Terminal Services is installed, but only one interactive session is supported.'} 512 {'Windows Home Edition is installed.'} 1024 {'Web Server Edition is installed.'} 8192 {'Storage Server Edition is installed.'} 16384 {'Compute Cluster Edition is installed.'} default {'Invalid Code'} } } Return } Function Get-OSType { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Unknown'} 1 {'Other'} 2 {'MACOS'} 3 {'ATTUNIX'} 4 {'DGUX'} 5 {'DECNT'} 6 {'Digital Unix'} 7 {'OpenVMS'} 8 {'HPUX'} 9 {'AIX'} 10 {'MVS'} 11 {'OS400'} 12 {'OS/2'} 13 {'JavaVM'} 14 {'MSDOS'} 15 {'WIN3x'} 16 {'WIN95'} 17 {'WIN98'} 18 {'WINNT'} 19 {'WINCE'} 20 {'NCR3000'} 21 {'NetWare'} 22 {'OSF'} 23 {'DC/OS'} 24 {'Reliant UNIX'} 25 {'SCO UnixWare'} 26 {'SCO OpenServer'} 27 {'Sequent'} 28 {'IRIX'} 29 {'Solaris'} 30 {'SunOS'} 31 {'U6000'} 32 {'ASERIES'} 33 {'TandemNSK'} 34 {'TandemNT'} 35 {'BS2000'} 36 {'LINUX'} 37 {'Lynx'} 38 {'XENIX'} 39 {'VM/ESA'} 40 {'Interactive UNIX'} 41 {'BSDUNIX'} 42 {'FreeBSD'} 43 {'NetBSD'} 44 {'GNU Hurd'} 45 {'OS9'} 46 {'MACH Kernel'} 47 {'Inferno'} 48 {'QNX'} 49 {'EPOC'} 50 {'IxWorks'} 51 {'VxWorks'} 52 {'MiNT'} 53 {'BeOS'} 54 {'HP MPE'} 55 {'NextStep'} 56 {'PalmPilot'} 57 {'Rhapsody'} 58 {'Windows 2000'} 59 {'Dedicated'} 60 {'OS/390'} 61 {'VSE'} 62 {'TPF'} default {'Invalid Code'} } } Return } Function Get-PaperSizesSupported { param ([uint16[]]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Unknown'} 1 {'Other'} 2 {'A'} 3 {'B'} 4 {'C'} 5 {'D'} 6 {'E'} 7 {'Letter'} 8 {'Legal'} 9 {'NA-10x13-Envelope'} 10 {'NA-9x12-Envelope'} 11 {'NA-Number-10-Envelope'} 12 {'NA-7x9-Envelope'} 13 {'NA-9x11-Envelope'} 14 {'NA-10x14-Envelope'} 15 {'NA-Number-9-Envelope'} 16 {'NA-6x9-Envelope'} 17 {'NA-10x15-Envelope'} 18 {'A0'} 19 {'A1'} 20 {'A2'} 21 {'A3'} 22 {'A4'} 23 {'A5'} 24 {'A6'} 25 {'A7'} 26 {'A8'} 27 {'A9A10'} 28 {'B0'} 29 {'B1'} 30 {'B2'} 31 {'B3'} 32 {'B4'} 33 {'B5'} 34 {'B6'} 35 {'B7'} 36 {'B8'} 37 {'B9'} 38 {'B10'} 39 {'C0'} 40 {'C1'} 41 {'C2C3'} 42 {'C4'} 43 {'C5'} 44 {'C6'} 45 {'C7'} 46 {'C8'} 47 {'ISO-Designated'} 48 {'JIS B0'} 49 {'JIS B1'} 50 {'JIS B2'} 51 {'JIS B3'} 52 {'JIS B4'} 53 {'JIS B5'} 54 {'JIS B6'} 55 {'JIS B7'} 56 {'JIS B8'} 57 {'JIS B9'} 58 {'JIS B10'} 59 {'NA-Letter'} 60 {'NA-Legal'} 61 {'B4-Envelope'} 62 {'B5-Envelope'} 63 {'C3-Envelope'} 64 {'C4-Envelope'} 65 {'C5-Envelope'} 66 {'C6-Envelope'} 67 {'Designated-Long-Envelope'} 68 {'Monarch-Envelope'} 69 {'Executive'} 70 {'Folio'} 71 {'Invoice'} 72 {'Ledger'} 73 {'Quarto'} default {'Invalid Code'} } } Return } Function Get-PhysicalMemoryArrayLocation { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Reserved'} 1 {'Other'} 2 {'Unknown'} 3 {'System board or motherboard'} 4 {'ISA add-on card'} 5 {'EISA add-on card'} 6 {'PCI add-on card'} 7 {'MCA add-on card'} 8 {'PCMCIA add-on card'} 9 {'Proprietary add-on card'} 10 {'NuBus'} 11 {'PC-98/C20 add-on card'} 12 {'PC-98/C24 add-on card'} 13 {'PC-98/E add-on card'} 14 {'PC-98/Local bus add-on card'} default {'Invalid Code'} } } Return } Function Get-PhysicalMemoryArrayUse { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Reserved'} 1 {'Other'} 2 {'Unknown'} 3 {'System memory'} 4 {'Video memory'} 5 {'Flash memory'} 6 {'Non-volatile RAM'} 7 {'Cache memory'} default {'Invalid Code'} } } Return } Function Get-PointingType { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'Mouse'} 4 {'Track Ball'} 5 {'Track Point'} 6 {'Glide Point'} 7 {'Touch Pad'} 8 {'Touch Screen'} 9 {'Optical Sensor'} default {'Invalid Code'} } } Return } Function Get-PowerManagementCapabilitiesCode { param ([uint16[]]$Code) if ($Code.Count -ne 0){ switch ($Code){ 0 {'Unknown'} 1 {'Not Supported'} 2 {'Disabled'} 3 {'Enabled'} 4 {'Power Saving Modes Entered Automatically'} 5 {'Power State Settable'} 6 {'Power Cycling Supported'} 7 {'Timed Power On Supported'} default {'Invalid Code'} } } Return } Function Get-PowerManagementCapabilitiesCode { param ([uint16[]]$Code) if ($Code.Count -ne 0){ switch ($Code){ 0 {'Unknown'} 1 {'Not Supported'} 2 {'Disabled'} 3 {'Enabled'} 4 {'Power Saving Modes Entered Automatically'} 5 {'Power State Settable'} 6 {'Power Cycling Supported'} 7 {'Timed Power On Supported'} default {'Invalid Code'} } } Return } Function Get-PrinterMediaType { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Standard'} 2 {'Transparency'} 3 {'Glossy'} default {'Invalid Code'} } } Return } Function Get-PrinterState { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Idle'} 1 {'Paused'} 2 {'Error'} 3 {'Pending Deletion'} 4 {'Paper Jam'} 5 {'Paper Out'} 6 {'Manual Feed'} 7 {'Paper Problem'} 8 {'Offline'} 9 {'I/O Active'} 10 {'Busy'} 11 {'Printing'} 12 {'Output Bin Full'} 13 {'Not Available'} 14 {'Waiting'} 15 {'Processing'} 16 {'Initialization'} 17 {'Warming Up'} 18 {'Toner Low'} 19 {'No Toner'} 20 {'Page Punt'} 21 {'User Intervention Required'} 22 {'Out of Memory'} 23 {'Door Open'} 24 {'Server_Unknown'} 25 {'Power Save'} default {'Invalid Code'} } } Return } Function Get-PrinterStatus { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'Idle'} 4 {'Printing'} 5 {'Warmup'} 6 {'Stopped Printing'} 7 {'Offline'} default {'Invalid Code'} } } Return } Function Get-PrintQuality { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ -1 {'Draft'} -2 {'Low'} -3 {'Medium'} -4 {'High'} default {"$Code"} } } Return } Function Get-ProcessorType { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'Central Processor'} 4 {'Math Processor'} 5 {'DSP Processor'} 6 {'Video Processor'} default {'Invalid Code'} } } Return } Function Get-ProductType { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Work Station'} 2 {'Domain Controller'} 3 {'Server'} default {'Invalid Code'} } } Return } Function Get-ProtectionManagement { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'Unprotected'} 4 {'Protected'} 5 {'Protected through SCC (SCSI-3 Controller Command)'} 6 {'Protected through SCC-2 (SCSI-3 Controller Command)'} default {'Invalid Code'} } } Return } Function Get-ProtocolSupported { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'EISA'} 4 {'ISA'} 5 {'PCI'} 6 {'ATA/ATAPI'} 7 {'Flexible Diskette'} 8 {'1496'} 9 {'SCSI Parallel Interface'} 10 {'SCSI Fibre Channel Protocol'} 11 {'SCSI Serial Bus Protocol'} 12 {'SCSI Serial Bus Protocol-2 (1394)'} 13 {'SCSI Serial Storage Architecture'} 14 {'VESA'} 15 {'PCMCIA'} 16 {'Universal Serial Bus'} 17 {'Parallel Protocol'} 18 {'ESCON'} 19 {'Diagnostic'} 20 {'I2C'} 21 {'Power'} 22 {'HIPPI'} 23 {'MultiBus'} 24 {'VME'} 25 {'IPI'} 26 {'IEEE-488'} 27 {'RS232'} 28 {'IEEE 802.3 10BASE5'} 29 {'IEEE 802.3 10BASE2'} 30 {'IEEE 802.3 1BASE5'} 31 {'IEEE 802.3 10BROAD36'} 32 {'IEEE 802.3 100BASEVG'} 33 {'IEEE 802.5 Token-Ring'} 34 {'ANSI X3T9.5 FDDI'} 35 {'MCA'} 36 {'ESDI'} 37 {'IDE'} 38 {'CMD'} 39 {'ST506'} 40 {'DSSI'} 41 {'QIC2'} 42 {'Enhanced ATA/IDE'} 43 {'AGP'} 44 {'TWIRP (two-way infrared)'} 45 {'FIR (fast infrared)'} 46 {'SIR (serial infrared)'} 47 {'IrBus'} default {'Invalid Code'} } } Return } Function Get-ReadPolicy { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'Read'} 4 {'Read-Ahead'} 5 {'Read and Read-Ahead'} 6 {'Determination Per I/O'} default {'Invalid Code'} } } Return } Function Get-ReplacementPolicy { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'Least Recently Used (LRU)'} 4 {'First In First Out (FIFO)'} 5 {'Last In First Out (LIFO)'} 6 {'Least Frequently Used (LFU)'} 7 {'Most Frequently Used (MFU)'} 8 {'Data Dependent Multiple Algorithms'} default {'Invalid Code'} } } Return } Function Get-ReportSetMarksStatus { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Disabled'} 1 {'Enabled'} default {'Invalid Code'} } } Return } Function Get-SecurityBreach { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'No Breach'} 4 {'Breach Attempted'} 5 {'Breach Successful'} default {'Invalid Code'} } } Return } Function Get-SecurityStatus { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'None'} 4 {'External interface locked out'} 5 {'External interface enabled'} default {'Invalid Code'} } } Return } Function Get-ServicePhilosophy { param ([uint16[]]$Code) if ($Code.Count -ne 0){ switch ($Code){ 0 {'Unknown'} 1 {'Other'} 2 {'Service From Top'} 3 {'Service From Front'} 4 {'Service From Back'} 5 {'Service From Side'} 6 {'Sliding Trays'} 7 {'Removable Sides'} 8 {'Moveable'} default {'Invalid Code'} } } Return } Function Get-SizeGB { param ([uint64]$Size) if ($Size -ne ''){[math]::round($Size / 1GB,2)} Return } Function Get-SizeKB { param ([uint64]$Size) if ($Size -ne ''){[math]::round($Size / 1KB,2)} Return } Function Get-SizeMB { param ([uint64]$Size) if ($Size -ne ''){[math]::round($Size / 1MB,2)} Return } Function Get-SizePB { param ([uint64]$Size) if ($Size -ne ''){[math]::round($Size / 1PB,2)} Return } Function Get-SizeTB { param ([uint64]$Size) if ($Size -ne ''){[math]::round($Size / 1TB,2)} Return } Function Get-SoftwareElementState { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Deployable'} 1 {'Installable'} 2 {'Executable'} 3 {'Running'} default {'Invalid Code'} } } Return } Function Get-SpeedGbpsConversion { param ([uint64]$Speed) if ($Speed -ne ''){[math]::round($Speed / 1000000000,2)} Return } Function Get-SpeedKbpsConversion { param ([uint64]$Speed) if ($Speed -ne ''){[math]::round($Speed / 1000,2)} Return } Function Get-SpeedMbpsConversion { param ([uint64]$Speed) if ($Speed -ne ''){[math]::round($Speed / 1000000,2)} Return } Function Get-StatusInfo { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'Enabled'} 4 {'Disabled'} 5 {'Not Applicable'} default {'Invalid Code'} } } Return } Function Get-SupportedSRAM { param ([uint16[]]$Code) if ($Code.Count -ne 0){ switch ($Code){ 0 {'Other'} 1 {'Unknown'} 2 {'Non-Burst'} 3 {'Burst'} 4 {'Pipeline Burst'} 5 {'Synchronous'} 6 {'Asynchronous'} default {'Invalid Code'} } } Return } Function Get-TargetOperatingSystem { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'Unknown'} 1 {'Other'} 2 {'MACOS'} 3 {'ATTUNIX'} 4 {'DGUX'} 5 {'DECNT'} 6 {'Digital Unix'} 7 {'OpenVMS'} 8 {'HPUX'} 9 {'AIX'} 10 {'MVS'} 11 {'OS400'} 12 {'OS/2'} 13 {'JavaVM'} 14 {'MSDOS'} 15 {'WIN3x'} 16 {'WIN95'} 17 {'WIN98'} 18 {'WINNT'} 19 {'WINCE'} 20 {'NCR3000'} 21 {'NetWare'} 22 {'OSF'} 23 {'DC/OS'} 24 {'Reliant UNIX'} 25 {'SCO UnixWare'} 26 {'SCO OpenServer'} 27 {'Sequent'} 28 {'IRIX'} 29 {'Solaris'} 30 {'SunOS'} 31 {'U6000'} 32 {'ASERIES'} 33 {'TandemNSK'} 34 {'TandemNT'} 35 {'BS2000'} 36 {'LINUX'} 37 {'Lynx'} 38 {'XENIX'} 39 {'VM/ESA'} 40 {'Interactive UNIX'} 41 {'BSDUNIX'} 42 {'FreeBSD'} 43 {'NetBSD'} 44 {'GNU Hurd'} 45 {'OS9'} 46 {'MACH Kernel'} 47 {'Inferno'} 48 {'QNX'} 49 {'EPOC'} 50 {'IxWorks'} 51 {'VxWorks'} 52 {'MiNT'} 53 {'BeOS'} 54 {'HP MPE'} 55 {'NextStep'} 56 {'PalmPilot'} 57 {'Rhapsody'} 58 {'Windows 2000'} 59 {'Dedicated'} 60 {'VSE'} 61 {'TPF (61)'} default {'Invalid Code'} } } Return } Function Get-TcpipNetbiosOption { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 0 {'EnableNetbiosViaDhcp'} 1 {'EnableNetbios'} 2 {'DisableNetbios'} default {'Invalid Code'} } } Return } Function Get-TTOption { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Bitmap - Prints TrueType fonts as graphics'} 2 {'Download - Downloads TrueType fonts as soft fonts'} 3 {'Substitute - Substitutes device fonts for TrueType fonts'} default {'Invalid Code'} } } Return } Function Get-TypeDetail { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ '1' {'Reserved'} '2' {'Other'} '4' {'Unknown'} '8' {'Fast-paged'} '16' {'Static column'} '32' {'Pseudo-static'} '64' {'RAMBUS'} '128' {'Synchronous'} '256' {'CMOS'} '512' {'EDO'} '1024' {'Window DRAM'} '2048' {'Cache DRAM'} '4096' {'Non-volatile'} default {'Invalid Code'} } } Return } Function Get-UpgradeMethod { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ '1' {'Other'} '2' {'Unknown'} '3' {'Daughter Board'} '4' {'ZIF Socket'} '5' {'Replacement/Piggy Back'} '6' {'None'} '7' {'LIF Socket'} '8' {'Slot 1'} '9' {'Slot 2'} '10' {'370 Pin Socket'} '11' {'Slot A'} '12' {'Slot M'} '13' {'Socket 423'} '14' {'Socket A (Socket 462)'} '15' {'Socket 478'} '16' {'Socket 754'} '17' {'Socket 940'} '18' {'Socket 939'} '19' {'Socket mPGA604'} '20' {'Socket LGA771'} '21' {'Socket LGA775'} '22' {'Socket S1'} '23' {'Socket AM2'} '24' {'Socket F (1207)'} '25' {'Socket LGA1366'} '26' {'Socket G34'} '27' {'Socket AM3'} '28' {'Socket C32'} '29' {'Socket LGA1156'} '30' {'Socket LGA1567'} '31' {'Socket PGA988A'} '32' {'Socket BGA1288'} '33' {'rPGA988B'} '34' {'BGA1023'} '35' {'BGA1224'} '36' {'LGA1155'} '37' {'LGA1356'} '38' {'LGA2011'} '39' {'Socket FS1'} '40' {'Socket FS2'} '41' {'Socket FM1'} '42' {'Socket FM2'} '43' {'Socket LGA2011-3'} '44' {'Socket LGA1356-3'} '45' {'Socket LGA1150'} '46' {'Socket BGA1168'} default {'Invalid Code'} } } Return } Function Get-VideoArchitecture { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'CGA'} 4 {'EGA'} 5 {'VGA'} 6 {'SVGA'} 7 {'MDA'} 8 {'HGC'} 9 {'MCGA'} 10 {'8514A'} 11 {'XGA'} 12 {'Linear Frame Buffer'} 160 {'PC-98'} default {'Invalid Code'} } } Return } Function Get-VideoMemoryType { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'VRAM'} 4 {'DRAM'} 5 {'SRAM'} 6 {'WRAM'} 7 {'EDO RAM'} 8 {'Burst Synchronous DRAM'} 9 {'Pipelined Burst SRAM'} 10 {'CDRAM'} 11 {'3DRAM'} 12 {'SDRAM'} 13 {'SGRAM'} default {'Invalid Code'} } } Return } Function Get-VoltageCap { param ([uint32]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'5'} 2 {'3.3'} 4 {'2.9'} default {'Invalid Code'} } } Return } Function Get-WeightGram { param ([float]$Pounds) if ($Pounds -ne ''){[math]::round($Pounds * 453.592,2)} Return } Function Get-WeightKg { param ([float]$Pounds) if ($Pounds -ne ''){[math]::round($Pounds / 2.205,2)} Return } Function Get-WritePolicy { param ([uint16]$Code) if ($Code -ne ''){ switch ($Code){ 1 {'Other'} 2 {'Unknown'} 3 {'Write Back'} 4 {'Write Through'} 5 {'Varies with Address'} 6 {'Determination Per I/O'} default {'Invalid Code'} } } Return } Function Optimize-Output { param ( [PSObject]$Object, [String[]]$Properties, [String[]]$DefaultProperties) if ($Properties.Count -eq 0) { Write-Output $Object | Select-Object -Property $DefaultProperties } else{ Write-Output $Object | Select-Object -Property $Properties } } function Get-1394Controller { <# .SYNOPSIS Gets the capabilities and management of a 1394 controller. .DESCRIPTION Gets the capabilities and management of a 1394 controller and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-1394Controller can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-1394Controller returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-1394Controller This commnand gets the information from local system .EXAMPLE PS C:\> Get-1394Controller -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-1394Controller -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-1394Controller -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-1394Controller -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-1394Controller -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-1394Controller This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-1394Controller -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-1394controller #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_1394Controller' [System.Collections.ArrayList]$DefaultProperties = 'Manufacturer','Name','Status','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $1394Controller = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $1394Controller){ $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) $_.ProtocolSupported = Get-ProtocolSupported ($_.ProtocolSupported) } Optimize-Output -Object $1394Controller -Properties $Properties -DefaultProperties $DefaultProperties } function Get-BaseBoard { <# .SYNOPSIS Gets the information of a baseboard. .DESCRIPTION Gets the information of a baseboard and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-BaseBoard can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-BaseBoard returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-BaseBoard This commnand gets the information from local system .EXAMPLE PS C:\> Get-BaseBoard -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-BaseBoard -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-BaseBoard -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-BaseBoard -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-BaseBoard -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-BaseBoard This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-BaseBoard -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-baseboard #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_BaseBoard' [System.Collections.ArrayList]$DefaultProperties = 'Manufacturer','Model','Name','SerialNumber','SKU','Product' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $BaseBoard = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $BaseBoard){ if ($null -ne $_.Depth){ $BaseBoard | Add-Member -MemberType NoteProperty -Name "DepthCM" -Value "" -Force } if ($null -ne $_.Height){ $BaseBoard | Add-Member -MemberType NoteProperty -Name "HeightCM" -Value "" -Force } if ($null -ne $_.Width){ $BaseBoard | Add-Member -MemberType NoteProperty -Name "WidthCM" -Value "" -Force } if ($null -ne $_.Weight){ $BaseBoard | Add-Member -MemberType NoteProperty -Name "WeightGr" -Value "" -Force } } Foreach ($_ in $BaseBoard){ if ($_.PSObject.Properties.Name -match "DepthCM"){$_.DepthCM = Get-LengthCM ($_.Depth)} if ($_.PSObject.Properties.Name -match "HeightCM"){$_.HeightCM = Get-LengthCM ($_.Height)} if ($_.PSObject.Properties.Name -match "WidthCM"){$_.WidthCM = Get-LengthCM ($_.Width)} if ($_.PSObject.Properties.Name -match "WeightGr"){$_.WeightGr = Get-WeightGram ($_.Weight)} } foreach ($_ in $BaseBoard){ if (($BaseBoard.PSObject.Properties.Name -match "WeightGr") -and ($_.WeightGr -ge 1000)){ $BaseBoard | Add-Member -MemberType NoteProperty -Name "WeightKg" -Value "" -Force } } foreach ($_ in $BaseBoard){ if ($_.PSObject.Properties.Name -match "WeightKg"){$_.WeightKg = Get-WeightKg ($_.Weight)} } Optimize-Output -Object $BaseBoard -Properties $Properties -DefaultProperties $DefaultProperties } function Get-Battery { <# .SYNOPSIS Gets the information of a battery connected to the computer system. .DESCRIPTION Gets the information of a battery connected to the computer system and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-Battery can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-Battery returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-Battery This commnand gets the information from local system .EXAMPLE PS C:\> Get-Battery -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-Battery -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-Battery -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-Battery -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-Battery -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-Battery This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-Battery -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-battery #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_Battery' [System.Collections.ArrayList]$DefaultProperties = 'Name','BatteryStatus','DesignCapacity','Status','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $Battery = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $Battery){ $_.Availability = Get-Availability ($_.Availability) $_.BatteryStatus = Get-BatteryStatus ($_.BatteryStatus) $_.Chemistry = Get-Chemistry ($_.Chemistry) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) } Optimize-Output -Object $Battery -Properties $Properties -DefaultProperties $DefaultProperties } function Get-BIOS { <# .SYNOPSIS Gets the attributes of the computer system's basic input/output services (BIOS) that are installed on a computer. .DESCRIPTION Gets the attributes of the computer system's basic input/output services (BIOS) that are installed on a computer and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-BIOS can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-BIOS returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-BIOS This commnand gets the information from local system .EXAMPLE PS C:\> Get-BIOS -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-BIOS -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-BIOS -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-BIOS -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-BIOS -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-BIOS This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-BIOS -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-bios #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_BIOS' [System.Collections.ArrayList]$DefaultProperties = 'Name','Manufacturer','SerialNumber','Version','SMBIOSBIOSVersion','SystemName' $AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $BIOS = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $BIOS){ $_.BiosCharacteristics = Get-BiosCharacteristicsCode ($_.BiosCharacteristics) $_.SoftwareElementState = Get-SoftwareElementState ($_.SoftwareElementState) $_.TargetOperatingSystem = Get-TargetOperatingSystem ($_.TargetOperatingSystem) } Optimize-Output -Object $BIOS -Properties $Properties -DefaultProperties $DefaultProperties } function Get-Bus { <# .SYNOPSIS Gets the information of a physical bus as seen by a computer running a Windows operating system. .DESCRIPTION Gets the information of a physical bus as seen by a computer running a Windows operating system and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-Bus can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-Bus returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-Bus This commnand gets the information from local system .EXAMPLE PS C:\> Get-Bus -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-Bus -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-Bus -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-Bus -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-Bus -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-Bus This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-Bus -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-bus #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_Bus' [System.Collections.ArrayList]$DefaultProperties = 'Name','DeviceID','BusNum','BusType','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $Bus = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $Bus){ $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) $_.BusType = Get-BusType ($_.BusType) } Optimize-Output -Object $Bus -Properties $Properties -DefaultProperties $DefaultProperties } function Get-CacheMemory { <# .SYNOPSIS Gets the internal and external cache memory on a computer system. .DESCRIPTION Gets the internal and external cache memory on a computer system and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-CacheMemory can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-CacheMemory returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-CacheMemory This commnand gets the information from local system .EXAMPLE PS C:\> Get-CacheMemory -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-CacheMemory -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-CacheMemory -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-CacheMemory -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-CacheMemory -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-CacheMemory This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-CacheMemory -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-cachememory #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_CacheMemory' [System.Collections.ArrayList]$DefaultProperties = 'BlockSize','CacheSpeed','CacheType','DeviceID','InstalledSize','Level','MaxCacheSize','NumberOfBlocks','Status','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $CacheMemory = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $CacheMemory){ $InstalledSize = $_.InstalledSize * 1KB $MaxCacheSize = $_.MaxCacheSize * 1KB if ($_.BlockSize -ge 1KB) { $CacheMemory | Add-Member -MemberType NoteProperty -Name "BlockSizeKB" -Value "" -Force } if ($InstalledSize -ge 1MB) { $CacheMemory | Add-Member -MemberType NoteProperty -Name "InstalledSizeMB" -Value "" -Force } if ($MaxCacheSize -ge 1MB) { $CacheMemory | Add-Member -MemberType NoteProperty -Name "MaxCacheSizeMB" -Value "" -Force } } foreach ($_ in $CacheMemory){ $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) $_.Access = Get-Access ($_.Access) $_.Associativity = Get-Associativity ($_.Associativity) $_.CacheType = Get-CacheType ($_.CacheType) $_.CurrentSRAM = Get-CurrentSRAM ($_.CurrentSRAM) $_.ErrorAccess = Get-ErrorAccess ($_.ErrorAccess) $_.ErrorCorrectType = Get-ErrorCorrectType ($_.ErrorCorrectType) $_.ErrorDataOrder = Get-ErrorDataOrder ($_.ErrorDataOrder) $_.ErrorInfo = Get-ErrorInfo ($_.ErrorInfo) $_.Level = Get-Level ($_.Level) $_.Location = Get-Location ($_.Location) $_.ReadPolicy = Get-ReadPolicy ($_.ReadPolicy) $_.ReplacementPolicy = Get-ReplacementPolicy ($_.ReplacementPolicy) $_.SupportedSRAM = Get-SupportedSRAM ($_.SupportedSRAM) $_.WritePolicy = Get-WritePolicy ($_.WritePolicy) if ($_.PSObject.Properties.Name -match "BlockSizeKB"){$_.BlockSizeKB = Get-SizeKB ($_.BlockSize)} if ($_.PSObject.Properties.Name -match "MaxCacheSizeMB"){$_.MaxCacheSizeMB = Get-SizeMB ($_.MaxCacheSize * 1KB)} if ($_.PSObject.Properties.Name -match "InstalledSizeMB"){$_.InstalledSizeMB = Get-SizeMB ($_.InstalledSize * 1KB)} } Optimize-Output -Object $CacheMemory -Properties $Properties -DefaultProperties $DefaultProperties } function Get-CDROMDrive { <# .SYNOPSIS Gets the information of a CD-ROM drive on a computer system running Windows. .DESCRIPTION Gets the information of a CD-ROM drive on a computer system running Windows and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-CDROMDrive can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-CDROMDrive returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-CDROMDrive This commnand gets the information from local system .EXAMPLE PS C:\> Get-CDROMDrive -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-CDROMDrive -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-CDROMDrive -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-CDROMDrive -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-CDROMDrive -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-CDROMDrive This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-CDROMDrive -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-cdromdrive #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_CDROMDrive' [System.Collections.ArrayList]$DefaultProperties = 'Caption','Drive','Manufacturer','VolumeName','MediaType','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $CDROMDrive = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $CDROMDrive){ [uint64]$MaxMediaSize = $_.MaxMediaSize * 1KB [uint64]$Size = $_.Size switch ($MaxMediaSize){ {$MaxMediaSize -ge 1MB} { $CDROMDrive | Add-Member -MemberType NoteProperty -Name "MaxMediaSizeMB" -Value "" -Force } {$MaxMediaSize -ge 1GB} { $CDROMDrive | Add-Member -MemberType NoteProperty -Name "MaxMediaSizeGB" -Value "" -Force } } if ($_.DefaultBlockSize -ge 1KB) { $CDROMDrive | Add-Member -MemberType NoteProperty -Name "DefaultBlockSizeKB" -Value "" -Force } if ($_.MaxBlockSize -ge 1KB) { $CDROMDrive | Add-Member -MemberType NoteProperty -Name "MaxBlockSizeKB" -Value "" -Force } if ($_.MinBlockSize -ge 1KB) { $CDROMDrive | Add-Member -MemberType NoteProperty -Name "MinBlockSizeKB" -Value "" -Force } switch ($Size){ {$Size -ge 1KB} { $CDROMDrive | Add-Member -MemberType NoteProperty -Name "SizeKB" -Value "" -Force } {$Size -ge 1MB} { $CDROMDrive | Add-Member -MemberType NoteProperty -Name "SizeMB" -Value "" -Force } {$Size -ge 1GB} { $CDROMDrive | Add-Member -MemberType NoteProperty -Name "SizeGB" -Value "" -Force } } } foreach ($_ in $CDROMDrive){ $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) $_.FileSystemFlagsEx = Get-FileSystemFlagsEx ($_.FileSystemFlagsEx) if ($_.PSObject.Properties.Name -match "DefaultBlockSizeKB"){$_.DefaultBlockSizeKB = Get-SizeKB ($_.DefaultBlockSize)} if ($_.PSObject.Properties.Name -match "MaxBlockSizeKB"){$_.MaxBlockSizeKB = Get-SizeKB ($_.MaxBlockSize)} if ($_.PSObject.Properties.Name -match "MaxMediaSizeMB"){$_.MaxMediaSizeMB = Get-SizeMB ($_.MaxMediaSize)} if ($_.PSObject.Properties.Name -match "MaxMediaSizeGB"){$_.MaxMediaSizeGB = Get-SizeGB ($_.MaxMediaSize)} if ($_.PSObject.Properties.Name -match "MinBlockSizeKB"){$_.MinBlockSizeKB = Get-SizeKB ($_.MinBlockSize)} if ($_.PSObject.Properties.Name -match "SizeKB"){$_.SizeKB = Get-SizeKB ($_.Size)} if ($_.PSObject.Properties.Name -match "SizeMB"){$_.SizeMB = Get-SizeMB ($_.Size)} if ($_.PSObject.Properties.Name -match "SizeGB"){$_.SizeGB = Get-SizeGB ($_.Size)} } Optimize-Output -Object $CDROMDrive -Properties $Properties -DefaultProperties $DefaultProperties } function Get-CompactDisc { <# .SYNOPSIS Gets the information of a data source that resolves to an actual local storage device, that is compact disc type, on a computer system running Windows. .DESCRIPTION Gets the information of a data source that resolves to an actual local storage device, that is compact disc type, on a computer system running Windows and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-CompactDisc can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-CompactDisc returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-CompactDisc This commnand gets the information from local system .EXAMPLE PS C:\> Get-CompactDisc -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-CompactDisc -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-CompactDisc -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-CompactDisc -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-CompactDisc -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-CompactDisc This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-CompactDisc -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-compactdisc #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) if ($Protocol -eq ''){ $CompactDisc = Get-LogicalDisk -ComputerName $ComputerName -Properties $Properties | Where-Object {$_.DriveType -eq 'Compact Disc'}} else{ $CompactDisc = Get-LogicalDisk -ComputerName $ComputerName -Protocol $Protocol -Properties $Properties | Where-Object {$_.DriveType -eq 'Compact Disc'}} Write-Output $CompactDisc } function Get-Desktop { <# .SYNOPSIS Gets the information of the common characteristics of a user's desktop. .DESCRIPTION Gets the information of the common characteristics of a user's desktop and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-Desktop can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-Desktop returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-Desktop This commnand gets the information from local system .EXAMPLE PS C:\> Get-Desktop -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-Desktop -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-Desktop -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-Desktop -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-Desktop -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-Desktop This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-Desktop -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-desktop #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_Desktop' [System.Collections.ArrayList]$DefaultProperties = 'SettingID','Name','ScreenSaverActive','ScreenSaverSecure','ScreenSaverTimeout','SystemName' $AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $Desktop = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties Optimize-Output -Object $Desktop -Properties $Properties -DefaultProperties $DefaultProperties } function Get-DesktopMonitor { <# .SYNOPSIS Gets the type of monitor or display device attached to the computer system. .DESCRIPTION Gets the type of monitor or display device attached to the computer system and converts all codes in results into human readable format. Hardware that is not compatible with Windows Display Driver Model (WDDM) returns inaccurate property values. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-DesktopMonitor can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-DesktopMonitor returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-DesktopMonitor This commnand gets the information from local system .EXAMPLE PS C:\> Get-DesktopMonitor -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-DesktopMonitor -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-DesktopMonitor -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-DesktopMonitor -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-DesktopMonitor -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-DesktopMonitor This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-DesktopMonitor -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-desktopmonitor #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_DesktopMonitor' [System.Collections.ArrayList]$DefaultProperties = 'DeviceID','Name','DisplayType','MonitorManufacturer','ScreenHeight','ScreenWidth','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName Win32_DesktopMonitor).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $DesktopMonitor = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $DesktopMonitor){ $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.DisplayType = Get-DisplayType ($_.DisplayType) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) } Optimize-Output -Object $DesktopMonitor -Properties $Properties -DefaultProperties $DefaultProperties } function Get-DiskDrive { <# .SYNOPSIS Gets a physical disk drive as seen by a computer running the Windows operating system. .DESCRIPTION Gets a physical disk drive as seen by a computer running the Windows operating system and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-DiskDrive can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-DiskDrive returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-DiskDrive This commnand gets the information from local system .EXAMPLE PS C:\> Get-DiskDrive -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-DiskDrive -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-DiskDrive -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-DiskDrive -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-DiskDrive -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-DiskDrive This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-DiskDrive -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-diskdrive #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_DiskDrive' [System.Collections.ArrayList]$DefaultProperties = 'DeviceID','Caption','Partitions','Size','Model','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $DiskDrive = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $DiskDrive){ [uint64]$MaxMediaSize = $_.MaxMediaSize * 1KB [uint64]$Size = $_.Size if ($_.DefaultBlockSize -ge 1KB) { $DiskDrive | Add-Member -MemberType NoteProperty -Name "DefaultBlockSizeKB" -Value "" -Force } if ($_.MaxBlockSize -ge 1KB) { $DiskDrive | Add-Member -MemberType NoteProperty -Name "MaxBlockSizeKB" -Value "" -Force } switch ($MaxMediaSize){ {$MaxMediaSize -ge 1MB} { $DiskDrive | Add-Member -MemberType NoteProperty -Name "MaxMediaSizeMB" -Value "" -Force } {$MaxMediaSize -ge 1GB} { $DiskDrive | Add-Member -MemberType NoteProperty -Name "MaxMediaSizeGB" -Value "" -Force } {$MaxMediaSize -ge 1TB} { $DiskDrive | Add-Member -MemberType NoteProperty -Name "MaxMediaSizeTB" -Value "" -Force } {$MaxMediaSize -ge 1PB} { $DiskDrive | Add-Member -MemberType NoteProperty -Name "MaxMediaSizePB" -Value "" -Force } } if ($_.MinBlockSize -ge 1KB) { $DiskDrive | Add-Member -MemberType NoteProperty -Name "MinBlockSizeKB" -Value "" -Force } switch ($Size){ {$Size -ge 1KB} { $DiskDrive | Add-Member -MemberType NoteProperty -Name "SizeKB" -Value "" -Force } {$Size -ge 1MB} { $DiskDrive | Add-Member -MemberType NoteProperty -Name "SizeMB" -Value "" -Force } {$Size -ge 1GB} { $DiskDrive | Add-Member -MemberType NoteProperty -Name "SizeGB" -Value "" -Force } {$Size -ge 1TB} { $DiskDrive | Add-Member -MemberType NoteProperty -Name "SizeTB" -Value "" -Force } {$Size -ge 1PB} { $DiskDrive | Add-Member -MemberType NoteProperty -Name "SizePB" -Value "" -Force } } } foreach ($_ in $DiskDrive){ $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) if ($_.PSObject.Properties.Name -match "DefaultBlockSizeKB"){$_.DefaultBlockSizeKB = Get-SizeKB ($_.DefaultBlockSize)} if ($_.PSObject.Properties.Name -match "MaxBlockSizeKB"){$_.MaxBlockSizeKB = Get-SizeKB ($_.MaxBlockSize)} if ($_.PSObject.Properties.Name -match "MinBlockSizeKB"){$_.MinBlockSizeKB = Get-SizeKB ($_.MinBlockSize)} if ($_.PSObject.Properties.Name -match "MaxMediaSizeMB"){$_.MaxMediaSizeMB = Get-SizeMB ($_.MaxMediaSize * 1KB)} if ($_.PSObject.Properties.Name -match "MaxMediaSizeGB"){$_.MaxMediaSizeGB = Get-SizeGB ($_.MaxMediaSize * 1KB)} if ($_.PSObject.Properties.Name -match "MaxMediaSizeTB"){$_.MaxMediaSizeTB = Get-SizeTB ($_.MaxMediaSize * 1KB)} if ($_.PSObject.Properties.Name -match "SizeKB"){$_.SizeKB = Get-SizeKB ($_.Size)} if ($_.PSObject.Properties.Name -match "SizeMB"){$_.SizeMB = Get-SizeMB ($_.Size)} if ($_.PSObject.Properties.Name -match "SizeGB"){$_.SizeGB = Get-SizeGB ($_.Size)} if ($_.PSObject.Properties.Name -match "SizeTB"){$_.SizeTB = Get-SizeTB ($_.Size)} if ($_.PSObject.Properties.Name -match "SizePB"){$_.SizePB = Get-SizePB ($_.Size)} } Optimize-Output -Object $DiskDrive -Properties $Properties -DefaultProperties $DefaultProperties } function Get-DiskPartition { <# .SYNOPSIS Gets the capabilities and management capacity of a partitioned area of a physical disk on a computer system running Windows. .DESCRIPTION Gets the capabilities and management capacity of a partitioned area of a physical disk on a computer system running Windows and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-DiskPartition can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-DiskPartition returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-DiskPartition This commnand gets the information from local system .EXAMPLE PS C:\> Get-DiskPartition -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-DiskPartition -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-DiskPartition -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-DiskPartition -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-DiskPartition -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-DiskPartition This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-DiskPartition -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-diskpartition #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_DiskPartition' [System.Collections.ArrayList]$DefaultProperties = 'Name','NumberOfBlocks','BootPartition','PrimaryPartition','Size','Index','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $DiskPartition = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $DiskPartition){ [uint64]$Size = $_.Size [uint64]$StartingOffset = $_.StartingOffset switch ($Size){ {$Size -ge 1KB} { $DiskPartition | Add-Member -MemberType NoteProperty -Name "SizeKB" -Value "" -Force } {$Size -ge 1MB} { $DiskPartition | Add-Member -MemberType NoteProperty -Name "SizeMB" -Value "" -Force } {$Size -ge 1GB} { $DiskPartition | Add-Member -MemberType NoteProperty -Name "SizeGB" -Value "" -Force } {$Size -ge 1TB} { $DiskPartition | Add-Member -MemberType NoteProperty -Name "SizeTB" -Value "" -Force } {$Size -ge 1PB} { $DiskPartition | Add-Member -MemberType NoteProperty -Name "SizePB" -Value "" -Force } } if ($_.BlockSize -ge 1KB) { $DiskPartition | Add-Member -MemberType NoteProperty -Name "BlockSizeKB" -Value "" -Force } switch ($StartingOffset){ {$StartingOffset -ge 1KB} { $DiskPartition | Add-Member -MemberType NoteProperty -Name "StartingOffsetKB" -Value "" -Force } {$StartingOffset -ge 1MB} { $DiskPartition | Add-Member -MemberType NoteProperty -Name "StartingOffsetMB" -Value "" -Force } {$StartingOffset -ge 1GB} { $DiskPartition | Add-Member -MemberType NoteProperty -Name "StartingOffsetGB" -Value "" -Force } {$StartingOffset -ge 1TB} { $DiskPartition | Add-Member -MemberType NoteProperty -Name "StartingOffsetTB" -Value "" -Force } {$StartingOffset -ge 1PB} { $DiskPartition | Add-Member -MemberType NoteProperty -Name "StartingOffsetPB" -Value "" -Force } } } foreach ($_ in $DiskPartition){ $_.Access = Get-Access ($_.Access) $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) if ($_.PSObject.Properties.Name -match "SizeKB"){$_.SizeKB = Get-SizeKB ($_.Size)} if ($_.PSObject.Properties.Name -match "SizeMB"){$_.SizeMB = Get-SizeMB ($_.Size)} if ($_.PSObject.Properties.Name -match "SizeGB"){$_.SizeGB = Get-SizeGB ($_.Size)} if ($_.PSObject.Properties.Name -match "SizeTB"){$_.SizeTB = Get-SizeTB ($_.Size)} if ($_.PSObject.Properties.Name -match "SizePB"){$_.SizePB = Get-SizePB ($_.Size)} if ($_.PSObject.Properties.Name -match "BlockSizeKB"){$_.BlockSizeKB = Get-SizeKB ($_.BlockSize)} if ($_.PSObject.Properties.Name -match "StartingOffsetKB"){$_.StartingOffsetKB = Get-SizeKB ($_.StartingOffset)} if ($_.PSObject.Properties.Name -match "StartingOffsetMB"){$_.StartingOffsetMB = Get-SizeMB ($_.StartingOffset)} if ($_.PSObject.Properties.Name -match "StartingOffsetGB"){$_.StartingOffsetGB = Get-SizeGB ($_.StartingOffset)} if ($_.PSObject.Properties.Name -match "StartingOffsetTB"){$_.StartingOffsetTB = Get-SizeTB ($_.StartingOffset)} if ($_.PSObject.Properties.Name -match "StartingOffsetPB"){$_.StartingOffsetPB = Get-SizePB ($_.StartingOffset)} $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) } Optimize-Output -Object $DiskPartition -Properties $Properties -DefaultProperties $DefaultProperties } function Get-Fan { <# .SYNOPSIS Gets the properties of a fan device in the computer system. .DESCRIPTION Gets the properties of a fan device in the computer system and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-Fan can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-Fan returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-Fan This commnand gets the information from local system .EXAMPLE PS C:\> Get-Fan -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-Fan -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-Fan -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-Fan -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-Fan -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-Fan This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-Fan -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-fan #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_Fan' [System.Collections.ArrayList]$DefaultProperties = 'Name','ActiveCooling','DesiredSpeed','VariableSpeed','Status','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","DeviceID","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $Fan = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $Fan){ $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) } Optimize-Output -Object $Fan -Properties $Properties -DefaultProperties $DefaultProperties } function Get-FloppyController { <# .SYNOPSIS Gets the capabilities and management capacity of a floppy disk drive controller. .DESCRIPTION Gets the capabilities and management capacity of a floppy disk drive controller and converts all codes in results into human readable format. Get-FloppyController is not available for use as of Windows 10 and Windows Server 2016. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-FloppyController can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-FloppyController returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-FloppyController This commnand gets the information from local system .EXAMPLE PS C:\> Get-FloppyController -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-FloppyController -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-FloppyController -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-FloppyController -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-FloppyController -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-FloppyController This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-FloppyController -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-floppycontroller #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_FloppyController' [System.Collections.ArrayList]$DefaultProperties = 'Name','Manufacturer','Status','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $FloppyController = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $FloppyController){ $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) $_.ProtocolSupported = Get-ProtocolSupported ($_.ProtocolSupported) } Optimize-Output -Object $FloppyController -Properties $Properties -DefaultProperties $DefaultProperties } function Get-FloppyDrive { <# .SYNOPSIS Gets the information and functions of a floppy disk drive. .DESCRIPTION Gets the information and functions of a floppy disk drive and converts all codes in results into human readable format. Get-FloppyDrive is not available for use as of Windows 10 and Windows Server 2016. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-FloppyDrive can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-FloppyDrive returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-FloppyDrive This commnand gets the information from local system .EXAMPLE PS C:\> Get-FloppyDrive -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-FloppyDrive -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-FloppyDrive -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-FloppyDrive -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-FloppyDrive -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-FloppyDrive This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-FloppyDrive -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-floppydrive #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_FloppyDrive' [System.Collections.ArrayList]$DefaultProperties = 'Name','Manufacturer','Status','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $FloppyDrive = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $FloppyDrive){ if ($_.DefaultBlockSize -ge 1KB) { $FloppyDrive | Add-Member -MemberType NoteProperty -Name "DefaultBlockSizeKB" -Value "" -Force } if ($_.MaxBlockSize -ge 1KB) { $FloppyDrive | Add-Member -MemberType NoteProperty -Name "MaxBlockSizeKB" -Value "" -Force } if (($_.MaxMediaSize * 1KB) -ge 1MB) { $FloppyDrive | Add-Member -MemberType NoteProperty -Name "MaxMediaSizeMB" -Value "" -Force } if ($_.MinBlockSize -ge 1KB) { $FloppyDrive | Add-Member -MemberType NoteProperty -Name "MinBlockSizeKB" -Value "" -Force } } foreach ($_ in $FloppyDrive){ $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) if ($_.PSObject.Properties.Name -match "DefaultBlockSizeKB"){$_.DefaultBlockSizeKB = Get-SizeKB ($_.DefaultBlockSize)} if ($_.PSObject.Properties.Name -match "MaxBlockSizeKB"){$_.MaxBlockSizeKB = Get-SizeKB ($_.MaxBlockSize)} if ($_.PSObject.Properties.Name -match "MaxMediaSizeMB"){$_.MaxMediaSizeMB = Get-SizeMB ($_.MaxMediaSize)} if ($_.PSObject.Properties.Name -match "MinBlockSizeKB"){$_.MinBlockSizeKB = Get-SizeKB ($_.MinBlockSize)} } Optimize-Output -Object $FloppyDrive -Properties $Properties -DefaultProperties $DefaultProperties } function Get-GlidePoint { <# .SYNOPSIS Gets the information a glide point input device. .DESCRIPTION Gets the information a glide point input device and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-GlidePoint can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-GlidePoint returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-GlidePoint This commnand gets the information from local system .EXAMPLE PS C:\> Get-GlidePoint -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-GlidePoint -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-GlidePoint -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-GlidePoint -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-GlidePoint -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-GlidePoint This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-GlidePoint -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-glidepoint #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) if ($Protocol -eq ''){ $GlidePoint = Get-PointingDevice -ComputerName $ComputerName -Properties $Properties | Where-Object {$_.PointingType -eq 'Glide Point'}} else{ $GlidePoint = Get-PointingDevice -ComputerName $ComputerName -Protocol $Protocol -Properties $Properties | Where-Object {$_.PointingType -eq 'Glide Point'}} Write-Output $GlidePoint } function Get-HeatPipe { <# .SYNOPSIS Gets the properties of a heat pipe cooling device. .DESCRIPTION Gets the properties of a heat pipe cooling device and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-HeatPipe can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-HeatPipe returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-HeatPipe This commnand gets the information from local system .EXAMPLE PS C:\> Get-HeatPipe -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-HeatPipe -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-HeatPipe -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-HeatPipe -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-HeatPipe -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-HeatPipe This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-HeatPipe -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-heatpipe #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_HeatPipe' [System.Collections.ArrayList]$DefaultProperties = 'Name','ActiveCooling','Status','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $HeatPipe = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $HeatPipe){ $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) } Optimize-Output -Object $HeatPipe -Properties $Properties -DefaultProperties $DefaultProperties } function Get-IDEController { <# .SYNOPSIS Gets the information and capabilities of an integrated device electronics (IDE) controller device. .DESCRIPTION Gets the information and capabilities of an integrated device electronics (IDE) controller device and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-IDEController can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-IDEController returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-IDEController This commnand gets the information from local system .EXAMPLE PS C:\> Get-IDEController -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-IDEController -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-IDEController -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-IDEController -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-IDEController -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-IDEController This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-IDEController -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-idecontroller #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_IDEController' [System.Collections.ArrayList]$DefaultProperties = 'Name','Status','StatusInfo','ProtocolSupported','Manufacturer','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $IDEController = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $IDEController){ $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) $_.ProtocolSupported = Get-ProtocolSupported ($_.ProtocolSupported) } Optimize-Output -Object $IDEController -Properties $Properties -DefaultProperties $DefaultProperties } function Get-InfraredDevice { <# .SYNOPSIS Gets the information, capabilities and management of an infrared device. .DESCRIPTION Gets the information, capabilities and management of an infrared device and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-InfraredDevice can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-InfraredDevice returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-InfraredDevice This commnand gets the information from local system .EXAMPLE PS C:\> Get-InfraredDevice -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-InfraredDevice -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-InfraredDevice -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-InfraredDevice -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-InfraredDevice -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-InfraredDevice This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-InfraredDevice -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-infrareddevice #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_InfraredDevice' [System.Collections.ArrayList]$DefaultProperties = 'Name','Status','Manufacturer','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $InfraredDevice = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $InfraredDevice){ $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) $_.ProtocolSupported = Get-ProtocolSupported ($_.ProtocolSupported) } Optimize-Output -Object $InfraredDevice -Properties $Properties -DefaultProperties $DefaultProperties } Function Get-Keyboard { <# .SYNOPSIS Gets the information about a keyboard installed on a computer system running Windows. .DESCRIPTION Gets the information about a keyboard installed on a computer system running Windows and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-Keyboard can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-Keyboard returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-Keyboard This commnand gets the information from local system .EXAMPLE PS C:\> Get-Keyboard -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-Keyboard -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-Keyboard -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-Keyboard -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties .EXAMPLE PS C:\> Get-Keyboard -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-Keyboard This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-Keyboard -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-keyboard #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_Keyboard' [System.Collections.ArrayList]$DefaultProperties = 'Name','Description','Status','Layout','NumberOfFunctionKeys','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $Keyboard = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $Keyboard){ $_.Layout = Get-Layout ($_.Layout) $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) } Optimize-Output -Object $Keyboard -Properties $Properties -DefaultProperties $DefaultProperties } function Get-LocalDisk { <# .SYNOPSIS Gets the information of a local disk on a computer running on a Windows operating system. .DESCRIPTION Gets the information of a local disk on a computer running on a Windows operating system and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer name or IP Address of the system that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-LocalDisk can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-LocalDisk returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-LocalDisk This commnand gets the information from local system .EXAMPLE PS C:\> Get-LocalDisk -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-LocalDisk -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-LocalDisk -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-LocalDisk -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-LocalDisk -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-LocalDisk This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-LocalDisk -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-localdisk #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) if ($Protocol -eq ''){ $LocalDisk = Get-LogicalDisk -ComputerName $ComputerName -Properties $Properties | Where-Object {$_.DriveType -eq 'Local Disk'}} else{ $LocalDisk = Get-LogicalDisk -ComputerName $ComputerName -Protocol $Protocol -Properties $Properties | Where-Object {$_.DriveType -eq 'Local Disk'}} Write-Output $LocalDisk } function Get-LogicalDisk { <# .SYNOPSIS Gets the information about a data source that resolves to an actual local storage device on a computer system running Windows. .DESCRIPTION Gets the information about a data source that resolves to an actual local storage device on a computer system running Windows and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-LogicalDisk can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-LogicalDisk returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-LogicalDisk This commnand gets the information from local system .EXAMPLE PS C:\> Get-LogicalDisk -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-LogicalDisk -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-LogicalDisk -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-LogicalDisk -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties .EXAMPLE PS C:\> Get-LogicalDisk -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-LogicalDisk This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-LogicalDisk -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-logicaldisk #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_LogicalDisk' [System.Collections.ArrayList]$DefaultProperties = 'DeviceID','DriveType','ProviderName','VolumeName','Size','FreeSpace','FreeSpacePercentage','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $LogicalDisk = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties $LogicalDisk | Add-Member -MemberType NoteProperty -Name "FreeSpacePercentage" -Value "" -Force $LogicalDisk | Add-Member -MemberType NoteProperty -Name "UsedSpacePercentage" -Value "" -Force foreach ($_ in $LogicalDisk){ [uint64]$Size = $_.Size [uint64]$FreeSpace = $_.FreeSpace switch ($Size){ {$Size -ge 1KB} { $LogicalDisk | Add-Member -MemberType NoteProperty -Name "SizeKB" -Value "" -Force } {$Size -ge 1MB} { $LogicalDisk | Add-Member -MemberType NoteProperty -Name "SizeMB" -Value "" -Force } {$Size -ge 1GB} { $LogicalDisk | Add-Member -MemberType NoteProperty -Name "SizeGB" -Value "" -Force } {$Size -ge 1TB} { $LogicalDisk | Add-Member -MemberType NoteProperty -Name "SizeTB" -Value "" -Force } {$Size -ge 1PB} { $LogicalDisk | Add-Member -MemberType NoteProperty -Name "SizePB" -Value "" -Force } } switch ($FreeSpace){ {$FreeSpace -ge 1KB} { $LogicalDisk | Add-Member -MemberType NoteProperty -Name "FreeSpaceKB" -Value "" -Force } {$FreeSpace -ge 1MB} { $LogicalDisk | Add-Member -MemberType NoteProperty -Name "FreeSpaceMB" -Value "" -Force } {$FreeSpace -ge 1GB} { $LogicalDisk | Add-Member -MemberType NoteProperty -Name "FreeSpaceGB" -Value "" -Force } {$FreeSpace -ge 1TB} { $LogicalDisk | Add-Member -MemberType NoteProperty -Name "FreeSpaceTB" -Value "" -Force } {$FreeSpace -ge 1PB} { $LogicalDisk | Add-Member -MemberType NoteProperty -Name "FreeSpacePB" -Value "" -Force } } if ($Size -ne 0){ [uint64]$FreeSpacePercentageCalculation = $FreeSpace * 100 / $Size $_.FreeSpacePercentage = [math]::Round($FreeSpacePercentageCalculation,2) [uint64]$FreeSpacePercentage = $_.FreeSpacePercentage $_.UsedSpacePercentage = 100 - ($FreeSpacePercentage) } } foreach ($_ in $LogicalDisk){ $_.Access = Get-Access ($_.Access) $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.DriveType = Get-DriveType ($_.DriveType) $_.MediaType = Get-LogicalDiskMediaType ($_.MediaType) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) if ($_.PSObject.Properties.Name -match "SizeKB"){$_.SizeKB = Get-SizeKB ($_.Size)} if ($_.PSObject.Properties.Name -match "SizeMB"){$_.SizeMB = Get-SizeMB ($_.Size)} if ($_.PSObject.Properties.Name -match "SizeGB"){$_.SizeGB = Get-SizeGB ($_.Size)} if ($_.PSObject.Properties.Name -match "SizeTB"){$_.SizeTB = Get-SizeTB ($_.Size)} if ($_.PSObject.Properties.Name -match "SizePB"){$_.SizePB = Get-SizePB ($_.Size)} if ($_.PSObject.Properties.Name -match "FreeSpaceKB"){$_.FreeSpaceKB = Get-SizeKB ($_.FreeSpace)} if ($_.PSObject.Properties.Name -match "FreeSpaceMB"){$_.FreeSpaceMB = Get-SizeMB ($_.FreeSpace)} if ($_.PSObject.Properties.Name -match "FreeSpaceGB"){$_.FreeSpaceGB = Get-SizeGB ($_.FreeSpace)} if ($_.PSObject.Properties.Name -match "FreeSpaceTB"){$_.FreeSpaceTB = Get-SizeTB ($_.FreeSpace)} if ($_.PSObject.Properties.Name -match "FreeSpacePB"){$_.FreeSpacePB = Get-SizePB ($_.FreeSpace)} } Optimize-Output -Object $LogicalDisk -Properties $Properties -DefaultProperties $DefaultProperties } function Get-MemoryArray { <# .SYNOPSIS Gets the properties of the computer system memory array and mapped addresses. .DESCRIPTION Gets the properties of the computer system memory array and mapped addresses and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-MemoryArray can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-MemoryArray returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-MemoryArray This commnand gets the information from local system .EXAMPLE PS C:\> Get-MemoryArray -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-MemoryArray -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-MemoryArray -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-MemoryArray -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties .EXAMPLE PS C:\> Get-MemoryArray -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-MemoryArray This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-MemoryArray -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-memoryarray #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_MemoryArray' [System.Collections.ArrayList]$DefaultProperties = 'DeviceID','Name','StartingAddress','EndingAddress','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $MemoryArray = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $MemoryArray){ $_.Access = Get-Access ($_.Access) $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) $_.ErrorAccess = Get-ErrorAccess ($_.ErrorAccess) $_.ErrorDataOrder = Get-ErrorDataOrder ($_.ErrorDataOrder) $_.ErrorGranularity = Get-ErrorGranularity ($_.ErrorGranularity) $_.ErrorInfo = Get-ErrorInfo ($_.ErrorInfo) } Optimize-Output -Object $MemoryArray -Properties $Properties -DefaultProperties $DefaultProperties } Function Get-MemoryDevice { <# .SYNOPSIS Gets the properties of a computer system memory device and its associated mapped addresses. .DESCRIPTION Gets the properties of a computer system memory device and its associated mapped addresses and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-MemoryDevice can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-MemoryDevice returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-MemoryDevice This commnand gets the information from local system .EXAMPLE PS C:\> Get-MemoryDevice -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-MemoryDevice -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-MemoryDevice -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-MemoryDevice -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties .EXAMPLE PS C:\> Get-MemoryDevice -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-MemoryDevice This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-MemoryDevice -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-memorydevice #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_MemoryDevice' [System.Collections.ArrayList]$DefaultProperties = 'DeviceID','Name','StartingAddress','EndingAddress','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $MemoryDevice = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $MemoryDevice){ $_.Access = Get-Access ($_.Access) $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.ErrorAccess = Get-ErrorAccess ($_.ErrorAccess) $_.ErrorDataOrder = Get-ErrorDataOrder ($_.ErrorDataOrder) $_.ErrorGranularity = Get-ErrorGranularity ($_.ErrorGranularity) $_.ErrorInfo = Get-ErrorInfo ($_.ErrorInfo) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) } Optimize-Output -Object $MemoryDevice -Properties $Properties -DefaultProperties $DefaultProperties } function Get-MotherboardDevice { <# .SYNOPSIS Gets the information about a device that contains the central components of the Windows computer system. .DESCRIPTION Gets the information about a device that contains the central components of the Windows computer system and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-MotherboardDevice can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-MotherboardDevice returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-MotherboardDevice This commnand gets the information from local system .EXAMPLE PS C:\> Get-MotherboardDevice -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-MotherboardDevice -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-MotherboardDevice -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-MotherboardDevice -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties .EXAMPLE PS C:\> Get-MotherboardDevice -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-MotherboardDevice This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-MotherboardDevice -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-motherboarddevice #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_MotherboardDevice' [System.Collections.ArrayList]$DefaultProperties = 'Name','Status','Availability','PrimaryBusType','SecondaryBusType','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $MotherboardDevice = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $MotherboardDevice){ $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) } Optimize-Output -Object $MotherboardDevice -Properties $Properties -DefaultProperties $DefaultProperties } function Get-Mouse { <# .SYNOPSIS Gets the information a mouse input device. .DESCRIPTION Gets the information a mouse input device and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-Mouse can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-Mouse returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-Mouse This commnand gets the information from local system .EXAMPLE PS C:\> Get-Mouse -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-Mouse -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-Mouse -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-Mouse -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-Mouse -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-Mouse This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-Mouse -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-mouse #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) if ($Protocol -eq ''){ $Mouse = Get-PointingDevice -ComputerName $ComputerName -Properties $Properties | Where-Object {$_.PointingType -eq 'Mouse'}} else{ $Mouse = Get-PointingDevice -ComputerName $ComputerName -Protocol $Protocol -Properties $Properties | Where-Object {$_.PointingType -eq 'Mouse'}} Write-Output $Mouse } function Get-NetworkAdapter { <# .SYNOPSIS Gets the information about a network adapter of a computer running a Windows operating system. .DESCRIPTION Gets the information about a network adapter of a computer running a Windows operating system and converts all codes in results into human readable format.Get-NetworkAdapter only supplies IPv4 data. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-NetworkAdapter can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-NetworkAdapter returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-NetworkAdapter This commnand gets the information from local system .EXAMPLE PS C:\> Get-NetworkAdapter -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-NetworkAdapter -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-NetworkAdapter -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-NetworkAdapter -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties .EXAMPLE PS C:\> Get-NetworkAdapter -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-NetworkAdapter This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-NetworkAdapter -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-networkadapter #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_NetworkAdapter' [System.Collections.ArrayList]$DefaultProperties = 'DeviceID','Name','AdapterType','ServiceName','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $NetworkAdapter = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $NetworkAdapter){ [uint64]$Speed = $_.Speed switch ($Speed){ {$Speed -ge 1000} { $NetworkAdapter | Add-Member -MemberType NoteProperty -Name "SpeedKbps" -Value "" -Force } {$Speed -ge 1000000} { $NetworkAdapter | Add-Member -MemberType NoteProperty -Name "SpeedMbps" -Value "" -Force } {$Speed -ge 1000000000} { $NetworkAdapter | Add-Member -MemberType NoteProperty -Name "SpeedGbps" -Value "" -Force } } } foreach ($_ in $NetworkAdapter){ $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.NetConnectionStatus = Get-NetConnectionStatus ($_.NetConnectionStatus) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) if ($_.PSObject.Properties.Name -match "SpeedKbps"){$_.SpeedKbps = Get-SpeedKbpsConversion ($_.Speed)} if ($_.PSObject.Properties.Name -match "SpeedMbps"){$_.SpeedMbps = Get-SpeedMbpsConversion ($_.Speed)} if ($_.PSObject.Properties.Name -match "SpeedGbps"){$_.SpeedGbps = Get-SpeedGbpsConversion ($_.Speed)} } Optimize-Output -Object $NetworkAdapter -Properties $Properties -DefaultProperties $DefaultProperties } function Get-NetworkAdapterConfiguration { <# .SYNOPSIS Gets the attributes and behaviors of a network adapter. .DESCRIPTION Gets the attributes and behaviors of a network adapter and converts all codes in results into human readable format. Get-NetworkAdapterConfiguration includes extra properties that are related to the management of the TCP/IP protocol and are independent from the network adapter. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-NetworkAdapterConfiguration can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-NetworkAdapterConfiguration returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-NetworkAdapterConfiguration This commnand gets the information from local system .EXAMPLE PS C:\> Get-NetworkAdapterConfiguration -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-NetworkAdapterConfiguration -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-NetworkAdapterConfiguration -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-NetworkAdapterConfiguration -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties .EXAMPLE PS C:\> Get-NetworkAdapterConfiguration -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-NetworkAdapterConfiguration This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-NetworkAdapterConfiguration -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-networkadapterconfiguration #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_NetworkAdapterConfiguration' [System.Collections.ArrayList]$DefaultProperties = 'ServiceName','DHCPEnabled','Index','Description','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("DatabasePath") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $NetworkAdapterConfiguration = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $NetworkAdapterConfiguration){ $_.IGMPLevel = Get-IGMPLevel ($_.IGMPLevel) $_.IPXFrameType = Get-IPXFrameType ($_.IPXFrameType) $_.IPXMediaType = Get-IPXMediaType ($_.IPXMediaType) $_.TcpipNetbiosOptions = Get-TcpipNetbiosOption ($_.TcpipNetbiosOptions) } Optimize-Output -Object $NetworkAdapterConfiguration -Properties $Properties -DefaultProperties $DefaultProperties } function Get-NetworkDrive { <# .SYNOPSIS Gets the information about a network drive on a computer system running Windows. .DESCRIPTION Gets the information about a network drive on a computer system running Windows and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-NetworkDrive can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-NetworkDrive returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-NetworkDrive This commnand gets the information from local system .EXAMPLE PS C:\> Get-NetworkDrive -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-NetworkDrive -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-NetworkDrive -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-NetworkDrive -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-NetworkDrive -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-NetworkDrive This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-NetworkDrive -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-networkdrive #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) if ($Protocol -eq ''){ $NetworkDrive = Get-LogicalDisk -ComputerName $ComputerName -Properties $Properties | Where-Object {$_.DriveType -eq 'Network Drive'}} else{ $NetworkDrive = Get-LogicalDisk -ComputerName $ComputerName -Protocol $Protocol -Properties $Properties | Where-Object {$_.DriveType -eq 'Network Drive'}} Write-Output $NetworkDrive } function Get-OperatingSystem { <# .SYNOPSIS Gets the information about a Windows-based operating system installed on a computer. .DESCRIPTION Gets the information about a Windows-based operating system installed on a computer and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-OperatingSystem can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-OperatingSystem returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-OperatingSystem This commnand gets the information from local system .EXAMPLE PS C:\> Get-OperatingSystem -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-OperatingSystem -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-OperatingSystem -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-OperatingSystem -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties .EXAMPLE PS C:\> Get-OperatingSystem -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-OperatingSystem This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-OperatingSystem -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-operatingsystem #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_OperatingSystem' [System.Collections.ArrayList]$DefaultProperties = 'SystemDirectory','Organization','BuildNumber','RegisteredUser','SerialNumber','Version','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","CSCreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $OperatingSystem = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties Foreach ($_ in $OperatingSystem){ [uint64]$FreePhysicalMemory = $_.FreePhysicalMemory * 1KB [uint64]$FreeSpaceInPagingFiles = $_.FreeSpaceInPagingFiles * 1KB [uint64]$FreeVirtualMemory = $_.FreeVirtualMemory * 1KB [uint64]$MaxProcessMemorySize = $_.MaxProcessMemorySize * 1KB [uint64]$SizeStoredInPagingFiles = $_.SizeStoredInPagingFiles * 1KB [uint64]$TotalVirtualMemorySize = $_.TotalVirtualMemorySize * 1KB [uint64]$TotalVisibleMemorySize = $_.TotalVisibleMemorySize * 1KB switch ($FreePhysicalMemory){ {$FreePhysicalMemory -ge 1MB} { $OperatingSystem | Add-Member -MemberType NoteProperty -Name "FreePhysicalMemoryMB" -Value "" -Force } {$FreePhysicalMemory -ge 1GB} { $OperatingSystem | Add-Member -MemberType NoteProperty -Name "FreePhysicalMemoryGB" -Value "" -Force } {$FreePhysicalMemory -ge 1TB} { $OperatingSystem | Add-Member -MemberType NoteProperty -Name "FreePhysicalMemoryTB" -Value "" -Force } } switch ($FreeSpaceInPagingFiles){ {$FreeSpaceInPagingFiles -ge 1MB} { $OperatingSystem | Add-Member -MemberType NoteProperty -Name "FreeSpaceInPagingFilesMB" -Value "" -Force } {$FreeSpaceInPagingFiles -ge 1GB} { $OperatingSystem | Add-Member -MemberType NoteProperty -Name "FreeSpaceInPagingFilesGB" -Value "" -Force } {$FreeSpaceInPagingFiles -ge 1TB} { $OperatingSystem | Add-Member -MemberType NoteProperty -Name "FreeSpaceInPagingFilesTB" -Value "" -Force } } switch ($FreeVirtualMemory){ {$FreeVirtualMemory -ge 1MB} { $OperatingSystem | Add-Member -MemberType NoteProperty -Name "FreeVirtualMemoryMB" -Value "" -Force } {$FreeVirtualMemory -ge 1GB} { $OperatingSystem | Add-Member -MemberType NoteProperty -Name "FreeVirtualMemoryGB" -Value "" -Force } {$FreeVirtualMemory -ge 1TB} { $OperatingSystem | Add-Member -MemberType NoteProperty -Name "FreeVirtualMemoryTB" -Value "" -Force } } switch ($MaxProcessMemorySize){ {$MaxProcessMemorySize -ge 1MB} { $OperatingSystem | Add-Member -MemberType NoteProperty -Name "MaxProcessMemorySizeMB" -Value "" -Force } {$MaxProcessMemorySize -ge 1GB} { $OperatingSystem | Add-Member -MemberType NoteProperty -Name "MaxProcessMemorySizeGB" -Value "" -Force } {$MaxProcessMemorySize -ge 1TB} { $OperatingSystem | Add-Member -MemberType NoteProperty -Name "MaxProcessMemorySizeTB" -Value "" -Force } } switch ($SizeStoredInPagingFiles){ {$SizeStoredInPagingFiles -ge 1MB} { $OperatingSystem | Add-Member -MemberType NoteProperty -Name "SizeStoredInPagingFilesMB" -Value "" -Force } {$SizeStoredInPagingFiles -ge 1GB} { $OperatingSystem | Add-Member -MemberType NoteProperty -Name "SizeStoredInPagingFilesGB" -Value "" -Force } } switch ($TotalVirtualMemorySize){ {$TotalVirtualMemorySize -ge 1MB} { $OperatingSystem | Add-Member -MemberType NoteProperty -Name "TotalVirtualMemorySizeMB" -Value "" -Force } {$TotalVirtualMemorySize -ge 1GB} { $OperatingSystem | Add-Member -MemberType NoteProperty -Name "TotalVirtualMemorySizeGB" -Value "" -Force } {$TotalVirtualMemorySize -ge 1TB} { $OperatingSystem | Add-Member -MemberType NoteProperty -Name "TotalVirtualMemorySizeTB" -Value "" -Force } } switch ($TotalVisibleMemorySize){ {$TotalVisibleMemorySize -ge 1MB} { $OperatingSystem | Add-Member -MemberType NoteProperty -Name "TotalVisibleMemorySizeMB" -Value "" -Force } {$TotalVisibleMemorySize -ge 1GB} { $OperatingSystem | Add-Member -MemberType NoteProperty -Name "TotalVisibleMemorySizeGB" -Value "" -Force } {$TotalVisibleMemorySize -ge 1TB} { $OperatingSystem | Add-Member -MemberType NoteProperty -Name "TotalVisibleMemorySizeTB" -Value "" -Force } } } foreach ($_ in $OperatingSystem){ $_.DataExecutionPrevention_SupportPolicy = Get-DataExecutionPreventionSupportPolicy ($_.DataExecutionPrevention_SupportPolicy) $_.ForegroundApplicationBoost = Get-ForegroundApplicationBoost ($_.ForegroundApplicationBoost) $_.Locale = Get-Locale ($_.Locale) $_.LargeSystemCache = Get-LargeSystemCache ($_.LargeSystemCache) $_.OperatingSystemSKU = Get-OperatingSystemSKU ($_.OperatingSystemSKU) $_.OSLanguage = Get-OSLanguage ($_.OSLanguage) $_.OSProductSuite = Get-OSProductSuite ($_.OSProductSuite) $_.OSType = Get-OSType ($_.OSType) $_.ProductType = Get-ProductType ($_.ProductType) if ($OperatingSystem.PSObject.Properties.Name -match "FreePhysicalMemoryMB"){ $_.FreePhysicalMemoryMB = Get-SizeMB ($_.FreePhysicalMemory * 1KB) } if ($OperatingSystem.PSObject.Properties.Name -match "FreePhysicalMemoryGB"){ $_.FreePhysicalMemoryGB = Get-SizeGB ($_.FreePhysicalMemory * 1KB) } if ($OperatingSystem.PSObject.Properties.Name -match "FreePhysicalMemoryTB"){ $_.FreePhysicalMemoryTB = Get-SizeTB ($_.FreePhysicalMemory * 1KB) } if ($OperatingSystem.PSObject.Properties.Name -match "FreeSpaceInPagingFilesMB"){ $_.FreeSpaceInPagingFilesMB = Get-SizeMB ($_.FreeSpaceInPagingFiles * 1KB) } if ($OperatingSystem.PSObject.Properties.Name -match "FreeSpaceInPagingFilesGB"){ $_.FreeSpaceInPagingFilesGB = Get-SizeGB ($_.FreeSpaceInPagingFiles * 1KB) } if ($OperatingSystem.PSObject.Properties.Name -match "FreeSpaceInPagingFilesTB"){ $_.FreeSpaceInPagingFilesTB = Get-SizeTB ($_.FreeSpaceInPagingFiles * 1KB) } if ($OperatingSystem.PSObject.Properties.Name -match "FreeVirtualMemoryMB"){ $_.FreeVirtualMemoryMB = Get-SizeMB ($_.FreeVirtualMemory * 1KB) } if ($OperatingSystem.PSObject.Properties.Name -match "FreeVirtualMemoryGB"){ $_.FreeVirtualMemoryGB = Get-SizeGB ($_.FreeVirtualMemory * 1KB) } if ($OperatingSystem.PSObject.Properties.Name -match "FreeVirtualMemoryTB"){ $_.FreeVirtualMemoryTB = Get-SizeTB ($_.FreeVirtualMemory * 1KB) } if ($OperatingSystem.PSObject.Properties.Name -match "MaxProcessMemorySizeMB"){ $_.MaxProcessMemorySizeMB = Get-SizeMB ($_.MaxProcessMemorySize * 1KB) } if ($OperatingSystem.PSObject.Properties.Name -match "MaxProcessMemorySizeGB"){ $_.MaxProcessMemorySizeGB = Get-SizeGB ($_.MaxProcessMemorySize * 1KB) } if ($OperatingSystem.PSObject.Properties.Name -match "MaxProcessMemorySizeTB"){ $_.MaxProcessMemorySizeTB = Get-SizeTB ($_.MaxProcessMemorySize * 1KB) } if ($OperatingSystem.PSObject.Properties.Name -match "SizeStoredInPagingFilesMB"){ $_.SizeStoredInPagingFilesMB = Get-SizeMB ($_.SizeStoredInPagingFiles * 1KB) } if ($OperatingSystem.PSObject.Properties.Name -match "SizeStoredInPagingFilesGB"){ $_.SizeStoredInPagingFilesGB = Get-SizeGB ($_.SizeStoredInPagingFiles * 1KB) } if ($OperatingSystem.PSObject.Properties.Name -match "TotalVirtualMemorySizeMB"){ $_.TotalVirtualMemorySizeMB = Get-SizeMB ($_.TotalVirtualMemorySize * 1KB) } if ($OperatingSystem.PSObject.Properties.Name -match "TotalVirtualMemorySizeGB"){ $_.TotalVirtualMemorySizeGB = Get-SizeGB ($_.TotalVirtualMemorySize * 1KB) } if ($OperatingSystem.PSObject.Properties.Name -match "TotalVirtualMemorySizeTB"){ $_.TotalVirtualMemorySizeTB = Get-SizeTB ($_.TotalVirtualMemorySize * 1KB) } if ($OperatingSystem.PSObject.Properties.Name -match "TotalVisibleMemorySizeMB"){ $_.TotalVisibleMemorySizeMB = Get-SizeMB ($_.TotalVisibleMemorySize * 1KB) } if ($OperatingSystem.PSObject.Properties.Name -match "TotalVisibleMemorySizeGB"){ $_.TotalVisibleMemorySizeGB = Get-SizeGB ($_.TotalVisibleMemorySize * 1KB) } if ($OperatingSystem.PSObject.Properties.Name -match "TotalVisibleMemorySizeTB"){ $_.TotalVisibleMemorySizeTB = Get-SizeTB ($_.TotalVisibleMemorySize * 1KB) } } Optimize-Output -Object $OperatingSystem -Properties $Properties -DefaultProperties $DefaultProperties } function Get-OpticalSensor { <# .SYNOPSIS Gets the information about an optical sensor input device on a computer system running Windows. .DESCRIPTION Gets the information about an optical sensor input device on a computer system running Windows and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-OpticalSensor can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-OpticalSensor returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-OpticalSensor This commnand gets the information from local system .EXAMPLE PS C:\> Get-OpticalSensor -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-OpticalSensor -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-OpticalSensor -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-OpticalSensor -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-OpticalSensor -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-OpticalSensor This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-OpticalSensor -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-opticalsensor #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) if ($Protocol -eq ''){ $OpticalSensor = Get-PointingDevice -ComputerName $ComputerName -Properties $Properties | Where-Object {$_.PointingType -eq 'Optical Sensor'}} else{ $OpticalSensor = Get-PointingDevice -ComputerName $ComputerName -Protocol $Protocol -Properties $Properties | Where-Object {$_.PointingType -eq 'Optical Sensor'}} Write-Output $OpticalSensor } function Get-PhysicalMemory { <# .SYNOPSIS Gets the information about a physical memory device located on a computer system and available to the operating system. .DESCRIPTION Gets the information about a physical memory device located on a computer system and available to the operating system and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-PhysicalMemory can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-PhysicalMemory returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-PhysicalMemory This commnand gets the information from local system .EXAMPLE PS C:\> Get-PhysicalMemory -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-PhysicalMemory -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-PhysicalMemory -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-PhysicalMemory -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties .EXAMPLE PS C:\> Get-PhysicalMemory -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-PhysicalMemory This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-PhysicalMemory -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-physicalmemory #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_PhysicalMemory' [System.Collections.ArrayList]$DefaultProperties = 'Name','PartNumber','SerialNumber','Speed','DeviceLocator','Manufacturer','Tag','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $PhysicalMemory = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $PhysicalMemory){ [uint64]$Capacity = $_.Capacity switch ($Capacity){ {$Capacity -gt 1KB} { $PhysicalMemory | Add-Member -MemberType NoteProperty -Name "CapacityKB" -Value "" -Force } {$Capacity -gt 1MB} { $PhysicalMemory | Add-Member -MemberType NoteProperty -Name "CapacityMB" -Value "" -Force } {$Capacity -gt 1GB} { $PhysicalMemory | Add-Member -MemberType NoteProperty -Name "CapacityGB" -Value "" -Force } } } foreach ($_ in $PhysicalMemory){ $_.FormFactor = Get-FormFactor ($_.FormFactor) $_.InterleavePosition = Get-InterleavePosition ($_.InterleavePosition) $_.MemoryType = Get-MemoryType ($_.MemoryType) $_.TypeDetail = Get-TypeDetail ($_.TypeDetail) if ($_.PSObject.Properties.Name -match "CapacityKB"){$_.CapacityKB = Get-SizeKB ($_.Capacity)} if ($_.PSObject.Properties.Name -match "CapacityMB"){$_.CapacityMB = Get-SizeMB ($_.Capacity)} if ($_.PSObject.Properties.Name -match "CapacityGB"){$_.CapacityGB = Get-SizeGB ($_.Capacity)} } Optimize-Output -Object $PhysicalMemory -Properties $Properties -DefaultProperties $DefaultProperties } function Get-PhysicalMemoryArray { <# .SYNOPSIS Gets the details about the computer system physical memory. .DESCRIPTION Gets the details about the computer system physical memory and converts all codes in results into human readable format. Output includes the number of memory devices, memory capacity available, and memory type .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-PhysicalMemoryArray can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-PhysicalMemoryArray returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-PhysicalMemoryArray This commnand gets the information from local system .EXAMPLE PS C:\> Get-PhysicalMemoryArray -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-PhysicalMemoryArray -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-PhysicalMemoryArray -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-PhysicalMemoryArray -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties .EXAMPLE PS C:\> Get-PhysicalMemoryArray -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-PhysicalMemoryArray This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-PhysicalMemoryArray -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-physicalmemoryarray #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_PhysicalMemoryArray' [System.Collections.ArrayList]$DefaultProperties = 'Name','MemoryDevices','MaxCapacity','Model','Tag' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $PhysicalMemoryArray = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $PhysicalMemoryArray){ [uint64]$MaxCapacity = $_.MaxCapacity * 1KB [uint64]$MaxCapacityEx = $_.MaxCapacityEx * 1KB switch ($MaxCapacity){ {$MaxCapacity -ge 1MB} { $PhysicalMemoryArray | Add-Member -MemberType NoteProperty -Name "MaxCapacityMB" -Value "" -Force } {$MaxCapacity -ge 1GB} { $PhysicalMemoryArray | Add-Member -MemberType NoteProperty -Name "MaxCapacityGB" -Value "" -Force } {$MaxCapacity -ge 1TB} { $PhysicalMemoryArray | Add-Member -MemberType NoteProperty -Name "MaxCapacityTB" -Value "" -Force } {$MaxCapacity -ge 1PB} { $PhysicalMemoryArray | Add-Member -MemberType NoteProperty -Name "MaxCapacityPB" -Value "" -Force } } switch ($MaxCapacityEx){ {$MaxCapacityEx -ge 1MB} { $PhysicalMemoryArray | Add-Member -MemberType NoteProperty -Name "MaxCapacityExMB" -Value "" -Force } {$MaxCapacityEx -ge 1GB} { $PhysicalMemoryArray | Add-Member -MemberType NoteProperty -Name "MaxCapacityExGB" -Value "" -Force } {$MaxCapacityEx -ge 1TB} { $PhysicalMemoryArray | Add-Member -MemberType NoteProperty -Name "MaxCapacityExTB" -Value "" -Force } {$MaxCapacityEx -ge 1PB} { $PhysicalMemoryArray | Add-Member -MemberType NoteProperty -Name "MaxCapacityExPB" -Value "" -Force } } if ($null -ne $_.Depth){ $PhysicalMemoryArray | Add-Member -MemberType NoteProperty -Name "DepthCM" -Value "$(Get-LengthCM ($_.Depth))" -Force } if ($null -ne $_.Height){ $PhysicalMemoryArray | Add-Member -MemberType NoteProperty -Name "HeightCM" -Value "$(Get-LengthCM ($_.Height))" -Force } if ($null -ne $_.Width){ $PhysicalMemoryArray | Add-Member -MemberType NoteProperty -Name "WidthCM" -Value "$(Get-LengthCM ($_.Width))" -Force } if ($null -ne $_.Weight){ $PhysicalMemoryArray | Add-Member -MemberType NoteProperty -Name "WeightGr" -Value "$(Get-WeightGram ($_.Weight))" -Force } if (($_.PSObject.Properties.Name -match "WeightGr") -and ($_.WeightGr -ge 1000)){ $PhysicalMemoryArray | Add-Member -MemberType NoteProperty -Name "WeightKg" -Value "$(Get-WeightKg ($_.Weight))" -Force } } foreach ($_ in $PhysicalMemoryArray){ $_.Location = Get-PhysicalMemoryArrayLocation ($_.Location) $_.MemoryErrorCorrection = Get-MemoryErrorCorrection ($_.MemoryErrorCorrection) $_.Use = Get-PhysicalMemoryArrayUse ($_.Use) if ($_.PSObject.Properties.Name -match "MaxCapacityMB"){$_.MaxCapacityMB = Get-SizeMB ($_.MaxCapacity * 1KB)} if ($_.PSObject.Properties.Name -match "MaxCapacityGB"){$_.MaxCapacityGB = Get-SizeGB ($_.MaxCapacity * 1KB)} if ($_.PSObject.Properties.Name -match "MaxCapacityTB"){$_.MaxCapacityTB = Get-SizeTB ($_.MaxCapacity * 1KB)} if ($_.PSObject.Properties.Name -match "MaxCapacityPB"){$_.MaxCapacityPB = Get-SizePB ($_.MaxCapacity * 1KB)} if ($_.PSObject.Properties.Name -match "MaxCapacityExMB"){$_.MaxCapacityExMB = Get-SizeMB ($_.MaxCapacityEx * 1KB)} if ($_.PSObject.Properties.Name -match "MaxCapacityExGB"){$_.MaxCapacityExGB = Get-SizeGB ($_.MaxCapacityEx * 1KB)} if ($_.PSObject.Properties.Name -match "MaxCapacityExTB"){$_.MaxCapacityExTB = Get-SizeTB ($_.MaxCapacityEx * 1KB)} if ($_.PSObject.Properties.Name -match "MaxCapacityExPB"){$_.MaxCapacityExPB = Get-SizePB ($_.MaxCapacityEx * 1KB)} } Optimize-Output -Object $PhysicalMemoryArray -Properties $Properties -DefaultProperties $DefaultProperties } function Get-PointingDevice { <# .SYNOPSIS Gets the information about an input device used to point to and select regions on the display of a computer system running Windows. .DESCRIPTION Gets the information about an input device used to point to and select regions on the display of a computer system running Windows and converts all codes in results into human readable format. Output includes any device used to manipulate a pointer, or point to the display on a computer system running Windows .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-PointingDevice can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-PointingDevice returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-PointingDevice This commnand gets the information from local system .EXAMPLE PS C:\> Get-PointingDevice -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-PointingDevice -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-PointingDevice -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-PointingDevice -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-PointingDevice -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-PointingDevice This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-PointingDevice -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-pointingdevice #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_PointingDevice' [System.Collections.ArrayList]$DefaultProperties = 'Name','Status','PointingType','DeviceInterface','HardwareType','Manufacturer','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","DeviceID","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $PointingDevice = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $PointingDevice){ $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.Handedness = Get-Handedness ($_.Handedness) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) $_.DeviceInterface = Get-DeviceInterface ($_.DeviceInterface) $_.PointingType = Get-PointingType ($_.PointingType) } Optimize-Output -Object $PointingDevice -Properties $Properties -DefaultProperties $DefaultProperties } function Get-PortableBattery { <# .SYNOPSIS Gets the information related to a portable battery, such as a notebook computer battery. .DESCRIPTION Gets the information related to a portable battery, such as a notebook computer battery and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-PortableBattery can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-PortableBattery returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-PortableBattery This commnand gets the information from local system .EXAMPLE PS C:\> Get-PortableBattery -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-PortableBattery -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-PortableBattery -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-PortableBattery -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-PortableBattery -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-PortableBattery This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-PortableBattery -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-portablebattery #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_PortableBattery' [System.Collections.ArrayList]$DefaultProperties = 'Name','BatteryStatus','Chemistry','DesignCapacity','DesignVoltage','Manufacturer','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $PortableBattery = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $PortableBattery){ $_.Availability = Get-Availability ($_.Availability) $_.BatteryStatus = Get-BatteryStatus ($_.BatteryStatus) $_.Chemistry = Get-Chemistry ($_.Chemistry) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) } Optimize-Output -Object $PortableBattery -Properties $Properties -DefaultProperties $DefaultProperties } function Get-PrinterConfiguration { <# .SYNOPSIS Gets the information about the configuration for a printer device. .DESCRIPTION Gets the information about the configuration for a printer device and converts all codes in results into human readable format. Output includes capabilities such as resolution, color, fonts and orientation. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-PrinterConfiguration can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-PrinterConfiguration returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-PrinterConfiguration This commnand gets the information from local system .EXAMPLE PS C:\> Get-PrinterConfiguration -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-PrinterConfiguration -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-PrinterConfiguration -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-PrinterConfiguration -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-PrinterConfiguration -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-PrinterConfiguration This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-PrinterConfiguration -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-printerconfiguration #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_PrinterConfiguration' [System.Collections.ArrayList]$DefaultProperties = 'PrintQuality','DriverVersion','Name','PaperSize','Caption','Manufacturer','SystemName' $AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $PrinterConfiguration = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $PrinterConfiguration){ $_.Color = Get-Color ($_.Color) $_.DitherType = Get-DitherType ($_.DitherType) $_.ICMIntent = Get-ICMIntent ($_.ICMIntent) $_.ICMMethod = Get-ICMMethod ($_.ICMMethod) $_.MediaType = Get-PrinterMediaType ($_.MediaType) $_.Orientation = Get-Orientation ($_.Orientation) $_.PrintQuality = Get-PrintQuality ($_.PrintQuality) $_.TTOption = Get-TTOption ($_.TTOption) } Optimize-Output -Object $PrinterConfiguration -Properties $Properties -DefaultProperties $DefaultProperties } function Get-PrinterInfo { <# .SYNOPSIS Gets the information about a device connected to a computer running on a Microsoft Windows operating system that can produce a printed image or text on paper or other medium. .DESCRIPTION Gets the information about a device connected to a computer running on a Microsoft Windows operating system that can produce a printed image or text on paper or other medium and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-PrinterInfo can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-PrinterInfo returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-PrinterInfo This commnand gets the information from local system .EXAMPLE PS C:\> Get-PrinterInfo -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-PrinterInfo -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-PrinterInfo -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-PrinterInfo -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-PrinterInfo -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-PrinterInfo This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-PrinterInfo -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-printerinfo #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_Printer' [System.Collections.ArrayList]$DefaultProperties = 'Name','ShareName','PrinterState','PrinterStatus','Location','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $PrinterInfo = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $PrinterInfo){ $MaxSizeSupported = $_.MaxSizeSupported * 1KB switch ($MaxSizeSupported){ {$MaxSizeSupported -ge 1MB} { $PrinterInfo | Add-Member -MemberType NoteProperty -Name "MaxSizeSupportedMB" -Value "" -Force } {$MaxSizeSupported -ge 1GB} { $PrinterInfo | Add-Member -MemberType NoteProperty -Name "MaxSizeSupportedGB" -Value "" -Force } } } foreach ($_ in $PrinterInfo){ $_.Attributes = Get-AttributesCode ($_.Attributes) $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.CurrentCapabilities = Get-CurrentCapabilitiesCode ($_.CurrentCapabilities) $_.CurrentLanguage = Get-CurrentLanguage ($_.CurrentLanguage) $_.DefaultCapabilities = Get-DefaultCapabilitiesCode ($_.DefaultCapabilities) $_.DefaultLanguage = Get-DefaultLanguage ($_.DefaultLanguage) $_.DetectedErrorState = Get-DetectedErrorState ($_.DetectedErrorState) $_.ExtendedDetectedErrorState = Get-ExtendedDetectedErrorState ($_.ExtendedDetectedErrorState) $_.ExtendedPrinterStatus = Get-ExtendedPrinterStatus ($_.ExtendedPrinterStatus) $_.LanguagesSupported = Get-LanguagesSupported ($_.LanguagesSupported) $_.MarkingTechnology = Get-MarkingTechnology ($_.MarkingTechnology) $_.PaperSizesSupported = Get-PaperSizesSupported ($_.PaperSizesSupported) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.PrinterState = Get-PrinterState ($_.PrinterState) $_.PrinterStatus = Get-PrinterStatus ($_.PrinterStatus) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) if ($_.PSObject.Properties.Name -match "MaxSizeSupportedMB"){$_.MaxSizeSupportedMB = Get-SizeMB ($_.MaxSizeSupported)} if ($_.PSObject.Properties.Name -match "MaxSizeSupportedGB"){$_.MaxSizeSupportedGB = Get-SizeGB ($_.MaxSizeSupported)} } Optimize-Output -Object $PrinterInfo -Properties $Properties -DefaultProperties $DefaultProperties } function Get-Processor { <# .SYNOPSIS Gets the information about a device that can interpret a sequence of instructions on a computer running on a Windows operating system. .DESCRIPTION Gets the information about a device that can interpret a sequence of instructions on a computer running on a Windows operating system and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-Processor can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-Processor returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-Processor This commnand gets the information from local system .EXAMPLE PS C:\> Get-Processor -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-Processor -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-Processor -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-Processor -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-Processor -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-Processor This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-Processor -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-processor #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_Processor' [System.Collections.ArrayList]$DefaultProperties = 'DeviceID','Name','Caption','MaxClockSpeed','SocketDesignation','Manufacturer','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $Processor = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $Processor){ [uint64]$L2CacheSize = $_.L2CacheSize * 1KB [uint64]$L3CacheSize = $_.L3CacheSize * 1KB if ($L2CacheSize -ge 1MB) { $Processor | Add-Member -MemberType NoteProperty -Name "L2CacheSizeMB" -Value "" -Force } if ($L3CacheSize -ge 1MB) { $Processor | Add-Member -MemberType NoteProperty -Name "L3CacheSizeMB" -Value "" -Force } if ($_.CurrentClockSpeed -ge 1000) { $Processor | Add-Member -MemberType NoteProperty -Name "CurrentClockSpeedGhz" -Value "" -Force } if ($_.MaxClockSpeed -ge 1000) { $Processor | Add-Member -MemberType NoteProperty -Name "MaxClockSpeedGhz" -Value "" -Force } } foreach ($_ in $Processor){ $_.Architecture = Get-Architecture ($_.Architecture) $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.CpuStatus = Get-CpuStatus ($_.CpuStatus) $_.Family = Get-Family ($_.Family) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.ProcessorType = Get-ProcessorType ($_.ProcessorType) $_.UpgradeMethod = Get-UpgradeMethod ($_.UpgradeMethod) $_.VoltageCaps = Get-VoltageCap ($_.VoltageCaps) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) if ($_.PSObject.Properties.Name -match "L2CacheSizeMB"){ $_.L2CacheSizeMB = Get-SizeMB ($_.L2CacheSize * 1KB) } if ($_.PSObject.Properties.Name -match "L3CacheSizeMB"){ $_.L3CacheSizeMB = Get-SizeMB ($_.L3CacheSize * 1KB) } if ($_.PSObject.Properties.Name -match "CurrentClockSpeedGhz"){ $_.CurrentClockSpeedGhz = [math]::round($_.CurrentClockSpeed / 1000,2) } if ($_.PSObject.Properties.Name -match "MaxClockSpeedGhz"){ $_.MaxClockSpeedGhz = [math]::round($_.MaxClockSpeed / 1000,2) } } Optimize-Output -Object $Processor -Properties $Properties -DefaultProperties $DefaultProperties } function Get-RAMDisk { <# .SYNOPSIS Gets the information about a RAM disk on a computer running on a Windows operating system. .DESCRIPTION Gets the information about a a RAM disk on a computer running on a Windows operating system and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-RAMDisk can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-RAMDisk returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-RAMDisk This commnand gets the information from local system .EXAMPLE PS C:\> Get-RAMDisk -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-RAMDisk -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-RAMDisk -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-RAMDisk -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-RAMDisk -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-RAMDisk This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-RAMDisk -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-ramdisk #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) if ($Protocol -eq ''){ $RAMDisk = Get-LogicalDisk -ComputerName $ComputerName -Properties $Properties | Where-Object {$_.DriveType -eq 'RAM Disk'}} else{ $RAMDisk = Get-LogicalDisk -ComputerName $ComputerName -Protocol $Protocol -Properties $Properties | Where-Object {$_.DriveType -eq 'RAM Disk'}} Write-Output $RAMDisk } function Get-Refrigeration { <# .SYNOPSIS Gets the properties of a refrigeration device. .DESCRIPTION Gets the properties of a refrigeration device and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-Refrigeration can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-Refrigeration returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-Refrigeration This commnand gets the information from local system .EXAMPLE PS C:\> Get-Refrigeration -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-Refrigeration -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-Refrigeration -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-Refrigeration -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-Refrigeration -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-Refrigeration This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-Refrigeration -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-refrigeration #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_Refrigeration' [System.Collections.ArrayList]$DefaultProperties = 'Name','Status','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","DeviceID","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $Refrigeration = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $Refrigeration){ $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) } Optimize-Output -Object $Refrigeration -Properties $Properties -DefaultProperties $DefaultProperties } function Get-RemovableDisk { <# .SYNOPSIS Gets the information of a removable disk on a computer running on a Windows operating system. .DESCRIPTION Gets the information of a removable disk on a computer running on a Windows operating system and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-RemovableDisk can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-RemovableDisk returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-RemovableDisk This commnand gets the information from local system .EXAMPLE PS C:\> Get-RemovableDisk -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-RemovableDisk -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-RemovableDisk -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-RemovableDisk -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-RemovableDisk -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-RemovableDisk This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-RemovableDisk -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-removabledisk #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) if ($Protocol -eq ''){ $RemovableDisk = Get-LogicalDisk -ComputerName $ComputerName -Properties $Properties | Where-Object {$_.DriveType -eq 'Removable Disk'}} else{ $RemovableDisk = Get-LogicalDisk -ComputerName $ComputerName -Protocol $Protocol -Properties $Properties | Where-Object {$_.DriveType -eq 'Removable Disk'}} Write-Output $RemovableDisk } function Get-SCSIController { <# .SYNOPSIS Gets the information of a SCSI controller on a computer system running Windows. .DESCRIPTION Gets the information of a SCSI controller on a computer system running Windows and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-SCSIController can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-SCSIController returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-SCSIController This commnand gets the information from local system .EXAMPLE PS C:\> Get-SCSIController -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-SCSIController -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-SCSIController -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-SCSIController -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-SCSIController -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-SCSIController This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-SCSIController -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-scsicontroller #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_SCSIController' [System.Collections.ArrayList]$DefaultProperties = 'Name','DriverName','Status','StatusInfo','ProtocolSupported','Manufacturer','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","DeviceID","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $SCSIController = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $SCSIController){ $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.ProtectionManagement = Get-ProtectionManagement ($_.ProtectionManagement) $_.ProtocolSupported = Get-ProtocolSupported ($_.ProtocolSupported) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) } Optimize-Output -Object $SCSIController -Properties $Properties -DefaultProperties $DefaultProperties } function Get-SoundDevice { <# .SYNOPSIS Gets the information of a sound device on a computer system running Windows. .DESCRIPTION Gets the information of a sound device on a computer system running Windows and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-SoundDevice can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-SoundDevice returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-SoundDevice This commnand gets the information from local system .EXAMPLE PS C:\> Get-SoundDevice -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-SoundDevice -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-SoundDevice -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-SoundDevice -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-SoundDevice -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-SoundDevice This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-SoundDevice -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-sounddevice #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_SoundDevice' [System.Collections.ArrayList]$DefaultProperties = 'Manufacturer','Name','Status','StatusInfo','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID","DeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $SoundDevice = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $SoundDevice){ $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) } Optimize-Output -Object $SoundDevice -Properties $Properties -DefaultProperties $DefaultProperties } function Get-SystemEnclosure { <# .SYNOPSIS Gets the information that is associated with a physical system enclosure. .DESCRIPTION Gets the information that is associated with a physical system enclosure and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-SystemEnclosure can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-SystemEnclosure returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-SystemEnclosure This commnand gets the information from local system .EXAMPLE PS C:\> Get-SystemEnclosure -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-SystemEnclosure -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-SystemEnclosure -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-SystemEnclosure -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-SystemEnclosure -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-SystemEnclosure This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-SystemEnclosure -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-systemenclosure #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_SystemEnclosure' [System.Collections.ArrayList]$DefaultProperties = 'Manufacturer','Model','LockPresent','SerialNumber','SMBIOSAssetTag','SecurityStatus' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $SystemEnclosure = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $SystemEnclosure){ if ($null -ne $_.Depth){ $SystemEnclosure | Add-Member -MemberType NoteProperty -Name "DepthCM" -Value "$(Get-LengthCM ($_.Depth))" -Force } if ($null -ne $_.Height){ $SystemEnclosure | Add-Member -MemberType NoteProperty -Name "HeightCM" -Value "$(Get-LengthCM ($_.Height))" -Force } if ($null -ne $_.Width){ $SystemEnclosure | Add-Member -MemberType NoteProperty -Name "WidthCM" -Value "$(Get-LengthCM ($_.Width))" -Force } if ($null -ne $_.Weight){ $SystemEnclosure | Add-Member -MemberType NoteProperty -Name "WeightGr" -Value "$(Get-WeightGram ($_.Weight))" -Force } if (($_.PSObject.Properties.Name -match "WeightGr") -and ($BaseBoard.WeightGr -ge 1000)){ $SystemEnclosure | Add-Member -MemberType NoteProperty -Name "WeightKg" -Value "$(Get-WeightKg ($_.Weight))" -Force } $_.ChassisTypes = Get-ChassisType ($_.ChassisTypes) $_.SecurityBreach = Get-SecurityBreach ($_.SecurityBreach) $_.SecurityStatus = Get-SecurityStatus ($_.SecurityStatus) $_.ServicePhilosophy = Get-ServicePhilosophy ($_.ServicePhilosophy) } Optimize-Output -Object $SystemEnclosure -Properties $Properties -DefaultProperties $DefaultProperties } function Get-TapeDrive { <# .SYNOPSIS Gets the information about a tape drive on a computer system running Windows. .DESCRIPTION Gets the information about a tape drive on a computer system running Windows and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-TapeDrive can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-TapeDrive returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-TapeDrive This commnand gets the information from local system .EXAMPLE PS C:\> Get-TapeDrive -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-TapeDrive -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-TapeDrive -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-TapeDrive -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-TapeDrive -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-TapeDrive This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-TapeDrive -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-tapedrive #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_TapeDrive' [System.Collections.ArrayList]$DefaultProperties = 'Name','Id','Manufacturer','Compression','ECC','MediaType','NeedsCleaning','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","DeviceID","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $TapeDrive = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $TapeDrive){ [uint64]$MaxMediaSize = $_.MaxMediaSize * 1KB if ($_.DefaultBlockSize -ge 1KB) { $TapeDrive | Add-Member -MemberType NoteProperty -Name "DefaultBlockSizeKB" -Value "" -Force } if ($_.MaxBlockSize -ge 1KB) { $DiskDrive | Add-Member -MemberType NoteProperty -Name "MaxBlockSizeKB" -Value "" -Force } switch ($MaxMediaSize){ {$MaxMediaSize -ge 1MB} { $DiskDrive | Add-Member -MemberType NoteProperty -Name "MaxMediaSizeMB" -Value "" -Force } {$MaxMediaSize -ge 1GB} { $DiskDrive | Add-Member -MemberType NoteProperty -Name "MaxMediaSizeGB" -Value "" -Force } {$MaxMediaSize -ge 1TB} { $DiskDrive | Add-Member -MemberType NoteProperty -Name "MaxMediaSizeTB" -Value "" -Force } {$MaxMediaSize -ge 1PB} { $DiskDrive | Add-Member -MemberType NoteProperty -Name "MaxMediaSizePB" -Value "" -Force } } if ($_.MinBlockSize -ge 1KB) { $DiskDrive | Add-Member -MemberType NoteProperty -Name "MinBlockSizeKB" -Value "" -Force } } foreach ($_ in $TapeDrive){ $_.Layout = Get-Layout ($_.Layout) $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) $_.Compression = Get-Compression ($_.Compression) $_.ECC = Get-ECC ($_.ECC) $_.ReportSetMarks = Get-ReportSetMarksStatus ($_.ReportSetMarks) if ($_.PSObject.Properties.Name -match "DefaultBlockSizeKB"){$_.DefaultBlockSizeKB = Get-SizeKB ($_.DefaultBlockSize)} if ($_.PSObject.Properties.Name -match "MaxBlockSizeKB"){$_.MaxBlockSizeKB = Get-SizeKB ($_.MaxBlockSize)} if ($_.PSObject.Properties.Name -match "MaxMediaSizeMB"){$_.MaxMediaSizeMB = Get-SizeMB ($_.MaxMediaSize)} if ($_.PSObject.Properties.Name -match "MaxMediaSizeGB"){$_.MaxMediaSizeGB = Get-SizeGB ($_.MaxMediaSize * 1KB)} if ($_.PSObject.Properties.Name -match "MaxMediaSizeTB"){$_.MaxMediaSizeTB = Get-SizeTB ($_.MaxMediaSize * 1KB)} if ($_.PSObject.Properties.Name -match "MaxMediaSizePB"){$_.MaxMediaSizePB = Get-SizePB ($_.MaxMediaSize * 1KB)} if ($_.PSObject.Properties.Name -match "MinBlockSizeKB"){$_.MinBlockSizeKB = Get-SizeKB ($_.MinBlockSize)} } Optimize-Output -Object $TapeDrive -Properties $Properties -DefaultProperties $DefaultProperties } function Get-TemperatureProbe { <# .SYNOPSIS Gets the properties of a temperature sensor (electronic thermometer). .DESCRIPTION Gets the properties of a temperature sensor (electronic thermometer) and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-TemperatureProbe can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-TemperatureProbe returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-TemperatureProbe This commnand gets the information from local system .EXAMPLE PS C:\> Get-TemperatureProbe -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-TemperatureProbe -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-TemperatureProbe -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-TemperatureProbe -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-TemperatureProbe -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-TemperatureProbe This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-TemperatureProbe -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-temperatureprobe #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_TemperatureProbe' [System.Collections.ArrayList]$DefaultProperties = 'CurrentReading','Name','Description','MinReadable','MaxReadable','Status','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","DeviceID","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $TemperatureProbe = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $TemperatureProbe){ $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) } Optimize-Output -Object $TemperatureProbe -Properties $Properties -DefaultProperties $DefaultProperties } function Get-TouchPad { <# .SYNOPSIS Gets the information about touch pad input device on computer system running Windows. .DESCRIPTION Gets the information about touch pad input device on computer system running Windows and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-TouchPad can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-TouchPad returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-TouchPad This commnand gets the information from local system .EXAMPLE PS C:\> Get-TouchPad -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-TouchPad -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-TouchPad -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-TouchPad -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-TouchPad -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-TouchPad This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-TouchPad -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-touchpad #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) if ($Protocol -eq ''){ $TouchPad = Get-PointingDevice -ComputerName $ComputerName -Properties $Properties | Where-Object {$_.PointingType -eq 'Touch Pad'}} else{ $TouchPad = Get-PointingDevice -ComputerName $ComputerName -Protocol $Protocol -Properties $Properties | Where-Object {$_.PointingType -eq 'Touch Pad'}} Write-Output $TouchPad } function Get-TouchScreen { <# .SYNOPSIS Gets the information about touch screen input device on computer system running Windows. .DESCRIPTION Gets the information about touch screen input device on computer system running Windows and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-TouchScreen can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-TouchScreen returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-TouchScreen This commnand gets the information from local system .EXAMPLE PS C:\> Get-TouchScreen -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-TouchScreen -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-TouchScreen -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-TouchScreen -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-TouchScreen -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-TouchScreen This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-TouchScreen -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-touchscreen #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) if ($Protocol -eq ''){ $TouchScreen = Get-PointingDevice -ComputerName $ComputerName -Properties $Properties | Where-Object {$_.PointingType -eq 'Touch Screen'}} else{ $TouchScreen = Get-PointingDevice -ComputerName $ComputerName -Protocol $Protocol -Properties $Properties | Where-Object {$_.PointingType -eq 'Touch Screen'}} Write-Output $TouchScreen } function Get-TrackBall { <# .SYNOPSIS Gets the information about track ball input device on computer system running Windows. .DESCRIPTION Gets the information about track ball input device on computer system running Windows and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-TrackBall can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-TrackBall returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-TrackBall This commnand gets the information from local system .EXAMPLE PS C:\> Get-TrackBall -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-TrackBall -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-TrackBall -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-TrackBall -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-TrackBall -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-TrackBall This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-TrackBall -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-trackball #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) if ($Protocol -eq ''){ $TrackBall = Get-PointingDevice -ComputerName $ComputerName -Properties $Properties | Where-Object {$_.PointingType -eq 'Track Ball'}} else{ $TrackBall = Get-PointingDevice -ComputerName $ComputerName -Protocol $Protocol -Properties $Properties | Where-Object {$_.PointingType -eq 'Track Ball'}} Write-Output $TrackBall } function Get-TrackPoint { <# .SYNOPSIS Gets the information about track point input device on computer system running Windows. .DESCRIPTION Gets the information about track point input device on computer system running Windows and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-TrackPoint can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-TrackPoint returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-TrackPoint This commnand gets the information from local system .EXAMPLE PS C:\> Get-TrackPoint -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-TrackPoint -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-TrackPoint -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-TrackPoint -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-TrackPoint -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-TrackPoint This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-TrackPoint -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-trackpoint #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) if ($Protocol -eq ''){ $TrackPoint = Get-PointingDevice -ComputerName $ComputerName -Properties $Properties | Where-Object {$_.PointingType -eq 'Track Point'}} else{ $TrackPoint = Get-PointingDevice -ComputerName $ComputerName -Protocol $Protocol -Properties $Properties | Where-Object {$_.PointingType -eq 'Track Point'}} Write-Output $TrackPoint } function Get-USBController { <# .SYNOPSIS Gets the information about the capabilities of a universal serial bus (USB) controller. .DESCRIPTION Gets the information about the capabilities of a universal serial bus (USB) controller and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer name or IP Address of the system that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-USBController can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-USBController returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-USBController This commnand gets the information from local system .EXAMPLE PS C:\> Get-USBController -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-USBController -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-USBController -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-USBController -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-USBController -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-USBController This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-USBController -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-usbcontroller #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_USBController' [System.Collections.ArrayList]$DefaultProperties = 'Name','Status','Manufacturer','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","DeviceID","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $USBController = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $USBController){ $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.ProtocolSupported = Get-ProtocolSupported ($_.ProtocolSupported) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) } Optimize-Output -Object $USBController -Properties $Properties -DefaultProperties $DefaultProperties } function Get-VideoController { <# .SYNOPSIS Gets the information about the capabilities and management capacity of the video controller on a computer system running Windows. .DESCRIPTION Gets the information about the capabilities and management capacity of the video controller on a computer system running Windows and converts all codes in results into human readable format. Hardware that is not compatible with Windows Display Driver Model (WDDM) returns inaccurate property values .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-VideoController can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-VideoController returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-VideoController This commnand gets the information from local system .EXAMPLE PS C:\> Get-VideoController -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-VideoController -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-VideoController -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-VideoController -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-VideoController -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-VideoController This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-VideoController -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-videocontroller #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_VideoController' [System.Collections.ArrayList]$DefaultProperties = 'Name','DeviceID','VideoProcessor','VideoArchitecture','AdapterDACType','AdapterRAM','Status','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $VideoController = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $VideoController){ [uint64]$AdapterRAM = $_.AdapterRAM switch ($AdapterRAM){ {$AdapterRAM -ge 1KB} { $VideoController | Add-Member -MemberType NoteProperty -Name "AdapterRAMKB" -Value "" -Force } {$AdapterRAM -ge 1MB} { $VideoController | Add-Member -MemberType NoteProperty -Name "AdapterRAMMB" -Value "" -Force } {$AdapterRAM -ge 1GB} { $VideoController | Add-Member -MemberType NoteProperty -Name "AdapterRAMGB" -Value "" -Force } } } foreach ($_ in $VideoController){ $_.AcceleratorCapabilities = Get-AcceleratorCapabilitiesCode ($_.AcceleratorCapabilities) $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.CurrentScanMode = Get-CurrentScanMode ($_.CurrentScanMode) $_.DitherType = Get-DitherType ($_.DitherType) $_.ICMIntent = Get-ICMIntent ($_.ICMIntent) $_.ICMMethod = Get-ICMMethod ($_.ICMMethod) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.ProtocolSupported = Get-ProtocolSupported ($_.ProtocolSupported) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) $_.VideoArchitecture = Get-VideoArchitecture ($_.VideoArchitecture) $_.VideoMemoryType = Get-VideoMemoryType ($_.VideoMemoryType) if ($_.PSObject.Properties.Name -match "AdapterRAMKB"){$_.AdapterRAMKB = Get-SizeKB ($_.AdapterRAM)} if ($_.PSObject.Properties.Name -match "AdapterRAMMB"){$_.AdapterRAMMB = Get-SizeMB ($_.AdapterRAM)} if ($_.PSObject.Properties.Name -match "AdapterRAMGB"){$_.AdapterRAMGB = Get-SizeGB ($_.AdapterRAM)} } Optimize-Output -Object $VideoController -Properties $Properties -DefaultProperties $DefaultProperties } function Get-VoltageProbe { <# .SYNOPSIS Gets the information about the properties of a voltage sensor (electronic voltmeter). .DESCRIPTION Gets the information about the properties of a voltage sensor (electronic voltmeter) and converts all codes in results into human readable format. .PARAMETER ComputerName Specifies the computer names or IP Addresses of the systems that we want to get the information from. .PARAMETER Protocol Specifies the protocol that will be used to get the information from the remote system. .PARAMETER Properties Specifies the object properties that appear in the display and the order in which they appear. Wildcards are permitted. .INPUTS System.Array. Get-VoltageProbe can accept a string value to determine the ComputerName parameter. .OUTPUTS System.Object. Get-VoltageProbe returns an object containing all the information that has been retrieved. .EXAMPLE PS C:\> Get-VoltageProbe This commnand gets the information from local system .EXAMPLE PS C:\> Get-VoltageProbe -ComputerName Server1 This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-VoltageProbe -ComputerName "192.168.0.5" This commnand gets the information from remoted system with IP 192.168.0.5 .EXAMPLE PS C:\> Get-VoltageProbe -ComputerName Server1,Server2,Server3 This commnand gets the information from Server1, Server2 and Server3 .EXAMPLE PS C:\> Get-VoltageProbe -ComputerName Server1 -Properties Name,Status This commnand gets the information from Server1 and will output only Name and Status Properties. .EXAMPLE PS C:\> Get-VoltageProbe -ComputerName Server1 -Properties * This commnand gets the information from Server1 and will output all properties .EXAMPLE PS C:\> "Server1" | Get-VoltageProbe This commnand gets the information from Server1 .EXAMPLE PS C:\> Get-VoltageProbe -ComputerName Server1 -Protocol DCOM This commnand gets the information from Server1 using DCOM protocol .LINK https://www.sconstantinou.com/get-voltageprobe #> [cmdletbinding()] param ( [parameter(ValueFromPipeline = $true)][alias("cn")][String[]]$ComputerName, [alias("p")][validateset("WinRM","DCOM")][String]$Protocol, [alias("Property")][String[]]$Properties) $ClassName = 'Win32_VoltageProbe' [System.Collections.ArrayList]$DefaultProperties = 'Name','Status','Description','CurrentReading','MaxReadable','MinReadable','SystemName' [System.Collections.ArrayList]$AllProperties = ((Get-CimClass -ClassName $ClassName).CimClassProperties).Name $RemoveProperties = @("CreationClassName","SystemCreationClassName","DeviceID","PNPDeviceID") foreach ($_ in $RemoveProperties){$AllProperties.Remove($_)} $VoltageProbe = Get-Info -ClassName $ClassName -ComputerName $ComputerName -Protocol $Protocol -Properties $AllProperties foreach ($_ in $VoltageProbe){ $_.Availability = Get-Availability ($_.Availability) $_.ConfigManagerErrorCode = Get-ConfigManagerErrorCode ($_.ConfigManagerErrorCode) $_.PowerManagementCapabilities = Get-PowerManagementCapabilitiesCode ($_.PowerManagementCapabilities) $_.StatusInfo = Get-StatusInfo ($_.StatusInfo) } Optimize-Output -Object $VoltageProbe -Properties $Properties -DefaultProperties $DefaultProperties } |