From d0ec65ea07ce03c1d4cc497627ed65baa382cf57 Mon Sep 17 00:00:00 2001 From: "jamel@microsoft.com" Date: Fri, 17 Feb 2023 08:37:08 -0800 Subject: [PATCH] New-Examples-Round2 upload --- .../Collect Logs to Cloud.ps1 | 39 + .../CollectDeviceLogs/Collect-DeviceLogs.ps1 | 295 ++++++ .../docs/CollectDeviceLogs.jpg | Bin 0 -> 20351 bytes .../docs/CollectDeviceLogs.md | 26 + .../ProvisionWin32App/Provision-Win32App.ps1 | 898 ++++++++++++++++++ .../docs/CreateIntunewinFile.png | Bin 0 -> 111900 bytes .../docs/ProvisionWin32App.jpg | Bin 0 -> 16930 bytes .../docs/ProvisionWin32App.md | 29 + .../Verify-DeleteIntuneObjects.ps1 | 160 ++++ .../docs/VerifyDeletionAutomation.jpg | Bin 0 -> 16769 bytes .../docs/VerifyDeletionAutomation.md | 25 + 11 files changed, 1472 insertions(+) create mode 100644 CollectSCCMDeviceLogsAutomation/CollectDeviceLogs/Collect Logs to Cloud.ps1 create mode 100644 CollectSCCMDeviceLogsAutomation/CollectDeviceLogs/Collect-DeviceLogs.ps1 create mode 100644 CollectSCCMDeviceLogsAutomation/docs/CollectDeviceLogs.jpg create mode 100644 CollectSCCMDeviceLogsAutomation/docs/CollectDeviceLogs.md create mode 100644 ProvisionWin32AppAutomation/ProvisionWin32App/Provision-Win32App.ps1 create mode 100644 ProvisionWin32AppAutomation/docs/CreateIntunewinFile.png create mode 100644 ProvisionWin32AppAutomation/docs/ProvisionWin32App.jpg create mode 100644 ProvisionWin32AppAutomation/docs/ProvisionWin32App.md create mode 100644 VerifyDeletionAutomation/VerifyDeleteIntuneObjects/Verify-DeleteIntuneObjects.ps1 create mode 100644 VerifyDeletionAutomation/docs/VerifyDeletionAutomation.jpg create mode 100644 VerifyDeletionAutomation/docs/VerifyDeletionAutomation.md diff --git a/CollectSCCMDeviceLogsAutomation/CollectDeviceLogs/Collect Logs to Cloud.ps1 b/CollectSCCMDeviceLogsAutomation/CollectDeviceLogs/Collect Logs to Cloud.ps1 new file mode 100644 index 0000000..b293449 --- /dev/null +++ b/CollectSCCMDeviceLogsAutomation/CollectDeviceLogs/Collect Logs to Cloud.ps1 @@ -0,0 +1,39 @@ +param +( +    [Parameter(Mandatory=$true)] +    $EscapedSASToken, +    [Parameter(Mandatory=$true)] +    $StorageURL, +    [Parameter(Mandatory=$true)] +    $FilesOrFolders +)  +$ErrorActionPreference = 'Stop' +$ProgressPreference = 'SilentlyContinue' +$SASToken =  [uri]::UnescapeDataString($EscapedSASToken)  + +$FilesOrFoldersColletion =  $FilesOrFolders.Split(',', [StringSplitOptions]::RemoveEmptyEntries) +foreach ($FileOrFolder in $FilesOrFoldersColletion) +{ +    if ((Test-Path -Path $FileOrFolder) -eq $false) +    { +        Write-Warning "'$FileOrFolders' does not exist" +        continue +    } +    $Headers = @{ +        'x-ms-blob-type' = 'BlockBlob' +    } +    $FilesToUpload = Get-ChildItem -Path $FileOrFolder -Recurse |  Where-Object { ! $_.PSIsContainer } | %{$_.FullName} +    foreach ($File in $FilesToUpload) +    { +        $Uri = "{0}/$env:COMPUTERNAME/{1}{2}" -f $StorageURL, $File , $SASToken +        try  +        { +           Invoke-RestMethod  -Uri $Uri -Method Put -Headers $Headers -InFile $File | Out-Null +        } +        catch  +        { +            #file is being used by another process. +        } +    } +    Write-Output "File(s) Uploaded" +} \ No newline at end of file diff --git a/CollectSCCMDeviceLogsAutomation/CollectDeviceLogs/Collect-DeviceLogs.ps1 b/CollectSCCMDeviceLogsAutomation/CollectDeviceLogs/Collect-DeviceLogs.ps1 new file mode 100644 index 0000000..5c8a019 --- /dev/null +++ b/CollectSCCMDeviceLogsAutomation/CollectDeviceLogs/Collect-DeviceLogs.ps1 @@ -0,0 +1,295 @@ +<# +.SYNOPSIS + Colect Device Logs from a Collection ID or Device Name in SCCM +.DESCRIPTION + Powershell script used to collect device logs from user devices from SCCM. + It works by connecting to SCCM, running a Powershell script called Collect Logs to Cloud + stored in SCCM on each device collecting specific logs, connecting to an Azure Storage + Account with an MSI using Client Id, and then sending the logs to the Storage Account. An + HTML Report is also generated in the local filepath with the results. +.PARAMETER SiteCode + SCCM Site Code +.PARAMETER SiteServer + SCCM Site Server +.PARAMETER StorageAccountName + Name of Azure Storage Account +.PARAMETER StorageAccountResourceGroup + Name of Azure Storage Account Resource Group +.PARAMETER Container + Name of Container in Azure Storage Account +.PARAMETER ClientId + Azure MSI Client Id used to get the Storage Account Access Token +.NOTES + Version: 1.0 + Creation date: 02/09/2023 + Purpose/Change: Open Source example +#> + +$ErrorActionPreference = "Stop" +$SiteCode = "" #Enter SCCM Site Code +$SiteServer = "" #Enter SCCM Site Server Fully Qualified Domain Name +$Namespace = "root\sms\site_$SiteCode" +$StorageAccountName = "" #Enter Azure Storage Account Name where logs will be sent +$StorageAccountResourceGroup = "" #Enter Azure Storage Account Resource Group Name where logs will be sent +$Container = "" #Enter Azure Storage Account Container Name where logs will be sent +$StorageURL = "https://$($StorageAccountName).blob.core.windows.net/$($Container)" +enum EnumExecutionState +{ + Succeeded = 1 + Failed = 2 +} +function Create-HTMLTable +{ + param( + [Parameter(Mandatory)] + $TableData + ) + $CSS = "" + + return ($TableData | ConvertTo-HTML -as Table -Fragment -PreContent $CSS | Out-String) +} +function Connect-ConfigMgrProvider($SiteCode, $SiteServer) +{ + $initParams = @{} + $Module = (Get-Item $env:SMS_ADMIN_UI_PATH).Parent.FullName + "\ConfigurationManager.psd1" + Import-Module $Module @initParams + + if ((Get-PSDrive -Name $SiteCode -PSProvider CMSite -ErrorAction SilentlyContinue) -eq $null) { + New-PSDrive -Name $SiteCode -PSProvider CMSite -Root $SiteServer -Scope Script @initParams | Out-Null + } + Set-Location "$($SiteCode):\" @initParams | Out-Null +} +function Get-MsiAccessToken +{ + param + ( + [Parameter(Mandatory=$true)] + [Validateset("https://graph.microsoft.com","https://vault.azure.net","https://management.azure.com","https://database.windows.net")] + $ResourceUri, + [Parameter(Mandatory=$true)] + $ClientId + ) + $msiEndpoint = "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=$($ResourceUri)&client_id=$($ClientId)" + $response = Invoke-WebRequest -Uri $msiEndpoint -Headers @{"Metadata"= $true} -UseBasicParsing + $responseJson = ConvertFrom-Json -InputObject $response + $AccessToken = $responseJson.access_token + return $AccessToken +} +function Get-SASToken($StorageAccountName, $StorageAccountResourceGroup) +{ + $ClientId = "" #Enter MSI Client Id with access to the Azure Storage Account + $AccessToken = Get-MsiAccessToken -ResourceUri https://management.azure.com -ClientId $ClientId + Connect-AzAccount -AccessToken $AccessToken -AccountId $ManagedIdentity | Out-Null + $StorageAccountAccessKey = (Get-AzStorageAccountKey -ResourceGroupName $StorageAccountResourceGroup -Name $StorageAccountName).Value[0] + $StorageContext = New-AzStorageContext $StorageAccountName -StorageAccountKey $StorageAccountAccessKey + New-AzStorageAccountSASToken -Context $StorageContext -Service Blob -ResourceType Object -Permission "rw" -ExpiryTime (Get-Date).AddHours(1) +} +function WaitToComplete($OperationId) +{ + Write-Output "OperationId - $($OperationId) - checking Runscript execution status" + #Get script output, wait a maximum of 30 minutes + $pollTimeOut = (Get-Date).AddMinutes(30) + do + { + $ExecutionStatuses = Get-CimInstance -ComputerName $SiteServer -Namespace $Namespace -ClassName SMS_ScriptsExecutionStatus -Filter "ClientOperationID = '$OperationId'" + if ($ExecutionStatuses) + { + Write-Output "RunScript Execution Completed : OperationId - $($OperationId)" + return $ExecutionStatuses + } + + Write-Output "OperationId - $($OperationId) - Sleeping for 15 seconds for check Runscript execution status" + Start-Sleep -Seconds 15 + } + while ((Get-date) -le $pollTimeOut) + Write-Output "OperationId - $($OperationId) - Get Runscript execution status timedout" +} +function Collect-Log ($TargetSources, $FilesOrFolders) +{ + Begin + { + Write-Output "Executing Collect-Logs script" + Write-Output "TargetSources : $TargetSources, FilesOrFolders : $FilesOrFolders" + $TargetSourcesColletion = $TargetSources.Split(',', [StringSplitOptions]::RemoveEmptyEntries) + $FilesOrFoldersColletion = $FilesOrFolders.Split(',', [StringSplitOptions]::RemoveEmptyEntries).ToLowerInvariant() + $AllowedFolders = 'c:\windows\ccm\logs,c:\windows\ccmsetup\logs' + foreach ($Folder in $FilesOrFoldersColletion) + { + if ($AllowedFolders.Contains($Folder) -eq $false) + { + Write-Error "Folder : '$Folder' not in scope to collect device log" + break + } + } + #Connect to SCCM + Connect-ConfigMgrProvider -SiteCode $SiteCode -SiteServer $SiteServer + $TargetCollections = @() + $TargetDevices = @() + foreach ($TargetSource in $TargetSourcesColletion) + { + $Collection = Get-CMCollection -CollectionId $TargetSource + if ([string]::IsNullOrEmpty($Collection)) + { + $Device = Get-CMDevice -Name $TargetSource -Fast + if ([string]::IsNullOrEmpty($Device)) + { + Write-Error "'$TargetSource' is not valid Device or Collection" + } + else + { + $TargetDevices += $Device + } + } + else + { + $TargetCollections += $TargetSource + } + } + $SASToken = Get-SASToken -StorageAccountName $StorageAccountName -StorageAccountResourceGroup $StorageAccountResourceGroup + $RunScriptName = "Collect Logs to Cloud" #This file needs to be uploaded to SCCM + Write-Output "Getting CM Script '$RunScriptName' from ConfigManager" + $ScriptGuid = (Get-CMScript -ScriptName $RunScriptName -Fast).ScriptGuid + if ([string]::IsNullOrEmpty($ScriptGuid)) + { + Write-Error "No Script found with the name '$RunScriptName' in the ConfigMgr Script Repository" + break + } + } + Process + { + $EscapedSASToken = [uri]::EscapeDataString($SASToken) + $Parameters = @{ + "EscapedSASToken" = "$EscapedSASToken" + "StorageURL" = "$StorageURL" + "FilesOrFolders" = "$FilesOrFolders" + } + $ExecutionResults = @() + $CollectionOperationResults = @() + $DeviceOperationResults = @() + $CollectionExecutionStatuses = @() + $DeviceExecutionStatuses = @() + foreach ($TargetCollection in $TargetCollections) + { + Write-Output "Invoking Runscript on Config Manager for Collection $($TargetCollection)" + $OperationId = (Invoke-CMScript -CollectionId $TargetCollection -ScriptGuid $ScriptGuid -ScriptParameter $Parameters -PassThru).OperationID + Write-Output "Runscript Invoked on Config Manager for Collection $($TargetCollection) with OperationId: $($OperationId)" + $Record = New-Object PSObject + $Record | Add-Member -type NoteProperty -Name 'Collection' -Value $TargetCollection + $Record | Add-Member -type NoteProperty -Name 'OperationId' -Value $OperationId + $CollectionOperationResults += $Record + } + foreach ($TargetDevice in $TargetDevices) + { + Write-Output "Invoking Runscript on Config Manager for Device $($TargetDevice.Name)" + $OperationId = (Invoke-CMScript -Device $TargetDevice -ScriptGuid $ScriptGuid -ScriptParameter $Parameters -PassThru).OperationID + Write-Output "Runscript Invoked on Config Manager for Device $($TargetDevice.Name) with OperationId: $($OperationId)" + $Record = New-Object PSObject + $Record | Add-Member -type NoteProperty -Name 'Device' -Value $TargetDevice.Name + $Record | Add-Member -type NoteProperty -Name 'OperationId' -Value $OperationId + $DeviceOperationResults += $Record + } + # Check execution status + foreach ($DeviceOperation in $DeviceOperationResults) + { + $ExecutionStatuses = WaitToComplete -OperationId $DeviceOperation.OperationId + $Record = New-Object PSObject + $Record | Add-Member -type NoteProperty -Name 'Device' -Value $DeviceOperation.Device + $Record | Add-Member -type NoteProperty -Name 'OperationId' -Value $DeviceOperation.OperationId + $Record | Add-Member -type NoteProperty -Name 'ExecutionStatuses' -Value $ExecutionStatuses + $DeviceExecutionStatuses += $Record + } + foreach ($CollectionOperation in $CollectionOperationResults) + { + $ExecutionStatuses = WaitToComplete -OperationId $CollectionOperation.OperationId + $Record = New-Object PSObject + $Record | Add-Member -type NoteProperty -Name 'Collection' -Value $CollectionOperation.Collection + $Record | Add-Member -type NoteProperty -Name 'OperationId' -Value $CollectionOperation.OperationId + $Record | Add-Member -type NoteProperty -Name 'ExecutionStatuses' -Value $ExecutionStatuses + $CollectionExecutionStatuses += $Record + } + $Body = "RunScript : $RunScriptName, Target Source : $TargetSources" + #Prepare report for Collection + foreach ($CollectionExecutionStatus in $CollectionExecutionStatuses) + { + $ExecutionResults = @() + Write-Output "Fetching collection members" + $CollectionMembers = (Get-CMCollectionMember -CollectionId $CollectionExecutionStatus.Collection).Name + Write-Output "Checking Runscript execution status for each members for collection : $($CollectionExecutionStatus.Collection)" + foreach ($Member in $CollectionMembers) + { + $ExecutionStatus = $CollectionExecutionStatus.ExecutionStatuses | Where-Object { $_.DeviceName -eq $Member } + if ($ExecutionStatus -ne $null) + { + $ExecutionResults += [PSCustomObject] @{DeviceName = $($ExecutionStatus).DeviceName + ExecutionState = ([EnumExecutionState]$($ExecutionStatus).ScriptExecutionState).ToString() + ExitCode = $($ExecutionStatus).ScriptExitCode + ScriptOutput = $($ExecutionStatus).ScriptOutput + } + } + else + { + $ExecutionResults += [PSCustomObject] @{DeviceName = $Member + ExecutionState = 'Unknown' + ExitCode = 'Unknown' + ScriptOutput = 'NA' + } + } + } + $ExecTask = Get-CimInstance -ComputerName $SiteServer -Namespace $Namespace -ClassName SMS_ScriptsExecutionTask -Filter "ClientOperationID = '$($CollectionExecutionStatus.OperationId)'" + $OverAllResult = [PSCustomObject] @{Completed = $($ExecTask.CompletedClients) + NotApplicable = $($ExecTask.NotApplicableClients) + Failed = $($ExecTask.FailedClients) + Unknown = $($ExecTask.UnknownClients) + Offline = $($ExecTask.OfflineClients) + } + $OverAllResultTable = Create-HTMLTable -TableData $OverAllResult + $ExecutionResultTable = Create-HTMLTable -TableData $ExecutionResults + $Body += "

Overall Script Execution Status : Collection $($CollectionExecutionStatus.Collection)

" + $Body += $OverAllResultTable + $Body += "

Client Execution Status : Collection $($CollectionExecutionStatus.Collection)

" + $Body += $ExecutionResultTable + } + #Prepare report for Devices + foreach ($DeviceExecutionStatus in $DeviceExecutionStatuses) + { + $ExecutionResults = @() + $ExecutionStatus = $DeviceExecutionStatus.ExecutionStatuses + if ($ExecutionStatus -ne $null) + { + $ExecutionResults += [PSCustomObject] @{DeviceName = $($ExecutionStatus).DeviceName + ExecutionState = ([EnumExecutionState]$($ExecutionStatus).ScriptExecutionState).ToString() + ExitCode = $($ExecutionStatus).ScriptExitCode + ScriptOutput = $($ExecutionStatus).ScriptOutput + } + } + else + { + $ExecutionResults += [PSCustomObject] @{DeviceName = $Member + ExecutionState = 'Unknown' + ExitCode = 'Unknown' + ScriptOutput = 'NA' + } + } + $ExecutionResultTable = Create-HTMLTable -TableData $ExecutionResults + $Body += "

Individual Device Execution Status

" + $Body += $ExecutionResultTable + } + $Body += "

Files Uploaded to Storage Account : $($StorageURL)" + Write-Output "Collect-Logs Script Execution Completed" + $Body | ConvertTo-Html | Out-File -FilePath .\Collect-DeviceLogs-Report.html + } + End + { + Get-Content $global:LogFileName -ErrorAction SilentlyContinue + Remove-Item -Path $global:LogFileName -Force -ErrorAction SilentlyContinue + } +} +$TargetSources = "" #Comma separated list of SCCM Collection Ids or Device Names to collect logs from +$FilesOrFolders = "" #Comma separated list of Files/Folders Path to collect the logs from +Collect-Log -TargetSources $TargetSources -FilesOrFolders $FilesOrFolders \ No newline at end of file diff --git a/CollectSCCMDeviceLogsAutomation/docs/CollectDeviceLogs.jpg b/CollectSCCMDeviceLogsAutomation/docs/CollectDeviceLogs.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6e8af6c4efa179441e4d96258b107d31a45f272f GIT binary patch literal 20351 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 + +function Get-MsiAuthHeaders +{ + param + ( + [Parameter(Mandatory=$true)] + [Validateset("https://graph.microsoft.com","https://vault.azure.net","https://management.azure.com","https://database.windows.net")] + $ResourceUri, + [Parameter(Mandatory=$true)] + $ClientId + ) + + $msiEndpoint = "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=$($ResourceUri)&client_id=$($ClientId)" + $response = Invoke-WebRequest -Uri $msiEndpoint -Headers @{"Metadata"= $true} -UseBasicParsing + $responseJson = ConvertFrom-Json -InputObject $response + $AccessToken = $responseJson.access_token + $Headers = @{ + 'Content-Type'='application/json' + 'Authorization'="Bearer " + $AccessToken + } + return $Headers +} +  +function CloneObject($object) +{ + $stream = New-Object IO.MemoryStream; + $formatter = New-Object Runtime.Serialization.Formatters.Binary.BinaryFormatter; + $formatter.Serialize($stream, $object); + $stream.Position = 0; + $formatter.Deserialize($stream); +} + +function WriteHeaders($headers) +{ + foreach ($header in $headers.GetEnumerator()) + { + if ($header.Name.ToLower() -eq "authorization") + { + continue; + } + Write-Host -ForegroundColor Gray "$($header.Name): $($header.Value)"; + } +} + +function MakeGetRequest($collectionPath) +{ + $uri = "$baseUrl$collectionPath"; + $request = "GET $uri"; + + if ($logRequestUris) { Write-Host $request; } + if ($logHeaders) { WriteHeaders $headers; } + + try + { + $response = Invoke-RestMethod $uri -Method Get -Headers $headers; + $response; + } + catch + { + Write-Host -ForegroundColor Red $request; + Write-Host -ForegroundColor Red $_.Exception.Message; + throw; + } +} + +function MakePatchRequest($collectionPath, $body) +{ + MakeRequest "PATCH" $collectionPath $body; +} + +function MakePostRequest($collectionPath, $body) +{ + MakeRequest "POST" $collectionPath $body; +} + +function MakeRequest($verb, $collectionPath, $body) +{ + $uri = "$baseUrl$collectionPath"; + $request = "$verb $uri"; + + $clonedHeaders = CloneObject $headers; + $clonedHeaders["content-length"] = $body.Length; + $clonedHeaders["content-type"] = "application/json"; + + if ($logRequestUris) { Write-Host $request; } + if ($logHeaders) { WriteHeaders $clonedHeaders; } + if ($logContent) { Write-Host -ForegroundColor Gray $body; } + + try + { + $response = Invoke-RestMethod $uri -Method $verb -Headers $clonedHeaders -Body $body; + $response; + } + catch + { + Write-Host -ForegroundColor Red $request; + Write-Host -ForegroundColor Red $_.Exception.Message; + throw; + } +} + +function UploadAzureStorageChunk($sasUri, $id, $body) +{ + $uri = "$sasUri&comp=block&blockid=$id"; + $request = "PUT $uri"; + + $iso = [System.Text.Encoding]::GetEncoding("iso-8859-1"); + $encodedBody = $iso.GetString($body); + $headers = @{ + "x-ms-blob-type" = "BlockBlob" + }; + + if ($logRequestUris) { Write-Host $request; } + if ($logHeaders) { WriteHeaders $headers; } + + try + { + $response = Invoke-WebRequest $uri -Method Put -Headers $headers -Body $encodedBody; + } + catch + { + Write-Host -ForegroundColor Red $request; + Write-Host -ForegroundColor Red $_.Exception.Message; + throw; + } +} + +function FinalizeAzureStorageUpload($sasUri, $ids) +{ + $uri = "$sasUri&comp=blocklist"; + $request = "PUT $uri"; + + $xml = ''; + foreach ($id in $ids) + { + $xml += "$id"; + } + $xml += ''; + + if ($logRequestUris) { Write-Host $request; } + if ($logContent) { Write-Host -ForegroundColor Gray $xml; } + + try + { + Invoke-RestMethod $uri -Method Put -Body $xml; + } + catch + { + Write-Host -ForegroundColor Red $request; + Write-Host -ForegroundColor Red $_.Exception.Message; + throw; + } +} + +function UploadFileToAzureStorage($sasUri, $filepath, $fileUri) +{ + try { + + $chunkSizeInBytes = 1024l * 1024l * $azureStorageUploadChunkSizeInMb; + + # Start the timer for SAS URI renewal. + $sasRenewalTimer = [System.Diagnostics.Stopwatch]::StartNew() + + # Find the file size and open the file. + $fileSize = (Get-Item $filepath).length; + $chunks = [Math]::Ceiling($fileSize / $chunkSizeInBytes); + $reader = New-Object System.IO.BinaryReader([System.IO.File]::Open($filepath, [System.IO.FileMode]::Open)); + $position = $reader.BaseStream.Seek(0, [System.IO.SeekOrigin]::Begin); + + # Upload each chunk. Check whether a SAS URI renewal is required after each chunk is uploaded and renew if needed. + $ids = @(); + + for ($chunk = 0; $chunk -lt $chunks; $chunk++){ + + $id = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($chunk.ToString("0000"))); + $ids += $id; + + $start = $chunk * $chunkSizeInBytes; + $length = [Math]::Min($chunkSizeInBytes, $fileSize - $start); + $bytes = $reader.ReadBytes($length); + + $currentChunk = $chunk + 1; + + Write-Progress -Activity "Uploading File to Azure Storage" -status "Uploading chunk $currentChunk of $chunks" ` + -percentComplete ($currentChunk / $chunks*100) + + $uploadResponse = UploadAzureStorageChunk $sasUri $id $bytes; + + # Renew the SAS URI if 7 minutes have elapsed since the upload started or was renewed last. + if ($currentChunk -lt $chunks -and $sasRenewalTimer.ElapsedMilliseconds -ge 450000){ + $renewalResponse = RenewAzureStorageUpload $fileUri; + $sasRenewalTimer.Restart(); + } + } + + Write-Progress -Completed -Activity "Uploading File to Azure Storage" + + $reader.Close(); + } + finally { + if ($reader -ne $null) { $reader.Dispose(); } + } + + # Finalize the upload. + $uploadResponse = FinalizeAzureStorageUpload $sasUri $ids; +} + +function RenewAzureStorageUpload($fileUri) +{ + $renewalUri = "$fileUri/renewUpload"; + $actionBody = ""; + $rewnewUriResult = MakePostRequest $renewalUri $actionBody; + $file = WaitForFileProcessing $fileUri "AzureStorageUriRenewal" $azureStorageRenewSasUriBackOffTimeInSeconds; +} + +function WaitForFileProcessing($fileUri, $stage) +{ + $attempts= 60; + $waitTimeInSeconds = 1; + + $successState = "$($stage)Success"; + $pendingState = "$($stage)Pending"; + $failedState = "$($stage)Failed"; + $timedOutState = "$($stage)TimedOut"; + + $file = $null; + while ($attempts -gt 0) + { + $file = MakeGetRequest $fileUri; + + if ($file.uploadState -eq $successState) + { + break; + } + elseif ($file.uploadState -ne $pendingState) + { + Write-Host -ForegroundColor Red $_.Exception.Message; + throw "File upload state is not success: $($file.uploadState)"; + } + + Start-Sleep $waitTimeInSeconds; + $attempts--; + } + + if ($file -eq $null -or $file.uploadState -ne $successState) + { + throw "File request did not complete in the allotted time."; + } + + $file; +} + +function GetWin32AppBody() +{ +param +( + +[parameter(Mandatory=$true,ParameterSetName = "MSI",Position=1)] +[Switch]$MSI, + +[parameter(Mandatory=$true,ParameterSetName = "EXE",Position=1)] +[Switch]$EXE, + +[parameter(Mandatory=$true)] +[ValidateNotNullOrEmpty()] +[string]$displayName, + +[parameter(Mandatory=$true)] +[ValidateNotNullOrEmpty()] +[string]$publisher, + +[parameter(Mandatory=$true)] +[ValidateNotNullOrEmpty()] +[string]$description, + +[parameter(Mandatory=$true)] +[ValidateNotNullOrEmpty()] +[string]$filename, + +[parameter(Mandatory=$true)] +[ValidateNotNullOrEmpty()] +[string]$SetupFileName, + +[parameter(Mandatory=$true)] +[ValidateSet('system','user')] +$installExperience = "system", + +[parameter(Mandatory=$true,ParameterSetName = "EXE")] +[ValidateNotNullOrEmpty()] +$installCommandLine, + +[parameter(Mandatory=$true,ParameterSetName = "EXE")] +[ValidateNotNullOrEmpty()] +$uninstallCommandLine, + +[parameter(Mandatory=$true,ParameterSetName = "MSI")] +[ValidateNotNullOrEmpty()] +$MsiPackageType, + +[parameter(Mandatory=$true,ParameterSetName = "MSI")] +[ValidateNotNullOrEmpty()] +$MsiProductCode, + +[parameter(Mandatory=$false,ParameterSetName = "MSI")] +$MsiProductName, + +[parameter(Mandatory=$true,ParameterSetName = "MSI")] +[ValidateNotNullOrEmpty()] +$MsiProductVersion, + +[parameter(Mandatory=$false,ParameterSetName = "MSI")] +$MsiPublisher, + +[parameter(Mandatory=$true,ParameterSetName = "MSI")] +[ValidateNotNullOrEmpty()] +$MsiRequiresReboot, + +[parameter(Mandatory=$true,ParameterSetName = "MSI")] +[ValidateNotNullOrEmpty()] +$MsiUpgradeCode + +) + + if($MSI){ + + $body = @{ "@odata.type" = "#microsoft.graph.win32LobApp" }; + $body.applicableArchitectures = "x64,x86"; + $body.description = $description; + $body.developer = ""; + $body.displayName = $displayName; + $body.fileName = $filename; + $body.installCommandLine = "msiexec /i `"$SetupFileName`"" + $body.installExperience = @{"runAsAccount" = "$installExperience"}; + $body.informationUrl = $null; + $body.isFeatured = $false; + $body.minimumSupportedOperatingSystem = @{"v10_1607" = $true}; + $body.msiInformation = @{ + "packageType" = "$MsiPackageType"; + "productCode" = "$MsiProductCode"; + "productName" = "$MsiProductName"; + "productVersion" = "$MsiProductVersion"; + "publisher" = "$MsiPublisher"; + "requiresReboot" = "$MsiRequiresReboot"; + "upgradeCode" = "$MsiUpgradeCode" + }; + $body.notes = ""; + $body.owner = ""; + $body.privacyInformationUrl = $null; + $body.publisher = $publisher; + $body.runAs32bit = $false; + $body.setupFilePath = $SetupFileName; + $body.uninstallCommandLine = "msiexec /x `"$MsiProductCode`"" + + } + elseif($EXE){ + $body = @{ "@odata.type" = "#microsoft.graph.win32LobApp" }; + $body.description = $description; + $body.developer = ""; + $body.displayName = $displayName; + $body.fileName = $filename; + $body.installCommandLine = "$installCommandLine" + $body.installExperience = @{"runAsAccount" = "$installExperience"}; + $body.informationUrl = $null; + $body.isFeatured = $false; + $body.minimumSupportedOperatingSystem = @{"v10_1607" = $true}; + $body.msiInformation = $null; + $body.notes = ""; + $body.owner = ""; + $body.privacyInformationUrl = $null; + $body.publisher = $publisher; + $body.runAs32bit = $false; + $body.setupFilePath = $SetupFileName; + $body.uninstallCommandLine = "$uninstallCommandLine" + } + $body; +} + +function GetAppFileBody($name, $size, $sizeEncrypted, $manifest) +{ + $body = @{ "@odata.type" = "#microsoft.graph.mobileAppContentFile" }; + $body.name = $name; + $body.size = $size; + $body.sizeEncrypted = $sizeEncrypted; + $body.manifest = $manifest; + $body.isDependency = $false; + $body; +} + +function GetAppCommitBody($contentVersionId, $LobType) +{ + $body = @{ "@odata.type" = "#$LobType" }; + $body.committedContentVersion = $contentVersionId; + $body; +} + +Function Test-SourceFile() +{ +param +( +    [parameter(Mandatory=$true)] +    [ValidateNotNullOrEmpty()] + $SourceFile +) + + try { + if(!(test-path "$SourceFile")){ + Write-Host "Source File '$sourceFile' doesn't exist..." -ForegroundColor Red + throw + } + } + + catch { + Write-Host -ForegroundColor Red $_.Exception.Message; + break + } +} + +Function New-DetectionRule() +{ +[cmdletbinding()] + +param +( + [parameter(Mandatory=$true,ParameterSetName = "PowerShell",Position=1)] + [Switch]$PowerShell, + + [parameter(Mandatory=$true,ParameterSetName = "MSI",Position=1)] + [Switch]$MSI, + + [parameter(Mandatory=$true,ParameterSetName = "File",Position=1)] + [Switch]$File, + + [parameter(Mandatory=$true,ParameterSetName = "Registry",Position=1)] + [Switch]$Registry, + + [parameter(Mandatory=$true,ParameterSetName = "PowerShell")] + [ValidateNotNullOrEmpty()] + [String]$ScriptFile, + + [parameter(Mandatory=$true,ParameterSetName = "PowerShell")] + [ValidateNotNullOrEmpty()] + $enforceSignatureCheck, + + [parameter(Mandatory=$true,ParameterSetName = "PowerShell")] + [ValidateNotNullOrEmpty()] + $runAs32Bit, + + [parameter(Mandatory=$true,ParameterSetName = "MSI")] + [ValidateNotNullOrEmpty()] + [String]$MSIproductCode, + + [parameter(Mandatory=$true,ParameterSetName = "File")] + [ValidateNotNullOrEmpty()] + [String]$Path, + + [parameter(Mandatory=$true,ParameterSetName = "File")] + [ValidateNotNullOrEmpty()] + [string]$FileOrFolderName, + + [parameter(Mandatory=$true,ParameterSetName = "File")] + [ValidateSet("notConfigured","exists","modifiedDate","createdDate","version","sizeInMB")] + [string]$FileDetectionType, + + [parameter(Mandatory=$false,ParameterSetName = "File")] + $FileDetectionValue = $null, + + [parameter(Mandatory=$true,ParameterSetName = "File")] + [ValidateSet("True","False")] + [string]$check32BitOn64System = "False", + + [parameter(Mandatory=$true,ParameterSetName = "Registry")] + [ValidateNotNullOrEmpty()] + [String]$RegistryKeyPath, + + [parameter(Mandatory=$true,ParameterSetName = "Registry")] + [ValidateSet("notConfigured","exists","doesNotExist","string","integer","version")] + [string]$RegistryDetectionType, + + [parameter(Mandatory=$false,ParameterSetName = "Registry")] + [ValidateNotNullOrEmpty()] + [String]$RegistryValue, + + [parameter(Mandatory=$true,ParameterSetName = "Registry")] + [ValidateSet("True","False")] + [string]$check32BitRegOn64System = "False" + +) + + if($PowerShell){ + + if(!(Test-Path "$ScriptFile")){ + Write-Host "Could not find file '$ScriptFile'..." -ForegroundColor Red + Write-Host "Script can't continue..." -ForegroundColor Red + Write-Host + break + } + + $ScriptContent = [System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes("$ScriptFile")); + + $DR = @{ "@odata.type" = "#microsoft.graph.win32LobAppPowerShellScriptDetection" } + $DR.enforceSignatureCheck = $false; + $DR.runAs32Bit = $false; + $DR.scriptContent = "$ScriptContent"; + } + + elseif($MSI){ + $DR = @{ "@odata.type" = "#microsoft.graph.win32LobAppProductCodeDetection" } + $DR.productVersionOperator = "notConfigured"; + $DR.productCode = "$MsiProductCode"; + $DR.productVersion = $null; + } + + elseif($File){ + $DR = @{ "@odata.type" = "#microsoft.graph.win32LobAppFileSystemDetection" } + $DR.check32BitOn64System = "$check32BitOn64System"; + $DR.detectionType = "$FileDetectionType"; + $DR.detectionValue = $FileDetectionValue; + $DR.fileOrFolderName = "$FileOrFolderName"; + $DR.operator = "notConfigured"; + $DR.path = "$Path" + } + + elseif($Registry){ + $DR = @{ "@odata.type" = "#microsoft.graph.win32LobAppRegistryDetection" } + $DR.check32BitOn64System = "$check32BitRegOn64System"; + $DR.detectionType = "$RegistryDetectionType"; + $DR.detectionValue = ""; + $DR.keyPath = "$RegistryKeyPath"; + $DR.operator = "notConfigured"; + $DR.valueName = "$RegistryValue" + } + + return $DR +} + +function Get-DefaultReturnCodes() +{ +@{"returnCode" = 0;"type" = "success"}, ` +@{"returnCode" = 1707;"type" = "success"}, ` +@{"returnCode" = 3010;"type" = "softReboot"}, ` +@{"returnCode" = 1641;"type" = "hardReboot"}, ` +@{"returnCode" = 1618;"type" = "retry"} +} + +function New-ReturnCode() +{ +param +( +[parameter(Mandatory=$true)] +[int]$returnCode, +[parameter(Mandatory=$true)] +[ValidateSet('success','softReboot','hardReboot','retry')] +$type +) + + @{"returnCode" = $returnCode;"type" = "$type"} +} + +Function Get-IntuneWinXML() +{ +param +( +[Parameter(Mandatory=$true)] +$SourceFile, + +[Parameter(Mandatory=$true)] +$fileName, + +[Parameter(Mandatory=$false)] +[ValidateSet("false","true")] +[string]$removeitem = "true" +) + +Test-SourceFile "$SourceFile" + +$Directory = [System.IO.Path]::GetDirectoryName("$SourceFile") + +Add-Type -Assembly System.IO.Compression.FileSystem +$zip = [IO.Compression.ZipFile]::OpenRead("$SourceFile") + + $zip.Entries | where {$_.Name -like "$filename" } | foreach { + [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, "$Directory\$filename", $true) + } + +$zip.Dispose() + +[xml]$IntuneWinXML = gc "$Directory\$filename" + +return $IntuneWinXML + +if($removeitem -eq "true"){ remove-item "$Directory\$filename" } +} + +Function Get-IntuneWinFile() +{ +param +( +[Parameter(Mandatory=$true)] +$SourceFile, + +[Parameter(Mandatory=$true)] +$fileName, + +[Parameter(Mandatory=$false)] +[string]$Folder = "win32" +) + + $Directory = [System.IO.Path]::GetDirectoryName("$SourceFile") + + if(!(Test-Path "$Directory\$folder")){ + + New-Item -ItemType Directory -Path "$Directory" -Name "$folder" | Out-Null + + } + + Add-Type -Assembly System.IO.Compression.FileSystem + $zip = [IO.Compression.ZipFile]::OpenRead("$SourceFile") + + $zip.Entries | where {$_.Name -like "$filename" } | foreach { + + [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, "$Directory\$folder\$filename", $true) + + } + + $zip.Dispose() + + return "$Directory\$folder\$filename" + + if($removeitem -eq "true"){ remove-item "$Directory\$filename" } +} + +function Upload-Win32Lob() +{ +<# +.SYNOPSIS +This function is used to upload a Win32 Application to the Intune Service +.DESCRIPTION +This function is used to upload a Win32 Application to the Intune Service +.EXAMPLE +Upload-Win32Lob "C:\Packages\package.intunewin" -publisher "Microsoft" -description "Package" +This example uses all parameters required to add an intunewin File into the Intune Service +.EXAMPLE +Upload-Win32Lob -SourceFile "$SourceFile" -displayName "Application Name" -publisher "Publisher" -description "Description" -detectionRules $DetectionRule -returnCodes $ReturnCodes +-installCmdLine "powershell.exe -executionpolicy Bypass .\install.ps1" -uninstallCmdLine "powershell.exe -executionpolicy Bypass .\uninstall.ps1" +This example uses additional parameters +#> + +[cmdletbinding()] + +param +( +    [parameter(Mandatory=$true,Position=1)] +    [ValidateNotNullOrEmpty()] + [string]$SourceFile, + + [parameter(Mandatory=$false)] +    [ValidateNotNullOrEmpty()] + [string]$displayName, + + [parameter(Mandatory=$true,Position=2)] +    [ValidateNotNullOrEmpty()] + [string]$publisher, + + [parameter(Mandatory=$true,Position=3)] +    [ValidateNotNullOrEmpty()] + [string]$description, + + [parameter(Mandatory=$true,Position=4)] +    [ValidateNotNullOrEmpty()] + $detectionRules, + + [parameter(Mandatory=$true,Position=5)] +    [ValidateNotNullOrEmpty()] + $returnCodes, + + [parameter(Mandatory=$false,Position=6)] +    [ValidateNotNullOrEmpty()] + [string]$installCmdLine, + + [parameter(Mandatory=$false,Position=7)] +    [ValidateNotNullOrEmpty()] + [string]$uninstallCmdLine, + + [parameter(Mandatory=$false,Position=8)] + [ValidateSet('system','user')] + $installExperience = "system" +) + + try { + $LOBType = "microsoft.graph.win32LobApp" + + Write-Host "Testing if SourceFile '$SourceFile' Path is valid..." -ForegroundColor Yellow + Test-SourceFile "$SourceFile" + + $Win32Path = "$SourceFile" + + Write-Host "Creating JSON data to pass to the service..." -ForegroundColor Yellow + + # Funciton to read Win32LOB file + $DetectionXML = Get-IntuneWinXML "$SourceFile" -fileName "detection.xml" + + # If displayName input don't use Name from detection.xml file + if($displayName){ $DisplayName = $displayName } + else { $DisplayName = $DetectionXML.ApplicationInfo.Name } + + $FileName = $DetectionXML.ApplicationInfo.FileName + + $SetupFileName = $DetectionXML.ApplicationInfo.SetupFile + + $Ext = [System.IO.Path]::GetExtension($SetupFileName) + + if((($Ext).contains("msi") -or ($Ext).contains("Msi")) -and (!$installCmdLine -or !$uninstallCmdLine)){ + + # MSI + $MsiExecutionContext = $DetectionXML.ApplicationInfo.MsiInfo.MsiExecutionContext + $MsiPackageType = "DualPurpose"; + if($MsiExecutionContext -eq "System") { $MsiPackageType = "PerMachine" } + elseif($MsiExecutionContext -eq "User") { $MsiPackageType = "PerUser" } + + $MsiProductCode = $DetectionXML.ApplicationInfo.MsiInfo.MsiProductCode + $MsiProductVersion = $DetectionXML.ApplicationInfo.MsiInfo.MsiProductVersion + $MsiPublisher = $DetectionXML.ApplicationInfo.MsiInfo.MsiPublisher + $MsiRequiresReboot = $DetectionXML.ApplicationInfo.MsiInfo.MsiRequiresReboot + $MsiUpgradeCode = $DetectionXML.ApplicationInfo.MsiInfo.MsiUpgradeCode + + if($MsiRequiresReboot -eq "false"){ $MsiRequiresReboot = $false } + elseif($MsiRequiresReboot -eq "true"){ $MsiRequiresReboot = $true } + + $mobileAppBody = GetWin32AppBody ` + -MSI ` + -displayName "$DisplayName" ` + -publisher "$publisher" ` + -description $description ` + -filename $FileName ` + -SetupFileName "$SetupFileName" ` + -installExperience $installExperience ` + -MsiPackageType $MsiPackageType ` + -MsiProductCode $MsiProductCode ` + -MsiProductName $displayName ` + -MsiProductVersion $MsiProductVersion ` + -MsiPublisher $MsiPublisher ` + -MsiRequiresReboot $MsiRequiresReboot ` + -MsiUpgradeCode $MsiUpgradeCode + } + else { + $mobileAppBody = GetWin32AppBody -EXE -displayName "$DisplayName" -publisher "$publisher" ` + -description $description -filename $FileName -SetupFileName "$SetupFileName" ` + -installExperience $installExperience -installCommandLine $installCmdLine ` + -uninstallCommandLine $uninstallcmdline + } + + if($DetectionRules.'@odata.type' -contains "#microsoft.graph.win32LobAppPowerShellScriptDetection" -and @($DetectionRules).'@odata.type'.Count -gt 1){ + Write-Warning "A Detection Rule can either be 'Manually configure detection rules' or 'Use a custom detection script'" + Write-Warning "It can't include both..." + break + } + else { + $mobileAppBody | Add-Member -MemberType NoteProperty -Name 'detectionRules' -Value $detectionRules + } + + #ReturnCodes + + if($returnCodes){ + $mobileAppBody | Add-Member -MemberType NoteProperty -Name 'returnCodes' -Value @($returnCodes) + } + else { + Write-Warning "Intunewin file requires ReturnCodes to be specified" + Write-Warning "If you want to use the default ReturnCode run 'Get-DefaultReturnCodes'" + break + } + + Write-Host "Creating application in Intune..." -ForegroundColor Yellow + $mobileApp = MakePostRequest "mobileApps" ($mobileAppBody | ConvertTo-Json); + + # Get the content version for the new app (this will always be 1 until the new app is committed). + Write-Host "Creating Content Version in the service for the application..." -ForegroundColor Yellow + $appId = $mobileApp.id; + $contentVersionUri = "mobileApps/$appId/$LOBType/contentVersions"; + $contentVersion = MakePostRequest $contentVersionUri "{}"; + + # Encrypt file and Get File Information + Write-Host "Getting Encryption Information for '$SourceFile'..." -ForegroundColor Yellow + + $encryptionInfo = @{}; + $encryptionInfo.encryptionKey = $DetectionXML.ApplicationInfo.EncryptionInfo.EncryptionKey + $encryptionInfo.macKey = $DetectionXML.ApplicationInfo.EncryptionInfo.macKey + $encryptionInfo.initializationVector = $DetectionXML.ApplicationInfo.EncryptionInfo.initializationVector + $encryptionInfo.mac = $DetectionXML.ApplicationInfo.EncryptionInfo.mac + $encryptionInfo.profileIdentifier = "ProfileVersion1"; + $encryptionInfo.fileDigest = $DetectionXML.ApplicationInfo.EncryptionInfo.fileDigest + $encryptionInfo.fileDigestAlgorithm = $DetectionXML.ApplicationInfo.EncryptionInfo.fileDigestAlgorithm + + $fileEncryptionInfo = @{}; + $fileEncryptionInfo.fileEncryptionInfo = $encryptionInfo; + + # Extracting encrypted file + $IntuneWinFile = Get-IntuneWinFile "$SourceFile" -fileName "$filename" + + [int64]$Size = $DetectionXML.ApplicationInfo.UnencryptedContentSize + $EncrySize = (Get-Item "$IntuneWinFile").Length + + # Create a new file for the app. + Write-Host "Creating a new file entry in Azure for the upload..." -ForegroundColor Yellow + $contentVersionId = $contentVersion.id; + $fileBody = GetAppFileBody "$FileName" $Size $EncrySize $null; + $filesUri = "mobileApps/$appId/$LOBType/contentVersions/$contentVersionId/files"; + $file = MakePostRequest $filesUri ($fileBody | ConvertTo-Json); + + # Wait for the service to process the new file request. + Write-Host "Waiting for the file entry URI to be created..." -ForegroundColor Yellow + $fileId = $file.id; + $fileUri = "mobileApps/$appId/$LOBType/contentVersions/$contentVersionId/files/$fileId"; + $file = WaitForFileProcessing $fileUri "AzureStorageUriRequest"; + + # Upload the content to Azure Storage. + Write-Host "Uploading file to Azure Storage..." -f Yellow + + $sasUri = $file.azureStorageUri; + UploadFileToAzureStorage $file.azureStorageUri "$IntuneWinFile" $fileUri; + + # Need to Add removal of IntuneWin file + $IntuneWinFolder = [System.IO.Path]::GetDirectoryName("$IntuneWinFile") + Remove-Item "$IntuneWinFile" -Force + + # Commit the file. + Write-Host "Committing the file into Azure Storage..." -ForegroundColor Yellow + $commitFileUri = "mobileApps/$appId/$LOBType/contentVersions/$contentVersionId/files/$fileId/commit"; + MakePostRequest $commitFileUri ($fileEncryptionInfo | ConvertTo-Json); + + # Wait for the service to process the commit file request. + Write-Host "Waiting for the service to process the commit file request..." -ForegroundColor Yellow + $file = WaitForFileProcessing $fileUri "CommitFile"; + + # Commit the app. + Write-Host "Committing the file into Azure Storage..." -ForegroundColor Yellow + $commitAppUri = "mobileApps/$appId"; + $commitAppBody = GetAppCommitBody $contentVersionId $LOBType; + MakePatchRequest $commitAppUri ($commitAppBody | ConvertTo-Json); + + Write-Host "Sleeping for $sleep seconds to allow patch completion..." -f Magenta + Start-Sleep $sleep + Write-Host + } + catch { + Write-Host ""; + Write-Host -ForegroundColor Red "Aborting with exception: $($_.Exception.ToString())"; + } +} + +$ClientId = "" #Enter your Client Id for getting MS Graph access token with permission: DeviceManagementApps.ReadWrite.All +$global:headers = Get-MsiAuthHeaders -resourceUri "https://graph.microsoft.com" -clientId $ClientId + +$baseUrl = "https://graph.microsoft.com/beta/deviceAppManagement/" + +$logRequestUris = $true; +$logHeaders = $false; +$logContent = $true; + +$azureStorageUploadChunkSizeInMb = 6l; + +$sleep = 30 + +$SourceFile = "" #Full path to .intunewin file +$PowerShellDetectionScript = "" #Full path to Powershell Detection script +$PowerShellDetectionRule = New-DetectionRule -PowerShell -ScriptFile "$PowerShellDetectionScript" -enforceSignatureCheck $false -runAs32Bit $true + +$Publisher = "" #Publisher of app +$Description = "" #Description of app + +# Creating Array for detection Rule +$DetectionRule = @($PowerShellDetectionRule) + +$ReturnCodes = Get-DefaultReturnCodes + +# Win32 Application Upload +Upload-Win32Lob -SourceFile "$SourceFile" -publisher $Publisher -description $Description -detectionRules $DetectionRule -returnCodes $ReturnCodes \ No newline at end of file diff --git a/ProvisionWin32AppAutomation/docs/CreateIntunewinFile.png b/ProvisionWin32AppAutomation/docs/CreateIntunewinFile.png new file mode 100644 index 0000000000000000000000000000000000000000..610e34bc401fc62430bb31cd2df80e182b399ad9 GIT binary patch literal 111900 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

otzQBgq$O6BkR%^r@R{Dsy>K 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 VOY6n0``2xATF+FsP}|}5{{cQunLYpj literal 0 HcmV?d00001 diff --git a/ProvisionWin32AppAutomation/docs/ProvisionWin32App.jpg b/ProvisionWin32AppAutomation/docs/ProvisionWin32App.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f020024bb6a6164d0223f6cf8f0931a5c9fa2475 GIT binary patch literal 16930 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 z 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 m%O&UMHm+E{{?x36)STiq!*abKu!H3j3XiPpg + +function Get-MsiAuthHeaders +{ + param + ( + [Parameter(Mandatory=$true)] + [Validateset("https://graph.microsoft.com","https://vault.azure.net","https://management.azure.com","https://database.windows.net")] + $ResourceUri, + [Parameter(Mandatory=$true)] + $ClientId + ) + + $msiEndpoint = "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=$($ResourceUri)&client_id=$($ClientId)" + $response = Invoke-WebRequest -Uri $msiEndpoint -Headers @{"Metadata"= $true} -UseBasicParsing + $responseJson = ConvertFrom-Json -InputObject $response + $AccessToken = $responseJson.access_token + $Headers = @{ + 'Content-Type'='application/json' + 'Authorization'="Bearer " + $AccessToken + } + return $Headers +} + +function Verify-IntuneMobileApp { + param( + $MobileAppId + ) + try + { + $MobileAppClientId = "" #Enter your Client Id for getting access token + #This Client Id must have Graph API permission: DeviceManagementApps.Read.All + + Write-Output "Getting microsoft graph api access headers using client id - $($MobileAppClientId)" + $AppHeaders = Get-MsiAuthHeaders -ResourceUri "https://graph.microsoft.com" -ClientId $MobileAppClientId + $AppGraphUrl = "https://graph.microsoft.com/beta/deviceAppManagement/mobileApps/$($mobileAppId)" + Write-Output "Getting Mobile app using Url: $($AppGraphUrl)" + $MobileApp = Invoke-RestMethod -Uri $AppGraphUrl -Method Get -Headers $AppHeaders + if($MobileApp) + { + $MobileAppName = $MobileApp.displayName + Write-Output "Successfully found Intune Mobile App - $($MobileAppName) with MobileAppId - $($MobileAppId) in Intune" + } + else + { + Write-Output "Intune Mobile Application with mobileAppId: $($mobileAppId) not found" + } + } + catch [System.Exception] + { + Write-Output "Intune Mobile App Verify Deletion Failed with id: $($MobileAppId)" + Write-Error $_.Exception.Message + } +} + +function Verify-IntuneDeviceConfigurationProfile { + param( + $DeviceConfigProfileId + ) + try + { + $DeviceConfigProfileClientId = "" #Enter your Client Id for getting access token + #This Client Id must have Graph API permission: DeviceManagementConfiguration.Read.All + + Write-Output "Getting microsoft graph api access headers using client id - $($DeviceConfigProfileClientId)" + $DeviceConfigProfileHeaders = Get-MsiAuthHeaders -ResourceUri "https://graph.microsoft.com" -ClientId $DeviceConfigProfileClientId + $DeviceConfigProfileGraphUrl = "https://graph.microsoft.com/v1.0/deviceManagement/deviceConfigurations/$($DeviceConfigProfileId)" + Write-Output "Getting Device Configuration Profile using Url: $($DeviceConfigProfileGraphUrl)" + $DeviceConfigProfile = Invoke-RestMethod -Uri $DeviceConfigProfileGraphUrl -Method Get -Headers $DeviceConfigProfileHeaders + if($DeviceConfigProfile) + { + $DeviceConfigProfileName = $DeviceConfigProfile.displayName + Write-Output "Successfully found Intune Device Configuration Profile - $($DeviceConfigProfileName) with DeviceConfigProfileId - $($DeviceConfigProfileId) in Intune" + } + else + { + Write-Output "Intune Device Configuration Profile with DeviceConfigProfileId: $($DeviceConfigProfileId) not found" + } + } + catch [System.Exception] + { + Write-Output "Intune Device Configuration Profile Verify Deletion Failed with id: $($DeviceConfigProfileId)" + Write-Error $_.Exception.Message + } +} + +function Verify-IntuneGroupPolicy { + + param( + $GroupPolicyConfigurationId + ) + try + { + $GroupPolicyClientId = "" #Enter your Client Id for getting access token + #This Client Id must have Graph API permission: DeviceManagementConfiguration.Read.All + + Write-Output "Getting microsoft graph api access headers using client id - $($GroupPolicyClientId)" + $GroupPolicyHeaders = Get-MsiAuthHeaders -ResourceUri "https://graph.microsoft.com" -ClientId $GroupPolicyClientId + $GroupPolicyConfigurationUrl = "https://graph.microsoft.com/beta/deviceManagement/groupPolicyConfigurations/$($GroupPolicyConfigurationId)" + Write-Output "Getting Group Policy Configuration using Url: $($GroupPolicyConfigurationUrl)" + $GroupPolicy = Invoke-RestMethod -Uri $GroupPolicyConfigurationUrl -Method Get -Headers $GroupPolicyHeaders + if($GroupPolicy) + { + $GroupPolicyName = $GroupPolicy.displayName + Write-Output "Successfully fouund Group Policy Configuration - $($GroupPolicyName) with GroupPolicyConfigurationId - $($GroupPolicyConfigurationId) in Intune" + } + else + { + Write-Output "Intune Group Policy Configuration with GroupPolicyConfigurationId: $($GroupPolicyConfigurationId) not found" + } + } + catch [System.Exception] + { + Write-Output "Intune Group Policy Configuration Verify Deletion Failed with id: $($GroupPolicyConfigurationId)" + Write-Error $_.Exception.Message + } +} + +Write-Output "------------------- Starting Verify Intune Object Deletion Script -------------------" +$MobileAppId = '' #Mobile App Id to verify before deletion +$DeviceConfigurationProfileId = '' #Device Configuration Profile Id to verify before deletion +$GroupPolicyConfigurationId = '' #Group Policy Configuration Id to verify before deletion + +if($MobileAppId) +{ + Verify-IntuneMobileApp -MobileAppId $MobileAppId +} + +if($DeviceConfigurationProfileId) +{ + Verify-IntuneDeviceConfigurationProfile -DeviceConfigProfileId $DeviceConfigurationProfileId +} + +if($GroupPolicyConfigurationId) +{ + Verify-IntuneGroupPolicy -GroupPolicyConfigurationId $DeviceGroupPolicyId +} \ No newline at end of file diff --git a/VerifyDeletionAutomation/docs/VerifyDeletionAutomation.jpg b/VerifyDeletionAutomation/docs/VerifyDeletionAutomation.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b232eef48632b31cc61f19d700307848608034d5 GIT binary patch literal 16769 zcmcJ$2UJsCxAz;QOB19@Q>juF=`AYK1*CUSX+lJLFHsOss(^q}rFSB|6OpD=sey#v zI|(&F$`_yayyu+vIpciy+;hhbStE>{z4l&nt(7(Z>o@1dPvaK>*R<3$)c{09M1W_6 zKL8#9PyrBMx$@^tc##m^q!gs2BqXF)$;rtmsIO8}Q(dK^qM>EDMng+aOGR~!`5OIo zMkXdEYC0BHW=2*9MkdBT7a<}h)FC0IBqgO}q@ki={D1wze+ST05P1Poh>30kuFw+^ z(-Yyl0o(up5hsj4k3IGAfYE^ zxOML#*>(Nr8|rHSP14^t}9n z!lL4m(z2S`y84F3rskF(UEMvseLsKokBv`EPQj*U;7iLZt842Un_Jtc!=vMq(=+t> z#UHzf0L1?=>)$Q=n_ct-yRMLs5R;Jqv5V-6AE6M_laSuJN5=3_pZvMU_1h9}DHtCm z=2mx7^4vE-GQIE|y~@lhxx|P1W7=Pq{m%>w`(Ii1?}q({U2p(3F%e<#i0J`90M@Wz z>sKM4ed}ZnKhU z!RrDK;8_xZ@D${0rKjlDCh6*&``T!4_?2uqCM~NanL6{@B@KG&t?1-M?l4gc=FcntXsp4m9fL&Ey7Qu+1VGs?V;I%gJ&Bh4wEWM~9&peNbx6-vO{ zl#x{*5L&$_z4&dLX7LVObllt}mEptJFF{=I=;t(eule8n=r7f2ORihfV&b%6rP?Xy z>!W6nPpaFf$!EXd%-0ffW*d&}%xl8~7WH~!fN?Myz-AYlQ7F$T z_tmZOR41E)4n7)XPgBL^XhBFWusEz8+{aDV#)BNu9os#L19rE>ofhU*VjJI!R4vBn zq%UhIc5A$N$vVWK(8u2N#q!oq{qM>TZLo`Yz;%DWrS;?r=f)fc*I=hbP&u25zpCVA zr|8gN;&Te~JbKGI&u?Cmp8MTauLWG6>(_(0$UyQF*vwKd1sha!YHLVIQL;5-C7X}4 zaFup9cP*|yAMMm>kyVLHE3@|h%ozUzVOZ``+J5FD%?;ux5DkXk0}&4|s5GY1(~eYbcN<%I6?Tej`emzH52T zLQce+D8Q~_vqN<{D+$zG7;o=CA*|Nnl6FNk_zs-)qc9|DdE?#joWOSzSSa6bu>(mw zfZKcrR=xzG(=48W&)fv0T!Hg{D&a^q*tkhEJ>;+_Bq|zm0leRp>Xbej9G#r8o`nba z@m3BgTT1TL=vi7zIU-yGppkfhqZ|D;jEld1;@~)h`BHUk6$;X<&mc=4G^bbmlC}px zU{{(80Ji{lNh3V*fUC-!Jt*SkqLd}!oh1j(!NWe0(~9KO!_nD-$I^XHGu0Hl34<;02l&&LCF*S7*wQnCv@NX8!XrY_6bIWtQ-U-=dr`;OP%-ZXtvUM#Hy z{c#JP@ZQxs4tV`-d3)PoXS1Cbz2JxST|XnM-TtUwHWZcDGu92jZ@2YJ6G}NAgGN#g zizM+T1Plk1T)eh<`cU z6#^6YycFL(S!tFkx4umy(SK&t)ROe;)$U1*@CUmro&c^pO#J);RO}c?-I~TuPhfT$ zYD5hg()U(M{F;A6C@(rkb;>@azLizrXmM8&y1%{J@XK@5LJ zCy*la?o0Vg%!BHw<7xgj718*Nz&J)xR|&Plio`p#gPYRo>qMyo03x}gApwW;)@(5B z=&F%WkdTgSudYm-=Fu;&mpLuVb#cup3xxGxL5lka)>IXl^I;K+tgk99sa%UFknbsK zCkcO&uKtnLLbkxcH|_Np`{z@yxJf-5G|>u_x~se)KVOCV;<1hrHa0M>qA?X&{_eh1 zjg|ww!>98MU)N_d@P}1VOER&NaloYp$kMNUOuLglN-V((eB?T`f(`{cEL% z;UCEjJd)#}K=G#NFY(U_m1uMQ%58QRq*C~b+a|7i24e1%w+CdP7NTuQ4?L{2+aAok*Scla{op>%5W{S(g)19 zaRhV%9VO$giX*E+$d~yN;zgGQbYZtGL0c?RB!QsCvd3RPAd8fazhOb zS!`GDve;|N?nT{Y4MAIl%v?KlPz*m0lMwFdGC5^pY~gXk}vm@Ll=2<{aIugz5U1M&~R-3gDVWAC;ebiDAKG9W@fMFiGoC zY;Hu)(?0!p9vUe@ZAT~s{VXq9DE?bsv>@Q$$`z3CuezO|VtWe%O<}63GT#-BEmJ!^nk z`ZnpSG7el7gcO7A@qig}V>F~}3nzdQ&7bk-XH)Fad}}&U{nLmuxMIcYY*k!NI7KV5 zkjuID*U4#4GrI>5vp!(3=c`P7-UzTmX(nK0N#wIKPOAJhlWmoAC7{@s$3Jw<4f~1 z+FM1F&V_GV25FC%6|>n9#*%=&a1+zq7b?{Gl%VXi}# zVDF2A;;tSUAlqWSRy%KI(}7c;e8aGFO`aGt)yq%b38w9n(EJA&p1@Z!U}UxO=(^3!%r34Qk)XUTE910BzJH!ky}oJ_JMe(AG(6xFH*O2kDp;Z1{vPMn2~H$@MNj+zyeW(a@D}3% zKXWMYfG!AhyATgpBgX?;UjFNqU~`}JPj=OhLa8v}xZC6mc))K{oTeTgkf?n9U(cL4 z1tXs*yj&+cSmuDy`F}$%hBJZE@cd-wuUbd0$;(^t4PKaQDuHsmQi&e%sv0$3921 z+2P{)-pNmE>j!SCHRq&^`sUd$2@@Tluj+)3vIy_8AS*7P<4tfaMriv9{UGv8%zeSg zK;}*>p=$JEb;7Qd-{5J?r>rDNK?r~#5+{)A*ee*q=)OUMQQN?!dPRCX-~sd+cu|oX z6W9*febR>uuH67nJ;}#~-44PsEpj8_*%WxdSKIeMBo`e{NgX3y90uHETBgI06Xr#N zKK8?BJYXc1dxu{i4|qtggliK&{fPd>-8D6KT;9&Sy(}D4uJlOw=jzkA)1amze`KIE zPalTDSP$*0M*{vW+|7-qBMb*u70)uPZy_>=B^c;d!AHJ6Z3zD2;9MODcK_mW#T8T!kT zS^ZLhl{0f~^EJMKNM|FDHoFF|ghHQ_qu!j$7Z~8!E7#qMV;$f5sX1oBJnfeNV`2c^ zf^ov%Tc*`4CU4BUwFFO4UG@9D%u&Obe`C6&U(@BZ^)dmR*G7zEH|*p-zKSBp5qIJN zeI@^;rw1;t-@^lPL>932{lLxJ0?<(#B0PYmbTQ$A6iw(xqD6w|oBZuhb(({Obn7vj zp@Ve3P2Fm5J5p>G%l%--&f_E}d`F4#bSHYaNH3v~+`!vH+jKL|+3DQcC9zPq&8lEb zyETXls>)~@AGD;(_>|~Ru`2FKIOofjzyrQXZQ$MqZtr|TR}+2?wY|2dWCW2uN@p!= zyE1-a`=u`y5AZF=v7B?KAM4vBIDzQGgK3ub)ZjmUTw0+xYTxhIYuKf-YuJ5KV=}Pn zY5sgqLiXGgV3!2`T5fV`RR(jN2^qp^)}EWvJ)H9NtBG#inG|I)L1^QMHW*FIHIW0| z^U|<7G~^g7-DCPB2|4Q@IzRv1%Z;Ppet}7pebQ?WR^r#bRT`Zx)5yL~P6a(wUqmhp z52$C?n96ItXR)wV>EyHiqxjD4fM(TBQ`(A|#cL88%c%}g#VkX@bs04Nc2gGN|`H6|P;Si0b9;b7`VQ~lqythC!meG#i4wb{AH^6h3LZuElYv4Kem{%s;OO1@3w>nikq%1jZ$GWV$UPE0^Ue z_q;;_b*M!_EA?*{Niv@gqdE7 z5!{V0as=BB-V&*gS1u5Cm@IoZC#!wvq-L(>AG|=PRaTdxVT%V`QD2zQR}Cct>l4bFp>k!BMeC3QU**q+mU=%SE0G9JEooZgkB1LQ{8mA^NXR?O?xzb2 zR`WfDoA8%$5Vt}T&$kOMWw#IaXP5lB?+gf%By8T;&WPCFZFdW)YiOK;y9IIgPn(+< zuI0DtURoep7qo?Ktt&&L%vpLBK;{)9i@(3L0o@9Q^0gg2f;s|nQ}v`0GOJ5WXzIeQ z$F;3j9|Jj^L+MeGA1XEj8GrW_*RthxbR4ZU&tCmDUlJYu{Kt~4oPZy|$wi(kT&fUy zN(L#}ZutZgzOn_Ae;TGvP0Myw`=(n4RbzN6>yR3hF4zd>4o{%oA=|chwtHu$-9D;8 z-QVi@fcJ{}lj!9*j@vPo0zpOajPNVbH8~4 z$KxEzjuMS8%!_GS`&97lGe5jqqracmCL)=w&(31X-+|j%e<9H}VVy~xEqGK_nI!|eM@8x?}dt{6I~Qtl-Tq5omWY{#%~k3pHs{{dmz*m ze_m3D2Yk5kSY9phdC1ab%*5{lhnBHvmn#w_``rCGXX-=jpX?#2y1MtQQtOvoL0!(T zFB%fTg@r%)$=VzIAAhyu^CN0yPb)4tDYv0OHld>4^L$G^xKti}k-EH%?zXq|w^Q@; z{2GgFBIeurD3-OXx=HObzrut!$dlE1w6k}tTow!?sF>_#by`gN?xd*X4u&&waIi? z{m?c>aQqTTeW2LbZyYt05I8j6!K~wfvalt!vB{8*H~%;j_TNi6Zi6MDA$+KoQpu3y3*p}{xk_=iB@$?Qp-Zz0L;*?&wA+KN0Zhx|w(h0Wq z^&|Ycy?1ga*&IDRljirum*!qqoHZ)9SlWupaRwggwsp`HIv+YWfNtdVNd0O`dCyVX zF-ek~(^3Zb-s`EC7dikvv~IhP2e{c@Xp066LkaTh`A$oG*7`XfVAq_qFoVwP<7vHEqDPw9qI$AOK@AauDeWtmgGfa zC~yT=1@qqgRo0Y6z`sOLY1p?A;IRtK^zYtp>jyz*$6^A2|H(yfWlQXq-77@Lj1@J-tumH-?+GRy=ZfsuH8`_{*bMDduOxy%OrNq1Srs z?|FaD@H%B)H$NRJ^iS@!r5E2n*sE81SYV zJpri+OIVd|s?aHBod37_AVf}$ z+Pm1ir4SCtxigwe(qlY!#Q@%`SYCAov*jQ8>dnpQ?`4WgdlPKRIUx_8*%R}we1tHB z#uXaU)K*AnOvippWHa@DD$(kd-NqdidMl*1+lFD>r0)rGKis*}a(;lO`17@&yiXmH zH0^yAOnFkjvn@Bx1WT2wEKN&oH1wt@by=u;v)=pH4(vBs8#j!Sn9os_cR0m(cE z+k$yeB4Fv2Xu+?4m1eyd?n7-w2Rz^zXasxhWD<4c_eBG?ZG0hsRpAN0fDi@^ge7*Vn1So`xv8$od?X zS%2UDb<;^`jcZ+f_L}SSThs~n6U9Fdc3owZ)j#6k0vyH37&MQb2y0);Jz+_$DM0pr zWr(j}Gjsa=)|wi8J@_GWZmD&}RKP@v$>Cfb!p>EBYPRAxE2d^~H44$1JR$&Wfpr;Y zxq)={ljbTjLKGIjX@=(+G_m=5v?Y_4a#H)nEm{|+4G2)km{QdD4)SralYyq=-l#_n zDDklDrRAnC*$Og2?^j+>1<%`6;N#Y`DMv1&u{kAW!Xfkrn+QZV&;J%BE zh~u;B@%>y&wM=V@D$!e+>UY^6SD(M1w_HJ|k-r_eQfInMKvpIf>n8`IuU}V*MeGdt z6d|6NxaU6p&~d-|TY3M=*Fsaen3M^J;&!)y%GLCa3_hO@gjow~8#RMhBqSBLYhB60 z0%~7{r9`e@qdk~8xjK2&YA5nGi!R+4%|zpO7-tdvF<;QetOS-npOiYTcy>v?DU~-#(U=3 zr0vjn)mleGlG&J=`C8xS)taQWZ_1}21uYbRZsFEhx;;yh#n#zar|8dUDJM~SJN7H? z53L9NdF0k}pWo9u^pP5aw+8F9%U@RV1??RPneAR*i!Ll`JbRIGc00A)Ekt_H6$4j# zw4j1aEiCiDREha9K=fM@(JXR8*I>mqw|E;U;UNAkRlt|Yh`5)c;^1FhatuL4#S}Vo z316DVR4AHyl+83`U2(p!v>1@y6^DxzzO)n3XM9swppa7nNKW|I<*84~bepx<;B+;p z8CVVJPR7uwW#nUv!;C7yFCh+0r^irXkefmdSYMS1U5aI7)K>-kDNOyrW(1aEz9N1} zYy;kms;c_?>NOsLQvw>FXZnwvxj>h|iRTc)KKNK4llrH6;1H|}d*f(P`Ae0#kU#@37aRAuP-X^>kTh2JMu zlAk~Hhy7#e<6W{7Q1Sy>V;DN;(|~myfxT}o9uidpF+pkPqoJ?$QY{ajk@Z>WmtmfK zn~=<5o91huFu918mJT!$pl&!l9iu5*Z6wKCU6FgyeKHh$z%PMmLFA;LT`Hcg9XE8O zb6f67TzbJ}PJ{+G8@tqMN*VW;A>|z{qT`6Q{4KjQHW9^AohoAi5Z^!%#4)wB z>Y^~e;~+IJS{R}1F8sIsVq00e>8UkgVE2}CE(7s^F>}!1ARaIa`a>|2m0~k+YW{8) z=XBUR+<#^S1_w6!Z?}OJ5ayR)%wXk;n{#Wa3HIK{{9@)xG z%|{h{qRF;jhCaM2ds<4dKW_W>JX|$|KrpEZ`qZ!yX8^to;YM}=PZYpw0tDR)+rZ?AoS22oQOf;N;bepD|i5Z6ak_HSN`AXj^e7;5pyEHo#t&RIPRyz1^taKRYH#irM?p5XoiPe(y00%J^4ewEizN}x`Jy?7}C54Z!wb|j#m=Uik#50eRM zVH-T92*H8Dt2KDQZ9HI-;{X>7Uj0o#w+SgFkTUR6BzW7GKvW5|(=8vz>VzwH!xZ2F zrx(Egs7HXlMqbc!6hTh>bw?A3F*Xgn+UoCwn};5!TAb+pryK5+qb)D*5Ew{3YU;}} z5UmBQ3+-9Q1M(Dyvbt*XK6`kk|N*uDWA74bq~lhHXv&&)3s7! zQm!@{yNpd51* zK;!us9}lLU$?ROFRZl^+OQl&uMSmrB`V}0B@bB+WOW$|@U`&}Czf2I9>>m5ExNTIi zTLBx|Oz_TYri*}HV_$ZPcmaz{^eC_xUVV@z##X4`i;ABaR!)Jz__RFpWprJJUi;}+ zQme{N79Fs;v@1VXWi(Oi{3n3>=chUD*3?(z)Z5bSGff_Z^Xb@J|F<_*1uxAaNZw`= z$0l0*eT}OuQ8g;3&~_Xhd7n|N<`ussgZ?uS|3(Zaz+Eo>Jh-=^gu(gl4@92?o2rIF zaph}sIrE|9xE4Z>4{>8iE)D+yD5?H?K#8u322KXI)?RjDeTMLWbRe4YwD=#Wm*t+mo)@i` zyM4naR=C{Rbgythw1Q`-$-I`YEtb(fvm$YIHHlnme8-kr{R2ibAb-oGNAiGTy3?t| z>LnZuud3RAuh8F{@g&w^9(w;xIh)+BKQz*oKA{V-^NVjhveMbT`d+1fUSm+#QgtRa z?U`3uD~)jH_IcDY2gFwy0Mpy5UlWjgU^DCcLM2Na^ z)3_vBl6&tYeMiT>>99M7{V|f|oR_4L{k^P>`^=3{rr&#x+%%%%KCM|QKU(73@78}y z(|RZKIr+gm&CBt_Ur_S(XJ6gfWvc{qQNtNue?j<@^R(TZOE(V+U7OmE988?)2Zs>= zyF)vdGHSaf-d}~mTDZY_qzG_k-U)O2;!}F$0g&5yLB!zIC6r&W!fE|-PIg^Doy|Zx z8QL$rt8LQ|JY@m=K9$WQUMSpYxgm49QmkENG+&OYZbzwf!EA&k#C$H5+@7KsYe1ea zE6H*x;>~!0iW)iX?sjq?#pimv`V>7nZX!=0k!^k+d58tEO42MiLTV&=ts=I7oZZu( zrpZb1ZT86~H*K4yU#C&pFt&!0R!`*Nh{a~-rO}!u)c5L~jI(miK;wvE8u#vv2=Dgo_=6AzS6l0eMi|IB zcgN-)+AV+9KW3S$TDd@yQ$Te}xxc~JdAVv zRNSL=Tpx};ztXwUA53=SWu}^uG`R)6N%(7l|4)UWJx_9AHoZusoAGZ^? zEjvbAcQ2{3KEq|4z&7&U<#&T^9+u2#D#wq_2t@Y%h2-p$`sxy-IC3dw;O@pzBwm^E zdJYMvR*gYmzq|ySvvmvTXx4Ct$&S}yak-z1wS(x?l>S?OT^2}N?a;SnhxyV;~F0CLe8UomoIVjJI%%8THCj8t+nMnO~!4WN0?o2eiAUE zHG&fFPC#q40n4|*GYd|ap-}$j_4CUHH#J*fb~TUI1AFf+Ywo?Vr1(->u-|JZ0^x9+ zqt!#}yyK|ztf@IWTQl7|g}8!=eYxLUgoCngHeR<`aE5CknsPM9ZMK)!oSq^-MR^{5 z+ke$W6(-TgwxfIvO}nymw#T`6d1u~9yH(EZ`K57lW0wA&UtNyoQ?Ejg`kE$|Z8Nqz<(K6|e<0YMWJ(={? zw6Fgr+Oa%DbDNKzxQfB7M^8k#6t<>#Wl|wT9?dGR=GzjR0#|O=;b?bELb=gzi|6KN z3!?+PdYE?Kq||>|@{TvSH){Rq(r3@wCPBhq_(w}sM&-_p5bSVi`HZ$RQ+7Vna_^{i zi)EUP(5 zZVA07txEC1tflOmVN;3iTo@(E_18LfI@R&Ly=$+)bw1)(%pThNC`2_jevDe+6&KQE z)7dV#Vr`TdDa*?(!Fne}GX*zL>FJegn+6zQF*lfEgie zLk?FLyP%v+1C39rN`-~`?4)W7_6Oa+-eUj28|yLToi5&)!wT}VNGaQtIrWp4Ry$v6 zt^L9|&MWkFTGL5rNu6za776-Ym&43jFX$bENTBf#-3tc#*%iz=Hy*gBdJYKQvTv5? zzm{VD;1)8>#v{{IW>LWexnEh~EMHVz6mSt02@w@J-F6>vL|1wy_B|;Zy==8FN&zoYVb2{pHCM)ou3s6r9?5N%A|ex z>XP8(IGiR!<#a2aOs|8pVM*(Zyg0B2;!xjE--P7w4ZRH=bA_poS3zriXt*uj&xyp2 z?boMH%N;$AN6$v*yYbEF_)iA1x*S%l7mgATB|+W`hl=<2KF^ObnhhQ6XvI$13Y3MM zY5Yy|9+sWh{>%2bq84~Y$QfNsTOF!#J7-&h?yLfj3qr7j?dZ`t_US)m>)+Mh|7b_+ zgQG`cvnv;&>cBK;wE=acD6W|SQB>$q zqA6LcDU&GL?WOUNGPtd!?_=2$J76hfe%tPrPQ4@CcN{7%vxd$Ym~dwj7VNN3wt~I> zB^IjVeE=z*4cJdus?@e^oGAX*aI`$`Iy5)#W_-9za%DC#TZ2HK%~N*equ#t)8pGI0 z5jt(x8=0J>isnw&p#hhepjT?(e9jQ$XM1H2@}C6a8_q% z9*rA|-f3oyjhb>!%^m+Z-h6{h; zhg&R|%qD4i5@L{8H$?X_qN&0yFFQz3iuGgCRHNw4ICL*%TuM9o`545%y!*^XY%&fz zrb;%QAI1)HH(|XUcZK&QC9fdBPoPweH~qL$rmKVX_sId^CCfagj_b*$$Ua28uqFGB z>7K}yf`=S8Deh(U_rx!ytZ+ocM-?T+`d%oGmJ!4xV&EmJmVt!(<@7_|js3G>klC`c zQAUn%i%#*JZBd7H;ya{IsbQS5kFzF!{V1ZmQTy2SwZm2@5lXqSxbQS{3QA01Jz_&-GXHMGz#E;Nu$_}G<}<2%L!LDL5n%eR-&ni#UOdc zhUSK`*Zcc?QG*|QN3GhLBc|=WD7htM9`?9^I<6t#L7An%L~wr>C3$*RnZz<|&C*7g zL*xA@_{g`u!#yEWS>A(E^DF`1yyMoOmq{^hA>K*#5YKrXbIHt=a!t4L~vi9MD5PbK=};6i}sbijhJ z|1~@ZDk#b=$7%oYtC@37u8`27LiE=>N>&%qIZIq|H~zHf{&17dWj14ZBU((LKFJc{ zYyzLzT@KSxp80BK9WEKFpWrzA_Ki9#Ymdi-=`kbn*hM?tUFW<2EHvKp;*NS!mRg!U zTwOZ^#ojF+woN64K7{PqRj0G=Eo*esf3uIHHxhB7Ag5r-yhwM#h|qv>3=p&iZh?@{ zoFn}6QZJc%_Aofs714;b9T;DLNDYrZ>KfH7Bt|4oBER-s3K{ix{Kdt#t;IrV$D|%aOQ3X@LBzJR-CLnVe15*Awx#|>6~wqei{ULDQZ3)Kjxp zwkMD*VhKytYr|DNS@8S$?`+^T3+L8X>zRm!K5+?w1AAZEw-5Qus5NAVY234A$6b%X zH_%}}hJpNJu%}I7tY^&d7#^Y6B+c){m2QvB0*u@vl+DHYE&_l(RU2abvQ7HN0_OeV zt`0l3jb=E?Jx6B{H&dGq#5p}a$1lL`R7dTh=(6Rs<@eXTv>Xa`9;J@6_nR_LHj=H? zdq!ee($8Wr49?%SmT^ z=l3CZ$_4OVJ~Ta6?f;XT{15Q!i(^5ZK*KRqToZZw*6tR`n#Vf>+CU#0F7#w^%m~?b;9NzQ2@>1W9aJ|Udn;O7J$CnL z$x|{-%I^T`dvYVTTzPHVpRY0nWTsYKoJ@LRr<5$@iuj|1-qpobv^a~|@6BJ#ZdC>c zlr8w@Kb|JdI!>?4;lr*WUALVbsDwx44&8djayh9&MtPv(_LxF>z`d#p=e%0l_-SlRf$2aP-1 zWx|_yz?9HCHC~iO6KLZ<>;0jPo_c@LMgrVR`uja= zg7q)i39G+MQI{W~`Cz!>075}2XC}jAW44cM_q^}lGfa1{u67Vu?$1UiLf%0;4<4Xv zGFeZ1YjDGaKE;~d)=>#d8>~mU`X|RUw@e3PxQFBU4*hR=D4~&kSi2$M#u-kV`%oVE z|A%cY&a^a-go(z>bo{>7c!^d6lky>_xzD1>q2%``NC#J*~WQ_i)W!h zID1q;-6p80Ahqc>ni-_%RJaTx&a(*im`y-WOp$iEg30PKO!Z#Q04g4dh~oVoNI z55Qj0+b5v?5Ifai0u84VL=%F~55$?li<}SwP1paghYbJJevT_9jNCD$_|AHWoej&S zMzDRt($@bqwbYdKzh29f4&`<_iUy**x=!Ja`T71W#BM&E-ClhTF6IxOuL}}rB#w7h zDV~n7va^LSX>2DjGE&Z;XAcl92!_%FbT+=#B+a~*vV&0Aal7vUUp>BA`IFQs7t zZRUhTTwf?A(JJNJB%gt9mURAT0Ozsn{r5{+_bMYl6{J@Evd%FZwG{w&^((W1e^d43 zpvejGkzb5|KfshWNjNSnLx^J#I{$(s?c_+gI}m6Y@X5vcv$9w1gEQNhnAh zEqM0hvNTMy*gthB=$D5RB{zC?5Ugcu48c_Bg&!S5PUNtClSZcL7&&Zy2M5MDNmfx| zIYuF7gTu_~x|_SZga`W@OV0k)AXuTPV!mLjrrCL>E(?8l>29^;EFWC6`0Oqr(_i;# zMGh0X_z6-k%7@0!yfwb>N%i|7#X~M8^&{RzfE@1|2_2B>#sP-WZ+RCse{-yZYkDX~ zSQhqlLRx0wOASvPbj~(|llBDIWz8BWRn~vMn~1rN{vee;ufE8Ay**!z&m5-KeD4#_t?*a9 z_l7|+r3MBwpAEY8Az%k7VK>LDj>Wv_8D+Z3zVNgjwQ(G;XsCCm-?{)M_egF{#GtwV)f9rl;E2 z2FR|IFdZ4@Q3q&%lAsr1uWcoMtYS(Pl8U$3G{Z;S zAv7^@m&(;4)O-j9|;)Uvsp2j zjqoU5QmM{(M))R}$uYq76@<-{)I8|7@5wF>WVm$|l{r|N^{)b>16 zfBN7~4@UP!pqDT%DuEEuI~F+J{6{J~Bhhifp3ai>eS%}m00U#attGaCrHT>@=Tw4W zbPY4^MDa7r1HOad5ZMYPZ9OFLP3TpO5Q=6bOcbMDi4MP1t)~>Pr)tW3`L*pO%%w}n zHTgB8wC|f@!PPa-;1HBsr|oqqZBau@q;ES{u3Is}d36iN6DIgsh4le~tLLWx8;?ho zVNVV{;W-9Dw9ld*;fV;RkPIBX|AFCNXeb^~hs|3Y%F0k1YDP@f!s1iq=OCmFR0uoosXn0`5Ztw%!%MAd7{Dw*ZBq!jhW8+aA`+&NXg@wC9tz!qDy?07f8 zb%Xu}xu>SWC&8=qzL>(;UM8jakmH>-oRc&+>6f9Uc?pS6`9iK8KK)5WpOUTM136#j zhtG7hrnCnL*?9ZFNB{IRO6rSIJy?|`y;Ink{WO_n`7g{v zWUs8T{a_jwcVhQ5=|DvFB5_VrH&J*P8Dp^CGVm(MhHm0UpY@oVcMyS-iilUjS$HPM zh8?(d)Dou!XHgS)fu`MM@|eYe}w|h`iCfnb{0jTm;;2P3quh zWQN%Eb)#6ApUH;CHm?_&7F?ggg`{PiTM_1(qiwh|QhiDJOKyKD79w+DQ+S&rvdLZI z{;c5DH)mJr0);0xAt|3SSJy;mFkZ1eQ+>-qFUnhoT^qN5L<^S4{wUdob7es+*+aB` zAfCR-{JfuQ&T@D=T2M&hldYunmtVh-JWCbBHhNJVOo@o3v6l^lecM`w;H8Hcf|ttk zSps6{;dlUwQQve=V0Irj+DizWZ-E!}FkLuCZi2WFu(^&0bpDYH^y(NvV5IG_ZW}@0 zg(=wLZb#p_)I77pjs2-}{y(iFc$&Q5b*W8IlfX4R;4Sco4*e8N4c*N0*CXg>f_GNs zMt;Syfk)+$IXH?vFgjW=AFkI*w+ z;XkroBAAy}m*b(>#m47k@mJmZkj93{F{WsWB-T%)Msbfyh`$1i>hzzwOV3vjo*O3t H<7fU4j5a{< literal 0 HcmV?d00001 diff --git a/VerifyDeletionAutomation/docs/VerifyDeletionAutomation.md b/VerifyDeletionAutomation/docs/VerifyDeletionAutomation.md new file mode 100644 index 0000000..9d58fdb --- /dev/null +++ b/VerifyDeletionAutomation/docs/VerifyDeletionAutomation.md @@ -0,0 +1,25 @@ +# Verify Delete Intune Automation + +Powershell script used to verify objects are in Intune. It works by getting a Graph API token using an MSI Client Id and gets the Intune object using the Graph API. + +## Prerequisites + +- To verify Intune Mobile Apps, MSI should have Graph API permission: **DeviceManagementApps.Read.All** +- To verify Intune Device Configuration Profiles or Group Policy Configurations, MSI should have Graph API permission: **DeviceManagementConfiguration.Read.All** +- Powershell ISE + +### Steps: + +1. Open PowerShell ISE in elevated mode and open the following script: Verify-DeleteIntuneObjects.ps1 +2. Manually configure the following variables for your own environment: + - MobileAppClientId: Azure MSI Client Id used to get the Graph API access token + - DeviceConfigProfileClientId: Azure MSI Client Id used to get the Graph API access token + - GroupPolicyClientId: Azure MSI Client Id used to get the Graph API access token + - MobileAppId: The Intune Mobile Application Id being verified + - DeviceConfigurationProfileId: The Intune Device Configuration Profile Id being verified + - GroupPolicyConfigurationId: The Intune Group Policy Configuration Id being verified +3. Run the Powershell script + +## Notes + +The Verify Delete Intune Automation script was originally created for use inside of Microsoft. We have modified it to be more generic, so it can be used as a template for other Intune environments outside of Microsoft.