Public/Get-MerakiNetworkPiiSmDevicesForKey.ps1

function Get-MerakiNetworkPiiSmDevicesForKey {
    <#
    .SYNOPSIS
    Retrieves Personally Identifiable Information (PII) data for Systems Manager (SM) devices for a specified Meraki network.
 
    .DESCRIPTION
    The Get-MerakiNetworkPiiSmDevicesForKey function retrieves PII data for SM devices for a specified Meraki network using the Meraki API. You must provide an API authentication token, the network ID, and at least one of the following parameters: username, email, MAC address, serial number, IMEI, or Bluetooth MAC address.
 
    .PARAMETER AuthToken
    The Meraki API authentication token.
 
    .PARAMETER NetworkId
    The ID of the network to retrieve PII data for SM devices for.
 
    .PARAMETER username
    The username associated with the SM device.
 
    .PARAMETER email
    The email address associated with the SM device.
 
    .PARAMETER mac
    The MAC address of the SM device.
 
    .PARAMETER serial
    The serial number of the SM device.
 
    .PARAMETER imei
    The IMEI number of the SM device.
 
    .PARAMETER bluetoothMac
    The Bluetooth MAC address of the SM device.
 
    .EXAMPLE
    Get-MerakiNetworkPiiSmDevicesForKey -AuthToken '12345' -NetworkId 'L_123456789' -email 'test@example.com'
 
    This example retrieves PII data for SM devices associated with the email address 'test@example.com' for the Meraki network with ID 'L_123456789' using the Meraki API authentication token '12345'.
 
    .NOTES
    For more information about the Meraki API, see https://developer.cisco.com/meraki/api-v1/.
    #>

    param (
        [Parameter(Mandatory=$true)]
        [string]$AuthToken,
        [Parameter(Mandatory=$true)]
        [string]$NetworkId,
        [Parameter(Mandatory=$false)]
        [string]$username,
        [Parameter(Mandatory=$false)]
        [string]$email,
        [Parameter(Mandatory=$false)]
        [string]$mac,
        [Parameter(Mandatory=$false)]
        [string]$serial,
        [Parameter(Mandatory=$false)]
        [string]$imei,
        [Parameter(Mandatory=$false)]
        [string]$bluetoothMac
    )
    try {
        $header = @{
            'X-Cisco-Meraki-API-Key' = $AuthToken
        }
    
        $queryParams = @{}
    
        if ($username) {
            $queryParams['username'] = $username
        }
        if ($email) {
            $queryParams['email'] = $email
        }
        if ($mac) {
            $queryParams['mac'] = $mac
        }
        if ($serial) {
            $queryParams['serial'] = $serial
        }
        if ($imei) {
            $queryParams['imei'] = $imei
        }
        if ($bluetoothMac) {
            $queryParams['bluetoothMac'] = $bluetoothMac
        }
        $queryString = New-MerakiQueryString -queryParams $queryParams
    
        $URL = "https://api.meraki.com/api/v1/networks/$networkId/pii/smDevicesForKey?$queryString"
    
        $URI = [uri]::EscapeUriString($URL)
    
        $response = Invoke-RestMethod -Method Get -Uri $URI -Header $header -UserAgent "MerakiPowerShellModule/1.0.2 DocNougat"
        return $response
    }
    catch {
        Write-Host $_
        Throw $_
    }
}