# PS Commands
Note: unless otherwise stated, replace any variable such as `$ComputerName` with the appropriate data.
## Computers
### Remotely Fetch a (Partial) Installed Program List for $ComputerName
```powershell
Get-WmiObject win32_product -ComputerName $ComputerName | Sort-Object | select Vendor, Name, version
```
### Remotely Fetch Installed Programs from $ComputerName by searching $Column (Vendor, Name, or version) for $SearchTerm
```powershell
Get-WmiObject win32_product -ComputerName $ComputerName | Where-Object {$_.$Column -like “*$SearchTerm*”} | Sort-Object | select Vendor, Name, version
```
### Remotely Fetch $ComputerName's Boot Time
```powershell
Get-CimInstance -ClassName Win32_OperatingSystem -ComputerName $ComputerName | slect csname, lastbootuptime
```
### Fetch $ComputerName's Group Membership
```powershell
Get-ADPrincipalGroupMembership (Get-ADComputer $ComputerName) | select-object name
```
### Remotely Fetch $ComputerName's Make & Model
```powershell
Get-CimInstance -ComputerName $ComputerName -ClassName Win32_ComputerSystem | Select-Object -Property Manufacturer, Model
```
### Remotely Fetch $ComputerName's Serial Number
```powershell
Get-CimInstance -ComputerName $ComputerName -ClassName Win32_bios | Select-Object -Property SerialNumber
```
### Remotely Fetch $ComputerName's Total/Free Storage
```powershell
Get-WmiObject Win32_LogicalDisk -ComputerName $ComputerName -Filter DriveType=3 | Select-Object DeviceID, @{'Name'='Size (GB)'; 'Expression'={[math]::truncate($_.size / 1GB)}}, @{'Name'='Freespace (GB)'; 'Expression'={[math]::truncate($_.freespace / 1GB)}}
```
### Remotely Fetch $ComputerName's BIOS Version
```powershell
Get-WmiObject -Class Win32_BIOS -ComputerName $ComputerName
```
## Users
### Fetch $Username's Group Membership
```powershell
Get-ADPrincipalGroupMembership (Get-ADUser $Username) | select-object name
```
## Groups
### Fetch AD Groups with $SearchTerm in them
```powershell
Get-ADGroup -Filter 'name -like "*$SearchTerm*"' | Sort-Object | select Name
```