计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
cipp-tenants【效率与协作】The top-level CIPP scope: enumerating managed M365 tenants, retrieving tenant detail, and the accepted `tenantFilter` identifier formats (default domain, custom domain, GUID, `allTenants`). Also covers stale-cache detection and the two common tenant-resolution failure modes.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
tenantFilter identifier formats (default domain, custom domain, GUID, allTenants). Also covers stale-cache detection and the two common tenant-resolution failure modes."
when_to_use: >-
When listing managed M365 tenants, looking up tenant IDs/domains, or scoping operations across
the MSP portfolio. Use when: cipp tenant, list tenants, m365 tenant, tenant details, which
tenants, all tenants, cipp portfolio, or msp tenant list.Tenants are the top-level scope in CIPP. Every operational tool — users, mailboxes, standards, security — takes a tenantFilter parameter that scopes the call to one tenant or to allTenants. Knowing how to enumerate tenants and resolve a friendly name to its tenant ID is the first step in almost every CIPP workflow.
tenantFilter value from here will not work there; use
inforcer-tenant-management.cipp-ops.cipp-licenses,
cipp-standards, or cipp-security.cipp_list_tenantsList every tenant CIPP manages. Returns a list of tenant objects with customerId, defaultDomainName, displayName, and onboarding status.
cipp_list_tenants()
Use this whenever a user refers to a client by name — the response gives you the defaultDomainName (or customerId) needed for tenantFilter on every other tool.
cipp_get_tenant_detailsRetrieve detailed information for one tenant: license count, domain list, GDAP relationship status, last refresh time.
cipp_get_tenant_details(tenantFilter='contoso.onmicrosoft.com')
Use tenantFilter='allTenants' to get a portfolio-wide aggregate — useful for fleet reports.
Most CIPP tools accept any of these in tenantFilter:
| Format | Example | Notes |
|---|---|---|
| Default domain | contoso.onmicrosoft.com | Most readable, recommended |
| Custom domain | contoso.com | Works if CIPP has it cached |
| Tenant GUID | 00000000-0000-0000-0000-000000000000 | Most stable but opaque |
allTenants | allTenants | Portfolio-wide; only some tools support it |
When a user says "Acme", always run cipp_list_tenants first and resolve to the canonical defaultDomainName before calling other tools. Never guess the tenant identifier.
Resolve a friendly name → tenant filter
tenants = cipp_list_tenants()
acme = next(t for t in tenants if 'acme' in t['displayName'].lower())
tenant_filter = acme['defaultDomainName']
Audit which tenants are stale in CIPP cache
cipp_get_tenant_details returns lastRefresh. Tenants not refreshed in >24h often signal a broken GDAP relationship or revoked consent — flag them before running standards or BPA checks against them.
tenantFilter not found — the tenant exists in M365 but CIPP hasn't onboarded it. Trigger a tenant cache refresh in CIPP UI or check GDAP roles.