This is the code for a PowerShell module for CIPP. It is a work in progress, and only has about 134 out of the almost 300 API Endpoints built in. However, more will follow and it does have a generic 'Invoke-CIPPRestMethod' available so you can make any API call you want. See advanced usage examples below.
The module is written for PowerShell 7.
CIPPAPIModule provides a PowerShell wrapper around the CIPP API. The module handles all the authentication for you. All you need to do is supply your CIPP API Details using the 'Set-CIPPAPIDetails' command.
This module is published to the PowerShell Gallery and can be installed from within PowerShell with Install-Module
Install-Module -Name CIPPAPIModule
This module is updated regularly. Remember to always check for the latest version from within PowerShell with Update-Module
Update-Module -Name CIPPAPIModule
The first and probably most important requirement for this module is getting it connected to your CIPP API.
- Set API Connection details
Set-CIPPAPIDetails -CIPPClientID "YourClientIDGoesHere" -CIPPClientSecret "YourClientSecretGoesHere" -CIPPAPIUrl "https://your.cipp.apiurl" -TenantID "YourTenantID"
- Test your first call to the API
Test-CIPPApiConnection
- Core
- Get-CIPPAccessCheck
- Get-CIPPApplicationQueue
- Get-CIPPAuditLogSearches
- Get-CIPPBackup
- Get-CIPPCommunityRepos
- Get-CIPPConditionalAccessPolicyChanges
- Get-CIPPConnectionFilterTemplates
- Get-CIPPCustomRole
- Get-CIPPEmptyResult
- Get-CIPPExecAPIPermissionsList
- Get-CIPPExoRequest
- Get-CIPPExtensionSync
- Get-CIPPFunctionParameters
- Get-CIPPFunctionStats
- Get-CIPPGDAPAccessAssignments
- Get-CIPPGenericTestFunction
- Get-CIPPKnownIPDB
- Get-CIPPLogs
- Get-CIPPQueue
- Remove-CIPPQueue
- Set-CIPPExecCPVPerms
- Test-CIPPApiConnection
- Scheduler
- Security
- Settings
- Setup
- Webhooks
- Get-CIPPAccessCheck
- Get-CIPPApplicationQueue
- Get-CIPPAuditLogSearches
- Get-CIPPBackup
- Get-CIPPCommunityRepos
- Get-CIPPConditionalAccessPolicyChanges
- Get-CIPPConnectionFilterTemplates
- Get-CIPPCustomRole
- Get-CIPPEmptyResult
- Get-CIPPExecAPIPermissionsList
- Get-CIPPExoRequest
- Get-CIPPExtensionSync
- Get-CIPPFunctionParameters
- Get-CIPPFunctionStats
- Get-CIPPGDAPAccessAssignments
- Get-CIPPGenericTestFunction
- Get-CIPPKnownIPDB
- Get-CIPPLogs
- Get-CIPPQueue
- Remove-CIPPQueue
- Set-CIPPExecCPVPerms
- Test-CIPPApiConnection
- Get-CIPPScheduledTask
- Get-CIPPTrustedIP
- Get-CIPPExcludedLicenses
- Get-CIPPExcludedTenants
- Get-CIPPNotificationConfig
- Get-CIPPVersion
- Set-CIPPExcludeLicense
- Set-CIPPExcludeTenant
- Set-CIPPPasswordSettings
- Get-CIPPPendingWebhooks
- Administration
- Add-CIPPContact
- Add-CIPPExchConnector
- Add-CIPPExchTransportRule
- Add-CIPPRoomMailbox
- Add-CIPPSharedMailbox
- Convert-CIPPMailbox
- Get-CIPPCalendarPerms
- Get-CIPPContacts
- Get-CIPPExchangeTransportRuleTemplates
- Get-CIPPMailboxes
- Get-CIPPMailboxMobileDevices
- Get-CIPPMailboxPermissions
- Get-CIPPMailboxRules
- Get-CIPPMailQuarantine
- Get-CIPPOutOfOffice
- Get-CIPPUserMailboxDetails
- Get-CIPPUserMailboxRules
- Remove-CIPPContact
- Set-CIPPCalendarPermissions
- Set-CIPPContact
- Set-CIPPCopyToSent
- Set-CIPPEnableArchive
- Set-CIPPHideFromGAL
- Set-CIPPMailboxForwarding
- Set-CIPPMailboxMobileDevices
- Set-CIPPMailboxPermissions
- Set-CIPPMailboxQuota
- Set-CIPPOOO
- Set-CIPPQuarantineManagement
- Start-CIPPManagedFolderAssistant
- Reports
- Resources
- Spamfilter
- Tools
- Transport
- Get-CIPPExchangeConnectors
- Get-CIPPExchangeConnectorTemplates
- Get-CIPPTransportRule
- Get-CIPPTransportRulesTemplates
- Remove-CIPPConnectionFilterTemplate
- Remove-CIPPExConnector
- Remove-CIPPExConnectorTemplate
- Remove-CIPPSpamFilter
- Remove-CIPPSpamFilterTemplate
- Remove-CIPPTransportRule
- Remove-CIPPTransportRuleTemplate
- Set-CIPPExchConnector
- Set-CIPPTransportRule
- Add-CIPPContact
- Add-CIPPExchConnector
- Add-CIPPExchTransportRule
- Add-CIPPRoomMailbox
- Add-CIPPSharedMailbox
- Convert-CIPPMailbox
- Get-CIPPCalendarPerms
- Get-CIPPContacts
- Get-CIPPExchangeTransportRuleTemplates
- Get-CIPPMailboxes
- Get-CIPPMailboxMobileDevices
- Get-CIPPMailboxPermissions
- Get-CIPPMailboxRules
- Get-CIPPMailQuarantine
- Get-CIPPOutOfOffice
- Get-CIPPUserMailboxDetails
- Get-CIPPUserMailboxRules
- Remove-CIPPContact
- Set-CIPPCalendarPermissions
- Set-CIPPContact
- Set-CIPPCopyToSent
- Set-CIPPEnableArchive
- Set-CIPPHideFromGAL
- Set-CIPPMailboxForwarding
- Set-CIPPMailboxMobileDevices
- Set-CIPPMailboxPermissions
- Set-CIPPMailboxQuota
- Set-CIPPOOO
- Set-CIPPQuarantineManagement
- Start-CIPPManagedFolderAssistant
- Get-CIPPEnabledSharedMailboxes
- Get-CIPPGlobalAddressList
- Get-CIPPMailboxCAS
- Get-CIPPMailboxStatistics
- Get-CIPPRoomLists
- Get-CIPPRooms
- Get-CIPPAntiPhishingFilter
- Get-CIPPMalwareFilter
- Get-CIPPPhishPolicies
- Get-CIPPSafeAttachmentFilter
- Get-CIPPSafeLinkFilter
- Get-CIPPSpamFilter
- Get-CIPPSpamFilterTemplates
- Get-CIPPTenantAllowBlockList
- Set-CIPPSpamFilter
- Get-CIPPMailboxRestores
- Get-CIPPMessageTrace
- Get-CIPPExchangeConnectors
- Get-CIPPExchangeConnectorTemplates
- Get-CIPPTransportRule
- Get-CIPPTransportRulesTemplates
- Remove-CIPPConnectionFilterTemplate
- Remove-CIPPExConnector
- Remove-CIPPExConnectorTemplate
- Remove-CIPPSpamFilter
- Remove-CIPPSpamFilterTemplate
- Remove-CIPPTransportRule
- Remove-CIPPTransportRuleTemplate
- Set-CIPPExchConnector
- Set-CIPPTransportRule
- Applications
- Autopilot
- MEM
- Reports
- Get-CIPPApps
- Get-CIPPAppStatus
- Remove-CIPPIntuneApp
- Remove-CIPPQueuedApp
- Get-CIPPAPDevices
- Get-CIPPAutoPilotConfig
- Remove-CIPPAPDevice
- Set-CIPPAutoPilotSync
- Get-CIPPDeviceDetails
- Get-CIPPGetBitLockerKey
- Get-CIPPIntuneIntents
- Get-CIPPIntunePolicy
- Get-CIPPIntuneTemplates
- Get-CIPPLocalAdminPassword
- Remove-CIPPIntuneScript
- Remove-CIPPIntuneTemplate
- Remove-CIPPMEMPolicy
- Set-CIPPDeviceAction
- Set-CIPPMEMPolicy
- Get-CIPPDevices
- HaloPSA
- NinjaOne
- Settings
- Get-CIPPExtensionMapping
- Set-CIPPExtensionMappingHaloPSA
- Set-CIPPNinjaOneQueue
- Get-CIPPExtensionsConfig
- Administration
- Reports
- Devices
- Groups
- Users
- Add-CIPPUser
- Get-CIPPBECCheck
- Get-CIPPDeletedItems
- Get-CIPPPerUserMFA
- Get-CIPPUniversalSearch
- Get-CIPPUserCAPolicies
- Get-CIPPUserCounts
- Get-CIPPUserDevices
- Get-CIPPUserGroups
- Get-CIPPUserPhoto
- Get-CIPPUsers
- Get-CIPPUserSignIns
- New-CIPPUserOffboarding
- Remove-CIPPUser
- Send-CIPPPush
- Set-BECRemediate
- Set-CIPPClrImmID
- Set-CIPPCreateTap
- Set-CIPPResetPassword
- Set-CIPPRestoreDeletedUser
- Set-CIPPRevokeSessions
- Set-CIPPSignInStatus
- Set-CIPPUser
- Start-CIPPUserOffboarding
- Get-CIPPRoles
- Get-CIPPGroups
- Get-CIPPGroupTemplates
- Remove-CIPPGroup
- Remove-CIPPGroupTemplate
- Set-CIPPGroupDeliveryManagement
- Set-CIPPGroupHideFromGAL
- Add-CIPPUser
- Get-CIPPBECCheck
- Get-CIPPDeletedItems
- Get-CIPPPerUserMFA
- Get-CIPPUniversalSearch
- Get-CIPPUserCAPolicies
- Get-CIPPUserCounts
- Get-CIPPUserDevices
- Get-CIPPUserGroups
- Get-CIPPUserPhoto
- Get-CIPPUsers
- Get-CIPPUserSignIns
- New-CIPPUserOffboarding
- Remove-CIPPUser
- Send-CIPPPush
- Set-BECRemediate
- Set-CIPPClrImmID
- Set-CIPPCreateTap
- Set-CIPPResetPassword
- Set-CIPPRestoreDeletedUser
- Set-CIPPRevokeSessions
- Set-CIPPSignInStatus
- Set-CIPPUser
- Start-CIPPUserOffboarding
- Get-CIPPBasicAuth
- Get-CIPPInactiveAccounts
- Get-CIPPMFAUsers
- Get-CIPPSignIns
- Defender
- Incidents
- Reports
- Get-CIPPDefenderState
- Get-CIPPDefenderTVM
- Get-CIPPAlertsList
- Get-CIPPAlertsQueue
- Get-CIPPIncidentList
- Get-CIPPBreachesAccount
- Get-CIPPBreachesTenant
- Get-CIPPBreachSearch
- Get-CIPPDeviceCompliance
- OneDrive
- Sharepoint
- Teams
- Get-CIPPOneDriveList
- Set-CIPPOneDrivePerms
- Set-CIPPOneDriveShortCut
- Add-CIPPSharePointSite
- Get-CIPPSharePointQuota
- Get-CIPPSharePointSites
- Set-CIPPSharePointSiteAdmin
- Set-CIPPSharePointSiteMembers
- Add-CIPPTeam
- Get-CIPPTeams
- Get-CIPPTeamsActivity
- Get-CIPPTeamsVoice
- Administration
- Conditional
- GDAP
- Reports
- Standards
- Tools
- Alerts
- Application Approval
- Licenses
- Tenant
- Get-CIPPAppConsentReqs
- Get-CIPPDomains
- Get-CIPPTenantOnboarding
- Remove-CIPPTenantAllowBlockList
- Get-CIPPAlerts
- Get-CIPPAuditLog
- Get-CIPPCSPLicenses
- Get-CIPPCSPSku
- Set-CIPPCSPLicense
- Get-CIPPADConnectStatus
- Get-CIPPOrg
- Get-CIPPPartnerRelationships
- Get-CIPPTenantDetails
- Get-CIPPTenants
- Get-CIPPCAPolicies
- Get-CIPPCATemplates
- Get-CIPPNamedLocations
- Remove-CIPPCAPolicy
- Remove-CIPPCATemplate
- Set-CIPPCAPolicy
- Get-CIPPGDAPInvite
- Get-CIPPGDAPRoles
- New-CIPPGDAPInvite
- Remove-CIPPGDAPRelationship
- Get-CIPPLicenses
- Get-CIPPOAuthApps
- Get-CIPPServiceHealth
- Get-CIPPBPA
- Get-CIPPBPATemplates
- Get-CIPPDomainAnalyser
- Get-CIPPDomainHealth
- Get-CIPPStandards
- Remove-CIPPBPATemplate
- Remove-CIPPStandard
- Remove-CIPPStandardTemplate
- Set-CIPPStandardsRun
- Get-CIPPAuditLogTest
- Get-CIPPExternalGEOIPLookup
- Get-CIPPExternalTenantInfo
- Get-CIPPGraphRequest
Below are some examples for some generic requests
Invoke-CIPPRestMethod -Endpoint '/api/Listusers' -Method 'GET' -Params @{ 'tenantfilter' = '11c11ab1-527a-1d29-l92e-76413h012s76' }
This example sends a GET request to the '/api/Listusers' endpoint with a query parameter 'tenantfilter' set to '11c11ab1-527a-1d29-l92e-76413h012s76'.
Invoke-CIPPRestMethod -Endpoint '/api/ListMailboxPermissions' -Params @{ 'tenantfilter' = 'M365x72601982.onmicrosoft.com', 'userid' = '11c11ab1-527a-1d29-l92e-76413h012s76'}
This example sends a GET request to the '/api/ListMailboxPermissions' endpoint with a query parameter 'tenantfilter' set to 'M365x72601982.onmicrosoft.com' and 'userid' set to '11c11ab1-527a-1d29-l92e-76413h012s76'
Invoke-CIPPRestMethod -Endpoint '/api/adduser' -method 'POST' -Body @{ 'tenantID' = '11c11ab1-527a-1d29-l92e-76413h012s76';'DisplayName' = 'Test User';'UserName' = 'testuser';'AutoPassword' = $true;'FirstName' = 'Test';'LastName' = 'User';'Domain' = 'M365x72601982.onmicrosoft.com';'CopyFrom' = "" }
This example sends a POST request to the '/api/adduser' endpoint with a Body 'tenantID' set to '11c11ab1-527a-1d29-l92e-76413h012s76' and 'DisplayName' set to 'Test User', 'UserName' set to 'testuser', 'AutoPassword' set to $true, 'FirstName' set to 'Test', 'LastName' set to 'User', 'Domain' set to 'M365x72601982.onmicrosoft.com'
Some example scripts can be found Below:
- Get-AllTenants-Licenses.ps1
- Get-AllTenants-SharedMailboxesEnabledAccount.ps1
- Get-AllTenants-SoftDeletedMailboxes.ps1
- Get-AllTenants-LicensedUsers.ps1
Special thanks to @KelvinTegelaar, @JohnDuprey, @rvdwegen and @Jr7468. I Could not have got this far without you!