Get-CMDevice
Get a Configuration Manager device.
Syntax
Get-CMDevice
[-CollectionMember]
[-Fast]
[-Name <String>]
[-Resource]
[-DisableWildcardHandling]
[-ForceWildcardHandling]
[<CommonParameters>]
Get-CMDevice
-Collection <IResultObject>
[-CollectionMember]
[-Fast]
[-Name <String>]
[-Resource]
[-DisableWildcardHandling]
[-ForceWildcardHandling]
[<CommonParameters>]
Get-CMDevice
-CollectionId <String>
[-CollectionMember]
[-Fast]
[-Name <String>]
[-Resource]
[-DisableWildcardHandling]
[-ForceWildcardHandling]
[<CommonParameters>]
Get-CMDevice
[-CollectionId <String>]
[-CollectionMember]
[-Fast]
[-Resource]
-ThreatId <String>
[-DisableWildcardHandling]
[-ForceWildcardHandling]
[<CommonParameters>]
Get-CMDevice
[-CollectionId <String>]
[-CollectionMember]
[-Fast]
[-Resource]
-ThreatName <String>
[-DisableWildcardHandling]
[-ForceWildcardHandling]
[<CommonParameters>]
Get-CMDevice
[-CollectionId <String>]
[-CollectionMember]
[-Fast]
-InputObject <IResultObject>
[-Resource]
[-DisableWildcardHandling]
[-ForceWildcardHandling]
[<CommonParameters>]
Get-CMDevice
[-CollectionMember]
-CollectionName <String>
[-Fast]
[-Name <String>]
[-Resource]
[-DisableWildcardHandling]
[-ForceWildcardHandling]
[<CommonParameters>]
Get-CMDevice
[-CollectionMember]
[-Fast]
[-Resource]
-ResourceId <Int32>
[-DisableWildcardHandling]
[-ForceWildcardHandling]
[<CommonParameters>]
Description
The Get-CMDevice cmdlet gets a Configuration Manager device. By default it queries the SMS_CM_RES_COLL_SMS00001 class. You can use the Resource or CollectionMember parameters to change the query class. Depending upon your role-based access in the site, you may need to use one of these other parameters. For example, if you don't have access to SMS00001, then by default this cmdlet returns zero results.
Note
Run Configuration Manager cmdlets from the Configuration Manager site drive, for example PS XYZ:\>
. For more information, see getting started.
Examples
Example 1: Get devices by collection ID
This command gets all the device objects in the device collection with the ID of XYZ0004B. It uses the Select-Object cmdlet to only display specific properties.
Get-CMDevice -CollectionID "XYZ0004B" | Select-Object Name, ClientVersion, DeviceOS, IsActive, LastActiveTime, LastClientCheckTime, LastDDR, LastHardwareScan, LastPolicyRequest
Name : DEVICE-LT3
ClientVersion : 5.00.9012.1020
DeviceOS : Microsoft Windows NT Workstation 10.0 (Tablet Edition)
IsActive : True
LastActiveTime : 10/1/2020 23:29:34
LastClientCheckTime : 9/8/2020 18:38:10
LastDDR : 9/30/2020 20:29:33
LastHardwareScan : 9/30/2020 22:24:22
LastPolicyRequest : 10/1/2020 23:29:34
Name : DEVICE-LT2
ClientVersion : 5.00.9030.1011
DeviceOS : Microsoft Windows NT Workstation 10.0 (Tablet Edition)
IsActive : True
LastActiveTime : 10/2/2020 00:31:54
LastClientCheckTime : 9/30/2020 23:06:10
LastDDR : 9/30/2020 19:44:46
LastHardwareScan : 9/30/2020 01:15:52
LastPolicyRequest : 10/2/2020 00:31:54
Example 2: Get device resources by collection ID
This command is similar to the first example, but uses the -Resource parameter. When it queries a different class, it returns different properties for similar data.
Get-CMDevice -CollectionID "XYZ0004B" -Resource | Select-Object Name, ClientVersion, OperatingSystemNameandVersion, Active, AgentName, AgentTime
Name : DEVICE-LT3
ClientVersion : 5.00.9012.1020
OperatingSystemNameandVersion : Microsoft Windows NT Workstation 10.0 (Tablet Edition)
Active : 1
AgentName : {SMS_AD_SYSTEM_DISCOVERY_AGENT, SMS_AD_SECURITY_GROUP_DISCOVERY_AGENT,
MP_ClientRegistration, Heartbeat Discovery}
AgentTime : {2/28/2020 09:45:01, 10/2/2020 01:00:01, 9/21/2020 15:53:47, 9/30/2020 13:29:33}
Name : DEVICE-LT2
ClientVersion : 5.00.9030.1011
OperatingSystemNameandVersion : Microsoft Windows NT Workstation 10.0 (Tablet Edition)
Active : 1
AgentName : {SMS_AD_SYSTEM_DISCOVERY_AGENT, SMS_AD_SECURITY_GROUP_DISCOVERY_AGENT,
MP_ClientRegistration, Heartbeat Discovery}
AgentTime : {2/28/2020 09:45:01, 10/2/2020 01:00:01, 10/1/2020 14:03:56, 9/30/2020 12:44:46}
Example 3: Get properties for a specific device
This command gets a specific device, and pipes the output through the Select-Object cmdlet to show only specific properties. Since it uses the -Resource parameter, the properties are specific to that class.
Get-CMDevice -Name "DEVICE-LT2" -Resource | Select-Object Name, CPUType, DistinguishedName, HardwareID, IPAddresses
Example 4: Get devices that aren't clients
This command uses the -Fast parameter to get all devices without lazy properties. It filters the list to only devices that aren't clients. It only displays the device name in the final list.
Get-CMDevice -Fast | Where-Object { $_.IsClient -eq $false } | Select-Object Name
Example 5: Get devices for a specific threat name
This command shows all devices on which Microsoft Defender has detected a specific threat. It only displays the name of the device.
Get-CMDevice -ThreatName "Trojan:Win32/Wacatac.B!ml" | Select-Object Name
Example 6: Get all devices with any detected malware
This command first uses the Get-CMDetectedMalware cmdlet to get all threats. It then parses through that list, and displays the name of devices with malware.
$allMalware = Get-CMDetectedMalware
foreach ( $malware in $allMalware ) { Get-CMDevice -InputObject $malware | Select-Object Name }
Parameters
-Collection
Use this parameter to get all devices from a device collection object. To get this object, use the Get-CMDeviceCollection cmdlet.
Type: | IResultObject |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CollectionId
Specify an ID for a device collection. For example, XYZ0004B
.
Type: | String |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CollectionMember
Add this parameter to query the SMS_R_UnknownSystem and SMS_R_System classes for device information. These classes may be restricted by role-based access. These classes contain more detailed machine information.
Type: | SwitchParameter |
Aliases: | CollectionMemberInstance |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CollectionName
Specify the name of a device collection.
Type: | String |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-DisableWildcardHandling
This parameter treats wildcard characters as literal character values. You can't combine it with ForceWildcardHandling.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Fast
Add this parameter to not automatically refresh lazy properties. Lazy properties contain values that are relatively inefficient to retrieve. Getting these properties can cause additional network traffic and decrease cmdlet performance.
If you don't use this parameter, the cmdlet displays a warning. To disable this warning, set $CMPSSuppressFastNotUsedCheck = $true
.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ForceWildcardHandling
This parameter processes wildcard characters and may lead to unexpected behavior (not recommended). You can't combine it with DisableWildcardHandling.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Specify a detected malware object. To get this object, use the Get-CMDetectedMalware cmdlet.
Type: | IResultObject |
Aliases: | Threat |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Name
Specify the name of a device.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Resource
Add this parameter to query the SMS_Resource class for device information. This class shouldn't be restricted by role-based access. The output is the same as with the Get-CMResource cmdlet. This output has minimal properties for the device. For more detailed properties, don't add this parameter, or use the CollectionMember parameter.
Type: | SwitchParameter |
Aliases: | ResourceInstance |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ResourceId
Specify the resource ID of a device. For example, 16780010
.
Type: | Int32 |
Aliases: | Id, DeviceId |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ThreatId
Use this parameter to filter the devices that it returns to those devices with specific malware by ID. For example, 2147735505
. To get this threat ID, use the Get-CMDetectedMalware cmdlet.
Type: | String |
Aliases: | ThreatNameId |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ThreatName
Use this parameter to filter the devices that it returns to those devices with specific malware by name. For example, Trojan:Win32/Wacatac.B!ml
. To get this threat name, use the Get-CMDetectedMalware cmdlet.
Type: | String |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Inputs
Microsoft.ConfigurationManagement.ManagementProvider.IResultObject
Outputs
IResultObject[]
IResultObject
Notes
For more information on this return object and its properties, see SMS_CombinedDeviceResources server WMI class.