Casey Hoffmann
Casey Hoffmann

Reputation: 31

SCCM Device Collection Query: Find all clients in intranet

I'm trying to create a WMI query for a device collection to find all computers that are currently outside our intranet. I can do this in Powershell by executing:

(Get-WmiObject -namespace root\ccm -query "select InInternet from ClientInfo").InInternet

But I cannot find the appropriate query in SCCM.

In configuration manager on the client you are able to see the "Connection Type" and whether or not it's currently Intranet or Internet.

Does anyone know if this is possible in an SCCM query?

Upvotes: 3

Views: 3842

Answers (2)

Bifeng Dong - MSFT
Bifeng Dong - MSFT

Reputation: 408

if (Get-WmiObject -namespace root\ccm -query "select InInternet from ClientInfo").InInternet can return the correct data, you should still be able to get all result from clients one by one by running command on a remote machine using -computername property:

Import-Module 'C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager.psd1' 
cd cts:
$devices = (Get-CMDevice -CollectionName "All Desktop and Server Clients").name
Foreach ($device in $devices)
{
   if(Test-Connection -ComputerName $device -Count 1 -Quiet)
    {
        $InInternet = (Get-WmiObject -ComputerName $device -Namespace root\ccm -Query 'select InInternet from ClientInfo').InInternet
        $properties = @{'name' = $device; 'IsInternet' = $InInternet}
        $Object = New-Object -TypeName PSObject -Property $properties
        Write-Output $Object
   }else{
       Write-Warning "Try connection to $device failed!"
    }
}

The script is not a complete script because it did not catch exceptions when trying to connect to target machine to get property. But it should be able to tell what I mean here and should be able to work. You may need to run script under admin permission

Upvotes: 0

Frode F.
Frode F.

Reputation: 54941

AFAIK SCCM doesn't collect Connection type, probably because it changes too often (or at least can do). The only server-side query I can think of is to check if the last MP was one of the internet-enabled MPs. Ex:

SELECT * FROM SMS_R_System WHERE ResourceID IN ( SELECT ResourceID FROM SMS_G_System_CH_ClientSummary WHERE LastMPServerName IN ('InternetEnabledMP.DMZ.contoso.local','MySecondInternetEnabledMP.DMZ.contoso.local'))"

Upvotes: 0

Related Questions