Private/Export-PolicyData.ps1
|
function Export-PolicyData { param ( [Parameter(Mandatory = $true)] [System.Collections.ArrayList]$ExportData, [Parameter(Mandatory = $true)] [string]$FilePath ) $extension = [System.IO.Path]::GetExtension($FilePath).ToLower() if ($extension -eq '.xlsx') { # Check if ImportExcel module is installed if (-not (Get-Module -ListAvailable -Name ImportExcel)) { Write-Host "The ImportExcel module is required for Excel export. Would you like to install it? (y/n)" -ForegroundColor Yellow $install = Read-Host if ($install -match '^[Yy]') { try { Install-Module -Name ImportExcel -Force -Scope CurrentUser Write-Host "ImportExcel module installed successfully." -ForegroundColor Green } catch { Write-Host "Failed to install ImportExcel module. Falling back to CSV export." -ForegroundColor Red $FilePath = [System.IO.Path]::ChangeExtension($FilePath, '.csv') $ExportData | Export-Csv -Path $FilePath -NoTypeInformation Write-Host "Results exported to $FilePath" -ForegroundColor Green return } } else { Write-Host "Falling back to CSV export." -ForegroundColor Yellow $FilePath = [System.IO.Path]::ChangeExtension($FilePath, '.csv') $ExportData | Export-Csv -Path $FilePath -NoTypeInformation Write-Host "Results exported to $FilePath" -ForegroundColor Green return } } try { $ExportData | Export-Excel -Path $FilePath -AutoSize -AutoFilter -WorksheetName "Intune Assignments" -TableName "IntuneAssignments" Write-Host "Results exported to $FilePath" -ForegroundColor Green } catch { Write-Host "Failed to export to Excel. Falling back to CSV export." -ForegroundColor Red $FilePath = [System.IO.Path]::ChangeExtension($FilePath, '.csv') $ExportData | Export-Csv -Path $FilePath -NoTypeInformation Write-Host "Results exported to $FilePath" -ForegroundColor Green } } else { $ExportData | Export-Csv -Path $FilePath -NoTypeInformation Write-Host "Results exported to $FilePath" -ForegroundColor Green } } |