MDM Providers

MDM provider abstraction for Jamf Pro and Intune parameter parsing.

Auto-Detection

get_provider(provider: str | None = None) MdmParamProvider[source]

Get the MDM parameter provider instance.

Detection order: 1. Explicit provider argument (“jamf” or “intune”) 2. PYMDM_MDM_PROVIDER environment variable 3. Platform-based default: “jamf” on macOS, “intune” on Windows

Parameters:

provider (str | None, optional) – Explicit provider name, defaults to None (auto-detect)

Returns:

MDM provider instance

Return type:

MdmParamProvider

Raises:

ValueError – If the provider name is not recognized

JamfParamParser

class JamfParamParser[source]

Bases: object

Jamf Pro parameter parser.

Jamf Pro reserves parameters 0-3: - $0 = Script name - $1 = Mount point of the target drive - $2 = Computer name - $3 = Username of logged in user

User-defined parameters are $4 through $11 (indices 4-11 in sys.argv).

Satisfies the MdmParamProvider protocol.

get(key: int | str) str | None[source]

Safely retrieve Jamf parameter by index.

Parameters:

key (int | str) – Parameter index (must be int in range 4-11)

Returns:

Parameter value, or None if not provided

Return type:

str | None

Raises:

TypeError – If key is not an integer

get_bool(key: int | str) bool[source]

Get a Jamf parameter and convert to boolean.

Parameters:

key (int | str) – Parameter index (must be int in range 4-11)

Returns:

Boolean value (False if parameter is missing)

Return type:

bool

get_int(key: int | str, default: int = 0) int[source]

Get a Jamf parameter and convert to integer.

Parameters:
  • key (int | str) – Parameter index (must be int in range 4-11)

  • default (int) – Default value if parameter is missing or invalid

Returns:

Integer value

Return type:

int

IntuneParamProvider

class IntuneParamProvider[source]

Bases: object

Intune parameter provider.

Intune scripts can receive parameters in multiple ways: 1. Command-line arguments (sys.argv) – addressed by integer key 2. Environment variables – addressed by string key

Unlike Jamf, Intune does not reserve specific parameter indices. Integer keys map directly to sys.argv indices (0 = script name, 1+ = args). String keys are looked up as environment variables, optionally with an INTUNE_ prefix.

Satisfies the MdmParamProvider protocol.

Example:
>>> provider = IntuneParamProvider()
>>> # Get from sys.argv[1]
>>> value = provider.get(1)
>>> # Get from environment variable
>>> value = provider.get("WEBHOOK_URL")
get(key: int | str) str | None[source]

Get a script parameter by key.

Integer keys are looked up in sys.argv. String keys are looked up as environment variables (with optional INTUNE_ prefix fallback).

Parameters:

key (int | str) – Parameter key (int for argv index, str for env var name)

Returns:

Parameter value, or None if not set

Return type:

str | None

get_bool(key: int | str) bool[source]

Get a script parameter and convert to boolean.

Parameters:

key (int | str) – Parameter key

Returns:

Boolean value (False if parameter is missing)

Return type:

bool

get_int(key: int | str, default: int = 0) int[source]

Get a script parameter and convert to integer.

Parameters:
  • key (int | str) – Parameter key

  • default (int) – Default value if parameter is missing or invalid

Returns:

Integer value

Return type:

int