MDM Providers¶
MDM provider abstraction for Jamf Pro and Intune parameter parsing.
Auto-Detection¶
- get_provider(provider: str | None = None) MdmParamParser[source]¶
Get the MDM parameter provider instance.
Detection order: 1. Explicit
providerargument (“jamf”, “intune”, or “generic”) 2.PYMDM_MDM_PROVIDERenvironment variable 3. Platform-based default: “intune” on Windows, “generic” everywhere else- Parameters:
provider (str | None, optional) – Explicit provider name, defaults to None (auto-detect)
- Returns:
MDM provider instance
- Return type:
MdmParamParser
- Raises:
ValueError – If the provider name is not recognized
GenericParamParser¶
- class GenericParamParser[source]¶
Bases:
MdmParamParserGeneric positional parameter parser.
The neutral default for providers that pass parameters as plain positional
sys.argvarguments with no reserved indices. Used when no provider is specified and the platform isn’t recognized as Jamf or Intune.
JamfParamParser¶
- class JamfParamParser[source]¶
Bases:
GenericParamParserJamf 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).
Extends GenericParamParser with Jamf’s reserved-index validation.
IntuneParamParser¶
- class IntuneParamParser[source]¶
Bases:
GenericParamParserIntune parameter parser.
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.Extends GenericParamParser with environment-variable lookup for string keys.
- Example:
>>> provider = IntuneParamParser() >>> # Get from sys.argv[1] >>> value = provider.get(1) >>> # Get from environment variable >>> value = provider.get("WEBHOOK_URL")