From 0ba28b18d48afeec1ddbf768285768e91a5a85d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20K=C5=82ys?= Date: Fri, 21 Aug 2026 13:07:46 +0200 Subject: [PATCH 1/8] Refactor PowerShell API consistency --- Build/Export-WebsiteDocumentationCatalog.ps1 | 4 +- Docs/Add-OfficeExcelAutoFilter.md | 20 +- Docs/Add-OfficeExcelPackageMetadata.md | 34 +- Docs/Add-OfficeExcelPageBreak.md | 30 +- Docs/Add-OfficeExcelPowerQueryMetadata.md | 34 +- Docs/Add-OfficeExcelReportCallout.md | 18 +- Docs/Add-OfficeExcelReportKpiRow.md | 18 +- Docs/Add-OfficeExcelReportLegend.md | 18 +- Docs/Add-OfficeExcelReportParagraph.md | 18 +- Docs/Add-OfficeExcelReportSection.md | 18 +- Docs/Add-OfficeExcelReportSpacer.md | 18 +- Docs/Add-OfficeExcelReportTitle.md | 18 +- Docs/Add-OfficeExcelSlicer.md | 34 +- Docs/Add-OfficeExcelTableOfContents.md | 36 +- Docs/Add-OfficeExcelTableRow.md | 32 +- Docs/Add-OfficeExcelThreadedComment.md | 34 +- Docs/Add-OfficeExcelTimeline.md | 34 +- Docs/Add-OfficeExcelVisual.md | 18 +- Docs/Add-OfficePdfCanvas.md | 18 +- Docs/Add-OfficePdfCanvasText.md | 20 +- Docs/Add-OfficePdfPageOverlay.md | 18 +- Docs/Add-OfficePdfStamp.md | 20 +- Docs/Add-OfficePowerPointBullets.md | 18 +- Docs/Add-OfficePowerPointChart.md | 22 +- Docs/Add-OfficePowerPointImage.md | 18 +- Docs/Add-OfficePowerPointSection.md | 18 +- Docs/Add-OfficePowerPointShape.md | 18 +- Docs/Add-OfficePowerPointSlide.md | 24 +- Docs/Add-OfficePowerPointTable.md | 20 +- Docs/Add-OfficePowerPointTextBox.md | 20 +- Docs/Add-OfficePowerPointVisual.md | 18 +- Docs/Add-OfficeVisioConnector.md | 20 +- Docs/Add-OfficeVisioContainer.md | 18 +- Docs/Add-OfficeVisioDiamond.md | 18 +- Docs/Add-OfficeVisioEllipse.md | 18 +- Docs/Add-OfficeVisioPage.md | 18 +- Docs/Add-OfficeVisioRectangle.md | 18 +- Docs/Add-OfficeVisioStencilShape.md | 22 +- Docs/Add-OfficeVisioTextBox.md | 18 +- Docs/Add-OfficeWordFooter.md | 18 +- Docs/Add-OfficeWordHeader.md | 18 +- Docs/Add-OfficeWordList.md | 18 +- Docs/Add-OfficeWordPageNumber.md | 18 +- Docs/Add-OfficeWordTableCondition.md | 18 +- Docs/Add-OfficeWordVisual.md | 18 +- Docs/Clear-OfficeExcelAutoFilter.md | 20 +- Docs/Clear-OfficeExcelComment.md | 30 +- .../Clear-OfficeExcelConditionalFormatting.md | 26 +- Docs/Clear-OfficeExcelDataValidation.md | 26 +- Docs/Clear-OfficeExcelPageBreak.md | 26 +- Docs/Clear-OfficeExcelRange.md | 40 +- Docs/Close-OfficeExcel.md | 32 +- Docs/Close-OfficePowerPoint.md | 38 +- Docs/Close-OfficeWord.md | 34 +- Docs/Compare-OfficeExcelRange.md | 34 +- Docs/Compare-OfficeExcelWorkbook.md | 30 +- Docs/ConvertFrom-OfficeMarkdownHtml.md | 34 +- Docs/ConvertFrom-OfficePdfHtml.md | 34 +- Docs/ConvertFrom-OfficeWordHtml.md | 34 +- Docs/ConvertFrom-OfficeWordMarkdown.md | 34 +- Docs/ConvertTo-OfficeMarkdownHtml.md | 34 +- Docs/ConvertTo-OfficeVisioPng.md | 36 +- Docs/ConvertTo-OfficeVisioSvg.md | 36 +- Docs/ConvertTo-OfficeWordHtml.md | 34 +- Docs/ConvertTo-OfficeWordMarkdown.md | 34 +- Docs/Copy-OfficeExcelSheet.md | 42 +- Docs/Copy-OfficeExcelWorkbook.md | 30 +- Docs/Copy-OfficePdfPage.md | 18 +- Docs/Copy-OfficePowerPointSlide.md | 18 +- Docs/Edit-OfficeExcelRow.md | 34 +- Docs/Export-OfficeDocumentPdf.md | 230 + Docs/Export-OfficeVisioVisual.md | 34 +- Docs/Find-OfficeExcel.md | 6 +- Docs/Find-OfficeWord.md | 8 +- Docs/Find-OfficeWordList.md | 8 +- Docs/Find-OfficeWordTable.md | 8 +- Docs/Generated/PSWriteOffice-help.xml | 8737 ++++++++++------- Docs/Get-OfficeExcel.md | 26 +- Docs/Get-OfficeExcelComment.md | 6 +- Docs/Get-OfficeExcelCommentAudit.md | 6 +- Docs/Get-OfficeExcelConditionalFormatting.md | 6 +- Docs/Get-OfficeExcelDataModel.md | 6 +- Docs/Get-OfficeExcelDataValidation.md | 6 +- Docs/Get-OfficeExcelDocumentProperty.md | 34 +- Docs/Get-OfficeExcelFormulaAnalysis.md | 6 +- Docs/Get-OfficeExcelNamedRange.md | 26 +- Docs/Get-OfficeExcelPageBreak.md | 6 +- Docs/Get-OfficeExcelPivotTable.md | 26 +- Docs/Get-OfficeExcelPreflight.md | 6 +- Docs/Get-OfficeExcelRange.md | 30 +- Docs/Get-OfficeExcelRichText.md | 6 +- Docs/Get-OfficeExcelStreamingContract.md | 6 +- Docs/Get-OfficeExcelSummary.md | 6 +- Docs/Get-OfficeExcelTable.md | 26 +- Docs/Get-OfficeExcelTemplateMarker.md | 30 +- Docs/Get-OfficeExcelUsedRange.md | 30 +- Docs/Get-OfficeExcelWorksheetView.md | 6 +- Docs/Get-OfficeMarkdown.md | 34 +- Docs/Get-OfficeMarkdownFrontMatter.md | 34 +- Docs/Get-OfficeMarkdownHeading.md | 34 +- Docs/Get-OfficeMarkdownNode.md | 34 +- Docs/Get-OfficeMarkdownTable.md | 34 +- Docs/Get-OfficePowerPoint.md | 18 +- Docs/Get-OfficePowerPointSection.md | 2 +- Docs/Get-OfficePowerPointTheme.md | 2 +- Docs/Get-OfficeWord.md | 22 +- Docs/Get-OfficeWordBookmark.md | 34 +- Docs/Get-OfficeWordCheckBox.md | 6 +- Docs/Get-OfficeWordComboBox.md | 6 +- Docs/Get-OfficeWordContentControl.md | 6 +- Docs/Get-OfficeWordDatePicker.md | 6 +- Docs/Get-OfficeWordDocumentProperty.md | 34 +- Docs/Get-OfficeWordDropDownList.md | 6 +- Docs/Get-OfficeWordEndnote.md | 6 +- Docs/Get-OfficeWordField.md | 6 +- Docs/Get-OfficeWordFootnote.md | 6 +- Docs/Get-OfficeWordHyperlink.md | 30 +- Docs/Get-OfficeWordImage.md | 30 +- Docs/Get-OfficeWordList.md | 6 +- Docs/Get-OfficeWordParagraph.md | 6 +- Docs/Get-OfficeWordPictureControl.md | 6 +- Docs/Get-OfficeWordRepeatingSection.md | 6 +- Docs/Get-OfficeWordSection.md | 6 +- Docs/Get-OfficeWordShape.md | 30 +- Docs/Get-OfficeWordStatistics.md | 6 +- Docs/Get-OfficeWordTable.md | 6 +- Docs/Get-OfficeWordTableOfContents.md | 6 +- Docs/Get-OfficeWordText.md | 30 +- Docs/Import-OfficeExcelDelimitedText.md | 34 +- Docs/Invoke-OfficeExcelTemplate.md | 34 +- Docs/Invoke-OfficeExcelTemplateOptionalRow.md | 34 +- Docs/Invoke-OfficeExcelTemplateRow.md | 34 +- Docs/Invoke-OfficeExcelTemplateSheet.md | 34 +- Docs/Join-OfficeExcelSheet.md | 34 +- Docs/Join-OfficeExcelWorkbook.md | 6 +- Docs/Join-OfficeWordDocument.md | 32 +- Docs/Move-OfficeExcelSheet.md | 30 +- Docs/Move-OfficePdfPage.md | 18 +- Docs/New-OfficeExcel.md | 44 +- Docs/New-OfficeExcelDashboard.md | 34 +- Docs/New-OfficeMarkdown.md | 396 +- Docs/New-OfficeOpenDocument.md | 19 +- Docs/New-OfficePdf.md | 38 +- Docs/New-OfficePowerPoint.md | 34 +- Docs/New-OfficeRtf.md | 26 +- Docs/New-OfficeVisio.md | 34 +- Docs/New-OfficeWord.md | 76 +- Docs/Protect-OfficeExcelWorkbook.md | 34 +- Docs/Readme.md | 5 +- Docs/Remove-OfficeConfluencePage.md | 18 +- Docs/Remove-OfficePdfAnnotation.md | 18 +- Docs/Remove-OfficePdfPage.md | 18 +- Docs/Remove-OfficePowerPointSlide.md | 20 +- Docs/Rename-OfficePowerPointSection.md | 2 +- Docs/Repair-OfficeExcelWorkbook.md | 34 +- Docs/Save-OfficeEmail.md | 18 +- Docs/Save-OfficeEmailMailbox.md | 18 +- Docs/Save-OfficeExcel.md | 38 +- Docs/Save-OfficeMarkdown.md | 397 +- Docs/Save-OfficeOpenDocument.md | 18 +- Docs/Save-OfficePdf.md | 37 +- Docs/Save-OfficePowerPoint.md | 48 +- Docs/Save-OfficeVisio.md | 29 +- Docs/Save-OfficeWord.md | 72 +- Docs/Set-OfficeExcelActiveSheet.md | 30 +- Docs/Set-OfficeExcelCell.md | 20 +- Docs/Set-OfficeExcelChartAxis.md | 18 +- Docs/Set-OfficeExcelChartDataLabels.md | 18 +- Docs/Set-OfficeExcelChartLegend.md | 18 +- Docs/Set-OfficeExcelChartPoint.md | 20 +- Docs/Set-OfficeExcelChartSeries.md | 20 +- Docs/Set-OfficeExcelChartStyle.md | 18 +- Docs/Set-OfficeExcelChartTrendline.md | 20 +- Docs/Set-OfficeExcelColumn.md | 18 +- Docs/Set-OfficeExcelColumnGroup.md | 18 +- Docs/Set-OfficeExcelColumnStyleByHeader.md | 20 +- Docs/Set-OfficeExcelDataValidationMessage.md | 30 +- Docs/Set-OfficeExcelFormula.md | 20 +- Docs/Set-OfficeExcelFreeze.md | 20 +- Docs/Set-OfficeExcelPrintArea.md | 30 +- Docs/Set-OfficeExcelPrintLayout.md | 34 +- Docs/Set-OfficeExcelPrintTitles.md | 34 +- Docs/Set-OfficeExcelRefreshOnOpen.md | 34 +- Docs/Set-OfficeExcelRichText.md | 30 +- Docs/Set-OfficeExcelRow.md | 18 +- Docs/Set-OfficeExcelRowGroup.md | 18 +- Docs/Set-OfficeExcelTheme.md | 34 +- Docs/Set-OfficePdfAnnotation.md | 18 +- Docs/Set-OfficePdfForm.md | 18 +- Docs/Set-OfficePdfPage.md | 18 +- Docs/Set-OfficePdfSignature.md | 18 +- Docs/Set-OfficePowerPointBackground.md | 22 +- Docs/Set-OfficePowerPointNotes.md | 18 +- Docs/Set-OfficePowerPointSlideLayout.md | 22 +- Docs/Set-OfficePowerPointSlideSize.md | 28 +- Docs/Set-OfficePowerPointSlideTitle.md | 18 +- Docs/Set-OfficePowerPointSlideTransition.md | 18 +- Docs/Test-OfficeExcelAccessibility.md | 6 +- Docs/Test-OfficeExcelTemplateBinding.md | 6 +- Docs/Test-OfficeExcelWorkbook.md | 6 +- Docs/Unprotect-OfficeExcelWorkbook.md | 30 +- Docs/Update-OfficeExcelComment.md | 34 +- Docs/Update-OfficeExcelText.md | 74 +- Docs/Update-OfficePowerPointText.md | 24 +- Docs/Update-OfficeWordText.md | 54 +- Examples/Csv/Example-CsvAdvanced.ps1 | 3 +- Examples/Csv/Example-CsvBasic.ps1 | 3 +- .../Csv/Example-CsvDbaClientXRoundTrip.ps1 | 2 +- Examples/ExamplePowerPoint01-AddSlides.ps1 | 19 +- Examples/ExamplePowerPoint02-Basic.ps1 | 7 +- Examples/ExamplePowerPoint04-Text.ps1 | 11 +- Examples/ExamplePowerPoint05-Load.ps1 | 9 +- Examples/ExamplePowerPoint06-RemoveSlide.ps1 | 9 +- Examples/ExamplePowerPoint07-WhatIf.ps1 | 7 +- .../ExamplePowerPoint08-TablesAndShapes.ps1 | 15 +- Examples/ExamplePowerPoint09-Placeholders.ps1 | 19 +- Examples/ExamplePowerPoint10-Dsl.ps1 | 3 +- .../ExamplePowerPoint11-InspectionDsl.ps1 | 3 +- Examples/ExamplePowerPoint12-LayoutDsl.ps1 | 3 +- ...ePowerPoint13-LayoutPlaceholderAliases.ps1 | 3 +- Examples/Excel/Example-ExcelAdvanced.ps1 | 5 +- Examples/Excel/Example-ExcelAliasDsl.ps1 | 5 +- Examples/Excel/Example-ExcelBasic.ps1 | 5 +- .../Excel/Example-ExcelChartFormatting.ps1 | 7 +- .../Example-ExcelDbaClientXRoundTrip.ps1 | 2 +- Examples/Excel/Example-ExcelHtmlReview.ps1 | 9 +- .../Example-ExcelHtmlTablesViaPSParseHTML.ps1 | 3 +- Examples/Excel/Example-ExcelInternalLinks.ps1 | 5 +- .../Excel/Example-ExcelLinksAndImages.ps1 | 5 +- .../Example-ExcelModifyExistingTables.ps1 | 11 +- .../Example-ExcelNavigationAndRanges.ps1 | 5 +- Examples/Excel/Example-ExcelPictures.ps1 | 5 +- Examples/Excel/Example-ExcelReadObjects.ps1 | 5 +- .../Excel/Example-ExcelTablesAndRanges.ps1 | 5 +- Examples/Excel/Example-ExcelUrlLinks.ps1 | 5 +- .../Excel/Recipe-Excel-CompareWorkbooks.ps1 | 2 +- .../Excel/Recipe-Excel-ImportDelimited.ps1 | 2 +- .../Excel/Recipe-Excel-MergeWorkbooks.ps1 | 2 +- .../Markdown/Example-MarkdownAdvanced.ps1 | 5 +- Examples/Markdown/Example-MarkdownDsl.ps1 | 5 +- .../Recipe-Markdown-InspectContent.ps1 | 6 +- .../Markdown/Recipe-Markdown-PublishHtml.ps1 | 2 +- .../Recipe-Markdown-WordRoundTrip.ps1 | 4 +- Examples/Pdf/Example-OfficePdfExports.ps1 | 53 + Examples/Pdf/Example-OfficePdfSidecars.ps1 | 50 - Examples/Pdf/Example-PdfOperations.ps1 | 16 +- Examples/Pdf/Example-PdfReportDsl.ps1 | 5 +- ...Example-PowerPointBackgroundsAndLayout.ps1 | 23 +- .../PowerPoint/Example-PowerPointCharts.ps1 | 25 +- .../Example-PowerPointCopySlides.ps1 | 13 +- .../Example-PowerPointHtmlReview.ps1 | 25 +- ...Example-PowerPointModifyExistingShapes.ps1 | 29 +- .../Example-PowerPointSectionsAndImport.ps1 | 31 +- .../Example-PowerPointThemeAndLayout.ps1 | 17 +- ...Example-PowerPointTransitionsAndSizing.ps1 | 19 +- .../Recipe-PowerPoint-CopyAndRemoveSlides.ps1 | 4 +- .../Recipe-PowerPoint-InspectDeck.ps1 | 2 +- .../Recipe-PowerPoint-ObjectComposition.ps1 | 4 +- .../Recipe-PowerPoint-ReuseSlides.ps1 | 2 +- .../Recipe-PowerPoint-SectionsAndNotes.ps1 | 4 +- .../Recipe-PowerPoint-UpdateExisting.ps1 | 2 +- Examples/Rtf/Example-RtfMarkdownRoundTrip.ps1 | 7 +- .../Showcase-Excel-OperationalDashboard.ps1 | 9 +- .../Showcase-PowerPoint-ServiceBrief.ps1 | 9 +- Examples/Showcase/Showcase-RichTextRuns.ps1 | 11 +- .../Showcase-Word-ExecutiveReport.ps1 | 7 +- .../Visio/Example-Visio-ArchitectureMap.ps1 | 17 +- .../Visio/Example-Visio-NetworkTopology.ps1 | 13 +- .../Visio/Example-Visio-PackageStencil.ps1 | 11 +- Examples/Visio/Example-Visio-StencilFlow.ps1 | 11 +- .../Visuals/Example-ChartForgeXVisuals.ps1 | 17 +- Examples/Word/Example-WordAdvanced.ps1 | 3 +- Examples/Word/Example-WordAliasDsl.ps1 | 5 +- .../Word/Example-WordBackgroundMailMerge.ps1 | 4 +- Examples/Word/Example-WordBasic.ps1 | 5 +- Examples/Word/Example-WordCharts.ps1 | 15 +- Examples/Word/Example-WordFind.ps1 | 11 +- Examples/Word/Example-WordHtmlConvert.ps1 | 9 +- Examples/Word/Example-WordLineBreaks.ps1 | 23 +- .../Word/Example-WordLinksAndProperties.ps1 | 2 +- Examples/Word/Example-WordMarkdownConvert.ps1 | 9 +- .../Example-WordModifyExistingObjects.ps1 | 20 +- .../Word/Example-WordProtectionWatermark.ps1 | 5 +- Examples/Word/Example-WordReplaceText.ps1 | 2 +- .../Example-WordTableCalculatedColumns.ps1 | 5 +- Examples/Word/Example-WordTableCells.ps1 | 2 +- Examples/Word/Example-WordTableConditions.ps1 | 5 +- Examples/Word/Recipe-Word-HtmlToDocument.ps1 | 2 +- Examples/Word/Recipe-Word-MergeDocuments.ps1 | 2 +- .../Recipe-Markdown-Word-PdfDelivery.ps1 | 2 +- PSWriteOffice.psd1 | 2 +- README.MD | 66 +- .../RemoveOfficeConfluencePageCommand.cs | 24 +- .../Cmdlets/Email/SaveOfficeEmailCommand.cs | 21 +- .../Email/SaveOfficeEmailMailboxCommand.cs | 10 +- .../Excel/AddOfficeExcelAutoFilterCommand.cs | 66 +- .../AddOfficeExcelPackageMetadataCommand.cs | 27 +- .../Excel/AddOfficeExcelPageBreakCommand.cs | 44 +- ...AddOfficeExcelPowerQueryMetadataCommand.cs | 26 +- .../Excel/AddOfficeExcelSlicerCommand.cs | 23 +- .../AddOfficeExcelTableOfContentsCommand.cs | 62 +- .../Excel/AddOfficeExcelTableRowCommand.cs | 63 +- .../AddOfficeExcelThreadedCommentCommand.cs | 38 +- .../Excel/AddOfficeExcelTimelineCommand.cs | 23 +- .../Excel/AddOfficeExcelVisualCommand.cs | 17 +- .../ClearOfficeExcelAutoFilterCommand.cs | 18 +- .../Excel/ClearOfficeExcelCommentCommand.cs | 38 +- ...OfficeExcelConditionalFormattingCommand.cs | 24 +- .../ClearOfficeExcelDataValidationCommand.cs | 24 +- .../Excel/ClearOfficeExcelPageBreakCommand.cs | 36 +- .../Excel/ClearOfficeExcelRangeCommand.cs | 30 +- .../Cmdlets/Excel/CloseOfficeExcelCommand.cs | 23 +- .../Excel/CompareOfficeExcelRangeCommand.cs | 29 +- .../CompareOfficeExcelWorkbookCommand.cs | 20 +- .../Excel/CopyOfficeExcelSheetCommand.cs | 19 +- .../Excel/CopyOfficeExcelWorkbookCommand.cs | 20 +- .../Excel/EditOfficeExcelRowCommand.cs | 26 +- .../Cmdlets/Excel/FindOfficeExcelCommand.cs | 32 +- .../Cmdlets/Excel/GetOfficeExcelCommand.cs | 26 +- .../GetOfficeExcelCommentAuditCommand.cs | 26 +- .../Excel/GetOfficeExcelCommentCommand.cs | 34 +- ...OfficeExcelConditionalFormattingCommand.cs | 22 +- .../Excel/GetOfficeExcelDataModelCommand.cs | 14 +- .../GetOfficeExcelDataValidationCommand.cs | 22 +- .../GetOfficeExcelDocumentPropertyCommand.cs | 49 +- .../GetOfficeExcelFormulaAnalysisCommand.cs | 20 +- .../Excel/GetOfficeExcelNamedRangeCommand.cs | 110 +- .../Excel/GetOfficeExcelPageBreakCommand.cs | 31 +- .../Excel/GetOfficeExcelPivotTableCommand.cs | 67 +- .../Excel/GetOfficeExcelPreflightCommand.cs | 54 +- .../Excel/GetOfficeExcelRangeCommand.cs | 29 +- .../Excel/GetOfficeExcelRichTextCommand.cs | 19 +- .../GetOfficeExcelStreamingContractCommand.cs | 14 +- .../Excel/GetOfficeExcelSummaryCommand.cs | 157 +- .../Excel/GetOfficeExcelTableCommand.cs | 78 +- .../GetOfficeExcelTemplateMarkerCommand.cs | 25 +- .../Excel/GetOfficeExcelUsedRangeCommand.cs | 29 +- .../GetOfficeExcelWorksheetViewCommand.cs | 27 +- .../ImportOfficeExcelDelimitedTextCommand.cs | 60 +- .../Excel/InvokeOfficeExcelTemplateCommand.cs | 26 +- ...keOfficeExcelTemplateOptionalRowCommand.cs | 26 +- .../InvokeOfficeExcelTemplateRowCommand.cs | 29 +- .../InvokeOfficeExcelTemplateSheetCommand.cs | 29 +- .../Excel/JoinOfficeExcelSheetCommand.cs | 23 +- .../Excel/JoinOfficeExcelWorkbookCommand.cs | 69 +- .../Excel/MoveOfficeExcelSheetCommand.cs | 20 +- .../Cmdlets/Excel/NewOfficeExcelCommand.cs | 93 +- .../Excel/NewOfficeExcelDashboardCommand.cs | 30 +- .../Excel/OfficeExcelReportBlockCommands.cs | 150 +- .../ProtectOfficeExcelWorkbookCommand.cs | 29 +- .../Excel/RepairOfficeExcelWorkbookCommand.cs | 37 +- .../Cmdlets/Excel/SaveOfficeExcelCommand.cs | 79 +- .../Excel/SetOfficeExcelActiveSheetCommand.cs | 50 +- .../Excel/SetOfficeExcelCellCommand.cs | 36 +- .../Excel/SetOfficeExcelChartAxisCommand.cs | 41 +- .../SetOfficeExcelChartDataLabelsCommand.cs | 29 +- .../Excel/SetOfficeExcelChartLegendCommand.cs | 33 +- .../Excel/SetOfficeExcelChartPointCommand.cs | 30 +- .../Excel/SetOfficeExcelChartSeriesCommand.cs | 53 +- .../Excel/SetOfficeExcelChartStyleCommand.cs | 17 +- .../SetOfficeExcelChartTrendlineCommand.cs | 27 +- .../Excel/SetOfficeExcelColumnCommand.cs | 33 +- .../Excel/SetOfficeExcelColumnGroupCommand.cs | 47 +- ...etOfficeExcelColumnStyleByHeaderCommand.cs | 94 +- ...OfficeExcelDataValidationMessageCommand.cs | 66 +- .../Excel/SetOfficeExcelFormulaCommand.cs | 9 +- .../Excel/SetOfficeExcelFreezeCommand.cs | 24 +- .../Excel/SetOfficeExcelPrintAreaCommand.cs | 20 +- .../Excel/SetOfficeExcelPrintLayoutCommand.cs | 37 +- .../Excel/SetOfficeExcelPrintTitlesCommand.cs | 30 +- .../SetOfficeExcelRefreshOnOpenCommand.cs | 32 +- .../Excel/SetOfficeExcelRichTextCommand.cs | 28 +- .../Cmdlets/Excel/SetOfficeExcelRowCommand.cs | 30 +- .../Excel/SetOfficeExcelRowGroupCommand.cs | 19 +- .../Excel/SetOfficeExcelThemeCommand.cs | 50 +- .../TestOfficeExcelAccessibilityCommand.cs | 20 +- .../TestOfficeExcelTemplateBindingCommand.cs | 23 +- .../Excel/TestOfficeExcelWorkbookCommand.cs | 29 +- .../UnprotectOfficeExcelWorkbookCommand.cs | 23 +- .../Excel/UpdateOfficeExcelCommentCommand.cs | 41 +- .../Excel/UpdateOfficeExcelTextCommand.cs | 69 +- .../ConvertFromOfficeMarkdownHtmlCommand.cs | 94 +- .../ConvertToOfficeMarkdownHtmlCommand.cs | 85 +- .../Markdown/GetOfficeMarkdownCommand.cs | 24 +- .../GetOfficeMarkdownFrontMatterCommand.cs | 20 +- .../GetOfficeMarkdownHeadingCommand.cs | 29 +- .../Markdown/GetOfficeMarkdownNodeCommand.cs | 63 +- .../Markdown/GetOfficeMarkdownTableCommand.cs | 54 +- .../Markdown/NewOfficeMarkdownCommand.cs | 161 +- .../Markdown/SaveOfficeMarkdownCommand.cs | 174 +- .../Cmdlets/OfficeMutationCmdlet.cs | 37 + .../NewOfficeOpenDocumentCommand.cs | 28 +- .../SaveOfficeOpenDocumentCommand.cs | 19 +- .../Cmdlets/Pdf/AddOfficePdfCanvasCommand.cs | 28 +- .../Pdf/AddOfficePdfCanvasTextCommand.cs | 18 +- .../Pdf/AddOfficePdfPageOverlayCommand.cs | 19 +- .../Cmdlets/Pdf/AddOfficePdfStampCommand.cs | 28 +- .../Pdf/ConvertFromOfficePdfHtmlCommand.cs | 110 +- .../Cmdlets/Pdf/CopyOfficePdfPageCommand.cs | 13 +- .../Pdf/ExportOfficeDocumentPdfCommand.cs | 178 + .../Cmdlets/Pdf/MoveOfficePdfPageCommand.cs | 13 +- .../Cmdlets/Pdf/NewOfficePdfCommand.cs | 104 +- .../Pdf/RemoveOfficePdfAnnotationCommand.cs | 21 +- .../Cmdlets/Pdf/RemoveOfficePdfPageCommand.cs | 13 +- .../Cmdlets/Pdf/SaveOfficePdfCommand.cs | 25 +- .../Pdf/SetOfficePdfAnnotationCommand.cs | 21 +- .../Cmdlets/Pdf/SetOfficePdfFormCommand.cs | 50 +- .../Cmdlets/Pdf/SetOfficePdfPageCommand.cs | 37 +- .../Pdf/SetOfficePdfSignatureCommand.cs | 20 +- .../AddOfficePowerPointBulletsCommand.cs | 38 +- .../AddOfficePowerPointChartCommand.cs | 114 +- .../AddOfficePowerPointImageCommand.cs | 23 +- .../AddOfficePowerPointSectionCommand.cs | 29 +- .../AddOfficePowerPointShapeCommand.cs | 50 +- .../AddOfficePowerPointSlideCommand.cs | 41 +- .../AddOfficePowerPointTableCommand.cs | 104 +- .../AddOfficePowerPointTextBoxCommand.cs | 23 +- .../AddOfficePowerPointVisualCommand.cs | 17 +- .../CloseOfficePowerPointCommand.cs | 32 +- .../CopyOfficePowerPointSlideCommand.cs | 17 +- .../PowerPoint/GetOfficePowerPointCommand.cs | 30 +- .../GetOfficePowerPointSectionCommand.cs | 23 +- .../GetOfficePowerPointThemeCommand.cs | 17 +- .../PowerPoint/NewOfficePowerPointCommand.cs | 106 +- .../RemoveOfficePowerPointSlideCommand.cs | 21 +- .../RenameOfficePowerPointSectionCommand.cs | 30 +- .../PowerPoint/SaveOfficePowerPointCommand.cs | 61 +- .../SetOfficePowerPointBackgroundCommand.cs | 29 +- .../SetOfficePowerPointNotesCommand.cs | 17 +- .../SetOfficePowerPointSlideLayoutCommand.cs | 20 +- .../SetOfficePowerPointSlideSizeCommand.cs | 22 +- .../SetOfficePowerPointSlideTitleCommand.cs | 24 +- ...tOfficePowerPointSlideTransitionCommand.cs | 17 +- .../UpdateOfficePowerPointTextCommand.cs | 28 +- .../Cmdlets/Rtf/NewOfficeRtfCommand.cs | 32 +- .../Visio/AddOfficeVisioConnectorCommand.cs | 16 +- .../Visio/AddOfficeVisioContainerCommand.cs | 82 +- .../Visio/AddOfficeVisioDiamondCommand.cs | 10 +- .../Visio/AddOfficeVisioEllipseCommand.cs | 10 +- .../Visio/AddOfficeVisioPageCommand.cs | 26 +- .../Visio/AddOfficeVisioRectangleCommand.cs | 10 +- .../AddOfficeVisioStencilShapeCommand.cs | 43 +- .../Visio/AddOfficeVisioTextBoxCommand.cs | 10 +- .../Visio/ConvertToOfficeVisioPngCommand.cs | 23 +- .../Visio/ConvertToOfficeVisioSvgCommand.cs | 23 +- .../Visio/ExportOfficeVisioVisualCommand.cs | 35 +- .../Cmdlets/Visio/NewOfficeVisioCommand.cs | 36 +- .../Cmdlets/Visio/SaveOfficeVisioCommand.cs | 41 +- .../Word/AddOfficeWordFooterCommand.cs | 12 +- .../Word/AddOfficeWordHeaderCommand.cs | 12 +- .../Cmdlets/Word/AddOfficeWordListCommand.cs | 15 +- .../Word/AddOfficeWordPageNumberCommand.cs | 12 +- .../AddOfficeWordTableConditionCommand.cs | 18 +- .../Word/AddOfficeWordVisualCommand.cs | 20 +- .../Cmdlets/Word/CloseOfficeWordCommand.cs | 40 +- .../Word/ConvertFromOfficeWordHtmlCommand.cs | 96 +- .../ConvertFromOfficeWordMarkdownCommand.cs | 218 +- .../Word/ConvertToOfficeWordHtmlCommand.cs | 70 +- .../ConvertToOfficeWordMarkdownCommand.cs | 70 +- .../Cmdlets/Word/FindOfficeWordCommand.cs | 47 +- .../Cmdlets/Word/FindOfficeWordListCommand.cs | 47 +- .../Word/FindOfficeWordTableCommand.cs | 40 +- .../Word/GetOfficeWordBookmarkCommand.cs | 46 +- .../Word/GetOfficeWordCheckBoxCommand.cs | 44 +- .../Word/GetOfficeWordComboBoxCommand.cs | 34 +- .../Cmdlets/Word/GetOfficeWordCommand.cs | 24 +- .../GetOfficeWordContentControlCommand.cs | 34 +- .../Word/GetOfficeWordDatePickerCommand.cs | 34 +- .../GetOfficeWordDocumentPropertyCommand.cs | 46 +- .../Word/GetOfficeWordDropDownListCommand.cs | 34 +- .../Word/GetOfficeWordEndnoteCommand.cs | 37 +- .../Cmdlets/Word/GetOfficeWordFieldCommand.cs | 40 +- .../Word/GetOfficeWordFootnoteCommand.cs | 37 +- .../Word/GetOfficeWordHyperlinkCommand.cs | 48 +- .../Cmdlets/Word/GetOfficeWordImageCommand.cs | 34 +- .../Cmdlets/Word/GetOfficeWordListCommand.cs | 44 +- .../Word/GetOfficeWordParagraphCommand.cs | 41 +- .../GetOfficeWordPictureControlCommand.cs | 34 +- .../GetOfficeWordRepeatingSectionCommand.cs | 34 +- .../Word/GetOfficeWordSectionCommand.cs | 43 +- .../Cmdlets/Word/GetOfficeWordShapeCommand.cs | 34 +- .../Word/GetOfficeWordStatisticsCommand.cs | 34 +- .../Cmdlets/Word/GetOfficeWordTableCommand.cs | 48 +- .../GetOfficeWordTableOfContentsCommand.cs | 37 +- .../Cmdlets/Word/GetOfficeWordTextCommand.cs | 36 +- .../Word/JoinOfficeWordDocumentCommand.cs | 73 +- .../Cmdlets/Word/NewOfficeWordCommand.cs | 140 +- .../Cmdlets/Word/SaveOfficeWordCommand.cs | 99 +- .../Word/UpdateOfficeWordTextCommand.cs | 113 +- Tests/Csv.Tests.ps1 | 2 +- Tests/ExcelDsl.Tests.ps1 | 30 +- Tests/Markdown.Tests.ps1 | 6 +- Tests/OfficeIMONextSupport.Tests.ps1 | 13 +- Tests/OfficePdfExport.Tests.ps1 | 49 +- Tests/Pdf.Tests.ps1 | 20 +- Tests/PdfExistingDocumentAutomation.Tests.ps1 | 24 +- Tests/PdfFormsAndStamps.Tests.ps1 | 16 +- Tests/PdfHtml.Tests.ps1 | 2 +- Tests/PdfReadbackCompliance.Tests.ps1 | 6 +- Tests/PdfReverseConversion.Tests.ps1 | 6 +- Tests/PowerPoint.Tests.ps1 | 230 +- Tests/PublicApiConsistency.Tests.ps1 | 184 + Tests/TabularInputContracts.Tests.ps1 | 12 +- Tests/Visio.Tests.ps1 | 16 +- Tests/WordDsl.Tests.ps1 | 26 +- .../content/examples/compose-pdf-report.md | 3 +- .../content/examples/create-excel-workbook.md | 3 +- .../examples/create-powerpoint-deck.md | 3 +- .../content/examples/create-visio-diagram.md | 5 +- .../content/examples/create-word-report.md | 3 +- .../examples/read-and-convert-documents.md | 3 +- .../review-office-documents-as-html.md | 19 +- .../project-docs/docs/command-families.md | 2 +- .../project-docs/docs/excel-export-publish.md | 2 +- .../project-docs/docs/excel-merge-compare.md | 2 +- Website/content/project-docs/docs/install.md | 3 +- .../docs/markdown-convert-publish.md | 2 +- .../project-docs/docs/markdown-read-parse.md | 8 +- Website/content/project-docs/docs/overview.md | 2 +- .../docs/powerpoint-read-inspect.md | 2 +- .../docs/powerpoint-reuse-slides.md | 2 +- .../docs/powerpoint-update-existing.md | 2 +- .../project-docs/docs/word-merge-mailmerge.md | 2 +- .../apidocs/powershell/PSWriteOffice-help.xml | 8737 ++++++++++------- .../apidocs/powershell/PSWriteOffice.psd1 | 2 +- .../apidocs/powershell/command-metadata.json | 44 +- .../documentation/command-catalog.json | 2 +- 527 files changed, 17100 insertions(+), 15817 deletions(-) create mode 100644 Docs/Export-OfficeDocumentPdf.md create mode 100644 Examples/Pdf/Example-OfficePdfExports.ps1 delete mode 100644 Examples/Pdf/Example-OfficePdfSidecars.ps1 create mode 100644 Sources/PSWriteOffice/Cmdlets/OfficeMutationCmdlet.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs create mode 100644 Tests/PublicApiConsistency.Tests.ps1 diff --git a/Build/Export-WebsiteDocumentationCatalog.ps1 b/Build/Export-WebsiteDocumentationCatalog.ps1 index 25985572..2d439086 100644 --- a/Build/Export-WebsiteDocumentationCatalog.ps1 +++ b/Build/Export-WebsiteDocumentationCatalog.ps1 @@ -48,13 +48,13 @@ $familyDefinitions = @( id = 'pdf'; title = 'PDF'; description = 'Author, inspect, transform, sign, annotate, extract, preflight, and combine PDF files.' docs = 'pdf'; api = '/api/powershell/'; examples = 'https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Pdf' samples = @('New-OfficePdf', 'Join-OfficePdf', 'Get-OfficePdfPreflight', 'Set-OfficePdfSignature') - match = { param($name) $name -match 'OfficePdf' } + match = { param($name) $name -match 'OfficePdf|OfficeDocumentPdf' } } [ordered]@{ id = 'reader'; title = 'Reader and extraction'; description = 'Detect formats and extract normalized documents, chunks, tables, visuals, assets, and ingest results.' docs = 'reader'; api = '/api/powershell/'; examples = 'https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Reader' samples = @('New-OfficeDocumentReader', 'Get-OfficeDocumentChunk', 'Get-OfficeDocumentTable', 'Search-OfficeDocument') - match = { param($name) $name -match 'OfficeDocument' -and $name -ne 'Get-OfficeDocumentPageMarkdown' } + match = { param($name) $name -match 'OfficeDocument' -and $name -notin 'Get-OfficeDocumentPageMarkdown', 'Export-OfficeDocumentPdf' } } [ordered]@{ id = 'confluence'; title = 'Confluence Cloud'; description = 'Plan and publish pages, preserve managed sections, and transfer attachments through OfficeIMO.Confluence.' diff --git a/Docs/Add-OfficeExcelAutoFilter.md b/Docs/Add-OfficeExcelAutoFilter.md index 77f4b8c0..e373af17 100644 --- a/Docs/Add-OfficeExcelAutoFilter.md +++ b/Docs/Add-OfficeExcelAutoFilter.md @@ -11,12 +11,12 @@ Adds an AutoFilter to the current worksheet. ## SYNTAX ### Context (Default) ```powershell -Add-OfficeExcelAutoFilter [-Range] [-Criteria ] [] +Add-OfficeExcelAutoFilter [-Range] [-Criteria ] [-PassThru] [] ``` ### Document ```powershell -Add-OfficeExcelAutoFilter [-Range] -Document [-Sheet ] [-SheetIndex ] [-Criteria ] [] +Add-OfficeExcelAutoFilter [-Range] -Document [-Sheet ] [-SheetIndex ] [-Criteria ] [-PassThru] [] ``` ## DESCRIPTION @@ -72,6 +72,22 @@ Accept pipeline input: True (ByValue) Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: Context, Document +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Range A1 range to apply AutoFilter. diff --git a/Docs/Add-OfficeExcelPackageMetadata.md b/Docs/Add-OfficeExcelPackageMetadata.md index 1ea282c4..6a0380ad 100644 --- a/Docs/Add-OfficeExcelPackageMetadata.md +++ b/Docs/Add-OfficeExcelPackageMetadata.md @@ -16,7 +16,7 @@ Add-OfficeExcelPackageMetadata -Kind -Xml [-WorksheetName -Kind -Xml [-WorksheetName ] [-PassThru] [-WhatIf] [-Confirm] [] +Add-OfficeExcelPackageMetadata [-Path] -Kind -Xml [-WorksheetName ] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Document @@ -55,22 +55,6 @@ Accept pipeline input: True (ByValue) Accept wildcard characters: False ``` -### -InputPath -Workbook path to update. - -```yaml -Type: String -Parameter Sets: Path -Aliases: Path, FilePath -Possible values: - -Required: True -Position: 0 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - ### -Kind Metadata kind to add. @@ -103,6 +87,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -Path +Workbook path to update. + +```yaml +Type: String +Parameter Sets: Path +Aliases: InputPath, FilePath +Possible values: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -WorksheetName Worksheet for query-table metadata. Defaults to the current DSL sheet, or the first worksheet outside the DSL. diff --git a/Docs/Add-OfficeExcelPageBreak.md b/Docs/Add-OfficeExcelPageBreak.md index 933e729f..b313b0b2 100644 --- a/Docs/Add-OfficeExcelPageBreak.md +++ b/Docs/Add-OfficeExcelPageBreak.md @@ -16,7 +16,7 @@ Add-OfficeExcelPageBreak [-Sheet ] [-SheetIndex ] [-Row ] ### Path ```powershell -Add-OfficeExcelPageBreak [-InputPath] [-Sheet ] [-SheetIndex ] [-Row ] [-Column ] [-PassThru] [-WhatIf] [-Confirm] [] +Add-OfficeExcelPageBreak [-Path] [-Sheet ] [-SheetIndex ] [-Row ] [-Column ] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Document @@ -70,33 +70,33 @@ Accept pipeline input: True (ByValue) Accept wildcard characters: False ``` -### -InputPath -Workbook path to update. +### -PassThru +Emit page-break records after adding them. ```yaml -Type: String -Parameter Sets: Path -Aliases: Path, FilePath +Type: SwitchParameter +Parameter Sets: Context, Path, Document +Aliases: None Possible values: -Required: True -Position: 0 +Required: False +Position: named Default value: None Accept pipeline input: False Accept wildcard characters: False ``` -### -PassThru -Emit page-break records after adding them. +### -Path +Workbook path to update. ```yaml -Type: SwitchParameter -Parameter Sets: Context, Path, Document -Aliases: None +Type: String +Parameter Sets: Path +Aliases: InputPath, FilePath Possible values: -Required: False -Position: named +Required: True +Position: 0 Default value: None Accept pipeline input: False Accept wildcard characters: False diff --git a/Docs/Add-OfficeExcelPowerQueryMetadata.md b/Docs/Add-OfficeExcelPowerQueryMetadata.md index 18684cf2..7f371189 100644 --- a/Docs/Add-OfficeExcelPowerQueryMetadata.md +++ b/Docs/Add-OfficeExcelPowerQueryMetadata.md @@ -16,7 +16,7 @@ Add-OfficeExcelPowerQueryMetadata -Name [-WorksheetName ] [-Que ### Path ```powershell -Add-OfficeExcelPowerQueryMetadata [-InputPath] -Name [-WorksheetName ] [-QueryTableName ] [-Description ] [-CommandText ] [-RefreshOnOpen] [-PassThru] [-WhatIf] [-Confirm] [] +Add-OfficeExcelPowerQueryMetadata [-Path] -Name [-WorksheetName ] [-QueryTableName ] [-Description ] [-CommandText ] [-RefreshOnOpen] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Document @@ -92,22 +92,6 @@ Accept pipeline input: True (ByValue) Accept wildcard characters: False ``` -### -InputPath -Workbook path to update. - -```yaml -Type: String -Parameter Sets: Path -Aliases: Path, FilePath -Possible values: - -Required: True -Position: 0 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - ### -Name Connection name stored in workbook metadata. @@ -140,6 +124,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -Path +Workbook path to update. + +```yaml +Type: String +Parameter Sets: Path +Aliases: InputPath, FilePath +Possible values: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -QueryTableName Optional query-table name. diff --git a/Docs/Add-OfficeExcelReportCallout.md b/Docs/Add-OfficeExcelReportCallout.md index 9f0fc27f..4efc5f8f 100644 --- a/Docs/Add-OfficeExcelReportCallout.md +++ b/Docs/Add-OfficeExcelReportCallout.md @@ -11,7 +11,7 @@ Adds a colored callout block to the current Excel report sheet. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficeExcelReportCallout [[-Kind] ] [-Title] [-Body] [-WidthColumns ] [] +Add-OfficeExcelReportCallout [[-Kind] ] [-Title] [-Body] [-WidthColumns ] [-PassThru] [] ``` ## DESCRIPTION @@ -64,6 +64,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Title Callout title. diff --git a/Docs/Add-OfficeExcelReportKpiRow.md b/Docs/Add-OfficeExcelReportKpiRow.md index cda90afd..02c98589 100644 --- a/Docs/Add-OfficeExcelReportKpiRow.md +++ b/Docs/Add-OfficeExcelReportKpiRow.md @@ -11,7 +11,7 @@ Adds a KPI row to the current Excel report sheet. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficeExcelReportKpiRow [-InputObject] [-PerRow ] [-LabelFillColor ] [] +Add-OfficeExcelReportKpiRow [-InputObject] [-PerRow ] [-LabelFillColor ] [-PassThru] [] ``` ## DESCRIPTION @@ -64,6 +64,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -PerRow Number of KPI cards per rendered row. diff --git a/Docs/Add-OfficeExcelReportLegend.md b/Docs/Add-OfficeExcelReportLegend.md index 9924b2b3..1407221c 100644 --- a/Docs/Add-OfficeExcelReportLegend.md +++ b/Docs/Add-OfficeExcelReportLegend.md @@ -11,7 +11,7 @@ Adds a legend table to the current Excel report sheet. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficeExcelReportLegend [[-Title] ] -Header -InputObject [-FirstColumnFillByValue ] [-HeaderFillColor ] [-CaseSensitive] [] +Add-OfficeExcelReportLegend [[-Title] ] -Header -InputObject [-FirstColumnFillByValue ] [-HeaderFillColor ] [-CaseSensitive] [-PassThru] [] ``` ## DESCRIPTION @@ -116,6 +116,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Title Optional legend title. diff --git a/Docs/Add-OfficeExcelReportParagraph.md b/Docs/Add-OfficeExcelReportParagraph.md index 2b7f889e..a9cfbafd 100644 --- a/Docs/Add-OfficeExcelReportParagraph.md +++ b/Docs/Add-OfficeExcelReportParagraph.md @@ -11,7 +11,7 @@ Adds a paragraph line to the current Excel report sheet. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficeExcelReportParagraph [-Text] [] +Add-OfficeExcelReportParagraph [-Text] [-PassThru] [] ``` ## DESCRIPTION @@ -33,6 +33,22 @@ Adds prose to an OfficeIMO-composed Excel report sheet. ## PARAMETERS +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Text Paragraph text. diff --git a/Docs/Add-OfficeExcelReportSection.md b/Docs/Add-OfficeExcelReportSection.md index 8a9b4ce2..12442fdb 100644 --- a/Docs/Add-OfficeExcelReportSection.md +++ b/Docs/Add-OfficeExcelReportSection.md @@ -11,7 +11,7 @@ Adds a section heading to the current Excel report sheet. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficeExcelReportSection [-Text] [] +Add-OfficeExcelReportSection [-Text] [-PassThru] [] ``` ## DESCRIPTION @@ -33,6 +33,22 @@ Uses the report composer to add a section heading and narrative text. ## PARAMETERS +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Text Section heading text. diff --git a/Docs/Add-OfficeExcelReportSpacer.md b/Docs/Add-OfficeExcelReportSpacer.md index 17d85403..ed2803ae 100644 --- a/Docs/Add-OfficeExcelReportSpacer.md +++ b/Docs/Add-OfficeExcelReportSpacer.md @@ -11,7 +11,7 @@ Adds vertical spacing to the current Excel report sheet. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficeExcelReportSpacer [[-Rows] ] [] +Add-OfficeExcelReportSpacer [[-Rows] ] [-PassThru] [] ``` ## DESCRIPTION @@ -34,6 +34,22 @@ Advances the composer cursor before adding the next report block. ## PARAMETERS +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Rows Rows to advance. Defaults to the composer theme spacing. diff --git a/Docs/Add-OfficeExcelReportTitle.md b/Docs/Add-OfficeExcelReportTitle.md index d26397ab..9eb1644a 100644 --- a/Docs/Add-OfficeExcelReportTitle.md +++ b/Docs/Add-OfficeExcelReportTitle.md @@ -11,7 +11,7 @@ Adds a title block to the current Excel report sheet. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficeExcelReportTitle [-Title] [[-Subtitle] ] [] +Add-OfficeExcelReportTitle [-Title] [[-Subtitle] ] [-PassThru] [] ``` ## DESCRIPTION @@ -33,6 +33,22 @@ Uses the OfficeIMO sheet composer through PSWriteOffice's thin report-block wrap ## PARAMETERS +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Subtitle Optional subtitle text. diff --git a/Docs/Add-OfficeExcelSlicer.md b/Docs/Add-OfficeExcelSlicer.md index db5976e6..e6fca8c5 100644 --- a/Docs/Add-OfficeExcelSlicer.md +++ b/Docs/Add-OfficeExcelSlicer.md @@ -16,7 +16,7 @@ Add-OfficeExcelSlicer -Name [-SourceName ] [-PivotTableName -Name [-SourceName ] [-PivotTableName ] [-Xml ] [-PassThru] [-WhatIf] [-Confirm] [] +Add-OfficeExcelSlicer [-Path] -Name [-SourceName ] [-PivotTableName ] [-Xml ] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Document @@ -56,22 +56,6 @@ Accept pipeline input: True (ByValue) Accept wildcard characters: False ``` -### -InputPath -Workbook path to update. - -```yaml -Type: String -Parameter Sets: Path -Aliases: Path, FilePath -Possible values: - -Required: True -Position: 0 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - ### -Name Slicer cache name. @@ -104,6 +88,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -Path +Workbook path to update. + +```yaml +Type: String +Parameter Sets: Path +Aliases: InputPath, FilePath +Possible values: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -PivotTableName Pivot table name the slicer is intended to filter. diff --git a/Docs/Add-OfficeExcelTableOfContents.md b/Docs/Add-OfficeExcelTableOfContents.md index 7b7fa736..3688a370 100644 --- a/Docs/Add-OfficeExcelTableOfContents.md +++ b/Docs/Add-OfficeExcelTableOfContents.md @@ -16,7 +16,7 @@ Add-OfficeExcelTableOfContents [-SheetName ] [-DoNotPlaceFirst] [-NoHype ### Path ```powershell -Add-OfficeExcelTableOfContents [-InputPath] [-SheetName ] [-DoNotPlaceFirst] [-NoHyperlinks] [-IncludeNamedRanges] [-IncludeHiddenNamedRanges] [-NoStyle] [-AddBackLinks] [-BackLinkRow ] [-BackLinkColumn ] [-BackLinkText ] [-Open] [-PassThru] [] +Add-OfficeExcelTableOfContents [-Path] [-SheetName ] [-DoNotPlaceFirst] [-NoHyperlinks] [-IncludeNamedRanges] [-IncludeHiddenNamedRanges] [-NoStyle] [-AddBackLinks] [-BackLinkRow ] [-BackLinkColumn ] [-BackLinkText ] [-Open] [-PassThru] [] ``` ### Document @@ -171,22 +171,6 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -InputPath -Path to the workbook to update in place. - -```yaml -Type: String -Parameter Sets: Path -Aliases: FilePath, Path -Possible values: - -Required: True -Position: 0 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - ### -NoHyperlinks Disable internal hyperlinks in the TOC sheet. @@ -220,7 +204,7 @@ Accept wildcard characters: False ``` ### -Open -Open the workbook after saving when InputPath is used. +Open the workbook after saving when Path is used. ```yaml Type: SwitchParameter @@ -251,6 +235,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -Path +Path to the workbook to update in place. + +```yaml +Type: String +Parameter Sets: Path +Aliases: InputPath, FilePath +Possible values: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -SheetName Name of the TOC sheet. diff --git a/Docs/Add-OfficeExcelTableRow.md b/Docs/Add-OfficeExcelTableRow.md index 84e0d86d..3ab25040 100644 --- a/Docs/Add-OfficeExcelTableRow.md +++ b/Docs/Add-OfficeExcelTableRow.md @@ -11,7 +11,7 @@ Appends one or more data rows to an existing Excel table. ## SYNTAX ### Path (Default) ```powershell -Add-OfficeExcelTableRow [-InputPath] [-InputObject] -TableName [-Sheet ] [-SheetIndex ] [-PassThru] [-WhatIf] [-Confirm] [] +Add-OfficeExcelTableRow [-Path] [-InputObject] -TableName [-Sheet ] [-SheetIndex ] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Document @@ -91,34 +91,34 @@ Accept pipeline input: True (ByValue) Accept wildcard characters: False ``` -### -InputPath -Workbook path to open, update, save, and close. +### -PassThru +Emit the updated table wrapper for open document or table inputs. Path-owned workbooks are saved and closed by this command, +so they do not emit a live table wrapper. ```yaml -Type: String -Parameter Sets: Path -Aliases: Path, FilePath +Type: SwitchParameter +Parameter Sets: Path, Document, Table +Aliases: None Possible values: -Required: True -Position: 0 +Required: False +Position: named Default value: None Accept pipeline input: False Accept wildcard characters: False ``` -### -PassThru -Emit the updated table wrapper for open document or table inputs. Path-owned workbooks are saved and closed by this command, -so they do not emit a live table wrapper. +### -Path +Workbook path to open, update, save, and close. ```yaml -Type: SwitchParameter -Parameter Sets: Path, Document, Table -Aliases: None +Type: String +Parameter Sets: Path +Aliases: InputPath, FilePath Possible values: -Required: False -Position: named +Required: True +Position: 0 Default value: None Accept pipeline input: False Accept wildcard characters: False diff --git a/Docs/Add-OfficeExcelThreadedComment.md b/Docs/Add-OfficeExcelThreadedComment.md index d5e81b48..d6c7191e 100644 --- a/Docs/Add-OfficeExcelThreadedComment.md +++ b/Docs/Add-OfficeExcelThreadedComment.md @@ -16,7 +16,7 @@ Add-OfficeExcelThreadedComment -Address -Text [-Author -Address -Text [-Sheet ] [-SheetIndex ] [-Author ] [-ParentId ] [-Id ] [-Date ] [-Done] [-NoSave] [-PassThru] [-WhatIf] [-Confirm] [] +Add-OfficeExcelThreadedComment [-Path] -Address -Text [-Sheet ] [-SheetIndex ] [-Author ] [-ParentId ] [-Id ] [-Date ] [-Done] [-NoSave] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Document @@ -137,22 +137,6 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -InputPath -Workbook path to update. - -```yaml -Type: String -Parameter Sets: Path -Aliases: Path, FilePath -Possible values: - -Required: True -Position: 0 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - ### -NoSave Do not save when operating on a path-owned workbook. @@ -201,6 +185,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -Path +Workbook path to update. + +```yaml +Type: String +Parameter Sets: Path +Aliases: InputPath, FilePath +Possible values: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Sheet Worksheet name when using path or document input. diff --git a/Docs/Add-OfficeExcelTimeline.md b/Docs/Add-OfficeExcelTimeline.md index 7ecf35dc..cdda7d9c 100644 --- a/Docs/Add-OfficeExcelTimeline.md +++ b/Docs/Add-OfficeExcelTimeline.md @@ -16,7 +16,7 @@ Add-OfficeExcelTimeline -Name [-SourceName ] [-PivotTableName < ### Path ```powershell -Add-OfficeExcelTimeline [-InputPath] -Name [-SourceName ] [-PivotTableName ] [-Xml ] [-PassThru] [-WhatIf] [-Confirm] [] +Add-OfficeExcelTimeline [-Path] -Name [-SourceName ] [-PivotTableName ] [-Xml ] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Document @@ -56,22 +56,6 @@ Accept pipeline input: True (ByValue) Accept wildcard characters: False ``` -### -InputPath -Workbook path to update. - -```yaml -Type: String -Parameter Sets: Path -Aliases: Path, FilePath -Possible values: - -Required: True -Position: 0 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - ### -Name Timeline cache name. @@ -104,6 +88,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -Path +Workbook path to update. + +```yaml +Type: String +Parameter Sets: Path +Aliases: InputPath, FilePath +Possible values: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -PivotTableName Pivot table name the timeline is intended to filter. diff --git a/Docs/Add-OfficeExcelVisual.md b/Docs/Add-OfficeExcelVisual.md index 4c1025d0..db4afcd3 100644 --- a/Docs/Add-OfficeExcelVisual.md +++ b/Docs/Add-OfficeExcelVisual.md @@ -11,7 +11,7 @@ Adds a ChartForgeX artifact, portable SVG, or converted Office visual to an Exce ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficeExcelVisual [-InputObject] [-Worksheet ] [-Row ] [-Column ] [-Address ] [-OffsetX ] [-OffsetY ] [-SvgPolicy ] [-Width ] [-Height ] [-PointsPerPixel ] [-MaximumSvgElements ] [-MaximumSvgViewportDimension ] [-MaximumSvgViewportPixels ] [-Id ] [-Title ] [-AlternativeText ] [] +Add-OfficeExcelVisual [-InputObject] [-Worksheet ] [-Row ] [-Column ] [-Address ] [-OffsetX ] [-OffsetY ] [-PassThru] [-SvgPolicy ] [-Width ] [-Height ] [-PointsPerPixel ] [-MaximumSvgElements ] [-MaximumSvgViewportDimension ] [-MaximumSvgViewportPixels ] [-Id ] [-Title ] [-AlternativeText ] [] ``` ## DESCRIPTION @@ -203,6 +203,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the image added to the worksheet. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -PointsPerPixel Conversion factor from ChartForgeX pixels to Office points. diff --git a/Docs/Add-OfficePdfCanvas.md b/Docs/Add-OfficePdfCanvas.md index 87b258d6..da8312a0 100644 --- a/Docs/Add-OfficePdfCanvas.md +++ b/Docs/Add-OfficePdfCanvas.md @@ -11,7 +11,7 @@ Draws arbitrary visual canvas content on existing PDF pages. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficePdfCanvas [-Content] -Path -OutputPath [-PageRange ] [-BehindContent] [-Opacity ] [-ConfigureRendering ] [-Password ] [-IgnorePermissionRestrictions] [-WhatIf] [-Confirm] [] +Add-OfficePdfCanvas [-Content] -Path -OutputPath [-PageRange ] [-BehindContent] [-Opacity ] [-ConfigureRendering ] [-Password ] [-IgnorePermissionRestrictions] [-PassThru] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -146,6 +146,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Password Password used to authenticate an encrypted input PDF. diff --git a/Docs/Add-OfficePdfCanvasText.md b/Docs/Add-OfficePdfCanvasText.md index d0967256..06eb8740 100644 --- a/Docs/Add-OfficePdfCanvasText.md +++ b/Docs/Add-OfficePdfCanvasText.md @@ -11,12 +11,12 @@ Adds PowerShell-friendly text or rich text runs to the active fixed-position PDF ## SYNTAX ### Text (Default) ```powershell -Add-OfficePdfCanvasText [-Text] -X -Y [-Width ] [-Height ] [-Color ] [-Align ] [-FontSize ] [-LineHeight ] [-Bold] [-Italic] [-Underline] [-Strike] [-BackgroundColor ] [-Font ] [-Baseline ] [] +Add-OfficePdfCanvasText [-Text] -X -Y [-Width ] [-Height ] [-Color ] [-Align ] [-FontSize ] [-LineHeight ] [-Bold] [-Italic] [-Underline] [-Strike] [-BackgroundColor ] [-Font ] [-Baseline ] [-PassThru] [] ``` ### Run ```powershell -Add-OfficePdfCanvasText -Run -X -Y [-Width ] [-Height ] [-Color ] [-Align ] [-FontSize ] [-LineHeight ] [] +Add-OfficePdfCanvasText -Run -X -Y [-Width ] [-Height ] [-Color ] [-Align ] [-FontSize ] [-LineHeight ] [-PassThru] [] ``` ## DESCRIPTION @@ -202,6 +202,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: Text, Run +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Run Rich run specifications created with TextRun or supplied as hashtables or objects. Link targets are not supported. diff --git a/Docs/Add-OfficePdfPageOverlay.md b/Docs/Add-OfficePdfPageOverlay.md index e3ee407f..c84705d5 100644 --- a/Docs/Add-OfficePdfPageOverlay.md +++ b/Docs/Add-OfficePdfPageOverlay.md @@ -11,7 +11,7 @@ Overlays or underlays one source PDF page on selected pages of another PDF. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficePdfPageOverlay -Path -SourcePath -OutputPath [-SourcePageNumber ] [-PageRange ] [-Fit ] [-HorizontalAlign ] [-VerticalAlign ] [-X ] [-Y ] [-Width ] [-Height ] [-Opacity ] [-Underlay] [-ReadOptions ] [-Password ] [-IgnorePermissionRestrictions] [-SourcePassword ] [-IgnoreSourcePermissionRestrictions] [-SourceReadOptions ] [-WhatIf] [-Confirm] [] +Add-OfficePdfPageOverlay -Path -SourcePath -OutputPath [-SourcePageNumber ] [-PageRange ] [-Fit ] [-HorizontalAlign ] [-VerticalAlign ] [-X ] [-Y ] [-Width ] [-Height ] [-Opacity ] [-Underlay] [-ReadOptions ] [-Password ] [-IgnorePermissionRestrictions] [-SourcePassword ] [-IgnoreSourcePermissionRestrictions] [-SourceReadOptions ] [-PassThru] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -157,6 +157,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Password Password used to authenticate the target PDF. diff --git a/Docs/Add-OfficePdfStamp.md b/Docs/Add-OfficePdfStamp.md index cb7f673d..24653f87 100644 --- a/Docs/Add-OfficePdfStamp.md +++ b/Docs/Add-OfficePdfStamp.md @@ -11,12 +11,12 @@ Adds a text or image stamp to an existing PDF. ## SYNTAX ### Text (Default) ```powershell -Add-OfficePdfStamp -Path -OutputPath -Text [-Password ] [-IgnorePermissionRestrictions] [-PageRange ] [-X ] [-Y ] [-FontSize ] [-Color ] [-Rotation ] [-Watermark] [-WhatIf] [-Confirm] [] +Add-OfficePdfStamp -Path -OutputPath -Text [-Password ] [-IgnorePermissionRestrictions] [-PageRange ] [-X ] [-Y ] [-FontSize ] [-Color ] [-Rotation ] [-Watermark] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Image ```powershell -Add-OfficePdfStamp -Path -OutputPath -Image [-Password ] [-IgnorePermissionRestrictions] [-PageRange ] [-X ] [-Y ] [-Width ] [-Height ] [-Rotation ] [-Watermark] [-WhatIf] [-Confirm] [] +Add-OfficePdfStamp -Path -OutputPath -Image [-Password ] [-IgnorePermissionRestrictions] [-PageRange ] [-X ] [-Y ] [-Width ] [-Height ] [-Rotation ] [-Watermark] [-PassThru] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -159,6 +159,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: Text, Image +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Password Password used to authenticate an encrypted input PDF. diff --git a/Docs/Add-OfficePowerPointBullets.md b/Docs/Add-OfficePowerPointBullets.md index 01cf14c4..5d92e429 100644 --- a/Docs/Add-OfficePowerPointBullets.md +++ b/Docs/Add-OfficePowerPointBullets.md @@ -11,7 +11,7 @@ Adds a bulleted list to a PowerPoint slide. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficePowerPointBullets [-Bullets] [-Slide ] [-X ] [-Y ] [-Width ] [-Height ] [-Level ] [-BulletChar ] [] +Add-OfficePowerPointBullets [-Bullets] [-Slide ] [-X ] [-Y ] [-Width ] [-Height ] [-Level ] [-BulletChar ] [-PassThru] [] ``` ## DESCRIPTION @@ -96,6 +96,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Slide Target slide that will receive the bullet list (optional inside DSL). diff --git a/Docs/Add-OfficePowerPointChart.md b/Docs/Add-OfficePowerPointChart.md index a1022010..4b700cd4 100644 --- a/Docs/Add-OfficePowerPointChart.md +++ b/Docs/Add-OfficePowerPointChart.md @@ -11,17 +11,17 @@ Adds a chart to a PowerPoint slide. ## SYNTAX ### Default (Default) ```powershell -Add-OfficePowerPointChart [-Slide ] [-Type ] [-X ] [-Y ] [-Width ] [-Height ] [-Title ] [] +Add-OfficePowerPointChart [-Slide ] [-Type ] [-X ] [-Y ] [-Width ] [-Height ] [-Title ] [-PassThru] [] ``` ### Categorical ```powershell -Add-OfficePowerPointChart -InputObject -CategoryProperty -SeriesProperty [-Slide ] [-Type ] [-X ] [-Y ] [-Width ] [-Height ] [-Title ] [] +Add-OfficePowerPointChart -InputObject -CategoryProperty -SeriesProperty [-Slide ] [-Type ] [-X ] [-Y ] [-Width ] [-Height ] [-Title ] [-PassThru] [] ``` ### Scatter ```powershell -Add-OfficePowerPointChart -InputObject -XProperty -YProperty [-Slide ] [-Type ] [-X ] [-Y ] [-Width ] [-Height ] [-Title ] [] +Add-OfficePowerPointChart -InputObject -XProperty -YProperty [-Slide ] [-Type ] [-X ] [-Y ] [-Width ] [-Height ] [-Title ] [-PassThru] [] ``` ## DESCRIPTION @@ -107,6 +107,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: Default, Categorical, Scatter +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -SeriesProperty Property names used as numeric series on standard charts. diff --git a/Docs/Add-OfficePowerPointImage.md b/Docs/Add-OfficePowerPointImage.md index 3c8c9537..c4c8a20f 100644 --- a/Docs/Add-OfficePowerPointImage.md +++ b/Docs/Add-OfficePowerPointImage.md @@ -11,7 +11,7 @@ Adds an image to a PowerPoint slide. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficePowerPointImage [-Path] [-Slide ] [-X ] [-Y ] [-Width ] [-Height ] [] +Add-OfficePowerPointImage [-Path] [-Slide ] [-X ] [-Y ] [-Width ] [-Height ] [-PassThru] [] ``` ## DESCRIPTION @@ -49,6 +49,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Path Path to the image file. diff --git a/Docs/Add-OfficePowerPointSection.md b/Docs/Add-OfficePowerPointSection.md index c0392271..0ff8fb76 100644 --- a/Docs/Add-OfficePowerPointSection.md +++ b/Docs/Add-OfficePowerPointSection.md @@ -11,7 +11,7 @@ Adds a section to a PowerPoint presentation. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficePowerPointSection -Name [-Presentation ] [-StartSlideIndex ] [] +Add-OfficePowerPointSection -Name [-Presentation ] [-StartSlideIndex ] [-PassThru] [] ``` ## DESCRIPTION @@ -48,6 +48,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Presentation Presentation to update (optional inside DSL). diff --git a/Docs/Add-OfficePowerPointShape.md b/Docs/Add-OfficePowerPointShape.md index db259163..a916189d 100644 --- a/Docs/Add-OfficePowerPointShape.md +++ b/Docs/Add-OfficePowerPointShape.md @@ -11,7 +11,7 @@ Adds a basic shape to a slide. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficePowerPointShape [-Slide ] [-ShapeType ] [-X ] [-Y ] [-Width ] [-Height ] [-Name ] [-FillColor ] [-OutlineColor ] [-OutlineWidth ] [] +Add-OfficePowerPointShape [-Slide ] [-ShapeType ] [-X ] [-Y ] [-Width ] [-Height ] [-Name ] [-FillColor ] [-OutlineColor ] [-OutlineWidth ] [-PassThru] [] ``` ## DESCRIPTION @@ -112,6 +112,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -ShapeType Shape geometry preset name (e.g., Rectangle, Ellipse, Line). diff --git a/Docs/Add-OfficePowerPointSlide.md b/Docs/Add-OfficePowerPointSlide.md index 4285407d..cbac41da 100644 --- a/Docs/Add-OfficePowerPointSlide.md +++ b/Docs/Add-OfficePowerPointSlide.md @@ -11,17 +11,17 @@ Adds a new slide to a PowerPoint presentation. ## SYNTAX ### Index (Default) ```powershell -Add-OfficePowerPointSlide [[-Content] ] [-Presentation ] [-Master ] [-Layout ] [] +Add-OfficePowerPointSlide [[-Content] ] [-Presentation ] [-Master ] [-Layout ] [-PassThru] [] ``` ### Name ```powershell -Add-OfficePowerPointSlide [[-Content] ] -LayoutName [-Presentation ] [-Master ] [-CaseSensitive] [] +Add-OfficePowerPointSlide [[-Content] ] -LayoutName [-Presentation ] [-Master ] [-CaseSensitive] [-PassThru] [] ``` ### Type ```powershell -Add-OfficePowerPointSlide [[-Content] ] -LayoutType [-Presentation ] [-Master ] [] +Add-OfficePowerPointSlide [[-Content] ] -LayoutType [-Presentation ] [-Master ] [-PassThru] [] ``` ## DESCRIPTION @@ -31,7 +31,7 @@ Creates a slide using OfficeIMO master/layout indexes and can execute nested DSL ### EXAMPLE 1 ```powershell -PS> $ppt = New-OfficePowerPoint -FilePath .\deck.pptx; Add-OfficePowerPointSlide -Presentation $ppt +PS> $ppt = New-OfficePowerPoint -Path .\deck.pptx; Add-OfficePowerPointSlide -Presentation $ppt ``` Creates a deck and appends a new slide at the end. @@ -141,6 +141,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: Index, Name, Type +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Presentation Presentation to update (optional inside New-OfficePowerPoint). diff --git a/Docs/Add-OfficePowerPointTable.md b/Docs/Add-OfficePowerPointTable.md index f914a9e4..4e1278f4 100644 --- a/Docs/Add-OfficePowerPointTable.md +++ b/Docs/Add-OfficePowerPointTable.md @@ -11,12 +11,12 @@ Adds a table to a PowerPoint slide. ## SYNTAX ### InputObject (Default) ```powershell -Add-OfficePowerPointTable [[-Slide] ] [-InputObject] [-Header ] [-NoHeader] [-View ] [-CollectionSeparator ] [-DictionaryEntrySeparator ] [-DictionaryKeyValueSeparator ] [-MaxCollectionItems ] [-MaxNestingDepth ] [-X ] [-Y ] [-Width ] [-Height ] [-StyleId ] [] +Add-OfficePowerPointTable [[-Slide] ] [-InputObject] [-Header ] [-NoHeader] [-View ] [-CollectionSeparator ] [-DictionaryEntrySeparator ] [-DictionaryKeyValueSeparator ] [-MaxCollectionItems ] [-MaxNestingDepth ] [-X ] [-Y ] [-Width ] [-Height ] [-StyleId ] [-PassThru] [] ``` ### Size ```powershell -Add-OfficePowerPointTable [[-Slide] ] -Rows -Columns [-X ] [-Y ] [-Width ] [-Height ] [-StyleId ] [] +Add-OfficePowerPointTable [[-Slide] ] -Rows -Columns [-X ] [-Y ] [-Width ] [-Height ] [-StyleId ] [-PassThru] [] ``` ## DESCRIPTION @@ -194,6 +194,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: InputObject, Size +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Rows Row count for an empty table. diff --git a/Docs/Add-OfficePowerPointTextBox.md b/Docs/Add-OfficePowerPointTextBox.md index 3b0cfa94..3c05f899 100644 --- a/Docs/Add-OfficePowerPointTextBox.md +++ b/Docs/Add-OfficePowerPointTextBox.md @@ -11,12 +11,12 @@ Adds a text box to a slide. ## SYNTAX ### Text (Default) ```powershell -Add-OfficePowerPointTextBox -Text [-Slide ] [-X ] [-Y ] [-Width ] [-Height ] [] +Add-OfficePowerPointTextBox -Text [-Slide ] [-X ] [-Y ] [-Width ] [-Height ] [-PassThru] [] ``` ### Run ```powershell -Add-OfficePowerPointTextBox -Run [-Slide ] [-X ] [-Y ] [-Width ] [-Height ] [] +Add-OfficePowerPointTextBox -Run [-Slide ] [-X ] [-Y ] [-Width ] [-Height ] [-PassThru] [] ``` ## DESCRIPTION @@ -53,6 +53,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: Text, Run +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Run Rich text runs. Each run can be created with TextRun/PowerPointTextRun or provided as a hashtable/object. diff --git a/Docs/Add-OfficePowerPointVisual.md b/Docs/Add-OfficePowerPointVisual.md index e2936590..158c4052 100644 --- a/Docs/Add-OfficePowerPointVisual.md +++ b/Docs/Add-OfficePowerPointVisual.md @@ -11,7 +11,7 @@ Adds a ChartForgeX artifact, portable SVG, or converted Office visual to a Power ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficePowerPointVisual [-InputObject] [-Slide ] [-X ] [-Y ] [-SvgPolicy ] [-Width ] [-Height ] [-PointsPerPixel ] [-MaximumSvgElements ] [-MaximumSvgViewportDimension ] [-MaximumSvgViewportPixels ] [-Id ] [-Title ] [-AlternativeText ] [] +Add-OfficePowerPointVisual [-InputObject] [-Slide ] [-X ] [-Y ] [-PassThru] [-SvgPolicy ] [-Width ] [-Height ] [-PointsPerPixel ] [-MaximumSvgElements ] [-MaximumSvgViewportDimension ] [-MaximumSvgViewportPixels ] [-Id ] [-Title ] [-AlternativeText ] [] ``` ## DESCRIPTION @@ -139,6 +139,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the picture added to the slide. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -PointsPerPixel Conversion factor from ChartForgeX pixels to Office points. diff --git a/Docs/Add-OfficeVisioConnector.md b/Docs/Add-OfficeVisioConnector.md index 893c2547..69eac23c 100644 --- a/Docs/Add-OfficeVisioConnector.md +++ b/Docs/Add-OfficeVisioConnector.md @@ -11,12 +11,12 @@ Adds a connector between two Visio shapes. ## SYNTAX ### ByKey (Default) ```powershell -Add-OfficeVisioConnector -From -To [-Page ] [-Kind ] [-FromSide ] [-ToSide ] [-Label ] [-LineColor ] [-LineWeight ] [-LinePattern ] [-BeginArrow ] [-EndArrow ] [] +Add-OfficeVisioConnector -From -To [-Page ] [-Kind ] [-FromSide ] [-ToSide ] [-Label ] [-LineColor ] [-LineWeight ] [-LinePattern ] [-BeginArrow ] [-EndArrow ] [-PassThru] [] ``` ### ByShape ```powershell -Add-OfficeVisioConnector -FromShape -ToShape [-Page ] [-Kind ] [-FromSide ] [-ToSide ] [-Label ] [-LineColor ] [-LineWeight ] [-LinePattern ] [-BeginArrow ] [-EndArrow ] [] +Add-OfficeVisioConnector -FromShape -ToShape [-Page ] [-Kind ] [-FromSide ] [-ToSide ] [-Label ] [-LineColor ] [-LineWeight ] [-LinePattern ] [-BeginArrow ] [-EndArrow ] [-PassThru] [] ``` ## DESCRIPTION @@ -213,6 +213,22 @@ Accept pipeline input: True (ByValue) Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: ByKey, ByShape +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -To Target shape key, id, or name. diff --git a/Docs/Add-OfficeVisioContainer.md b/Docs/Add-OfficeVisioContainer.md index e749c743..174eb2c8 100644 --- a/Docs/Add-OfficeVisioContainer.md +++ b/Docs/Add-OfficeVisioContainer.md @@ -11,7 +11,7 @@ Creates an OfficeIMO-authored Visio-native container around existing shapes. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficeVisioContainer [[-InputObject] ] -Id [-Page ] [-ShapeId ] [-Text ] [-Margin ] [-HeadingHeight ] [-FillColor ] [-LineColor ] [-LineWeight ] [-ContainerStyle ] [-HeadingStyle ] [-Locked] [-NoAutoResize] [-NoHighlight] [-NoRibbon] [] +Add-OfficeVisioContainer [[-InputObject] ] -Id [-Page ] [-ShapeId ] [-Text ] [-Margin ] [-HeadingHeight ] [-FillColor ] [-LineColor ] [-LineWeight ] [-ContainerStyle ] [-HeadingStyle ] [-Locked] [-NoAutoResize] [-NoHighlight] [-NoRibbon] [-PassThru] [] ``` ## DESCRIPTION @@ -256,6 +256,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -ShapeId Shape keys or ids to include in the container. diff --git a/Docs/Add-OfficeVisioDiamond.md b/Docs/Add-OfficeVisioDiamond.md index ef494a02..7ade339f 100644 --- a/Docs/Add-OfficeVisioDiamond.md +++ b/Docs/Add-OfficeVisioDiamond.md @@ -11,7 +11,7 @@ Adds a diamond shape to the current Visio page. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficeVisioDiamond [[-Text] ] [-Page ] [-Key ] [-X ] [-Y ] [-Width ] [-Height ] [-Unit ] [-Name ] [-FillColor ] [-LineColor ] [-LineWeight ] [] +Add-OfficeVisioDiamond [[-Text] ] [-Page ] [-Key ] [-X ] [-Y ] [-Width ] [-Height ] [-Unit ] [-Name ] [-FillColor ] [-LineColor ] [-LineWeight ] [-PassThru] [] ``` ## DESCRIPTION @@ -142,6 +142,22 @@ Accept pipeline input: True (ByValue) Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Text Text placed inside the shape. diff --git a/Docs/Add-OfficeVisioEllipse.md b/Docs/Add-OfficeVisioEllipse.md index 806ac6a6..9731864c 100644 --- a/Docs/Add-OfficeVisioEllipse.md +++ b/Docs/Add-OfficeVisioEllipse.md @@ -11,7 +11,7 @@ Adds an ellipse shape to the current Visio page. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficeVisioEllipse [[-Text] ] [-Page ] [-Key ] [-X ] [-Y ] [-Width ] [-Height ] [-Unit ] [-Name ] [-FillColor ] [-LineColor ] [-LineWeight ] [] +Add-OfficeVisioEllipse [[-Text] ] [-Page ] [-Key ] [-X ] [-Y ] [-Width ] [-Height ] [-Unit ] [-Name ] [-FillColor ] [-LineColor ] [-LineWeight ] [-PassThru] [] ``` ## DESCRIPTION @@ -142,6 +142,22 @@ Accept pipeline input: True (ByValue) Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Text Text placed inside the shape. diff --git a/Docs/Add-OfficeVisioPage.md b/Docs/Add-OfficeVisioPage.md index a1189e5f..8016d75b 100644 --- a/Docs/Add-OfficeVisioPage.md +++ b/Docs/Add-OfficeVisioPage.md @@ -11,7 +11,7 @@ Adds a page to a Visio document and optionally executes nested DSL content. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficeVisioPage [-Name] [[-Content] ] [-Document ] [-Width ] [-Height ] [-Unit ] [] +Add-OfficeVisioPage [-Name] [[-Content] ] [-Document ] [-Width ] [-Height ] [-Unit ] [-PassThru] [] ``` ## DESCRIPTION @@ -96,6 +96,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Unit Measurement unit for width and height. diff --git a/Docs/Add-OfficeVisioRectangle.md b/Docs/Add-OfficeVisioRectangle.md index 15647692..c87e3bc3 100644 --- a/Docs/Add-OfficeVisioRectangle.md +++ b/Docs/Add-OfficeVisioRectangle.md @@ -11,7 +11,7 @@ Adds a rectangle shape to the current Visio page. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficeVisioRectangle [[-Text] ] [-Page ] [-Key ] [-X ] [-Y ] [-Width ] [-Height ] [-Unit ] [-Name ] [-NameU ] [-FillColor ] [-LineColor ] [-LineWeight ] [-LinePattern ] [-FillPattern ] [-Angle ] [] +Add-OfficeVisioRectangle [[-Text] ] [-Page ] [-Key ] [-X ] [-Y ] [-Width ] [-Height ] [-Unit ] [-Name ] [-NameU ] [-FillColor ] [-LineColor ] [-LineWeight ] [-LinePattern ] [-FillPattern ] [-Angle ] [-PassThru] [] ``` ## DESCRIPTION @@ -206,6 +206,22 @@ Accept pipeline input: True (ByValue) Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Text Text placed inside the shape. diff --git a/Docs/Add-OfficeVisioStencilShape.md b/Docs/Add-OfficeVisioStencilShape.md index fea8ae0d..fd7d956e 100644 --- a/Docs/Add-OfficeVisioStencilShape.md +++ b/Docs/Add-OfficeVisioStencilShape.md @@ -11,17 +11,17 @@ Adds a stencil shape to the current Visio page. ## SYNTAX ### CatalogName (Default) ```powershell -Add-OfficeVisioStencilShape [-Stencil] [[-Text] ] [-Page ] [-Catalog ] [-Key ] [-X ] [-Y ] [-Width ] [-Height ] [-ShapeName ] [-NameU ] [-FillColor ] [-LineColor ] [-LineWeight ] [-LinePattern ] [-FillPattern ] [-Angle ] [] +Add-OfficeVisioStencilShape [-Stencil] [[-Text] ] [-Page ] [-Catalog ] [-Key ] [-X ] [-Y ] [-Width ] [-Height ] [-ShapeName ] [-NameU ] [-FillColor ] [-LineColor ] [-LineWeight ] [-LinePattern ] [-FillPattern ] [-Angle ] [-PassThru] [] ``` ### CatalogObject ```powershell -Add-OfficeVisioStencilShape [-Stencil] [[-Text] ] -CatalogObject [-Page ] [-Key ] [-X ] [-Y ] [-Width ] [-Height ] [-ShapeName ] [-NameU ] [-FillColor ] [-LineColor ] [-LineWeight ] [-LinePattern ] [-FillPattern ] [-Angle ] [] +Add-OfficeVisioStencilShape [-Stencil] [[-Text] ] -CatalogObject [-Page ] [-Key ] [-X ] [-Y ] [-Width ] [-Height ] [-ShapeName ] [-NameU ] [-FillColor ] [-LineColor ] [-LineWeight ] [-LinePattern ] [-FillPattern ] [-Angle ] [-PassThru] [] ``` ### BuiltIn ```powershell -Add-OfficeVisioStencilShape [-Stencil] [[-Text] ] [-Page ] [-BuiltIn ] [-Key ] [-X ] [-Y ] [-Width ] [-Height ] [-ShapeName ] [-NameU ] [-FillColor ] [-LineColor ] [-LineWeight ] [-LinePattern ] [-FillPattern ] [-Angle ] [] +Add-OfficeVisioStencilShape [-Stencil] [[-Text] ] [-Page ] [-BuiltIn ] [-Key ] [-X ] [-Y ] [-Width ] [-Height ] [-ShapeName ] [-NameU ] [-FillColor ] [-LineColor ] [-LineWeight ] [-LinePattern ] [-FillPattern ] [-Angle ] [-PassThru] [] ``` ## DESCRIPTION @@ -249,6 +249,22 @@ Accept pipeline input: True (ByValue) Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: CatalogName, CatalogObject, BuiltIn +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -ShapeName Optional shape name. diff --git a/Docs/Add-OfficeVisioTextBox.md b/Docs/Add-OfficeVisioTextBox.md index cc9fadaa..d25fb1ac 100644 --- a/Docs/Add-OfficeVisioTextBox.md +++ b/Docs/Add-OfficeVisioTextBox.md @@ -11,7 +11,7 @@ Adds a text box to the current Visio page. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficeVisioTextBox [-Text] [-Page ] [-Key ] [-X ] [-Y ] [-Width ] [-Height ] [-Unit ] [-Name ] [-NameU ] [-FillColor ] [-LineColor ] [-LineWeight ] [] +Add-OfficeVisioTextBox [-Text] [-Page ] [-Key ] [-X ] [-Y ] [-Width ] [-Height ] [-Unit ] [-Name ] [-NameU ] [-FillColor ] [-LineColor ] [-LineWeight ] [-PassThru] [] ``` ## DESCRIPTION @@ -158,6 +158,22 @@ Accept pipeline input: True (ByValue) Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Text Text placed inside the text box. diff --git a/Docs/Add-OfficeWordFooter.md b/Docs/Add-OfficeWordFooter.md index b3213a10..3d4c0733 100644 --- a/Docs/Add-OfficeWordFooter.md +++ b/Docs/Add-OfficeWordFooter.md @@ -11,7 +11,7 @@ Adds content to a section footer. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficeWordFooter [[-Content] ] [-Type ] [] +Add-OfficeWordFooter [[-Content] ] [-Type ] [-PassThru] [] ``` ## DESCRIPTION @@ -44,6 +44,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Type The footer kind (Default/First/Even). diff --git a/Docs/Add-OfficeWordHeader.md b/Docs/Add-OfficeWordHeader.md index 50964d5d..f63a3910 100644 --- a/Docs/Add-OfficeWordHeader.md +++ b/Docs/Add-OfficeWordHeader.md @@ -11,7 +11,7 @@ Adds content to a section header. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficeWordHeader [[-Content] ] [-Type ] [] +Add-OfficeWordHeader [[-Content] ] [-Type ] [-PassThru] [] ``` ## DESCRIPTION @@ -44,6 +44,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Type The header type to modify. diff --git a/Docs/Add-OfficeWordList.md b/Docs/Add-OfficeWordList.md index 9a614680..da80c5ac 100644 --- a/Docs/Add-OfficeWordList.md +++ b/Docs/Add-OfficeWordList.md @@ -11,7 +11,7 @@ Starts a list inside the current section or paragraph anchor. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficeWordList [[-Content] ] [[-Style] ] [] +Add-OfficeWordList [[-Content] ] [[-Style] ] [-PassThru] [] ``` ## DESCRIPTION @@ -44,6 +44,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Style Built-in list style or custom numbering scheme. diff --git a/Docs/Add-OfficeWordPageNumber.md b/Docs/Add-OfficeWordPageNumber.md index cbaa8941..596910ef 100644 --- a/Docs/Add-OfficeWordPageNumber.md +++ b/Docs/Add-OfficeWordPageNumber.md @@ -11,7 +11,7 @@ Adds a PAGE field to the current header/footer. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficeWordPageNumber [-IncludeTotalPages] [] +Add-OfficeWordPageNumber [-IncludeTotalPages] [-PassThru] [] ``` ## DESCRIPTION @@ -44,6 +44,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### CommonParameters This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). diff --git a/Docs/Add-OfficeWordTableCondition.md b/Docs/Add-OfficeWordTableCondition.md index b5a652e6..9f931ffa 100644 --- a/Docs/Add-OfficeWordTableCondition.md +++ b/Docs/Add-OfficeWordTableCondition.md @@ -11,7 +11,7 @@ Attaches conditional formatting logic to the current table. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficeWordTableCondition -FilterScript [-TableStyle ] [-BackgroundColor ] [] +Add-OfficeWordTableCondition -FilterScript [-TableStyle ] [-BackgroundColor ] [-PassThru] [] ``` ## DESCRIPTION @@ -60,6 +60,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -TableStyle Optional table style applied when the predicate matches. diff --git a/Docs/Add-OfficeWordVisual.md b/Docs/Add-OfficeWordVisual.md index 9d86ddee..7dfa3833 100644 --- a/Docs/Add-OfficeWordVisual.md +++ b/Docs/Add-OfficeWordVisual.md @@ -11,7 +11,7 @@ Adds a ChartForgeX artifact, portable SVG, or converted Office visual to Word. ## SYNTAX ### __AllParameterSets ```powershell -Add-OfficeWordVisual [-InputObject] [-Paragraph ] [-Wrap ] [-SvgPolicy ] [-Width ] [-Height ] [-PointsPerPixel ] [-MaximumSvgElements ] [-MaximumSvgViewportDimension ] [-MaximumSvgViewportPixels ] [-Id ] [-Title ] [-AlternativeText ] [] +Add-OfficeWordVisual [-InputObject] [-Paragraph ] [-Wrap ] [-PassThru] [-SvgPolicy ] [-Width ] [-Height ] [-PointsPerPixel ] [-MaximumSvgElements ] [-MaximumSvgViewportDimension ] [-MaximumSvgViewportPixels ] [-Id ] [-Title ] [-AlternativeText ] [] ``` ## DESCRIPTION @@ -156,6 +156,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the image added to the paragraph. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -PointsPerPixel Conversion factor from ChartForgeX pixels to Office points. diff --git a/Docs/Clear-OfficeExcelAutoFilter.md b/Docs/Clear-OfficeExcelAutoFilter.md index 7e9bee23..157931c6 100644 --- a/Docs/Clear-OfficeExcelAutoFilter.md +++ b/Docs/Clear-OfficeExcelAutoFilter.md @@ -11,12 +11,12 @@ Clears any AutoFilter on the current worksheet. ## SYNTAX ### Context (Default) ```powershell -Clear-OfficeExcelAutoFilter [] +Clear-OfficeExcelAutoFilter [-PassThru] [] ``` ### Document ```powershell -Clear-OfficeExcelAutoFilter -Document [-Sheet ] [-SheetIndex ] [] +Clear-OfficeExcelAutoFilter -Document [-Sheet ] [-SheetIndex ] [-PassThru] [] ``` ## DESCRIPTION @@ -49,6 +49,22 @@ Accept pipeline input: True (ByValue) Accept wildcard characters: False ``` +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: Context, Document +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Sheet Worksheet name when using Document. diff --git a/Docs/Clear-OfficeExcelComment.md b/Docs/Clear-OfficeExcelComment.md index cd54e91f..e4385b08 100644 --- a/Docs/Clear-OfficeExcelComment.md +++ b/Docs/Clear-OfficeExcelComment.md @@ -16,7 +16,7 @@ Clear-OfficeExcelComment [-Sheet ] [-SheetIndex ] [-Address [-Sheet ] [-SheetIndex ] [-Address ] [-Range ] [-Author ] [-TextContains ] [-All] [-PassThru] [-WhatIf] [-Confirm] [] +Clear-OfficeExcelComment [-Path] [-Sheet ] [-SheetIndex ] [-Address ] [-Range ] [-Author ] [-TextContains ] [-All] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Document @@ -104,33 +104,33 @@ Accept pipeline input: True (ByValue) Accept wildcard characters: False ``` -### -InputPath -Workbook path to update. +### -PassThru +Returns the number of comments cleared. ```yaml -Type: String -Parameter Sets: Path -Aliases: Path, FilePath +Type: SwitchParameter +Parameter Sets: Context, Path, Document +Aliases: None Possible values: -Required: True -Position: 0 +Required: False +Position: named Default value: None Accept pipeline input: False Accept wildcard characters: False ``` -### -PassThru -Returns the number of comments cleared. +### -Path +Workbook path to update. ```yaml -Type: SwitchParameter -Parameter Sets: Context, Path, Document -Aliases: None +Type: String +Parameter Sets: Path +Aliases: InputPath, FilePath Possible values: -Required: False -Position: named +Required: True +Position: 0 Default value: None Accept pipeline input: False Accept wildcard characters: False diff --git a/Docs/Clear-OfficeExcelConditionalFormatting.md b/Docs/Clear-OfficeExcelConditionalFormatting.md index f4e60f04..a253019b 100644 --- a/Docs/Clear-OfficeExcelConditionalFormatting.md +++ b/Docs/Clear-OfficeExcelConditionalFormatting.md @@ -11,17 +11,17 @@ Clears conditional formatting rules from one or more Excel worksheets. ## SYNTAX ### Context (Default) ```powershell -Clear-OfficeExcelConditionalFormatting [-Sheet ] [-SheetIndex ] [-Range ] [-HeaderName ] [-TableName ] [-HeaderRow ] [-IncludeHeader] [-WhatIf] [-Confirm] [] +Clear-OfficeExcelConditionalFormatting [-Sheet ] [-SheetIndex ] [-Range ] [-HeaderName ] [-TableName ] [-HeaderRow ] [-IncludeHeader] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Path ```powershell -Clear-OfficeExcelConditionalFormatting [-InputPath] [-Sheet ] [-SheetIndex ] [-Range ] [-HeaderName ] [-TableName ] [-HeaderRow ] [-IncludeHeader] [-WhatIf] [-Confirm] [] +Clear-OfficeExcelConditionalFormatting [-Path] [-Sheet ] [-SheetIndex ] [-Range ] [-HeaderName ] [-TableName ] [-HeaderRow ] [-IncludeHeader] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Document ```powershell -Clear-OfficeExcelConditionalFormatting -Document [-Sheet ] [-SheetIndex ] [-Range ] [-HeaderName ] [-TableName ] [-HeaderRow ] [-IncludeHeader] [-WhatIf] [-Confirm] [] +Clear-OfficeExcelConditionalFormatting -Document [-Sheet ] [-SheetIndex ] [-Range ] [-HeaderName ] [-TableName ] [-HeaderRow ] [-IncludeHeader] [-PassThru] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -104,13 +104,29 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -InputPath +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: Context, Path, Document +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Path Workbook path to update. ```yaml Type: String Parameter Sets: Path -Aliases: Path, FilePath +Aliases: InputPath, FilePath Possible values: Required: True diff --git a/Docs/Clear-OfficeExcelDataValidation.md b/Docs/Clear-OfficeExcelDataValidation.md index a40f80fe..670fee6f 100644 --- a/Docs/Clear-OfficeExcelDataValidation.md +++ b/Docs/Clear-OfficeExcelDataValidation.md @@ -11,17 +11,17 @@ Clears data validation rules from one or more Excel worksheets. ## SYNTAX ### Context (Default) ```powershell -Clear-OfficeExcelDataValidation [-Sheet ] [-SheetIndex ] [-Range ] [-HeaderName ] [-TableName ] [-HeaderRow ] [-IncludeHeader] [-WhatIf] [-Confirm] [] +Clear-OfficeExcelDataValidation [-Sheet ] [-SheetIndex ] [-Range ] [-HeaderName ] [-TableName ] [-HeaderRow ] [-IncludeHeader] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Path ```powershell -Clear-OfficeExcelDataValidation [-InputPath] [-Sheet ] [-SheetIndex ] [-Range ] [-HeaderName ] [-TableName ] [-HeaderRow ] [-IncludeHeader] [-WhatIf] [-Confirm] [] +Clear-OfficeExcelDataValidation [-Path] [-Sheet ] [-SheetIndex ] [-Range ] [-HeaderName ] [-TableName ] [-HeaderRow ] [-IncludeHeader] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Document ```powershell -Clear-OfficeExcelDataValidation -Document [-Sheet ] [-SheetIndex ] [-Range ] [-HeaderName ] [-TableName ] [-HeaderRow ] [-IncludeHeader] [-WhatIf] [-Confirm] [] +Clear-OfficeExcelDataValidation -Document [-Sheet ] [-SheetIndex ] [-Range ] [-HeaderName ] [-TableName ] [-HeaderRow ] [-IncludeHeader] [-PassThru] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -104,13 +104,29 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -InputPath +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: Context, Path, Document +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Path Workbook path to update. ```yaml Type: String Parameter Sets: Path -Aliases: Path, FilePath +Aliases: InputPath, FilePath Possible values: Required: True diff --git a/Docs/Clear-OfficeExcelPageBreak.md b/Docs/Clear-OfficeExcelPageBreak.md index 06342e9c..d7be4ca3 100644 --- a/Docs/Clear-OfficeExcelPageBreak.md +++ b/Docs/Clear-OfficeExcelPageBreak.md @@ -11,17 +11,17 @@ Clears manual row or column page breaks from an Excel worksheet. ## SYNTAX ### Context (Default) ```powershell -Clear-OfficeExcelPageBreak [-Sheet ] [-SheetIndex ] [-Row ] [-Column ] [-All] [-WhatIf] [-Confirm] [] +Clear-OfficeExcelPageBreak [-Sheet ] [-SheetIndex ] [-Row ] [-Column ] [-All] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Path ```powershell -Clear-OfficeExcelPageBreak [-InputPath] [-Sheet ] [-SheetIndex ] [-Row ] [-Column ] [-All] [-WhatIf] [-Confirm] [] +Clear-OfficeExcelPageBreak [-Path] [-Sheet ] [-SheetIndex ] [-Row ] [-Column ] [-All] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Document ```powershell -Clear-OfficeExcelPageBreak -Document [-Sheet ] [-SheetIndex ] [-Row ] [-Column ] [-All] [-WhatIf] [-Confirm] [] +Clear-OfficeExcelPageBreak -Document [-Sheet ] [-SheetIndex ] [-Row ] [-Column ] [-All] [-PassThru] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -88,13 +88,29 @@ Accept pipeline input: True (ByValue) Accept wildcard characters: False ``` -### -InputPath +### -PassThru +Emit the object created or changed by the command. + +```yaml +Type: SwitchParameter +Parameter Sets: Context, Path, Document +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Path Workbook path to update. ```yaml Type: String Parameter Sets: Path -Aliases: Path, FilePath +Aliases: InputPath, FilePath Possible values: Required: True diff --git a/Docs/Clear-OfficeExcelRange.md b/Docs/Clear-OfficeExcelRange.md index fe378870..12fbb0a8 100644 --- a/Docs/Clear-OfficeExcelRange.md +++ b/Docs/Clear-OfficeExcelRange.md @@ -11,17 +11,17 @@ Clears values, formulas, styles, and range metadata from an Excel worksheet rang ## SYNTAX ### Context (Default) ```powershell -Clear-OfficeExcelRange -Range [-Sheet ] [-SheetIndex ] [-Contents] [-Values] [-Formulas] [-Styles] [-Comments] [-Hyperlinks] [-DataValidations] [-ConditionalFormatting] [-Merges] [-Sparklines] [-All] [-WhatIf] [-Confirm] [] +Clear-OfficeExcelRange -Range [-Sheet ] [-SheetIndex ] [-Contents] [-Values] [-Formulas] [-Styles] [-Comments] [-Hyperlinks] [-DataValidations] [-ConditionalFormatting] [-Merges] [-Sparklines] [-All] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Path ```powershell -Clear-OfficeExcelRange [-InputPath] -Range [-Sheet ] [-SheetIndex ] [-Contents] [-Values] [-Formulas] [-Styles] [-Comments] [-Hyperlinks] [-DataValidations] [-ConditionalFormatting] [-Merges] [-Sparklines] [-All] [-WhatIf] [-Confirm] [] +Clear-OfficeExcelRange [-Path] -Range [-Sheet ] [-SheetIndex ] [-Contents] [-Values] [-Formulas] [-Styles] [-Comments] [-Hyperlinks] [-DataValidations] [-ConditionalFormatting] [-Merges] [-Sparklines] [-All] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Document ```powershell -Clear-OfficeExcelRange -Document -Range [-Sheet ] [-SheetIndex ] [-Contents] [-Values] [-Formulas] [-Styles] [-Comments] [-Hyperlinks] [-DataValidations] [-ConditionalFormatting] [-Merges] [-Sparklines] [-All] [-WhatIf] [-Confirm] [] +Clear-OfficeExcelRange -Document -Range [-Sheet ] [-SheetIndex ] [-Contents] [-Values] [-Formulas] [-Styles] [-Comments] [-Hyperlinks] [-DataValidations] [-ConditionalFormatting] [-Merges] [-Sparklines] [-All] [-PassThru] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -168,24 +168,24 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -InputPath -Workbook path to update. +### -Merges +Clear merged-cell definitions that overlap the selected range. ```yaml -Type: String -Parameter Sets: Path -Aliases: Path, FilePath +Type: SwitchParameter +Parameter Sets: Context, Path, Document +Aliases: None Possible values: -Required: True -Position: 0 +Required: False +Position: named Default value: None Accept pipeline input: False Accept wildcard characters: False ``` -### -Merges -Clear merged-cell definitions that overlap the selected range. +### -PassThru +Emit the object created or changed by the command. ```yaml Type: SwitchParameter @@ -200,6 +200,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -Path +Workbook path to update. + +```yaml +Type: String +Parameter Sets: Path +Aliases: InputPath, FilePath +Possible values: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Range A1 range to clear. diff --git a/Docs/Close-OfficeExcel.md b/Docs/Close-OfficeExcel.md index a2ff1893..2653d6a0 100644 --- a/Docs/Close-OfficeExcel.md +++ b/Docs/Close-OfficeExcel.md @@ -11,7 +11,7 @@ Closes an Excel workbook and optionally saves it. ## SYNTAX ### __AllParameterSets ```powershell -Close-OfficeExcel -Document [-Save] [-Path ] [-Show] [-Password ] [-SafePreflight] [-SafeRepairDefinedNames] [-ValidateOpenXml] [-DisableFastPackageWriter] [-EvaluateFormulas] [-ClearCachedFormulaResults] [-MarkFormulasDirty] [-ForceFullCalculationOnOpen] [-DateSystem ] [] +Close-OfficeExcel -Document [-Save] [-Path ] [-Open] [-Password ] [-SafePreflight] [-SafeRepairDefinedNames] [-ValidateOpenXml] [-DisableFastPackageWriter] [-EvaluateFormulas] [-ClearCachedFormulaResults] [-MarkFormulasDirty] [-ForceFullCalculationOnOpen] [-DateSystem ] [] ``` ## DESCRIPTION @@ -147,13 +147,13 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -Password -Password used to save the workbook as an encrypted package. +### -Open +Open the workbook in Excel after saving. ```yaml -Type: String +Type: SwitchParameter Parameter Sets: __AllParameterSets -Aliases: None +Aliases: Show Possible values: Required: False @@ -163,8 +163,8 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -Path -Optional output path when saving. +### -Password +Password used to save the workbook as an encrypted package. ```yaml Type: String @@ -179,11 +179,11 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -SafePreflight -Run OfficeIMO worksheet preflight cleanup before saving. +### -Path +Optional output path when saving. ```yaml -Type: SwitchParameter +Type: String Parameter Sets: __AllParameterSets Aliases: None Possible values: @@ -195,8 +195,8 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -SafeRepairDefinedNames -Repair common defined-name issues before saving. +### -SafePreflight +Run OfficeIMO worksheet preflight cleanup before saving. ```yaml Type: SwitchParameter @@ -211,8 +211,8 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -Save -Persist changes before closing. +### -SafeRepairDefinedNames +Repair common defined-name issues before saving. ```yaml Type: SwitchParameter @@ -227,8 +227,8 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -Show -Open the workbook in Excel after saving. +### -Save +Persist changes before closing. ```yaml Type: SwitchParameter diff --git a/Docs/Close-OfficePowerPoint.md b/Docs/Close-OfficePowerPoint.md index d6f9100f..a56cb850 100644 --- a/Docs/Close-OfficePowerPoint.md +++ b/Docs/Close-OfficePowerPoint.md @@ -11,7 +11,7 @@ Closes a PowerPoint presentation and optionally saves it. ## SYNTAX ### __AllParameterSets ```powershell -Close-OfficePowerPoint -Presentation [-Save] [-Show] [-Password ] [-WhatIf] [-Confirm] [] +Close-OfficePowerPoint -Presentation [-Save] [-Open] [-Password ] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -21,27 +21,27 @@ Provides a cmdlet wrapper so PowerShell scripts do not need to call Dispose dire ### EXAMPLE 1 ```powershell -PS> $ppt = Get-OfficePowerPoint -FilePath .\deck.pptx; Close-OfficePowerPoint -Presentation $ppt +PS> $ppt = Get-OfficePowerPoint -Path .\deck.pptx; Close-OfficePowerPoint -Presentation $ppt ``` Releases the loaded presentation instance. ### EXAMPLE 2 ```powershell -PS> Close-OfficePowerPoint -Presentation $ppt -Save -Show +PS> Close-OfficePowerPoint -Presentation $ppt -Save -Open ``` Saves the presentation, opens it in PowerPoint, and releases the object. ## PARAMETERS -### -Password -Password used to save the presentation as an encrypted package. +### -Open +Open the presentation in PowerPoint after saving. ```yaml -Type: String +Type: SwitchParameter Parameter Sets: __AllParameterSets -Aliases: None +Aliases: Show Possible values: Required: False @@ -51,40 +51,40 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -Presentation -Presentation to close. +### -Password +Password used to save the presentation as an encrypted package. ```yaml -Type: PowerPointPresentation +Type: String Parameter Sets: __AllParameterSets Aliases: None Possible values: -Required: True +Required: False Position: named Default value: None -Accept pipeline input: True (ByValue) +Accept pipeline input: False Accept wildcard characters: False ``` -### -Save -Persist changes before closing. +### -Presentation +Presentation to close. ```yaml -Type: SwitchParameter +Type: PowerPointPresentation Parameter Sets: __AllParameterSets Aliases: None Possible values: -Required: False +Required: True Position: named Default value: None -Accept pipeline input: False +Accept pipeline input: True (ByValue) Accept wildcard characters: False ``` -### -Show -Open the presentation in PowerPoint after saving. +### -Save +Persist changes before closing. ```yaml Type: SwitchParameter diff --git a/Docs/Close-OfficeWord.md b/Docs/Close-OfficeWord.md index c2aecced..1593853b 100644 --- a/Docs/Close-OfficeWord.md +++ b/Docs/Close-OfficeWord.md @@ -11,17 +11,17 @@ Closes one or more tracked Word documents, optionally saving them. ## SYNTAX ### Current (Default) ```powershell -Close-OfficeWord [-Current] [-Save] [-Path ] [-Show] [-Password ] [] +Close-OfficeWord [-Current] [-Save] [-Path ] [-Open] [-Password ] [] ``` ### Document ```powershell -Close-OfficeWord [-Document] [-Save] [-Path ] [-Show] [-Password ] [] +Close-OfficeWord [-Document] [-Save] [-Path ] [-Open] [-Password ] [] ``` ### All ```powershell -Close-OfficeWord -All [-Save] [-Show] [-Password ] [] +Close-OfficeWord -All [-Save] [-Open] [-Password ] [] ``` ## DESCRIPTION @@ -45,7 +45,7 @@ Closes the current tracked document when a document handle is not passed explici ### EXAMPLE 3 ```powershell -PS> Close-OfficeWord -Document $doc -Save -Path .\Report-final.docx -Show +PS> Close-OfficeWord -Document $doc -Save -Path .\Report-final.docx -Open ``` Saves updates to Report-final.docx, opens it, and disposes the document. @@ -100,13 +100,13 @@ Accept pipeline input: True (ByValue) Accept wildcard characters: False ``` -### -Password -Password used to save the document as an encrypted package. +### -Open +Open the file after saving. ```yaml -Type: String +Type: SwitchParameter Parameter Sets: Current, Document, All -Aliases: None +Aliases: Show Possible values: Required: False @@ -116,12 +116,12 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -Path -Optional target path when saving. +### -Password +Password used to save the document as an encrypted package. ```yaml Type: String -Parameter Sets: Current, Document +Parameter Sets: Current, Document, All Aliases: None Possible values: @@ -132,12 +132,12 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -Save -Persist changes before closing. +### -Path +Optional target path when saving. ```yaml -Type: SwitchParameter -Parameter Sets: Current, Document, All +Type: String +Parameter Sets: Current, Document Aliases: None Possible values: @@ -148,8 +148,8 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -Show -Open the file after saving. +### -Save +Persist changes before closing. ```yaml Type: SwitchParameter diff --git a/Docs/Compare-OfficeExcelRange.md b/Docs/Compare-OfficeExcelRange.md index 85eec559..49762821 100644 --- a/Docs/Compare-OfficeExcelRange.md +++ b/Docs/Compare-OfficeExcelRange.md @@ -11,7 +11,7 @@ Compares two Excel worksheets or ranges and returns cell-level differences. ## SYNTAX ### Path (Default) ```powershell -Compare-OfficeExcelRange [-InputPath] [-RightPath ] [-LeftSheet ] [-LeftSheetIndex ] [-RightSheet ] [-RightSheetIndex ] [-LeftRange ] [-RightRange ] [-TrimStrings] [-IgnoreCase] [-StrictNullEmpty] [] +Compare-OfficeExcelRange [-Path] [-RightPath ] [-LeftSheet ] [-LeftSheetIndex ] [-RightSheet ] [-RightSheetIndex ] [-LeftRange ] [-RightRange ] [-TrimStrings] [-IgnoreCase] [-StrictNullEmpty] [] ``` ### Document @@ -73,22 +73,6 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -InputPath -Left workbook path. - -```yaml -Type: String -Parameter Sets: Path -Aliases: Path, FilePath, LeftPath -Possible values: - -Required: True -Position: 0 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - ### -LeftRange Left A1 range. Defaults to the left worksheet used range. @@ -137,6 +121,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -Path +Left workbook path. + +```yaml +Type: String +Parameter Sets: Path +Aliases: InputPath, FilePath, LeftPath +Possible values: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -RightDocument Optional right workbook object. Defaults to the left workbook. diff --git a/Docs/Compare-OfficeExcelWorkbook.md b/Docs/Compare-OfficeExcelWorkbook.md index 1d57e70c..85e0f5ea 100644 --- a/Docs/Compare-OfficeExcelWorkbook.md +++ b/Docs/Compare-OfficeExcelWorkbook.md @@ -11,7 +11,7 @@ Compares two workbooks by sheets, cells, formulas, styles, tables, comments, nam ## SYNTAX ### Path (Default) ```powershell -Compare-OfficeExcelWorkbook [-InputPath] [-DifferencePath] [-MaxDifferences ] [-SkipCells] [-SkipCellStyles] [-SkipNamedRanges] [-SkipTables] [-SkipWorksheetMetadata] [-SkipComments] [] +Compare-OfficeExcelWorkbook [-Path] [-DifferencePath] [-MaxDifferences ] [-SkipCells] [-SkipCellStyles] [-SkipNamedRanges] [-SkipTables] [-SkipWorksheetMetadata] [-SkipComments] [] ``` ### Document @@ -86,33 +86,33 @@ Accept pipeline input: True (ByValue) Accept wildcard characters: False ``` -### -InputPath -Workbook path. +### -MaxDifferences +Maximum number of differences to report. ```yaml -Type: String -Parameter Sets: Path -Aliases: Path, ReferencePath +Type: Int32 +Parameter Sets: Path, Document +Aliases: None Possible values: -Required: True -Position: 0 +Required: False +Position: named Default value: None Accept pipeline input: False Accept wildcard characters: False ``` -### -MaxDifferences -Maximum number of differences to report. +### -Path +Workbook path. ```yaml -Type: Int32 -Parameter Sets: Path, Document -Aliases: None +Type: String +Parameter Sets: Path +Aliases: InputPath, ReferencePath Possible values: -Required: False -Position: named +Required: True +Position: 0 Default value: None Accept pipeline input: False Accept wildcard characters: False diff --git a/Docs/ConvertFrom-OfficeMarkdownHtml.md b/Docs/ConvertFrom-OfficeMarkdownHtml.md index fb9ac0a7..9a7028c5 100644 --- a/Docs/ConvertFrom-OfficeMarkdownHtml.md +++ b/Docs/ConvertFrom-OfficeMarkdownHtml.md @@ -16,7 +16,7 @@ ConvertFrom-OfficeMarkdownHtml [-Html] [-OutputPath ] [-AsDocum ### Path ```powershell -ConvertFrom-OfficeMarkdownHtml [-InputPath] [-OutputPath ] [-AsDocument] [-PassThru] [-Options ] [-Portable] [-BaseUri ] [-IncludeDocumentChrome] [-PreserveScriptsAndStyles] [-DropUnsupportedBlocks] [-DropUnsupportedInlineHtml] [-MaxInputCharacters ] [-Base64ImageHandling ] [-Base64ImageOutputDirectory ] [-ListingCardMetadataMode ] [-MaxTableExpandedColumns ] [-WriteOptions ] [-WriteProfile ] [-ImageRenderingMode ] [-LineEnding ] [-UnorderedListMarker ] [-WhatIf] [-Confirm] [] +ConvertFrom-OfficeMarkdownHtml [-Path] [-OutputPath ] [-AsDocument] [-PassThru] [-Options ] [-Portable] [-BaseUri ] [-IncludeDocumentChrome] [-PreserveScriptsAndStyles] [-DropUnsupportedBlocks] [-DropUnsupportedInlineHtml] [-MaxInputCharacters ] [-Base64ImageHandling ] [-Base64ImageOutputDirectory ] [-ListingCardMetadataMode ] [-MaxTableExpandedColumns ] [-WriteOptions ] [-WriteProfile ] [-ImageRenderingMode ] [-LineEnding ] [-UnorderedListMarker ] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -184,22 +184,6 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -InputPath -Path to an HTML file. - -```yaml -Type: String -Parameter Sets: Path -Aliases: FilePath, Path -Possible values: - -Required: True -Position: 0 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - ### -LineEnding Markdown line ending: CRLF, LF, CR, or a literal line ending string. @@ -312,6 +296,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -Path +Path to an HTML file. + +```yaml +Type: String +Parameter Sets: Path +Aliases: InputPath, FilePath +Possible values: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Portable Use portable Markdown output when Options is not supplied. diff --git a/Docs/ConvertFrom-OfficePdfHtml.md b/Docs/ConvertFrom-OfficePdfHtml.md index 7e920fc6..62bb9c73 100644 --- a/Docs/ConvertFrom-OfficePdfHtml.md +++ b/Docs/ConvertFrom-OfficePdfHtml.md @@ -16,7 +16,7 @@ ConvertFrom-OfficePdfHtml [-Html] [-OutputPath ] [-Profile [-OutputPath ] [-Profile ] [-TrustedDocumentProfile] [-BasePath ] [-StylesheetPath ] [-StylesheetContent ] [-Options ] [-Open] [-PassThru] [-WhatIf] [-Confirm] [] +ConvertFrom-OfficePdfHtml -Path [-OutputPath ] [-Profile ] [-TrustedDocumentProfile] [-BasePath ] [-StylesheetPath ] [-StylesheetContent ] [-Options ] [-Open] [-PassThru] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -66,22 +66,6 @@ Accept pipeline input: True (ByValue) Accept wildcard characters: False ``` -### -InputPath -Path to an HTML file. - -```yaml -Type: String -Parameter Sets: Path -Aliases: FilePath, Path -Possible values: - -Required: True -Position: named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - ### -Open Open the PDF after saving. @@ -146,6 +130,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -Path +Path to an HTML file. + +```yaml +Type: String +Parameter Sets: Path +Aliases: InputPath, FilePath +Possible values: + +Required: True +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Profile HTML conversion profile applied before PDF rendering. diff --git a/Docs/ConvertFrom-OfficeWordHtml.md b/Docs/ConvertFrom-OfficeWordHtml.md index 02f91bf1..334b9b77 100644 --- a/Docs/ConvertFrom-OfficeWordHtml.md +++ b/Docs/ConvertFrom-OfficeWordHtml.md @@ -16,7 +16,7 @@ ConvertFrom-OfficeWordHtml [-Html] [-OutputPath ] [-FontFamily ### Path ```powershell -ConvertFrom-OfficeWordHtml [-FilePath] [-OutputPath ] [-FontFamily ] [-BasePath ] [-StylesheetPath ] [-StylesheetContent ] [-IncludeListStyles] [-ContinueNumbering] [-SupportsHeadingNumbering] [-RenderPreAsTable] [-TableCaptionPosition ] [-SectionTagHandling ] [-Open] [-PassThru] [-WhatIf] [-Confirm] [] +ConvertFrom-OfficeWordHtml [-Path] [-OutputPath ] [-FontFamily ] [-BasePath ] [-StylesheetPath ] [-StylesheetContent ] [-IncludeListStyles] [-ContinueNumbering] [-SupportsHeadingNumbering] [-RenderPreAsTable] [-TableCaptionPosition ] [-SectionTagHandling ] [-Open] [-PassThru] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -72,22 +72,6 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -FilePath -Path to an HTML file. - -```yaml -Type: String -Parameter Sets: Path -Aliases: Path -Possible values: - -Required: True -Position: 0 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - ### -FontFamily Optional font family to apply during conversion. @@ -184,6 +168,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -Path +Path to an HTML file. + +```yaml +Type: String +Parameter Sets: Path +Aliases: FilePath +Possible values: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -RenderPreAsTable Render
 elements as single-cell tables.
 
diff --git a/Docs/ConvertFrom-OfficeWordMarkdown.md b/Docs/ConvertFrom-OfficeWordMarkdown.md
index d98e8cbb..813c14ae 100644
--- a/Docs/ConvertFrom-OfficeWordMarkdown.md
+++ b/Docs/ConvertFrom-OfficeWordMarkdown.md
@@ -16,7 +16,7 @@ ConvertFrom-OfficeWordMarkdown [-Markdown]  [-OutputPath ] [-Tem
 
 ### Path
 ```powershell
-ConvertFrom-OfficeWordMarkdown [-FilePath]  [-OutputPath ] [-TemplatePath ] [-BookmarkName ] [-ContentControlTag ] [-ContentControlAlias ] [-KeepPlaceholder] [-RenderFrontMatter] [-FontFamily ] [-BaseUri ] [-AllowLocalImages] [-AllowedImageDirectory ] [-AllowRemoteImages] [-ReaderOptions ] [-Profile ] [-NormalizeInput ] [-Theme ] [-AllowDataUriImages ] [-MaxDataUriImageBytes ] [-PreferNarrativeSingleLineDefinitions] [-FitImagesToPageContentWidth] [-FitImagesToContextWidth] [-MaxImageWidthPixels ] [-MaxImageHeightPixels ] [-MaxImageWidthPercentOfContent ] [-Open] [-PassThru] [-WhatIf] [-Confirm] []
+ConvertFrom-OfficeWordMarkdown [-Path]  [-OutputPath ] [-TemplatePath ] [-BookmarkName ] [-ContentControlTag ] [-ContentControlAlias ] [-KeepPlaceholder] [-RenderFrontMatter] [-FontFamily ] [-BaseUri ] [-AllowLocalImages] [-AllowedImageDirectory ] [-AllowRemoteImages] [-ReaderOptions ] [-Profile ] [-NormalizeInput ] [-Theme ] [-AllowDataUriImages ] [-MaxDataUriImageBytes ] [-PreferNarrativeSingleLineDefinitions] [-FitImagesToPageContentWidth] [-FitImagesToContextWidth] [-MaxImageWidthPixels ] [-MaxImageHeightPixels ] [-MaxImageWidthPercentOfContent ] [-Open] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -196,22 +196,6 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -FilePath
-Path to a Markdown file.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -FitImagesToContextWidth
 Fit Markdown images to the current content context width.
 
@@ -420,6 +404,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Path to a Markdown file.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -PreferNarrativeSingleLineDefinitions
 Prefer narrative paragraphs for isolated single-line definition-list patterns.
 
diff --git a/Docs/ConvertTo-OfficeMarkdownHtml.md b/Docs/ConvertTo-OfficeMarkdownHtml.md
index 46c66889..4835a3c8 100644
--- a/Docs/ConvertTo-OfficeMarkdownHtml.md
+++ b/Docs/ConvertTo-OfficeMarkdownHtml.md
@@ -11,7 +11,7 @@ Converts Markdown content to HTML.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-ConvertTo-OfficeMarkdownHtml [-InputPath]  [-OutputPath ] [-DocumentMode] [-Style ] [-CssDelivery ] [-AssetMode ] [-Title ] [-ReaderOptions ] [-Profile ] [-BaseUri ] [-MaxInputCharacters ] [-NormalizeInput ] [-DisallowFileUrls ] [-AllowDataUrls ] [-AllowMailtoUrls ] [-AllowProtocolRelativeUrls ] [-RestrictUrlSchemes ] [-AllowedUrlScheme ] [-Theme ] [-RawHtmlHandling ] [-IncludeAnchorLinks] [-GitHubTaskListHtml] [-GitHubFootnoteHtml] [-ExternalLinksTargetBlank] [-ExternalLinksRel ] [-ExternalLinksReferrerPolicy ] [-RestrictHttpLinksToBaseOrigin] [-RestrictHttpImagesToBaseOrigin] [-BlockExternalHttpImages] [-ImagesLoadingLazy] [-ImagesDecodingAsync] [-ImagesReferrerPolicy ] [-AllowedHttpLinkHost ] [-AllowedHttpImageHost ] [-PassThru] [-WhatIf] [-Confirm] []
+ConvertTo-OfficeMarkdownHtml [-Path]  [-OutputPath ] [-DocumentMode] [-Style ] [-CssDelivery ] [-AssetMode ] [-Title ] [-ReaderOptions ] [-Profile ] [-BaseUri ] [-MaxInputCharacters ] [-NormalizeInput ] [-DisallowFileUrls ] [-AllowDataUrls ] [-AllowMailtoUrls ] [-AllowProtocolRelativeUrls ] [-RestrictUrlSchemes ] [-AllowedUrlScheme ] [-Theme ] [-RawHtmlHandling ] [-IncludeAnchorLinks] [-GitHubTaskListHtml] [-GitHubFootnoteHtml] [-ExternalLinksTargetBlank] [-ExternalLinksRel ] [-ExternalLinksReferrerPolicy ] [-RestrictHttpLinksToBaseOrigin] [-RestrictHttpImagesToBaseOrigin] [-BlockExternalHttpImages] [-ImagesLoadingLazy] [-ImagesDecodingAsync] [-ImagesReferrerPolicy ] [-AllowedHttpLinkHost ] [-AllowedHttpImageHost ] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Text
@@ -397,22 +397,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Path to the Markdown file.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: FilePath, Path
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -MaxInputCharacters
 Maximum Markdown input length accepted by the reader.
 
@@ -477,6 +461,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Path to the Markdown file.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Profile
 Named reader profile used when ReaderOptions is not supplied.
 
diff --git a/Docs/ConvertTo-OfficeVisioPng.md b/Docs/ConvertTo-OfficeVisioPng.md
index 19e14ddd..e4751eb5 100644
--- a/Docs/ConvertTo-OfficeVisioPng.md
+++ b/Docs/ConvertTo-OfficeVisioPng.md
@@ -11,12 +11,12 @@ Exports a Visio document page to native dependency-free PNG.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-ConvertTo-OfficeVisioPng [-Path]  [-OutputPath ] [-PageIndex ] [-PixelsPerInch ] [-BackgroundColor ] [-Transparent] [-NoText] [-FontFilePath ] [-FontFaceName ] [-FontCollectionIndex ] [-NoStencilArtwork] [-NoConnectorLabels] [-NoConnectorLabelOverlapResolution] [-Supersampling ] [-Show] [-WhatIf] [-Confirm] []
+ConvertTo-OfficeVisioPng [-Path]  [-OutputPath ] [-PageIndex ] [-PixelsPerInch ] [-BackgroundColor ] [-Transparent] [-NoText] [-FontFilePath ] [-FontFaceName ] [-FontCollectionIndex ] [-NoStencilArtwork] [-NoConnectorLabels] [-NoConnectorLabelOverlapResolution] [-Supersampling ] [-Open] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
 ```powershell
-ConvertTo-OfficeVisioPng -Document  [-OutputPath ] [-PageIndex ] [-PixelsPerInch ] [-BackgroundColor ] [-Transparent] [-NoText] [-FontFilePath ] [-FontFaceName ] [-FontCollectionIndex ] [-NoStencilArtwork] [-NoConnectorLabels] [-NoConnectorLabelOverlapResolution] [-Supersampling ] [-Show] [-WhatIf] [-Confirm] []
+ConvertTo-OfficeVisioPng -Document  [-OutputPath ] [-PageIndex ] [-PixelsPerInch ] [-BackgroundColor ] [-Transparent] [-NoText] [-FontFilePath ] [-FontFaceName ] [-FontCollectionIndex ] [-NoStencilArtwork] [-NoConnectorLabels] [-NoConnectorLabelOverlapResolution] [-Supersampling ] [-Open] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -178,6 +178,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Open
+Open the PNG after saving.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: Path, Document
+Aliases: Show
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -OutputPath
 Optional output PNG path.
 
@@ -242,22 +258,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Show
-Open the PNG after saving.
-
-```yaml
-Type: SwitchParameter
-Parameter Sets: Path, Document
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -Supersampling
 Supersampling factor for smoother raster output.
 
diff --git a/Docs/ConvertTo-OfficeVisioSvg.md b/Docs/ConvertTo-OfficeVisioSvg.md
index 86b6a8ca..1ad9a1d8 100644
--- a/Docs/ConvertTo-OfficeVisioSvg.md
+++ b/Docs/ConvertTo-OfficeVisioSvg.md
@@ -11,12 +11,12 @@ Exports a Visio document page to dependency-free SVG.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-ConvertTo-OfficeVisioSvg [-Path]  [-OutputPath ] [-PageIndex ] [-PixelsPerInch ] [-BackgroundColor ] [-Transparent] [-NoText] [-NoStencilArtwork] [-NoConnectorLabels] [-NoConnectorLabelOverlapResolution] [-IncludeXmlDeclaration] [-Show] [-WhatIf] [-Confirm] []
+ConvertTo-OfficeVisioSvg [-Path]  [-OutputPath ] [-PageIndex ] [-PixelsPerInch ] [-BackgroundColor ] [-Transparent] [-NoText] [-NoStencilArtwork] [-NoConnectorLabels] [-NoConnectorLabelOverlapResolution] [-IncludeXmlDeclaration] [-Open] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
 ```powershell
-ConvertTo-OfficeVisioSvg -Document  [-OutputPath ] [-PageIndex ] [-PixelsPerInch ] [-BackgroundColor ] [-Transparent] [-NoText] [-NoStencilArtwork] [-NoConnectorLabels] [-NoConnectorLabelOverlapResolution] [-IncludeXmlDeclaration] [-Show] [-WhatIf] [-Confirm] []
+ConvertTo-OfficeVisioSvg -Document  [-OutputPath ] [-PageIndex ] [-PixelsPerInch ] [-BackgroundColor ] [-Transparent] [-NoText] [-NoStencilArtwork] [-NoConnectorLabels] [-NoConnectorLabelOverlapResolution] [-IncludeXmlDeclaration] [-Open] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -146,6 +146,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Open
+Open the SVG after saving.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: Path, Document
+Aliases: Show
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -OutputPath
 Optional output SVG path.
 
@@ -210,22 +226,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Show
-Open the SVG after saving.
-
-```yaml
-Type: SwitchParameter
-Parameter Sets: Path, Document
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -Transparent
 Use transparent SVG background.
 
diff --git a/Docs/ConvertTo-OfficeWordHtml.md b/Docs/ConvertTo-OfficeWordHtml.md
index 2159cd1a..da3d1846 100644
--- a/Docs/ConvertTo-OfficeWordHtml.md
+++ b/Docs/ConvertTo-OfficeWordHtml.md
@@ -11,7 +11,7 @@ Converts a Word document to HTML.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-ConvertTo-OfficeWordHtml [-FilePath]  [-OutputPath ] [-FontFamily ] [-IncludeFontStyles] [-IncludeListStyles] [-IncludeParagraphClasses] [-IncludeRunClasses] [-IncludeDefaultCss] [-UseImagePaths] [-ExcludeFootnotes] [-PassThru] [-WhatIf] [-Confirm] []
+ConvertTo-OfficeWordHtml [-Path]  [-OutputPath ] [-FontFamily ] [-IncludeFontStyles] [-IncludeListStyles] [-IncludeParagraphClasses] [-IncludeRunClasses] [-IncludeDefaultCss] [-UseImagePaths] [-ExcludeFootnotes] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -72,22 +72,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -FilePath
-Path to a .docx file.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -FontFamily
 Optional font family to use during conversion.
 
@@ -216,6 +200,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Path to a .docx file.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -UseImagePaths
 Store image references as file paths instead of base64 data URIs.
 
diff --git a/Docs/ConvertTo-OfficeWordMarkdown.md b/Docs/ConvertTo-OfficeWordMarkdown.md
index d0834e8a..4217058d 100644
--- a/Docs/ConvertTo-OfficeWordMarkdown.md
+++ b/Docs/ConvertTo-OfficeWordMarkdown.md
@@ -11,7 +11,7 @@ Converts a Word document to Markdown.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-ConvertTo-OfficeWordMarkdown [-FilePath]  [-OutputPath ] [-FontFamily ] [-EnableUnderline] [-EnableHighlight] [-ImageExportMode ] [-ImageDirectory ] [-PassThru] [-WhatIf] [-Confirm] []
+ConvertTo-OfficeWordMarkdown [-Path]  [-OutputPath ] [-FontFamily ] [-EnableUnderline] [-EnableHighlight] [-ImageExportMode ] [-ImageDirectory ] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -88,22 +88,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -FilePath
-Path to a .docx file.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -FontFamily
 Optional font family that should be treated as inline code.
 
@@ -184,6 +168,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Path to a .docx file.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### CommonParameters
 This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
 
diff --git a/Docs/Copy-OfficeExcelSheet.md b/Docs/Copy-OfficeExcelSheet.md
index 1be1c4c1..69cc3e3f 100644
--- a/Docs/Copy-OfficeExcelSheet.md
+++ b/Docs/Copy-OfficeExcelSheet.md
@@ -11,17 +11,17 @@ Copies a worksheet within a workbook or from another workbook.
 ## SYNTAX
 ### Context (Default)
 ```powershell
-Copy-OfficeExcelSheet [[-SourceSheet] ] [-NewName]  [-SourceDocument ] [-SourcePath ] [-ValidationMode ] [-CopyMode ] [-WhatIf] [-Confirm] []
+Copy-OfficeExcelSheet [[-SourceSheet] ] [-NewName]  [-SourceDocument ] [-SourcePath ] [-ValidationMode ] [-CopyMode ] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Path
 ```powershell
-Copy-OfficeExcelSheet [-InputPath]  [[-SourceSheet] ] [-NewName]  [-SourceDocument ] [-SourcePath ] [-ValidationMode ] [-CopyMode ] [-WhatIf] [-Confirm] []
+Copy-OfficeExcelSheet [-Path]  [[-SourceSheet] ] [-NewName]  [-SourceDocument ] [-SourcePath ] [-ValidationMode ] [-CopyMode ] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
 ```powershell
-Copy-OfficeExcelSheet [[-SourceSheet] ] [-NewName]  -Document  [-SourceDocument ] [-SourcePath ] [-ValidationMode ] [-CopyMode ] [-WhatIf] [-Confirm] []
+Copy-OfficeExcelSheet [[-SourceSheet] ] [-NewName]  -Document  [-SourceDocument ] [-SourcePath ] [-ValidationMode ] [-CopyMode ] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -84,33 +84,49 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Target workbook path to update.
+### -NewName
+Name for the copied worksheet.
 
 ```yaml
 Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
+Parameter Sets: Context, Path, Document
+Aliases: Name, DestinationSheet
 Possible values:
 
 Required: True
-Position: 0
+Position: 2
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -NewName
-Name for the copied worksheet.
+### -PassThru
+Emit the object created or changed by the command.
 
 ```yaml
-Type: String
+Type: SwitchParameter
 Parameter Sets: Context, Path, Document
-Aliases: Name, DestinationSheet
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
+### -Path
+Target workbook path to update.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
-Position: 2
+Position: 0
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
diff --git a/Docs/Copy-OfficeExcelWorkbook.md b/Docs/Copy-OfficeExcelWorkbook.md
index bd769a47..7ead2881 100644
--- a/Docs/Copy-OfficeExcelWorkbook.md
+++ b/Docs/Copy-OfficeExcelWorkbook.md
@@ -11,7 +11,7 @@ Copies a workbook package while preserving package parts.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Copy-OfficeExcelWorkbook [-FilePath]  [-DestinationPath]  [-Force] [-PassThru] [-WhatIf] [-Confirm] []
+Copy-OfficeExcelWorkbook [-Path]  [-DestinationPath]  [-Force] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -46,24 +46,24 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -FilePath
-Source workbook or template package path.
+### -Force
+Replace an existing destination workbook.
 
 ```yaml
-Type: String
+Type: SwitchParameter
 Parameter Sets: __AllParameterSets
-Aliases: Path, InputPath, SourcePath
+Aliases: None
 Possible values:
 
-Required: True
-Position: 0
+Required: False
+Position: named
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Force
-Replace an existing destination workbook.
+### -PassThru
+Emit a FileInfo for the copied workbook.
 
 ```yaml
 Type: SwitchParameter
@@ -78,17 +78,17 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -PassThru
-Emit a FileInfo for the copied workbook.
+### -Path
+Source workbook or template package path.
 
 ```yaml
-Type: SwitchParameter
+Type: String
 Parameter Sets: __AllParameterSets
-Aliases: None
+Aliases: FilePath, InputPath, SourcePath
 Possible values:
 
-Required: False
-Position: named
+Required: True
+Position: 0
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
diff --git a/Docs/Copy-OfficePdfPage.md b/Docs/Copy-OfficePdfPage.md
index a9405b72..df003d3d 100644
--- a/Docs/Copy-OfficePdfPage.md
+++ b/Docs/Copy-OfficePdfPage.md
@@ -11,7 +11,7 @@ Copies selected PDF pages into a new PDF.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Copy-OfficePdfPage -Path  -PageRange  -OutputPath  [-Password ] [-IgnorePermissionRestrictions] [-WhatIf] [-Confirm] []
+Copy-OfficePdfPage -Path  -PageRange  -OutputPath  [-Password ] [-IgnorePermissionRestrictions] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -80,6 +80,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Password
 Password used to authenticate an encrypted PDF.
 
diff --git a/Docs/Copy-OfficePowerPointSlide.md b/Docs/Copy-OfficePowerPointSlide.md
index 171b0ab7..f96c765e 100644
--- a/Docs/Copy-OfficePowerPointSlide.md
+++ b/Docs/Copy-OfficePowerPointSlide.md
@@ -11,7 +11,7 @@ Copies an existing slide within a PowerPoint presentation.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Copy-OfficePowerPointSlide -Index  [-Presentation ] [-InsertAt ] []
+Copy-OfficePowerPointSlide -Index  [-Presentation ] [-InsertAt ] [-PassThru] []
 ```
 
 ## DESCRIPTION
@@ -65,6 +65,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Presentation
 Presentation to update (optional inside DSL).
 
diff --git a/Docs/Edit-OfficeExcelRow.md b/Docs/Edit-OfficeExcelRow.md
index b5937eb9..fc81c2cc 100644
--- a/Docs/Edit-OfficeExcelRow.md
+++ b/Docs/Edit-OfficeExcelRow.md
@@ -11,7 +11,7 @@ Runs a script block against editable worksheet rows.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Edit-OfficeExcelRow [-InputPath]  [-ScriptBlock]  [-Sheet ] [-SheetIndex ] [-Range ] [-NumericAsDecimal] [-PassThru] [-WhatIf] [-Confirm] []
+Edit-OfficeExcelRow [-Path]  [-ScriptBlock]  [-Sheet ] [-SheetIndex ] [-Range ] [-NumericAsDecimal] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -49,22 +49,6 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Workbook path to update.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -NumericAsDecimal
 Prefer decimals instead of doubles for numeric values.
 
@@ -97,6 +81,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Workbook path to update.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Range
 A1 range to expose as editable rows. Defaults to the worksheet used range.
 
diff --git a/Docs/Export-OfficeDocumentPdf.md b/Docs/Export-OfficeDocumentPdf.md
new file mode 100644
index 00000000..b417df57
--- /dev/null
+++ b/Docs/Export-OfficeDocumentPdf.md
@@ -0,0 +1,230 @@
+---
+external help file: PSWriteOffice-help.xml
+Module Name: PSWriteOffice
+online version: https://github.com/EvotecIT/PSWriteOffice
+schema: 2.0.0
+---
+# Export-OfficeDocumentPdf
+## SYNOPSIS
+Exports a Word, Excel, PowerPoint, Markdown, or RTF document to PDF.
+
+## SYNTAX
+### Document (Default)
+```powershell
+Export-OfficeDocumentPdf [-Document]  [-Path]  [-WordOptions ] [-ExcelOptions ] [-PowerPointOptions ] [-MarkdownOptions ] [-RtfOptions ] [-Open] [-PassThru] [-WhatIf] [-Confirm] []
+```
+
+### Path
+```powershell
+Export-OfficeDocumentPdf [-InputPath]  [-Path]  [-Password ] [-WordOptions ] [-ExcelOptions ] [-PowerPointOptions ] [-MarkdownOptions ] [-RtfOptions ] [-Open] [-PassThru] [-WhatIf] [-Confirm] []
+```
+
+## DESCRIPTION
+Accepts either a live OfficeIMO document from the pipeline or a supported source file.
+
+## EXAMPLES
+
+### EXAMPLE 1
+```powershell
+PS> $document | Export-OfficeDocumentPdf -Path .\Report.pdf
+```
+
+
+### EXAMPLE 2
+```powershell
+PS> Export-OfficeDocumentPdf -InputPath .\Report.docx -Path .\Report.pdf -PassThru
+```
+
+
+## PARAMETERS
+
+### -Document
+Live Word, Excel, PowerPoint, Markdown, or RTF document to export.
+
+```yaml
+Type: Object
+Parameter Sets: Document
+Aliases: None
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: True (ByValue)
+Accept wildcard characters: False
+```
+
+### -ExcelOptions
+Excel-specific PDF options.
+
+```yaml
+Type: ExcelPdfSaveOptions
+Parameter Sets: Document, Path
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
+### -InputPath
+Source .docx, .xlsx, .pptx, .md, .markdown, or .rtf file.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: SourcePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
+### -MarkdownOptions
+Markdown-specific PDF options.
+
+```yaml
+Type: MarkdownPdfSaveOptions
+Parameter Sets: Document, Path
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
+### -Open
+Open the PDF after exporting it.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: Document, Path
+Aliases: Show
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
+### -PassThru
+Emit the saved PDF file.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: Document, Path
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
+### -Password
+Password used to open an encrypted Word, Excel, or PowerPoint source file.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
+### -Path
+Destination PDF path.
+
+```yaml
+Type: String
+Parameter Sets: Document, Path
+Aliases: OutputPath, FilePath
+Possible values:
+
+Required: True
+Position: 1
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
+### -PowerPointOptions
+PowerPoint-specific PDF options.
+
+```yaml
+Type: PowerPointPdfSaveOptions
+Parameter Sets: Document, Path
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
+### -RtfOptions
+RTF-specific PDF options.
+
+```yaml
+Type: RtfPdfSaveOptions
+Parameter Sets: Document, Path
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
+### -WordOptions
+Word-specific PDF options.
+
+```yaml
+Type: WordPdfSaveOptions
+Parameter Sets: Document, Path
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
+### CommonParameters
+This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
+
+## INPUTS
+
+- `System.Object`
+
+## OUTPUTS
+
+- `System.IO.FileInfo`
+
+## RELATED LINKS
+
+- None
diff --git a/Docs/Export-OfficeVisioVisual.md b/Docs/Export-OfficeVisioVisual.md
index 9c7e9a45..d2b7baa0 100644
--- a/Docs/Export-OfficeVisioVisual.md
+++ b/Docs/Export-OfficeVisioVisual.md
@@ -11,7 +11,7 @@ Exports CFX semantic visual-artifact input as a native editable VSDX diagram.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Export-OfficeVisioVisual [-InputObject]  [-Path]  [-Show] [-PassThru] [-PageName ] [-UseNaturalPageSize] [-PixelsPerInch ] [-NoTitle] [-NoGroups] [-NoShapeData] [-NoHyperlinks] [-WhatIf] [-Confirm] []
+Export-OfficeVisioVisual [-InputObject]  [-Path]  [-Open] [-PassThru] [-PageName ] [-UseNaturalPageSize] [-PixelsPerInch ] [-NoTitle] [-NoGroups] [-NoShapeData] [-NoHyperlinks] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -108,6 +108,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Open
+Open the generated VSDX after saving.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: Show
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -PageName
 Name of the generated Visio page.
 
@@ -172,22 +188,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Show
-Open the generated VSDX after saving.
-
-```yaml
-Type: SwitchParameter
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -UseNaturalPageSize
 Use the CFX natural pixel size as the minimum Visio page size.
 
diff --git a/Docs/Find-OfficeExcel.md b/Docs/Find-OfficeExcel.md
index 5ae5ef9a..28139963 100644
--- a/Docs/Find-OfficeExcel.md
+++ b/Docs/Find-OfficeExcel.md
@@ -11,7 +11,7 @@ Finds text in worksheet values.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Find-OfficeExcel [-InputPath]  [-Text]  [-Sheet ] [-SheetIndex ] [-Range ] [-CaseSensitive] [-Regex] [-Exact] []
+Find-OfficeExcel [-Path]  [-Text]  [-Sheet ] [-SheetIndex ] [-Range ] [-CaseSensitive] [-Regex] [-Exact] []
 ```
 
 ### Document
@@ -84,13 +84,13 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Workbook path to inspect.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: Path, FilePath
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Find-OfficeWord.md b/Docs/Find-OfficeWord.md
index 71ef1ab6..61443a98 100644
--- a/Docs/Find-OfficeWord.md
+++ b/Docs/Find-OfficeWord.md
@@ -11,12 +11,12 @@ Finds text matches inside a Word document.
 ## SYNTAX
 ### PathText (Default)
 ```powershell
-Find-OfficeWord [-InputPath]  [-Text]  [-CaseSensitive] []
+Find-OfficeWord [-Path]  [-Text]  [-CaseSensitive] []
 ```
 
 ### PathRegex
 ```powershell
-Find-OfficeWord [-InputPath]  [-Pattern]  [-CaseSensitive] [-AsResult] []
+Find-OfficeWord [-Path]  [-Pattern]  [-CaseSensitive] [-AsResult] []
 ```
 
 ### DocumentText
@@ -103,13 +103,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Path to the .docx file.
 
 ```yaml
 Type: String
 Parameter Sets: PathText, PathRegex
-Aliases: FilePath, Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Find-OfficeWordList.md b/Docs/Find-OfficeWordList.md
index f6c55cd1..a03ea753 100644
--- a/Docs/Find-OfficeWordList.md
+++ b/Docs/Find-OfficeWordList.md
@@ -11,12 +11,12 @@ Finds Word lists containing matching list-item text.
 ## SYNTAX
 ### PathText (Default)
 ```powershell
-Find-OfficeWordList [-InputPath]  [-Text]  [-CaseSensitive] []
+Find-OfficeWordList [-Path]  [-Text]  [-CaseSensitive] []
 ```
 
 ### PathRegex
 ```powershell
-Find-OfficeWordList [-InputPath]  [-Pattern]  [-CaseSensitive] []
+Find-OfficeWordList [-Path]  [-Pattern]  [-CaseSensitive] []
 ```
 
 ### DocumentText
@@ -103,13 +103,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Path to the document to open read-only for searching.
 
 ```yaml
 Type: String
 Parameter Sets: PathText, PathRegex
-Aliases: FilePath, Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Find-OfficeWordTable.md b/Docs/Find-OfficeWordTable.md
index ecbea60d..7f31a55a 100644
--- a/Docs/Find-OfficeWordTable.md
+++ b/Docs/Find-OfficeWordTable.md
@@ -11,12 +11,12 @@ Finds Word tables containing matching cell text.
 ## SYNTAX
 ### PathText (Default)
 ```powershell
-Find-OfficeWordTable [-InputPath]  [-Text]  [-CaseSensitive] [-IncludeNested] []
+Find-OfficeWordTable [-Path]  [-Text]  [-CaseSensitive] [-IncludeNested] []
 ```
 
 ### PathRegex
 ```powershell
-Find-OfficeWordTable [-InputPath]  [-Pattern]  [-CaseSensitive] [-IncludeNested] []
+Find-OfficeWordTable [-Path]  [-Pattern]  [-CaseSensitive] [-IncludeNested] []
 ```
 
 ### DocumentText
@@ -112,13 +112,13 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Path to the document to open read-only for searching.
 
 ```yaml
 Type: String
 Parameter Sets: PathText, PathRegex
-Aliases: FilePath, Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Generated/PSWriteOffice-help.xml b/Docs/Generated/PSWriteOffice-help.xml
index d4b2e488..2943eb8c 100644
--- a/Docs/Generated/PSWriteOffice-help.xml
+++ b/Docs/Generated/PSWriteOffice-help.xml
@@ -27,6 +27,18 @@
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Range
           
@@ -66,6 +78,18 @@
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Range
           
@@ -129,6 +153,18 @@
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Range
         
@@ -7786,18 +7822,6 @@
       
       
         Add-OfficeExcelPackageMetadata
-        
-          InputPath
-          
-            Workbook path to update.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           Kind
           
@@ -7826,6 +7850,18 @@
           
           None
         
+        
+          Path
+          
+            Workbook path to update.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           WorksheetName
           
@@ -7932,18 +7968,6 @@
         
         None
       
-      
-        InputPath
-        
-          Workbook path to update.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         Kind
         
@@ -7972,6 +7996,18 @@
         
         None
       
+      
+        Path
+        
+          Workbook path to update.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         WorksheetName
         
@@ -8121,26 +8157,26 @@
           
           None
         
-        
-          InputPath
+        
+          PassThru
           
-            Workbook path to update.
+            Emit page-break records after adding them.
           
-          String
+          SwitchParameter
           
-            String
+            SwitchParameter
             
           
           None
         
-        
-          PassThru
+        
+          Path
           
-            Emit page-break records after adding them.
+            Workbook path to update.
           
-          SwitchParameter
+          String
           
-            SwitchParameter
+            String
             
           
           None
@@ -8283,26 +8319,26 @@
         
         None
       
-      
-        InputPath
+      
+        PassThru
         
-          Workbook path to update.
+          Emit page-break records after adding them.
         
-        String
+        SwitchParameter
         
-          String
+          SwitchParameter
           
         
         None
       
-      
-        PassThru
+      
+        Path
         
-          Emit page-break records after adding them.
+          Workbook path to update.
         
-        SwitchParameter
+        String
         
-          SwitchParameter
+          String
           
         
         None
@@ -10824,18 +10860,6 @@
           
           None
         
-        
-          InputPath
-          
-            Workbook path to update.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           Name
           
@@ -10860,6 +10884,18 @@
           
           None
         
+        
+          Path
+          
+            Workbook path to update.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           QueryTableName
           
@@ -11034,18 +11070,6 @@
         
         None
       
-      
-        InputPath
-        
-          Workbook path to update.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         Name
         
@@ -11070,6 +11094,18 @@
         
         None
       
+      
+        Path
+        
+          Workbook path to update.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         QueryTableName
         
@@ -11192,6 +11228,18 @@
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Title
           
@@ -11250,6 +11298,18 @@
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Title
         
@@ -11345,6 +11405,18 @@
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           PerRow
           
@@ -11384,6 +11456,18 @@
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         PerRow
         
@@ -11503,6 +11587,18 @@
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Title
           
@@ -11578,6 +11674,18 @@
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Title
         
@@ -11641,6 +11749,18 @@
     
       
         Add-OfficeExcelReportParagraph
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Text
           
@@ -11656,6 +11776,18 @@
       
     
     
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Text
         
@@ -11716,6 +11848,18 @@
     
       
         Add-OfficeExcelReportSection
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Text
           
@@ -11731,6 +11875,18 @@
       
     
     
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Text
         
@@ -12010,6 +12166,18 @@
     
       
         Add-OfficeExcelReportSpacer
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Rows
           
@@ -12025,6 +12193,18 @@
       
     
     
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Rows
         
@@ -12572,6 +12752,18 @@
     
       
         Add-OfficeExcelReportTitle
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Subtitle
           
@@ -12599,6 +12791,18 @@
       
     
     
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Subtitle
         
@@ -12983,18 +13187,6 @@
       
       
         Add-OfficeExcelSlicer
-        
-          InputPath
-          
-            Workbook path to update.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           Name
           
@@ -13019,6 +13211,18 @@
           
           None
         
+        
+          Path
+          
+            Workbook path to update.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           PivotTableName
           
@@ -13145,18 +13349,6 @@
         
         None
       
-      
-        InputPath
-        
-          Workbook path to update.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         Name
         
@@ -13181,6 +13373,18 @@
         
         None
       
+      
+        Path
+        
+          Workbook path to update.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         PivotTableName
         
@@ -15420,7 +15624,7 @@
         
           Open
           
-            Open the workbook after saving when InputPath is used.
+            Open the workbook after saving when Path is used.
           
           SwitchParameter
           
@@ -15540,18 +15744,6 @@
           
           None
         
-        
-          InputPath
-          
-            Path to the workbook to update in place.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           NoHyperlinks
           
@@ -15579,7 +15771,7 @@
         
           Open
           
-            Open the workbook after saving when InputPath is used.
+            Open the workbook after saving when Path is used.
           
           SwitchParameter
           
@@ -15600,6 +15792,18 @@
           
           None
         
+        
+          Path
+          
+            Path to the workbook to update in place.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           SheetName
           
@@ -15738,7 +15942,7 @@
         
           Open
           
-            Open the workbook after saving when InputPath is used.
+            Open the workbook after saving when Path is used.
           
           SwitchParameter
           
@@ -15870,18 +16074,6 @@
         
         None
       
-      
-        InputPath
-        
-          Path to the workbook to update in place.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         NoHyperlinks
         
@@ -15909,7 +16101,7 @@
       
         Open
         
-          Open the workbook after saving when InputPath is used.
+          Open the workbook after saving when Path is used.
         
         SwitchParameter
         
@@ -15930,6 +16122,18 @@
         
         None
       
+      
+        Path
+        
+          Path to the workbook to update in place.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         SheetName
         
@@ -16020,27 +16224,27 @@ and should close or save the workbook after all edits are complete.
           
           None
         
-        
-          InputPath
+        
+          PassThru
           
-            Workbook path to open, update, save, and close.
+            Emit the updated table wrapper for open document or table inputs. Path-owned workbooks are saved and closed by this command,
+so they do not emit a live table wrapper.
           
-          String
+          SwitchParameter
           
-            String
+            SwitchParameter
             
           
           None
         
-        
-          PassThru
+        
+          Path
           
-            Emit the updated table wrapper for open document or table inputs. Path-owned workbooks are saved and closed by this command,
-so they do not emit a live table wrapper.
+            Workbook path to open, update, save, and close.
           
-          SwitchParameter
+          String
           
-            SwitchParameter
+            String
             
           
           None
@@ -16224,27 +16428,27 @@ so they do not emit a live table wrapper.
         
         None
       
-      
-        InputPath
+      
+        PassThru
         
-          Workbook path to open, update, save, and close.
+          Emit the updated table wrapper for open document or table inputs. Path-owned workbooks are saved and closed by this command,
+so they do not emit a live table wrapper.
         
-        String
+        SwitchParameter
         
-          String
+          SwitchParameter
           
         
         None
       
-      
-        PassThru
+      
+        Path
         
-          Emit the updated table wrapper for open document or table inputs. Path-owned workbooks are saved and closed by this command,
-so they do not emit a live table wrapper.
+          Workbook path to open, update, save, and close.
         
-        SwitchParameter
+        String
         
-          SwitchParameter
+          String
           
         
         None
@@ -16531,18 +16735,6 @@ so they do not emit a live table wrapper.
           
           None
         
-        
-          InputPath
-          
-            Workbook path to update.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           NoSave
           
@@ -16579,6 +16771,18 @@ so they do not emit a live table wrapper.
           
           None
         
+        
+          Path
+          
+            Workbook path to update.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           Sheet
           
@@ -16825,18 +17029,6 @@ so they do not emit a live table wrapper.
         
         None
       
-      
-        InputPath
-        
-          Workbook path to update.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         NoSave
         
@@ -16873,6 +17065,18 @@ so they do not emit a live table wrapper.
         
         None
       
+      
+        Path
+        
+          Workbook path to update.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         Sheet
         
@@ -17024,18 +17228,6 @@ so they do not emit a live table wrapper.
       
       
         Add-OfficeExcelTimeline
-        
-          InputPath
-          
-            Workbook path to update.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           Name
           
@@ -17060,6 +17252,18 @@ so they do not emit a live table wrapper.
           
           None
         
+        
+          Path
+          
+            Workbook path to update.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           PivotTableName
           
@@ -17186,18 +17390,6 @@ so they do not emit a live table wrapper.
         
         None
       
-      
-        InputPath
-        
-          Workbook path to update.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         Name
         
@@ -17222,6 +17414,18 @@ so they do not emit a live table wrapper.
         
         None
       
+      
+        Path
+        
+          Workbook path to update.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         PivotTableName
         
@@ -21096,6 +21300,18 @@ so they do not emit a live table wrapper.
           
           None
         
+        
+          PassThru
+          
+            Emit the image added to the worksheet.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           PointsPerPixel
           
@@ -21308,6 +21524,18 @@ so they do not emit a live table wrapper.
         
         None
       
+      
+        PassThru
+        
+          Emit the image added to the worksheet.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         PointsPerPixel
         
@@ -25975,6 +26203,18 @@ This does not discover, bypass, or crack a missing password.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Password
           
@@ -26087,6 +26327,18 @@ This does not discover, bypass, or crack a missing password.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Password
         
@@ -26312,6 +26564,18 @@ page area from the supplied coordinates.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Strike
           
@@ -26453,6 +26717,18 @@ page area from the supplied coordinates.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Run
           
@@ -26649,6 +26925,18 @@ page area from the supplied coordinates.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Run
         
@@ -28636,6 +28924,18 @@ page area from the supplied coordinates.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Password
           
@@ -28896,6 +29196,18 @@ page area from the supplied coordinates.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Password
         
@@ -30200,6 +30512,18 @@ This does not discover, bypass, or crack a missing password.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Password
           
@@ -30348,6 +30672,18 @@ This does not discover, bypass, or crack a missing password.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Password
           
@@ -30520,6 +30856,18 @@ This does not discover, bypass, or crack a missing password.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Password
         
@@ -34947,6 +35295,18 @@ URI links and bookmark links are supported; a single run cannot target both.
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Slide
           
@@ -35046,6 +35406,18 @@ URI links and bookmark links are supported; a single run cannot target both.
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Slide
         
@@ -35159,6 +35531,18 @@ URI links and bookmark links are supported; a single run cannot target both.
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Slide
           
@@ -35277,6 +35661,18 @@ URI links and bookmark links are supported; a single run cannot target both.
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           SeriesProperty
           
@@ -35395,6 +35791,18 @@ URI links and bookmark links are supported; a single run cannot target both.
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Slide
           
@@ -35537,6 +35945,18 @@ URI links and bookmark links are supported; a single run cannot target both.
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         SeriesProperty
         
@@ -36163,6 +36583,18 @@ URI links and bookmark links are supported; a single run cannot target both.
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Path
           
@@ -36238,6 +36670,18 @@ URI links and bookmark links are supported; a single run cannot target both.
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Path
         
@@ -37758,6 +38202,18 @@ URI links and bookmark links are supported; a single run cannot target both.
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Presentation
           
@@ -37797,6 +38253,18 @@ URI links and bookmark links are supported; a single run cannot target both.
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Presentation
         
@@ -37934,6 +38402,18 @@ URI links and bookmark links are supported; a single run cannot target both.
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           ShapeType
           
@@ -38057,6 +38537,18 @@ URI links and bookmark links are supported; a single run cannot target both.
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         ShapeType
         
@@ -38200,6 +38692,18 @@ URI links and bookmark links are supported; a single run cannot target both.
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Presentation
           
@@ -38263,6 +38767,18 @@ URI links and bookmark links are supported; a single run cannot target both.
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Presentation
           
@@ -38352,6 +38868,18 @@ URI links and bookmark links are supported; a single run cannot target both.
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Presentation
           
@@ -38477,6 +39005,18 @@ URI links and bookmark links are supported; a single run cannot target both.
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Presentation
         
@@ -38509,7 +39049,7 @@ URI links and bookmark links are supported; a single run cannot target both.
           PS> 
         
-        $ppt = New-OfficePowerPoint -FilePath .\deck.pptx; Add-OfficePowerPointSlide -Presentation $ppt
+        $ppt = New-OfficePowerPoint -Path .\deck.pptx; Add-OfficePowerPointSlide -Presentation $ppt
         
           Creates a deck and appends a new slide at the end.
         
@@ -38650,6 +39190,18 @@ URI links and bookmark links are supported; a single run cannot target both.
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Slide
           
@@ -38753,6 +39305,18 @@ URI links and bookmark links are supported; a single run cannot target both.
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Rows
           
@@ -38948,6 +39512,18 @@ URI links and bookmark links are supported; a single run cannot target both.
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Rows
         
@@ -39282,6 +39858,18 @@ table formatting, borders, and style choices are preserved.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Slide
           
@@ -39357,6 +39945,18 @@ table formatting, borders, and style choices are preserved.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Run
           
@@ -39432,6 +40032,18 @@ table formatting, borders, and style choices are preserved.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Run
         
@@ -39635,6 +40247,18 @@ table formatting, borders, and style choices are preserved.
           
           None
         
+        
+          PassThru
+          
+            Emit the picture added to the slide.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           PointsPerPixel
           
@@ -39811,6 +40435,18 @@ table formatting, borders, and style choices are preserved.
         
         None
       
+      
+        PassThru
+        
+          Emit the picture added to the slide.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         PointsPerPixel
         
@@ -40089,6 +40725,18 @@ table formatting, borders, and style choices are preserved.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           To
           
@@ -40266,6 +40914,18 @@ table formatting, borders, and style choices are preserved.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           ToShape
           
@@ -40455,6 +41115,18 @@ table formatting, borders, and style choices are preserved.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         To
         
@@ -40719,6 +41391,18 @@ table formatting, borders, and style choices are preserved.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           ShapeId
           
@@ -40914,6 +41598,18 @@ table formatting, borders, and style choices are preserved.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         ShapeId
         
@@ -41075,6 +41771,18 @@ table formatting, borders, and style choices are preserved.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Text
           
@@ -41227,6 +41935,18 @@ table formatting, borders, and style choices are preserved.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Text
         
@@ -41427,6 +42147,18 @@ table formatting, borders, and style choices are preserved.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Text
           
@@ -41579,6 +42311,18 @@ table formatting, borders, and style choices are preserved.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Text
         
@@ -41743,6 +42487,18 @@ table formatting, borders, and style choices are preserved.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Unit
           
@@ -41823,6 +42579,18 @@ table formatting, borders, and style choices are preserved.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Unit
         
@@ -42037,6 +42805,18 @@ table formatting, borders, and style choices are preserved.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Text
           
@@ -42237,6 +43017,18 @@ table formatting, borders, and style choices are preserved.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Text
         
@@ -42485,6 +43277,18 @@ table formatting, borders, and style choices are preserved.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           ShapeName
           
@@ -42692,6 +43496,18 @@ table formatting, borders, and style choices are preserved.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           ShapeName
           
@@ -42917,6 +43733,18 @@ table formatting, borders, and style choices are preserved.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           ShapeName
           
@@ -43166,6 +43994,18 @@ table formatting, borders, and style choices are preserved.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         ShapeName
         
@@ -43386,6 +44226,18 @@ table formatting, borders, and style choices are preserved.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Text
           
@@ -43550,6 +44402,18 @@ table formatting, borders, and style choices are preserved.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Text
         
@@ -46675,6 +47539,18 @@ table formatting, borders, and style choices are preserved.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Type
           
@@ -46707,6 +47583,18 @@ table formatting, borders, and style choices are preserved.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Type
         
@@ -46903,6 +47791,18 @@ table formatting, borders, and style choices are preserved.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Type
           
@@ -46935,6 +47835,18 @@ table formatting, borders, and style choices are preserved.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Type
         
@@ -47684,6 +48596,18 @@ table formatting, borders, and style choices are preserved.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Style
           
@@ -47727,6 +48651,18 @@ table formatting, borders, and style choices are preserved.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Style
         
@@ -47962,6 +48898,18 @@ table formatting, borders, and style choices are preserved.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
       
     
     
@@ -47977,6 +48925,18 @@ table formatting, borders, and style choices are preserved.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
     
     
       
@@ -50664,6 +51624,18 @@ table formatting, borders, and style choices are preserved.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           TableStyle
           
@@ -50810,6 +51782,18 @@ table formatting, borders, and style choices are preserved.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         TableStyle
         
@@ -52478,6 +53462,18 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
+        
+          PassThru
+          
+            Emit the image added to the paragraph.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           PointsPerPixel
           
@@ -52651,6 +53647,18 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
+      
+        PassThru
+        
+          Emit the image added to the paragraph.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         PointsPerPixel
         
@@ -53032,6 +54040,18 @@ cells. This keeps existing-document editing simple without forcing callers back
     
       
         Clear-OfficeExcelAutoFilter
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
       
       
         Clear-OfficeExcelAutoFilter
@@ -53047,6 +54067,18 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Sheet
           
@@ -53086,6 +54118,18 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Sheet
         
@@ -53288,26 +54332,26 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
-        
-          InputPath
+        
+          PassThru
           
-            Workbook path to update.
+            Returns the number of comments cleared.
           
-          String
+          SwitchParameter
           
-            String
+            SwitchParameter
             
           
           None
         
-        
-          PassThru
+        
+          Path
           
-            Returns the number of comments cleared.
+            Workbook path to update.
           
-          SwitchParameter
+          String
           
-            SwitchParameter
+            String
             
           
           None
@@ -53522,26 +54566,26 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
-      
-        InputPath
+      
+        PassThru
         
-          Workbook path to update.
+          Returns the number of comments cleared.
         
-        String
+        SwitchParameter
         
-          String
+          SwitchParameter
           
         
         None
       
-      
-        PassThru
+      
+        Path
         
-          Returns the number of comments cleared.
+          Workbook path to update.
         
-        SwitchParameter
+        String
         
-          SwitchParameter
+          String
           
         
         None
@@ -53681,6 +54725,18 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Range
           
@@ -53768,8 +54824,20 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
-        
-          InputPath
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
+        
+          Path
           
             Workbook path to update.
           
@@ -53879,6 +54947,18 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Range
           
@@ -53978,8 +55058,20 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
-      
-        InputPath
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
+      
+        Path
         
           Workbook path to update.
         
@@ -54119,6 +55211,18 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Range
           
@@ -54206,8 +55310,20 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
-        
-          InputPath
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
+        
+          Path
           
             Workbook path to update.
           
@@ -54317,6 +55433,18 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Range
           
@@ -54416,8 +55544,20 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
-      
-        InputPath
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
+      
+        Path
         
           Workbook path to update.
         
@@ -54545,6 +55685,18 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Row
           
@@ -54608,8 +55760,20 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
-        
-          InputPath
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
+        
+          Path
           
             Workbook path to update.
           
@@ -54695,6 +55859,18 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Row
           
@@ -54770,8 +55946,20 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
-      
-        InputPath
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
+      
+        Path
         
           Workbook path to update.
         
@@ -54959,6 +56147,18 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Range
           
@@ -55118,22 +56318,22 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
-        
-          InputPath
+        
+          Merges
           
-            Workbook path to update.
+            Clear merged-cell definitions that overlap the selected range.
           
-          String
+          SwitchParameter
           
-            String
+            SwitchParameter
             
           
           None
         
         
-          Merges
+          PassThru
           
-            Clear merged-cell definitions that overlap the selected range.
+            Emit the object created or changed by the command.
           
           SwitchParameter
           
@@ -55142,6 +56342,18 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
+        
+          Path
+          
+            Workbook path to update.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           Range
           
@@ -55325,6 +56537,18 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Range
           
@@ -55496,22 +56720,22 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
-      
-        InputPath
+      
+        Merges
         
-          Workbook path to update.
+          Clear merged-cell definitions that overlap the selected range.
         
-        String
+        SwitchParameter
         
-          String
+          SwitchParameter
           
         
         None
       
       
-        Merges
+        PassThru
         
-          Clear merged-cell definitions that overlap the selected range.
+          Emit the object created or changed by the command.
         
         SwitchParameter
         
@@ -55520,6 +56744,18 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
+      
+        Path
+        
+          Workbook path to update.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         Range
         
@@ -55994,6 +57230,18 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
+        
+          Open
+          
+            Open the workbook in Excel after saving.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Password
           
@@ -56054,18 +57302,6 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
-        
-          Show
-          
-            Open the workbook in Excel after saving.
-          
-          SwitchParameter
-          
-            SwitchParameter
-            
-          
-          None
-        
         
           ValidateOpenXml
           
@@ -56171,6 +57407,18 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
+      
+        Open
+        
+          Open the workbook in Excel after saving.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Password
         
@@ -56231,18 +57479,6 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
-      
-        Show
-        
-          Open the workbook in Excel after saving.
-        
-        SwitchParameter
-        
-          SwitchParameter
-          
-        
-        None
-      
       
         ValidateOpenXml
         
@@ -56305,6 +57541,18 @@ cells. This keeps existing-document editing simple without forcing callers back
     
       
         Close-OfficePowerPoint
+        
+          Open
+          
+            Open the presentation in PowerPoint after saving.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Password
           
@@ -56341,21 +57589,21 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
-        
-          Show
-          
-            Open the presentation in PowerPoint after saving.
-          
-          SwitchParameter
-          
-            SwitchParameter
-            
-          
-          None
-        
       
     
     
+      
+        Open
+        
+          Open the presentation in PowerPoint after saving.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Password
         
@@ -56392,18 +57640,6 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
-      
-        Show
-        
-          Open the presentation in PowerPoint after saving.
-        
-        SwitchParameter
-        
-          SwitchParameter
-          
-        
-        None
-      
     
     
       
@@ -56424,7 +57660,7 @@ cells. This keeps existing-document editing simple without forcing callers back
         
           PS> 
         
-        $ppt = Get-OfficePowerPoint -FilePath .\deck.pptx; Close-OfficePowerPoint -Presentation $ppt
+        $ppt = Get-OfficePowerPoint -Path .\deck.pptx; Close-OfficePowerPoint -Presentation $ppt
         
           Releases the loaded presentation instance.
         
@@ -56434,7 +57670,7 @@ cells. This keeps existing-document editing simple without forcing callers back
         
           PS> 
         
-        Close-OfficePowerPoint -Presentation $ppt -Save -Show
+        Close-OfficePowerPoint -Presentation $ppt -Save -Open
         
           Saves the presentation, opens it in PowerPoint, and releases the object.
         
@@ -56469,6 +57705,18 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
+        
+          Open
+          
+            Open the file after saving.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Password
           
@@ -56505,18 +57753,6 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
-        
-          Show
-          
-            Open the file after saving.
-          
-          SwitchParameter
-          
-            SwitchParameter
-            
-          
-          None
-        
       
       
         Close-OfficeWord
@@ -56532,6 +57768,18 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
+        
+          Open
+          
+            Open the file after saving.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Password
           
@@ -56568,18 +57816,6 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
-        
-          Show
-          
-            Open the file after saving.
-          
-          SwitchParameter
-          
-            SwitchParameter
-            
-          
-          None
-        
       
       
         Close-OfficeWord
@@ -56595,34 +57831,34 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
-        
-          Password
+        
+          Open
           
-            Password used to save the document as an encrypted package.
+            Open the file after saving.
           
-          String
+          SwitchParameter
           
-            String
+            SwitchParameter
             
           
           None
         
         
-          Save
+          Password
           
-            Persist changes before closing.
+            Password used to save the document as an encrypted package.
           
-          SwitchParameter
+          String
           
-            SwitchParameter
+            String
             
           
           None
         
         
-          Show
+          Save
           
-            Open the file after saving.
+            Persist changes before closing.
           
           SwitchParameter
           
@@ -56670,6 +57906,18 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
+      
+        Open
+        
+          Open the file after saving.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Password
         
@@ -56706,18 +57954,6 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
-      
-        Show
-        
-          Open the file after saving.
-        
-        SwitchParameter
-        
-          SwitchParameter
-          
-        
-        None
-      
     
     
       
@@ -56758,7 +57994,7 @@ cells. This keeps existing-document editing simple without forcing callers back
         
           PS> 
         
-        Close-OfficeWord -Document $doc -Save -Path .\Report-final.docx -Show
+        Close-OfficeWord -Document $doc -Save -Path .\Report-final.docx -Open
         
           Saves updates to Report-final.docx, opens it, and disposes the document.
         
@@ -56793,18 +58029,6 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
-        
-          InputPath
-          
-            Left workbook path.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           LeftRange
           
@@ -56841,6 +58065,18 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
+        
+          Path
+          
+            Left workbook path.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           RightPath
           
@@ -57198,18 +58434,6 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
-      
-        InputPath
-        
-          Left workbook path.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         LeftRange
         
@@ -57246,6 +58470,18 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
+      
+        Path
+        
+          Left workbook path.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         RightDocument
         
@@ -57394,26 +58630,26 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
-        
-          InputPath
+        
+          MaxDifferences
           
-            Workbook path.
+            Maximum number of differences to report.
           
-          String
+          Int32
           
-            String
+            Int32
             
           
           None
         
-        
-          MaxDifferences
+        
+          Path
           
-            Maximum number of differences to report.
+            Workbook path.
           
-          Int32
+          String
           
-            Int32
+            String
             
           
           None
@@ -57640,26 +58876,26 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
-      
-        InputPath
+      
+        MaxDifferences
         
-          Workbook path.
+          Maximum number of differences to report.
         
-        String
+        Int32
         
-          String
+          Int32
           
         
         None
       
-      
-        MaxDifferences
+      
+        Path
         
-          Maximum number of differences to report.
+          Workbook path.
         
-        Int32
+        String
         
-          Int32
+          String
           
         
         None
@@ -60202,18 +61438,6 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
-        
-          InputPath
-          
-            Path to an HTML file.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           LineEnding
           
@@ -60302,6 +61526,18 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
+        
+          Path
+          
+            Path to an HTML file.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           Portable
           
@@ -60488,18 +61724,6 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
-      
-        InputPath
-        
-          Path to an HTML file.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         LineEnding
         
@@ -60588,6 +61812,18 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
+      
+        Path
+        
+          Path to an HTML file.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         Portable
         
@@ -61050,18 +62286,6 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
-        
-          InputPath
-          
-            Path to an HTML file.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           Open
           
@@ -61110,6 +62334,18 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
+        
+          Path
+          
+            Path to an HTML file.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           Profile
           
@@ -61191,18 +62427,6 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
-      
-        InputPath
-        
-          Path to an HTML file.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         Open
         
@@ -61251,6 +62475,18 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
+      
+        Path
+        
+          Path to an HTML file.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         Profile
         
@@ -62306,18 +63542,6 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
-        
-          FilePath
-          
-            Path to an HTML file.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           FontFamily
           
@@ -62378,6 +63602,18 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
+        
+          Path
+          
+            Path to an HTML file.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           RenderPreAsTable
           
@@ -62485,18 +63721,6 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
-      
-        FilePath
-        
-          Path to an HTML file.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         FontFamily
         
@@ -62569,6 +63793,18 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
+      
+        Path
+        
+          Path to an HTML file.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         RenderPreAsTable
         
@@ -63156,18 +64392,6 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
-        
-          FilePath
-          
-            Path to a Markdown file.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           FitImagesToContextWidth
           
@@ -63318,6 +64542,18 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
+        
+          Path
+          
+            Path to a Markdown file.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           PreferNarrativeSingleLineDefinitions
           
@@ -63862,18 +65098,6 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
-      
-        FilePath
-        
-          Path to a Markdown file.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         FitImagesToContextWidth
         
@@ -64036,6 +65260,18 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
+      
+        Path
+        
+          Path to a Markdown file.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         PreferNarrativeSingleLineDefinitions
         
@@ -66767,18 +68003,6 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
-        
-          InputPath
-          
-            Path to the Markdown file.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           MaxInputCharacters
           
@@ -66833,6 +68057,18 @@ cells. This keeps existing-document editing simple without forcing callers back
           
           None
         
+        
+          Path
+          
+            Path to the Markdown file.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           Profile
           
@@ -68189,18 +69425,6 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
-      
-        InputPath
-        
-          Path to the Markdown file.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         MaxInputCharacters
         
@@ -68255,6 +69479,18 @@ cells. This keeps existing-document editing simple without forcing callers back
         
         None
       
+      
+        Path
+        
+          Path to the Markdown file.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         Profile
         
@@ -73161,6 +74397,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
+        
+          Open
+          
+            Open the PNG after saving.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           OutputPath
           
@@ -73209,18 +74457,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
-        
-          Show
-          
-            Open the PNG after saving.
-          
-          SwitchParameter
-          
-            SwitchParameter
-            
-          
-          None
-        
         
           Supersampling
           
@@ -73356,6 +74592,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
+        
+          Open
+          
+            Open the PNG after saving.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           OutputPath
           
@@ -73392,18 +74640,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
-        
-          Show
-          
-            Open the PNG after saving.
-          
-          SwitchParameter
-          
-            SwitchParameter
-            
-          
-          None
-        
         
           Supersampling
           
@@ -73539,6 +74775,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
         
         None
       
+      
+        Open
+        
+          Open the PNG after saving.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         OutputPath
         
@@ -73587,18 +74835,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
         
         None
       
-      
-        Show
-        
-          Open the PNG after saving.
-        
-        SwitchParameter
-        
-          SwitchParameter
-          
-        
-        None
-      
       
         Supersampling
         
@@ -73755,6 +74991,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
+        
+          Open
+          
+            Open the SVG after saving.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           OutputPath
           
@@ -73803,18 +75051,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
-        
-          Show
-          
-            Open the SVG after saving.
-          
-          SwitchParameter
-          
-            SwitchParameter
-            
-          
-          None
-        
         
           Transparent
           
@@ -73914,6 +75150,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
+        
+          Open
+          
+            Open the SVG after saving.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           OutputPath
           
@@ -73950,18 +75198,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
-        
-          Show
-          
-            Open the SVG after saving.
-          
-          SwitchParameter
-          
-            SwitchParameter
-            
-          
-          None
-        
         
           Transparent
           
@@ -74061,6 +75297,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
         
         None
       
+      
+        Open
+        
+          Open the SVG after saving.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         OutputPath
         
@@ -74109,18 +75357,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
         
         None
       
-      
-        Show
-        
-          Open the SVG after saving.
-        
-        SwitchParameter
-        
-          SwitchParameter
-          
-        
-        None
-      
       
         Transparent
         
@@ -74982,18 +76218,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
-        
-          FilePath
-          
-            Path to a .docx file.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           FontFamily
           
@@ -75090,6 +76314,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
+        
+          Path
+          
+            Path to a .docx file.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           UseImagePaths
           
@@ -75264,18 +76500,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
         
         None
       
-      
-        FilePath
-        
-          Path to a .docx file.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         FontFamily
         
@@ -75372,6 +76596,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
         
         None
       
+      
+        Path
+        
+          Path to a .docx file.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         UseImagePaths
         
@@ -75472,18 +76708,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
-        
-          FilePath
-          
-            Path to a .docx file.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           FontFamily
           
@@ -75548,6 +76772,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
+        
+          Path
+          
+            Path to a .docx file.
+          
+          String
+          
+            String
+            
+          
+          None
+        
       
       
         ConvertTo-OfficeWordMarkdown
@@ -75690,18 +76926,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
         
         None
       
-      
-        FilePath
-        
-          Path to a .docx file.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         FontFamily
         
@@ -75766,6 +76990,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
         
         None
       
+      
+        Path
+        
+          Path to a .docx file.
+        
+        String
+        
+          String
+          
+        
+        None
+      
     
     
       
@@ -75858,6 +77094,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           SourceDocument
           
@@ -75930,10 +77178,10 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
-        
-          InputPath
+        
+          NewName
           
-            Target workbook path to update.
+            Name for the copied worksheet.
           
           String
           
@@ -75942,10 +77190,22 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
-        
-          NewName
+        
+          PassThru
           
-            Name for the copied worksheet.
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
+        
+          Path
+          
+            Target workbook path to update.
           
           String
           
@@ -76050,6 +77310,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           SourceDocument
           
@@ -76134,10 +77406,10 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
         
         None
       
-      
-        InputPath
+      
+        NewName
         
-          Target workbook path to update.
+          Name for the copied worksheet.
         
         String
         
@@ -76146,10 +77418,22 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
         
         None
       
-      
-        NewName
+      
+        PassThru
         
-          Name for the copied worksheet.
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
+      
+        Path
+        
+          Target workbook path to update.
         
         String
         
@@ -76289,18 +77573,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
-        
-          FilePath
-          
-            Source workbook or template package path.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           Force
           
@@ -76325,6 +77597,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
+        
+          Path
+          
+            Source workbook or template package path.
+          
+          String
+          
+            String
+            
+          
+          None
+        
       
     
     
@@ -76340,18 +77624,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
         
         None
       
-      
-        FilePath
-        
-          Source workbook or template package path.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         Force
         
@@ -76376,6 +77648,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
         
         None
       
+      
+        Path
+        
+          Source workbook or template package path.
+        
+        String
+        
+          String
+          
+        
+        None
+      
     
     
       
@@ -76463,6 +77747,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Password
           
@@ -76526,6 +77822,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Password
         
@@ -76627,6 +77935,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Presentation
           
@@ -76666,6 +77986,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Presentation
         
@@ -76732,18 +78064,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
     
       
         Edit-OfficeExcelRow
-        
-          InputPath
-          
-            Workbook path to update.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           NumericAsDecimal
           
@@ -76768,6 +78088,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
+        
+          Path
+          
+            Workbook path to update.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           Range
           
@@ -76918,18 +78250,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
         
         None
       
-      
-        InputPath
-        
-          Workbook path to update.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         NumericAsDecimal
         
@@ -76954,6 +78274,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
         
         None
       
+      
+        Path
+        
+          Workbook path to update.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         Range
         
@@ -79602,6 +80934,431 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
     
     
   
+  
+    
+      Export-OfficeDocumentPdf
+      Export
+      OfficeDocumentPdf
+      
+        Exports a Word, Excel, PowerPoint, Markdown, or RTF document to PDF.
+      
+    
+    
+      Accepts either a live OfficeIMO document from the pipeline or a supported source file.
+    
+    
+      
+        Export-OfficeDocumentPdf
+        
+          Document
+          
+            Live Word, Excel, PowerPoint, Markdown, or RTF document to export.
+          
+          Object
+          
+            Object
+            
+          
+          None
+        
+        
+          ExcelOptions
+          
+            Excel-specific PDF options.
+          
+          ExcelPdfSaveOptions
+          
+            ExcelPdfSaveOptions
+            
+          
+          None
+        
+        
+          MarkdownOptions
+          
+            Markdown-specific PDF options.
+          
+          MarkdownPdfSaveOptions
+          
+            MarkdownPdfSaveOptions
+            
+          
+          None
+        
+        
+          Open
+          
+            Open the PDF after exporting it.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
+        
+          PassThru
+          
+            Emit the saved PDF file.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
+        
+          Path
+          
+            Destination PDF path.
+          
+          String
+          
+            String
+            
+          
+          None
+        
+        
+          PowerPointOptions
+          
+            PowerPoint-specific PDF options.
+          
+          PowerPointPdfSaveOptions
+          
+            PowerPointPdfSaveOptions
+            
+          
+          None
+        
+        
+          RtfOptions
+          
+            RTF-specific PDF options.
+          
+          RtfPdfSaveOptions
+          
+            RtfPdfSaveOptions
+            
+          
+          None
+        
+        
+          WordOptions
+          
+            Word-specific PDF options.
+          
+          WordPdfSaveOptions
+          
+            WordPdfSaveOptions
+            
+          
+          None
+        
+      
+      
+        Export-OfficeDocumentPdf
+        
+          ExcelOptions
+          
+            Excel-specific PDF options.
+          
+          ExcelPdfSaveOptions
+          
+            ExcelPdfSaveOptions
+            
+          
+          None
+        
+        
+          InputPath
+          
+            Source .docx, .xlsx, .pptx, .md, .markdown, or .rtf file.
+          
+          String
+          
+            String
+            
+          
+          None
+        
+        
+          MarkdownOptions
+          
+            Markdown-specific PDF options.
+          
+          MarkdownPdfSaveOptions
+          
+            MarkdownPdfSaveOptions
+            
+          
+          None
+        
+        
+          Open
+          
+            Open the PDF after exporting it.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
+        
+          PassThru
+          
+            Emit the saved PDF file.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
+        
+          Password
+          
+            Password used to open an encrypted Word, Excel, or PowerPoint source file.
+          
+          String
+          
+            String
+            
+          
+          None
+        
+        
+          Path
+          
+            Destination PDF path.
+          
+          String
+          
+            String
+            
+          
+          None
+        
+        
+          PowerPointOptions
+          
+            PowerPoint-specific PDF options.
+          
+          PowerPointPdfSaveOptions
+          
+            PowerPointPdfSaveOptions
+            
+          
+          None
+        
+        
+          RtfOptions
+          
+            RTF-specific PDF options.
+          
+          RtfPdfSaveOptions
+          
+            RtfPdfSaveOptions
+            
+          
+          None
+        
+        
+          WordOptions
+          
+            Word-specific PDF options.
+          
+          WordPdfSaveOptions
+          
+            WordPdfSaveOptions
+            
+          
+          None
+        
+      
+    
+    
+      
+        Document
+        
+          Live Word, Excel, PowerPoint, Markdown, or RTF document to export.
+        
+        Object
+        
+          Object
+          
+        
+        None
+      
+      
+        ExcelOptions
+        
+          Excel-specific PDF options.
+        
+        ExcelPdfSaveOptions
+        
+          ExcelPdfSaveOptions
+          
+        
+        None
+      
+      
+        InputPath
+        
+          Source .docx, .xlsx, .pptx, .md, .markdown, or .rtf file.
+        
+        String
+        
+          String
+          
+        
+        None
+      
+      
+        MarkdownOptions
+        
+          Markdown-specific PDF options.
+        
+        MarkdownPdfSaveOptions
+        
+          MarkdownPdfSaveOptions
+          
+        
+        None
+      
+      
+        Open
+        
+          Open the PDF after exporting it.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
+      
+        PassThru
+        
+          Emit the saved PDF file.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
+      
+        Password
+        
+          Password used to open an encrypted Word, Excel, or PowerPoint source file.
+        
+        String
+        
+          String
+          
+        
+        None
+      
+      
+        Path
+        
+          Destination PDF path.
+        
+        String
+        
+          String
+          
+        
+        None
+      
+      
+        PowerPointOptions
+        
+          PowerPoint-specific PDF options.
+        
+        PowerPointPdfSaveOptions
+        
+          PowerPointPdfSaveOptions
+          
+        
+        None
+      
+      
+        RtfOptions
+        
+          RTF-specific PDF options.
+        
+        RtfPdfSaveOptions
+        
+          RtfPdfSaveOptions
+          
+        
+        None
+      
+      
+        WordOptions
+        
+          Word-specific PDF options.
+        
+        WordPdfSaveOptions
+        
+          WordPdfSaveOptions
+          
+        
+        None
+      
+    
+    
+      
+        
+          System.Object
+        
+      
+    
+    
+      
+        
+          System.IO.FileInfo
+        
+      
+    
+    
+      
+        
+      
+    
+    
+      
+        Export a live Word document.
+        
+          PS> 
+        
+        $document | Export-OfficeDocumentPdf -Path .\Report.pdf
+        
+          
+        
+      
+      
+        Export a supported file without opening it explicitly.
+        
+          PS> 
+        
+        Export-OfficeDocumentPdf -InputPath .\Report.docx -Path .\Report.pdf -PassThru
+        
+          
+        
+      
+    
+    
+  
   
     
       Export-OfficeExcel
@@ -86089,6 +87846,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
+        
+          Open
+          
+            Open the generated VSDX after saving.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           PageName
           
@@ -86137,18 +87906,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
-        
-          Show
-          
-            Open the generated VSDX after saving.
-          
-          SwitchParameter
-          
-            SwitchParameter
-            
-          
-          None
-        
         
           UseNaturalPageSize
           
@@ -86224,6 +87981,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
         
         None
       
+      
+        Open
+        
+          Open the generated VSDX after saving.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         PageName
         
@@ -86272,18 +88041,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
         
         None
       
-      
-        Show
-        
-          Open the generated VSDX after saving.
-        
-        SwitchParameter
-        
-          SwitchParameter
-          
-        
-        None
-      
       
         UseNaturalPageSize
         
@@ -86903,8 +88660,8 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Workbook path to inspect.
           
@@ -87113,8 +88870,8 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Workbook path to inspect.
         
@@ -88085,8 +89842,8 @@ the target shape without reading text content.
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Path to the .docx file.
           
@@ -88136,8 +89893,8 @@ the target shape without reading text content.
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Path to the .docx file.
           
@@ -88289,8 +90046,8 @@ the target shape without reading text content.
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Path to the .docx file.
         
@@ -88410,8 +90167,8 @@ returned list objects can be piped directly to Add-OfficeWordListItem.
           None
         
-        
-          InputPath
+        
+          Path
           
             Path to the document to open read-only for searching.
           
@@ -88449,8 +90206,8 @@ returned list objects can be piped directly to Add-OfficeWordListItem.
           None
         
-        
-          InputPath
+        
+          Path
           
             Path to the document to open read-only for searching.
           
@@ -88656,8 +90413,8 @@ returned list objects can be piped directly to Add-OfficeWordListItem.
         None
       
-      
-        InputPath
+      
+        Path
         
           Path to the document to open read-only for searching.
         
@@ -88804,8 +90561,8 @@ expressions.
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Path to the document to open read-only for searching.
           
@@ -88855,8 +90612,8 @@ expressions.
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Path to the document to open read-only for searching.
           
@@ -89020,8 +90777,8 @@ expressions.
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Path to the document to open read-only for searching.
         
@@ -98675,24 +100432,24 @@ extraction, hashing, and chunk shaping.
           
           None
         
-        
-          InputPath
+        
+          Password
           
-            Path to the workbook to load.
+            Password used to open an encrypted workbook package.
           
-          String
+          String
           
             String
             
           
           None
         
-        
-          Password
+        
+          Path
           
-            Password used to open an encrypted workbook package.
+            Path to the workbook to load.
           
-          String
+          String
           
             String
             
@@ -98801,24 +100558,24 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
+      
+        Password
         
-          Path to the workbook to load.
+          Password used to open an encrypted workbook package.
         
-        String
+        String
         
           String
           
         
         None
       
-      
-        Password
+      
+        Path
         
-          Password used to open an encrypted workbook package.
+          Path to the workbook to load.
         
-        String
+        String
         
           String
           
@@ -98991,8 +100748,8 @@ extraction, hashing, and chunk shaping.
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Workbook path to inspect.
           
@@ -99177,8 +100934,8 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Workbook path to inspect.
         
@@ -99300,8 +101057,8 @@ extraction, hashing, and chunk shaping.
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Workbook path.
           
@@ -99366,8 +101123,8 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Workbook path.
         
@@ -99552,8 +101309,8 @@ extraction, hashing, and chunk shaping.
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Workbook path to inspect.
           
@@ -99762,8 +101519,8 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Workbook path to inspect.
         
@@ -100062,8 +101819,8 @@ extraction, hashing, and chunk shaping.
     
       
         Get-OfficeExcelDataModel
-        
-          InputPath
+        
+          Path
           
             Workbook path.
           
@@ -100104,8 +101861,8 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Workbook path.
         
@@ -100291,8 +102048,8 @@ extraction, hashing, and chunk shaping.
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Workbook path to inspect.
           
@@ -100501,8 +102258,8 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Workbook path to inspect.
         
@@ -100647,26 +102404,26 @@ extraction, hashing, and chunk shaping.
           
           None
         
-        
-          InputPath
+        
+          Name
           
-            Path to the workbook.
+            Property name filter (wildcards supported).
           
-          String
+          String[]
           
-            String
+            String[]
             
           
           None
         
-        
-          Name
+        
+          Path
           
-            Property name filter (wildcards supported).
+            Path to the workbook.
           
-          String[]
+          String
           
-            String[]
+            String
             
           
           None
@@ -100785,26 +102542,26 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
+      
+        Name
         
-          Path to the workbook.
+          Property name filter (wildcards supported).
         
-        String
+        String[]
         
-          String
+          String[]
           
         
         None
       
-      
-        Name
+      
+        Path
         
-          Property name filter (wildcards supported).
+          Path to the workbook.
         
-        String[]
+        String
         
-          String[]
+          String
           
         
         None
@@ -100875,8 +102632,8 @@ extraction, hashing, and chunk shaping.
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Workbook path.
           
@@ -100941,8 +102698,8 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Workbook path.
         
@@ -101005,24 +102762,24 @@ extraction, hashing, and chunk shaping.
     
       
         Get-OfficeExcelNamedRange
-        
-          InputPath
+        
+          Name
           
-            Path to the workbook.
+            Optional named range to retrieve.
           
-          String
+          String
           
             String
             
           
           None
         
-        
-          Name
+        
+          Path
           
-            Optional named range to retrieve.
+            Path to the workbook.
           
-          String
+          String
           
             String
             
@@ -101194,24 +102951,24 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
+      
+        Name
         
-          Path to the workbook.
+          Optional named range to retrieve.
         
-        String
+        String
         
           String
           
         
         None
       
-      
-        Name
+      
+        Path
         
-          Optional named range to retrieve.
+          Path to the workbook.
         
-        String
+        String
         
           String
           
@@ -101464,8 +103221,8 @@ extraction, hashing, and chunk shaping.
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Workbook path to inspect.
           
@@ -101602,8 +103359,8 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Workbook path to inspect.
         
@@ -101701,24 +103458,24 @@ extraction, hashing, and chunk shaping.
     
       
         Get-OfficeExcelPivotTable
-        
-          InputPath
+        
+          Name
           
-            Path to the workbook.
+            Optional pivot table name filter.
           
-          String
+          String
           
             String
             
           
           None
         
-        
-          Name
+        
+          Path
           
-            Optional pivot table name filter.
+            Path to the workbook.
           
-          String
+          String
           
             String
             
@@ -101815,24 +103572,24 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
+      
+        Name
         
-          Path to the workbook.
+          Optional pivot table name filter.
         
-        String
+        String
         
           String
           
         
         None
       
-      
-        Name
+      
+        Path
         
-          Optional pivot table name filter.
+          Path to the workbook.
         
-        String
+        String
         
           String
           
@@ -101972,8 +103729,8 @@ extraction, hashing, and chunk shaping.
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Path to the workbook.
           
@@ -102152,8 +103909,8 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Path to the workbook.
         
@@ -102268,26 +104025,26 @@ extraction, hashing, and chunk shaping.
           
           None
         
-        
-          InputPath
+        
+          NumericAsDecimal
           
-            Path to the workbook.
+            Prefer decimals instead of doubles for numeric values.
           
-          String
+          SwitchParameter
           
-            String
+            SwitchParameter
             
           
           None
         
-        
-          NumericAsDecimal
+        
+          Path
           
-            Prefer decimals instead of doubles for numeric values.
+            Path to the workbook.
           
-          SwitchParameter
+          String
           
-            SwitchParameter
+            String
             
           
           None
@@ -102601,26 +104358,26 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
+      
+        NumericAsDecimal
         
-          Path to the workbook.
+          Prefer decimals instead of doubles for numeric values.
         
-        String
+        SwitchParameter
         
-          String
+          SwitchParameter
           
         
         None
       
-      
-        NumericAsDecimal
+      
+        Path
         
-          Prefer decimals instead of doubles for numeric values.
+          Path to the workbook.
         
-        SwitchParameter
+        String
         
-          SwitchParameter
+          String
           
         
         None
@@ -102822,8 +104579,8 @@ extraction, hashing, and chunk shaping.
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Workbook path to inspect.
           
@@ -102984,8 +104741,8 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Workbook path to inspect.
         
@@ -103129,8 +104886,8 @@ extraction, hashing, and chunk shaping.
     
       
         Get-OfficeExcelStreamingContract
-        
-          InputPath
+        
+          Path
           
             Workbook path.
           
@@ -103171,8 +104928,8 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Workbook path.
         
@@ -103261,8 +105018,8 @@ extraction, hashing, and chunk shaping.
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Path to the workbook.
           
@@ -103351,8 +105108,8 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Path to the workbook.
         
@@ -103416,24 +105173,24 @@ extraction, hashing, and chunk shaping.
     
       
         Get-OfficeExcelTable
-        
-          InputPath
+        
+          Name
           
-            Path to the workbook.
+            Optional table name filter.
           
-          String
+          String
           
             String
             
           
           None
         
-        
-          Name
+        
+          Path
           
-            Optional table name filter.
+            Path to the workbook.
           
-          String
+          String
           
             String
             
@@ -103605,24 +105362,24 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
+      
+        Name
         
-          Path to the workbook.
+          Optional table name filter.
         
-        String
+        String
         
           String
           
         
         None
       
-      
-        Name
+      
+        Path
         
-          Optional table name filter.
+          Path to the workbook.
         
-        String
+        String
         
           String
           
@@ -103872,26 +105629,26 @@ extraction, hashing, and chunk shaping.
       
       
         Get-OfficeExcelTemplateMarker
-        
-          InputPath
+        
+          MissingOnly
           
-            Workbook path to inspect.
+            Only returns markers that are not supplied by -Value.
           
-          String
+          SwitchParameter
           
-            String
+            SwitchParameter
             
           
           None
         
-        
-          MissingOnly
+        
+          Path
           
-            Only returns markers that are not supplied by -Value.
+            Workbook path to inspect.
           
-          SwitchParameter
+          String
           
-            SwitchParameter
+            String
             
           
           None
@@ -104010,26 +105767,26 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
+      
+        MissingOnly
         
-          Workbook path to inspect.
+          Only returns markers that are not supplied by -Value.
         
-        String
+        SwitchParameter
         
-          String
+          SwitchParameter
           
         
         None
       
-      
-        MissingOnly
+      
+        Path
         
-          Only returns markers that are not supplied by -Value.
+          Workbook path to inspect.
         
-        SwitchParameter
+        String
         
-          SwitchParameter
+          String
           
         
         None
@@ -104155,26 +105912,26 @@ extraction, hashing, and chunk shaping.
           
           None
         
-        
-          InputPath
+        
+          NumericAsDecimal
           
-            Path to the workbook.
+            Prefer decimals instead of doubles for numeric values.
           
-          String
+          SwitchParameter
           
-            String
+            SwitchParameter
             
           
           None
         
-        
-          NumericAsDecimal
+        
+          Path
           
-            Prefer decimals instead of doubles for numeric values.
+            Path to the workbook.
           
-          SwitchParameter
+          String
           
-            SwitchParameter
+            String
             
           
           None
@@ -104452,26 +106209,26 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
+      
+        NumericAsDecimal
         
-          Path to the workbook.
+          Prefer decimals instead of doubles for numeric values.
         
-        String
+        SwitchParameter
         
-          String
+          SwitchParameter
           
         
         None
       
-      
-        NumericAsDecimal
+      
+        Path
         
-          Prefer decimals instead of doubles for numeric values.
+          Path to the workbook.
         
-        SwitchParameter
+        String
         
-          SwitchParameter
+          String
           
         
         None
@@ -104601,8 +106358,8 @@ extraction, hashing, and chunk shaping.
       
       
         Get-OfficeExcelWorksheetView
-        
-          InputPath
+        
+          Path
           
             Workbook path to inspect.
           
@@ -104691,8 +106448,8 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Workbook path to inspect.
         
@@ -105135,18 +106892,6 @@ extraction, hashing, and chunk shaping.
           
           None
         
-        
-          InputPath
-          
-            Path to the Markdown file.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           MaxInputCharacters
           
@@ -105189,6 +106934,18 @@ extraction, hashing, and chunk shaping.
           
           None
         
+        
+          Path
+          
+            Path to the Markdown file.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           Profile
           
@@ -105453,18 +107210,6 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
-        
-          Path to the Markdown file.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         MaxInputCharacters
         
@@ -105507,6 +107252,18 @@ extraction, hashing, and chunk shaping.
         
         None
       
+      
+        Path
+        
+          Path to the Markdown file.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         Profile
         
@@ -105692,18 +107449,6 @@ extraction, hashing, and chunk shaping.
           
           None
         
-        
-          InputPath
-          
-            Path to the Markdown file.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           Key
           
@@ -105758,6 +107503,18 @@ extraction, hashing, and chunk shaping.
           
           None
         
+        
+          Path
+          
+            Path to the Markdown file.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           Profile
           
@@ -106253,18 +108010,6 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
-        
-          Path to the Markdown file.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         Key
         
@@ -106319,6 +108064,18 @@ extraction, hashing, and chunk shaping.
         
         None
       
+      
+        Path
+        
+          Path to the Markdown file.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         Profile
         
@@ -106533,18 +108290,6 @@ extraction, hashing, and chunk shaping.
           
           None
         
-        
-          InputPath
-          
-            Path to the Markdown file.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           MaxInputCharacters
           
@@ -106611,6 +108356,18 @@ extraction, hashing, and chunk shaping.
           
           None
         
+        
+          Path
+          
+            Path to the Markdown file.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           Profile
           
@@ -107202,18 +108959,6 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
-        
-          Path to the Markdown file.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         MaxInputCharacters
         
@@ -107280,6 +109025,18 @@ extraction, hashing, and chunk shaping.
         
         None
       
+      
+        Path
+        
+          Path to the Markdown file.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         Profile
         
@@ -107465,18 +109222,6 @@ extraction, hashing, and chunk shaping.
           
           None
         
-        
-          InputPath
-          
-            Path to the Markdown file.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           MaxDepth
           
@@ -107543,6 +109288,18 @@ extraction, hashing, and chunk shaping.
           
           None
         
+        
+          Path
+          
+            Path to the Markdown file.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           Profile
           
@@ -108098,18 +109855,6 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
-        
-          Path to the Markdown file.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         MaxDepth
         
@@ -108176,6 +109921,18 @@ extraction, hashing, and chunk shaping.
         
         None
       
+      
+        Path
+        
+          Path to the Markdown file.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         Profile
         
@@ -108378,18 +110135,6 @@ extraction, hashing, and chunk shaping.
           
           None
         
-        
-          InputPath
-          
-            Path to the Markdown file.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           MaxInputCharacters
           
@@ -108432,6 +110177,18 @@ extraction, hashing, and chunk shaping.
           
           None
         
+        
+          Path
+          
+            Path to the Markdown file.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           Profile
           
@@ -108903,18 +110660,6 @@ extraction, hashing, and chunk shaping.
         
         None
       
-      
-        InputPath
-        
-          Path to the Markdown file.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         MaxInputCharacters
         
@@ -108957,6 +110702,18 @@ extraction, hashing, and chunk shaping.
         
         None
       
+      
+        Path
+        
+          Path to the Markdown file.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         Profile
         
@@ -112706,24 +114463,24 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
     
       
         Get-OfficePowerPoint
-        
-          FilePath
+        
+          Password
           
-            Path to the .pptx file.
+            Password used to open an encrypted presentation package.
           
-          String
+          String
           
             String
             
           
           None
         
-        
-          Password
+        
+          Path
           
-            Password used to open an encrypted presentation package.
+            Path to the .pptx file.
           
-          String
+          String
           
             String
             
@@ -112733,24 +114490,24 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
       
     
     
-      
-        FilePath
+      
+        Password
         
-          Path to the .pptx file.
+          Password used to open an encrypted presentation package.
         
-        String
+        String
         
           String
           
         
         None
       
-      
-        Password
+      
+        Path
         
-          Password used to open an encrypted presentation package.
+          Path to the .pptx file.
         
-        String
+        String
         
           String
           
@@ -112777,7 +114534,7 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
         
           PS> 
         
-        $ppt = Get-OfficePowerPoint -FilePath .\Quarterly.pptx
+        $ppt = Get-OfficePowerPoint -Path .\Quarterly.pptx
         
           Reads Quarterly.pptx and exposes the presentation object.
         
@@ -113856,7 +115613,7 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
         
           PS> 
         
-        $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointSectionsRead.pptx
+        $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSectionsRead.pptx
             Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null
             Add-OfficePowerPointSection -Presentation $ppt -Name 'Appendix' -StartSlideIndex 0 | Out-Null
             Get-OfficePowerPointSection -Presentation $ppt | Select-Object Name, FirstSlideIndex, SlideCount
@@ -114488,7 +116245,7 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
         
           PS> 
         
-        $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointThemeRead.pptx
+        $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointThemeRead.pptx
             Set-OfficePowerPointThemeName -Presentation $ppt -Name 'Service Brief'
             Set-OfficePowerPointThemeFonts -Presentation $ppt -MajorLatin 'Aptos Display' -MinorLatin 'Aptos'
             Get-OfficePowerPointTheme -Presentation $ppt | Select-Object Name, Master
@@ -115637,24 +117394,24 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
           
           None
         
-        
-          InputPath
+        
+          Password
           
-            Path to the .docx. Accepts PS paths.
+            Password used to open an encrypted document package.
           
-          String
+          String
           
             String
             
           
           None
         
-        
-          Password
+        
+          Path
           
-            Password used to open an encrypted document package.
+            Path to the .docx. Accepts PS paths.
           
-          String
+          String
           
             String
             
@@ -115700,24 +117457,24 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
         
         None
       
-      
-        InputPath
+      
+        Password
         
-          Path to the .docx. Accepts PS paths.
+          Password used to open an encrypted document package.
         
-        String
+        String
         
           String
           
         
         None
       
-      
-        Password
+      
+        Path
         
-          Password used to open an encrypted document package.
+          Path to the .docx. Accepts PS paths.
         
-        String
+        String
         
           String
           
@@ -115789,26 +117546,26 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
     
       
         Get-OfficeWordBookmark
-        
-          InputPath
+        
+          Name
           
-            Path to the .docx file.
+            Bookmark name filter (wildcards supported).
           
-          String
+          String[]
           
-            String
+            String[]
             
           
           None
         
-        
-          Name
+        
+          Path
           
-            Bookmark name filter (wildcards supported).
+            Path to the .docx file.
           
-          String[]
+          String
           
-            String[]
+            String
             
           
           None
@@ -115855,26 +117612,26 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
         
         None
       
-      
-        InputPath
+      
+        Name
         
-          Path to the .docx file.
+          Bookmark name filter (wildcards supported).
         
-        String
+        String[]
         
-          String
+          String[]
           
         
         None
       
-      
-        Name
+      
+        Path
         
-          Bookmark name filter (wildcards supported).
+          Path to the .docx file.
         
-        String[]
+        String
         
-          String[]
+          String
           
         
         None
@@ -115955,8 +117712,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Path to the .docx file.
           
@@ -116093,8 +117850,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Path to the .docx file.
         
@@ -116193,8 +117950,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Path to the .docx file.
           
@@ -116283,8 +118040,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Path to the .docx file.
         
@@ -116371,8 +118128,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Path to the .docx file.
           
@@ -116485,8 +118242,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Path to the .docx file.
         
@@ -116585,8 +118342,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Path to the .docx file.
           
@@ -116675,8 +118432,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Path to the .docx file.
         
@@ -116775,26 +118532,26 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
           
           None
         
-        
-          InputPath
+        
+          Name
           
-            Path to the document.
+            Property name filter (wildcards supported).
           
-          String
+          String[]
           
-            String
+            String[]
             
           
           None
         
-        
-          Name
+        
+          Path
           
-            Property name filter (wildcards supported).
+            Path to the document.
           
-          String[]
+          String
           
-            String[]
+            String
             
           
           None
@@ -116889,26 +118646,26 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
         
         None
       
-      
-        InputPath
+      
+        Name
         
-          Path to the document.
+          Property name filter (wildcards supported).
         
-        String
+        String[]
         
-          String
+          String[]
           
         
         None
       
-      
-        Name
+      
+        Path
         
-          Property name filter (wildcards supported).
+          Path to the document.
         
-        String[]
+        String
         
-          String[]
+          String
           
         
         None
@@ -116980,8 +118737,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Path to the .docx file.
           
@@ -117070,8 +118827,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Path to the .docx file.
         
@@ -117146,8 +118903,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
     
       
         Get-OfficeWordEndnote
-        
-          InputPath
+        
+          Path
           
             Path to the document.
           
@@ -117203,8 +118960,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Path to the document.
         
@@ -117398,8 +119155,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Path to the .docx file.
           
@@ -117662,8 +119419,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Path to the .docx file.
         
@@ -117726,8 +119483,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
     
       
         Get-OfficeWordFootnote
-        
-          InputPath
+        
+          Path
           
             Path to the document.
           
@@ -117783,8 +119540,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Path to the document.
         
@@ -117879,8 +119636,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Path to the document.
           
@@ -118095,26 +119852,26 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
         
         None
       
-      
-        InputPath
+      
+        Paragraph
         
-          Path to the document.
+          Paragraph to inspect.
         
-        String
+        WordParagraph
         
-          String
+          WordParagraph
           
         
         None
       
-      
-        Paragraph
+      
+        Path
         
-          Paragraph to inspect.
+          Path to the document.
         
-        WordParagraph
+        String
         
-          WordParagraph
+          String
           
         
         None
@@ -118217,8 +119974,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
     
       
         Get-OfficeWordImage
-        
-          InputPath
+        
+          Path
           
             Path to the document.
           
@@ -118289,26 +120046,26 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification
         
         None
       
-      
-        InputPath
+      
+        Paragraph
         
-          Path to the document.
+          Paragraph to inspect.
         
-        String
+        WordParagraph
         
-          String
+          WordParagraph
           
         
         None
       
-      
-        Paragraph
+      
+        Path
         
-          Paragraph to inspect.
+          Path to the document.
         
-        WordParagraph
+        String
         
-          WordParagraph
+          String
           
         
         None
@@ -118401,8 +120158,8 @@ the script needs to work with list objects directly instead of using a text sear
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Path to the document to open read-only for list inspection.
           
@@ -118494,8 +120251,8 @@ the script needs to work with list objects directly instead of using a text sear
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Path to the document to open read-only for list inspection.
         
@@ -118588,8 +120345,8 @@ the script needs to work with list objects directly instead of using a text sear
     
       
         Get-OfficeWordParagraph
-        
-          InputPath
+        
+          Path
           
             Path to the document.
           
@@ -118645,8 +120402,8 @@ the script needs to work with list objects directly instead of using a text sear
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Path to the document.
         
@@ -118739,8 +120496,8 @@ the script needs to work with list objects directly instead of using a text sear
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Path to the .docx file.
           
@@ -118829,8 +120586,8 @@ the script needs to work with list objects directly instead of using a text sear
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Path to the .docx file.
         
@@ -118917,8 +120674,8 @@ the script needs to work with list objects directly instead of using a text sear
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Path to the .docx file.
           
@@ -119007,8 +120764,8 @@ the script needs to work with list objects directly instead of using a text sear
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Path to the .docx file.
         
@@ -119198,8 +120955,8 @@ the script needs to work with list objects directly instead of using a text sear
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Path to the document.
           
@@ -119264,8 +121021,8 @@ the script needs to work with list objects directly instead of using a text sear
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Path to the document.
         
@@ -119328,8 +121085,8 @@ the script needs to work with list objects directly instead of using a text sear
     
       
         Get-OfficeWordShape
-        
-          InputPath
+        
+          Path
           
             Path to the document.
           
@@ -119400,26 +121157,26 @@ the script needs to work with list objects directly instead of using a text sear
         
         None
       
-      
-        InputPath
+      
+        Paragraph
         
-          Path to the document.
+          Paragraph to inspect.
         
-        String
+        WordParagraph
         
-          String
+          WordParagraph
           
         
         None
       
-      
-        Paragraph
+      
+        Path
         
-          Paragraph to inspect.
+          Path to the document.
         
-        WordParagraph
+        String
         
-          WordParagraph
+          String
           
         
         None
@@ -119498,8 +121255,8 @@ the script needs to work with list objects directly instead of using a text sear
     
       
         Get-OfficeWordStatistics
-        
-          InputPath
+        
+          Path
           
             Path to the Word document.
           
@@ -119540,8 +121297,8 @@ the script needs to work with list objects directly instead of using a text sear
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Path to the Word document.
         
@@ -119619,8 +121376,8 @@ the script needs to work with list objects directly instead of using a text sear
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Path to the document.
           
@@ -119712,8 +121469,8 @@ the script needs to work with list objects directly instead of using a text sear
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Path to the document.
         
@@ -119921,8 +121678,8 @@ the script needs to work with list objects directly instead of using a text sear
     
       
         Get-OfficeWordTableOfContents
-        
-          InputPath
+        
+          Path
           
             Path to the .docx file.
           
@@ -119963,8 +121720,8 @@ the script needs to work with list objects directly instead of using a text sear
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Path to the .docx file.
         
@@ -120074,8 +121831,8 @@ the script needs to work with list objects directly instead of using a text sear
       
       
         Get-OfficeWordText
-        
-          InputPath
+        
+          Path
           
             Path to the document.
           
@@ -120101,26 +121858,26 @@ the script needs to work with list objects directly instead of using a text sear
         
         None
       
-      
-        InputPath
+      
+        Paragraph
         
-          Path to the document.
+          Paragraph to enumerate.
         
-        String
+        WordParagraph
         
-          String
+          WordParagraph
           
         
         None
       
-      
-        Paragraph
+      
+        Path
         
-          Paragraph to enumerate.
+          Path to the document.
         
-        WordParagraph
+        String
         
-          WordParagraph
+          String
           
         
         None
@@ -124909,18 +126666,6 @@ the script needs to work with list objects directly instead of using a text sear
           
           None
         
-        
-          InputPath
-          
-            Workbook path.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           NoHeader
           
@@ -124969,6 +126714,18 @@ the script needs to work with list objects directly instead of using a text sear
           
           None
         
+        
+          Path
+          
+            Workbook path.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           SheetName
           
@@ -125167,18 +126924,6 @@ the script needs to work with list objects directly instead of using a text sear
         
         None
       
-      
-        InputPath
-        
-          Workbook path.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         NoHeader
         
@@ -125227,6 +126972,18 @@ the script needs to work with list objects directly instead of using a text sear
         
         None
       
+      
+        Path
+        
+          Workbook path.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         SheetName
         
@@ -127373,18 +129130,6 @@ the script needs to work with list objects directly instead of using a text sear
           
           None
         
-        
-          InputPath
-          
-            Workbook path to update.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           MissingValueBehavior
           
@@ -127414,6 +129159,18 @@ the script needs to work with list objects directly instead of using a text sear
           
           None
         
+        
+          Path
+          
+            Workbook path to update.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           Sheet
           
@@ -127593,18 +129350,6 @@ the script needs to work with list objects directly instead of using a text sear
         
         None
       
-      
-        InputPath
-        
-          Workbook path to update.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         MissingValueBehavior
         
@@ -127634,6 +129379,18 @@ the script needs to work with list objects directly instead of using a text sear
         
         None
       
+      
+        Path
+        
+          Workbook path to update.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         Sheet
         
@@ -127883,18 +129640,6 @@ the script needs to work with list objects directly instead of using a text sear
           
           None
         
-        
-          InputPath
-          
-            Workbook path to update.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           MissingValueBehavior
           
@@ -127924,6 +129669,18 @@ the script needs to work with list objects directly instead of using a text sear
           
           None
         
+        
+          Path
+          
+            Workbook path to update.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           Remove
           
@@ -128175,18 +129932,6 @@ the script needs to work with list objects directly instead of using a text sear
         
         None
       
-      
-        InputPath
-        
-          Workbook path to update.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         MissingValueBehavior
         
@@ -128216,6 +129961,18 @@ the script needs to work with list objects directly instead of using a text sear
         
         None
       
+      
+        Path
+        
+          Workbook path to update.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         Remove
         
@@ -128465,18 +130222,6 @@ the script needs to work with list objects directly instead of using a text sear
           
           None
         
-        
-          InputPath
-          
-            Workbook path to update.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           MissingValueBehavior
           
@@ -128506,6 +130251,18 @@ the script needs to work with list objects directly instead of using a text sear
           
           None
         
+        
+          Path
+          
+            Workbook path to update.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           Sheet
           
@@ -128709,18 +130466,6 @@ the script needs to work with list objects directly instead of using a text sear
         
         None
       
-      
-        InputPath
-        
-          Workbook path to update.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         MissingValueBehavior
         
@@ -128750,6 +130495,18 @@ the script needs to work with list objects directly instead of using a text sear
         
         None
       
+      
+        Path
+        
+          Workbook path to update.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         Sheet
         
@@ -128956,18 +130713,6 @@ the script needs to work with list objects directly instead of using a text sear
           
           None
         
-        
-          InputPath
-          
-            Workbook path to update.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           Item
           
@@ -129009,6 +130754,18 @@ the script needs to work with list objects directly instead of using a text sear
           
           None
         
+        
+          Path
+          
+            Workbook path to update.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           SheetNameProperty
           
@@ -129176,18 +130933,6 @@ the script needs to work with list objects directly instead of using a text sear
         
         None
       
-      
-        InputPath
-        
-          Workbook path to update.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         Item
         
@@ -129229,6 +130974,18 @@ the script needs to work with list objects directly instead of using a text sear
         
         None
       
+      
+        Path
+        
+          Workbook path to update.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         SheetNameProperty
         
@@ -129850,18 +131607,6 @@ the script needs to work with list objects directly instead of using a text sear
           
           None
         
-        
-          InputPath
-          
-            Target workbook path to update.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           MatchColumnsByHeader
           
@@ -129898,6 +131643,18 @@ the script needs to work with list objects directly instead of using a text sear
           
           None
         
+        
+          Path
+          
+            Target workbook path to update.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           SourceDocument
           
@@ -130228,18 +131985,6 @@ the script needs to work with list objects directly instead of using a text sear
         
         None
       
-      
-        InputPath
-        
-          Target workbook path to update.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         MatchColumnsByHeader
         
@@ -130276,6 +132021,18 @@ the script needs to work with list objects directly instead of using a text sear
         
         None
       
+      
+        Path
+        
+          Target workbook path to update.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         SourceDocument
         
@@ -130451,8 +132208,8 @@ the script needs to work with list objects directly instead of using a text sear
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Target workbook path to create or update.
           
@@ -130655,8 +132412,8 @@ the script needs to work with list objects directly instead of using a text sear
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Target workbook path to create or update.
         
@@ -131210,14 +132967,14 @@ This does not discover, bypass, or crack a missing password.
           
           None
         
-        
-          InputPath
+        
+          Open
           
-            Base document path.
+            Open the saved output with the shell.
           
-          String
+          SwitchParameter
           
-            String
+            SwitchParameter
             
           
           None
@@ -131246,14 +133003,14 @@ This does not discover, bypass, or crack a missing password.
           
           None
         
-        
-          Show
+        
+          Path
           
-            Open the saved output with the shell.
+            Base document path.
           
-          SwitchParameter
+          String
           
-            SwitchParameter
+            String
             
           
           None
@@ -131285,34 +133042,34 @@ This does not discover, bypass, or crack a missing password.
           
           None
         
-        
-          OutputPath
+        
+          Open
           
-            Optional output path. When omitted for path input, the base document is updated in place.
+            Open the saved output with the shell.
           
-          String
+          SwitchParameter
           
-            String
+            SwitchParameter
             
           
           None
         
         
-          PassThru
+          OutputPath
           
-            Emit the merged Word document instead of disposing it.
+            Optional output path. When omitted for path input, the base document is updated in place.
           
-          SwitchParameter
+          String
           
-            SwitchParameter
+            String
             
           
           None
         
         
-          Show
+          PassThru
           
-            Open the saved output with the shell.
+            Emit the merged Word document instead of disposing it.
           
           SwitchParameter
           
@@ -131348,14 +133105,14 @@ This does not discover, bypass, or crack a missing password.
         
         None
       
-      
-        InputPath
+      
+        Open
         
-          Base document path.
+          Open the saved output with the shell.
         
-        String
+        SwitchParameter
         
-          String
+          SwitchParameter
           
         
         None
@@ -131384,14 +133141,14 @@ This does not discover, bypass, or crack a missing password.
         
         None
       
-      
-        Show
+      
+        Path
         
-          Open the saved output with the shell.
+          Base document path.
         
-        SwitchParameter
+        String
         
-          SwitchParameter
+          String
           
         
         None
@@ -131525,26 +133282,26 @@ This does not discover, bypass, or crack a missing password.
           
           None
         
-        
-          InputPath
+        
+          PassThru
           
-            Workbook path to update.
+            Emit the moved worksheet.
           
-          String
+          SwitchParameter
           
-            String
+            SwitchParameter
             
           
           None
         
-        
-          PassThru
+        
+          Path
           
-            Emit the moved worksheet.
+            Workbook path to update.
           
-          SwitchParameter
+          String
           
-            SwitchParameter
+            String
             
           
           None
@@ -131663,26 +133420,26 @@ This does not discover, bypass, or crack a missing password.
         
         None
       
-      
-        InputPath
+      
+        PassThru
         
-          Workbook path to update.
+          Emit the moved worksheet.
         
-        String
+        SwitchParameter
         
-          String
+          SwitchParameter
           
         
         None
       
-      
-        PassThru
+      
+        Path
         
-          Emit the moved worksheet.
+          Workbook path to update.
         
-        SwitchParameter
+        String
         
-          SwitchParameter
+          String
           
         
         None
@@ -131808,6 +133565,18 @@ This does not discover, bypass, or crack a missing password.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Password
           
@@ -131883,6 +133652,18 @@ This does not discover, bypass, or crack a missing password.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Password
         
@@ -132557,18 +134338,6 @@ This does not discover, bypass, or crack a missing password.
           
           None
         
-        
-          AutoSave
-          
-            Opt into OfficeIMO automatic saves during operations.
-          
-          SwitchParameter
-          
-            SwitchParameter
-            
-          
-          None
-        
         
           Category
           
@@ -132683,18 +134452,6 @@ This does not discover, bypass, or crack a missing password.
           
           None
         
-        
-          FilePath
-          
-            Destination path for the workbook.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           ForceFullCalculationOnOpen
           
@@ -132803,12 +134560,12 @@ This does not discover, bypass, or crack a missing password.
           
           None
         
-        
-          PdfPath
+        
+          Path
           
-            Optional PDF path to create from the same workbook before closing it.
+            Destination path for the workbook.
           
-          String
+          String
           
             String
             
@@ -132902,18 +134659,6 @@ This does not discover, bypass, or crack a missing password.
         
         None
       
-      
-        AutoSave
-        
-          Opt into OfficeIMO automatic saves during operations.
-        
-        SwitchParameter
-        
-          SwitchParameter
-          
-        
-        None
-      
       
         Category
         
@@ -133028,18 +134773,6 @@ This does not discover, bypass, or crack a missing password.
         
         None
       
-      
-        FilePath
-        
-          Destination path for the workbook.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         ForceFullCalculationOnOpen
         
@@ -133148,12 +134881,12 @@ This does not discover, bypass, or crack a missing password.
         
         None
       
-      
-        PdfPath
+      
+        Path
         
-          Optional PDF path to create from the same workbook before closing it.
+          Destination path for the workbook.
         
-        String
+        String
         
           String
           
@@ -133532,18 +135265,6 @@ This does not discover, bypass, or crack a missing password.
           
           None
         
-        
-          InputPath
-          
-            Workbook path to update.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           NoAutoFilter
           
@@ -133592,6 +135313,18 @@ This does not discover, bypass, or crack a missing password.
           
           None
         
+        
+          Path
+          
+            Workbook path to update.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           Sheet
           
@@ -133994,18 +135727,6 @@ This does not discover, bypass, or crack a missing password.
         
         None
       
-      
-        InputPath
-        
-          Workbook path to update.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         NoAutoFilter
         
@@ -134054,6 +135775,18 @@ This does not discover, bypass, or crack a missing password.
         
         None
       
+      
+        Path
+        
+          Workbook path to update.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         Sheet
         
@@ -134240,18 +135973,6 @@ This does not discover, bypass, or crack a missing password.
           
           None
         
-        
-          MarkdownPdfOptions
-          
-            Advanced Markdown PDF options. Friendly PDF parameters override matching values.
-          
-          MarkdownPdfSaveOptions
-          
-            MarkdownPdfSaveOptions
-            
-          
-          None
-        
         
           NoSave
           
@@ -134264,18 +135985,6 @@ This does not discover, bypass, or crack a missing password.
           
           None
         
-        
-          OutputPath
-          
-            Destination path for the Markdown file.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           PassThru
           
@@ -134288,289 +135997,12 @@ This does not discover, bypass, or crack a missing password.
           
           None
         
-        
-          PdfApplyWordLikeTheme
-          
-            Apply the built-in Word-like Markdown PDF baseline theme.
-          
-          Boolean
-          
-            Boolean
-            
-          
-          None
-        
-        
-          PdfAuthor
-          
-            PDF author metadata.
-          
-          String
-          
-            String
-            
-          
-          None
-        
-        
-          PdfBaseDirectory
-          
-            Base directory used to resolve local Markdown images during PDF export.
-          
-          String
-          
-            String
-            
-          
-          None
-        
-        
-          PdfConversionReportVariable
-          
-            Variable name that receives the Markdown PDF conversion report.
-          
-          String
-          
-            String
-            
-          
-          None
-        
-        
-          PdfCreateOutlineFromHeadings
-          
-            Create PDF outlines from Markdown headings.
-          
-          Boolean
-          
-            Boolean
-            
-          
-          None
-        
-        
-          PdfDefaultImageHeight
-          
-            Fallback PDF image height in points.
-          
-          Double
-          
-            Double
-            
-          
-          None
-        
-        
-          PdfDefaultImageWidth
-          
-            Fallback PDF image width in points.
-          
-          Double
-          
-            Double
-            
-          
-          None
-        
-        
-          PdfFontFamily
-          
-            Default font family used by Markdown PDF export.
-          
-          String
-          
-            String
-            
-          
-          None
-        
-        
-          PdfFrontMatterRenderMode
-          
-            Controls how YAML front matter appears in the PDF body.
-          
-          MarkdownPdfFrontMatterRenderMode
-          
-            Hidden
-            DocumentHeader
-            Table
-          
-          
-            MarkdownPdfFrontMatterRenderMode
-            
-          
-          None
-        
-        
-          PdfIncludeDataUriImages
-          
-            Embed supported data URI images in Markdown PDF output.
-          
-          Boolean
-          
-            Boolean
-            
-          
-          None
-        
-        
-          PdfIncludeLocalImages
-          
-            Embed supported local image files in Markdown PDF output.
-          
-          Boolean
-          
-            Boolean
-            
-          
-          None
-        
-        
-          PdfKeywords
-          
-            PDF keywords metadata.
-          
-          String
-          
-            String
-            
-          
-          None
-        
-        
-          PdfMaximumDataUriImageBytes
-          
-            Maximum decoded bytes for one data URI image in Markdown PDF output.
-          
-          Int32
-          
-            Int32
-            
-          
-          None
-        
-        
-          PdfOptions
-          
-            Underlying OfficeIMO.Pdf options used by Markdown PDF export.
-          
-          PdfOptions
-          
-            PdfOptions
-            
-          
-          None
-        
-        
-          PdfPath
-          
-            Optional PDF path to create from the same Markdown document.
-          
-          String
-          
-            String
-            
-          
-          None
-        
-        
-          PdfRestrictLocalImagesToBaseDirectory
-          
-            Require local images to resolve under the base directory.
-          
-          Boolean
-          
-            Boolean
-            
-          
-          None
-        
-        
-          PdfSubject
-          
-            PDF subject metadata.
-          
-          String
-          
-            String
-            
-          
-          None
-        
-        
-          PdfTheme
-          
-            Built-in Markdown PDF visual theme.
-          
-          OfficeVisualThemeKind
-          
-            Plain
-            WordLike
-            TechnicalDocument
-            GitHubLike
-            Compact
-            Report
-          
-          
-            OfficeVisualThemeKind
-            
-          
-          None
-        
-        
-          PdfTitle
-          
-            PDF title metadata.
-          
-          String
-          
-            String
-            
-          
-          None
-        
-        
-          PdfUseFirstHeadingAsTitle
-          
-            Use the first Markdown heading as the PDF title when no title is supplied.
-          
-          Boolean
-          
-            Boolean
-            
-          
-          None
-        
-        
-          PdfUseFrontMatterMetadata
-          
-            Use front matter values as PDF metadata.
-          
-          Boolean
-          
-            Boolean
-            
-          
-          None
-        
-        
-          PdfUseFrontMatterVisualTheme
-          
-            Use front matter values to select a visual theme.
-          
-          Boolean
-          
-            Boolean
-            
-          
-          None
-        
-        
-          PdfWarningVariable
+        
+          Path
           
-            Variable name that receives Markdown PDF export warnings.
+            Destination path for the Markdown file.
           
-          String
+          String
           
             String
             
@@ -134662,18 +136094,6 @@ This does not discover, bypass, or crack a missing password.
         
         None
       
-      
-        MarkdownPdfOptions
-        
-          Advanced Markdown PDF options. Friendly PDF parameters override matching values.
-        
-        MarkdownPdfSaveOptions
-        
-          MarkdownPdfSaveOptions
-          
-        
-        None
-      
       
         NoSave
         
@@ -134686,18 +136106,6 @@ This does not discover, bypass, or crack a missing password.
         
         None
       
-      
-        OutputPath
-        
-          Destination path for the Markdown file.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         PassThru
         
@@ -134710,289 +136118,12 @@ This does not discover, bypass, or crack a missing password.
         
         None
       
-      
-        PdfApplyWordLikeTheme
-        
-          Apply the built-in Word-like Markdown PDF baseline theme.
-        
-        Boolean
-        
-          Boolean
-          
-        
-        None
-      
-      
-        PdfAuthor
-        
-          PDF author metadata.
-        
-        String
-        
-          String
-          
-        
-        None
-      
-      
-        PdfBaseDirectory
-        
-          Base directory used to resolve local Markdown images during PDF export.
-        
-        String
-        
-          String
-          
-        
-        None
-      
-      
-        PdfConversionReportVariable
-        
-          Variable name that receives the Markdown PDF conversion report.
-        
-        String
-        
-          String
-          
-        
-        None
-      
-      
-        PdfCreateOutlineFromHeadings
-        
-          Create PDF outlines from Markdown headings.
-        
-        Boolean
-        
-          Boolean
-          
-        
-        None
-      
-      
-        PdfDefaultImageHeight
-        
-          Fallback PDF image height in points.
-        
-        Double
-        
-          Double
-          
-        
-        None
-      
-      
-        PdfDefaultImageWidth
-        
-          Fallback PDF image width in points.
-        
-        Double
-        
-          Double
-          
-        
-        None
-      
-      
-        PdfFontFamily
-        
-          Default font family used by Markdown PDF export.
-        
-        String
-        
-          String
-          
-        
-        None
-      
-      
-        PdfFrontMatterRenderMode
-        
-          Controls how YAML front matter appears in the PDF body.
-        
-        MarkdownPdfFrontMatterRenderMode
-        
-          Hidden
-          DocumentHeader
-          Table
-        
-        
-          MarkdownPdfFrontMatterRenderMode
-          
-        
-        None
-      
-      
-        PdfIncludeDataUriImages
-        
-          Embed supported data URI images in Markdown PDF output.
-        
-        Boolean
-        
-          Boolean
-          
-        
-        None
-      
-      
-        PdfIncludeLocalImages
-        
-          Embed supported local image files in Markdown PDF output.
-        
-        Boolean
-        
-          Boolean
-          
-        
-        None
-      
-      
-        PdfKeywords
-        
-          PDF keywords metadata.
-        
-        String
-        
-          String
-          
-        
-        None
-      
-      
-        PdfMaximumDataUriImageBytes
-        
-          Maximum decoded bytes for one data URI image in Markdown PDF output.
-        
-        Int32
-        
-          Int32
-          
-        
-        None
-      
-      
-        PdfOptions
-        
-          Underlying OfficeIMO.Pdf options used by Markdown PDF export.
-        
-        PdfOptions
-        
-          PdfOptions
-          
-        
-        None
-      
-      
-        PdfPath
-        
-          Optional PDF path to create from the same Markdown document.
-        
-        String
-        
-          String
-          
-        
-        None
-      
-      
-        PdfRestrictLocalImagesToBaseDirectory
-        
-          Require local images to resolve under the base directory.
-        
-        Boolean
-        
-          Boolean
-          
-        
-        None
-      
-      
-        PdfSubject
-        
-          PDF subject metadata.
-        
-        String
-        
-          String
-          
-        
-        None
-      
-      
-        PdfTheme
-        
-          Built-in Markdown PDF visual theme.
-        
-        OfficeVisualThemeKind
-        
-          Plain
-          WordLike
-          TechnicalDocument
-          GitHubLike
-          Compact
-          Report
-        
-        
-          OfficeVisualThemeKind
-          
-        
-        None
-      
-      
-        PdfTitle
-        
-          PDF title metadata.
-        
-        String
-        
-          String
-          
-        
-        None
-      
-      
-        PdfUseFirstHeadingAsTitle
-        
-          Use the first Markdown heading as the PDF title when no title is supplied.
-        
-        Boolean
-        
-          Boolean
-          
-        
-        None
-      
-      
-        PdfUseFrontMatterMetadata
-        
-          Use front matter values as PDF metadata.
-        
-        Boolean
-        
-          Boolean
-          
-        
-        None
-      
-      
-        PdfUseFrontMatterVisualTheme
-        
-          Use front matter values to select a visual theme.
-        
-        Boolean
-        
-          Boolean
-          
-        
-        None
-      
-      
-        PdfWarningVariable
+      
+        Path
         
-          Variable name that receives Markdown PDF export warnings.
+          Destination path for the Markdown file.
         
-        String
+        String
         
           String
           
@@ -135126,6 +136257,18 @@ This does not discover, bypass, or crack a missing password.
           
           None
         
+        
+          PassThru
+          
+            Emit the saved file when a destination path is supplied.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Path
           
@@ -135158,6 +136301,18 @@ This does not discover, bypass, or crack a missing password.
         
         None
       
+      
+        PassThru
+        
+          Emit the saved file when a destination path is supplied.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Path
         
@@ -135184,6 +136339,11 @@ This does not discover, bypass, or crack a missing password.
           OfficeIMO.OpenDocument.OdfDocument
         
       
+      
+        
+          System.IO.FileInfo
+        
+      
     
     
       
@@ -135456,6 +136616,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
+        
+          Open
+          
+            Open the PDF after saving.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           OpenActionMode
           
@@ -135638,18 +136810,6 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
-        
-          Show
-          
-            Open the PDF after saving.
-          
-          SwitchParameter
-          
-            SwitchParameter
-            
-          
-          None
-        
         
           Theme
           
@@ -135908,6 +137068,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
+        
+          Open
+          
+            Open the PDF after saving.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           OpenActionMode
           
@@ -136078,18 +137250,6 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
-        
-          Show
-          
-            Open the PDF after saving.
-          
-          SwitchParameter
-          
-            SwitchParameter
-            
-          
-          None
-        
         
           Theme
           
@@ -136348,6 +137508,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
+      
+        Open
+        
+          Open the PDF after saving.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         OpenActionMode
         
@@ -136530,18 +137702,6 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
-      
-        Show
-        
-          Open the PDF after saving.
-        
-        SwitchParameter
-        
-          SwitchParameter
-          
-        
-        None
-      
       
         Theme
         
@@ -136591,7 +137751,7 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
           PS> 
         
-        New-OfficePdf -Path .\Report.pdf { PdfHeading 'Report'; PdfParagraph 'Generated by PSWriteOffice' } -Show
+        New-OfficePdf -Path .\Report.pdf { PdfHeading 'Report'; PdfParagraph 'Generated by PSWriteOffice' } -Open
         
           Builds a PDF and opens it after saving.
         
@@ -138242,18 +139402,6 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
-        
-          FilePath
-          
-            Destination path for the new .pptx.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           NoSave
           
@@ -138281,7 +139429,7 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
           PassThru
           
-            Emit a FileInfo for chaining.
+            Emit the saved FileInfo for chaining.
           
           SwitchParameter
           
@@ -138302,12 +139450,12 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
-        
-          PdfPath
+        
+          Path
           
-            Optional PDF path to create from the same presentation before closing it.
+            Destination path for the new .pptx.
           
-          String
+          String
           
             String
             
@@ -138329,18 +139477,6 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
-      
-        FilePath
-        
-          Destination path for the new .pptx.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         NoSave
         
@@ -138368,7 +139504,7 @@ Use -NoSave or omit -Path when a document object should be returned for further
       
         PassThru
         
-          Emit a FileInfo for chaining.
+          Emit the saved FileInfo for chaining.
         
         SwitchParameter
         
@@ -138389,12 +139525,12 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
-      
-        PdfPath
+      
+        Path
         
-          Optional PDF path to create from the same presentation before closing it.
+          Destination path for the new .pptx.
         
-        String
+        String
         
           String
           
@@ -138421,9 +139557,9 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
           PS> 
         
-        $ppt = New-OfficePowerPoint -FilePath .\deck.pptx
+        $ppt = New-OfficePowerPoint -Path .\deck.pptx -NoSave
         
-          Creates deck.pptx and returns the live presentation object for further editing.
+          Creates a live presentation associated with deck.pptx for incremental composition.
         
       
       
@@ -138552,26 +139688,26 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
-        
-          OutputPath
+        
+          PassThru
           
-            Destination path for the RTF file.
+            Emit a FileInfo for chaining.
           
-          String
+          SwitchParameter
           
-            String
+            SwitchParameter
             
           
           None
         
-        
-          PassThru
+        
+          Path
           
-            Emit a FileInfo for chaining.
+            Destination path for the RTF file.
           
-          SwitchParameter
+          String
           
-            SwitchParameter
+            String
             
           
           None
@@ -138603,26 +139739,26 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
-      
-        OutputPath
+      
+        PassThru
         
-          Destination path for the RTF file.
+          Emit a FileInfo for chaining.
         
-        String
+        SwitchParameter
         
-          String
+          SwitchParameter
           
         
         None
       
-      
-        PassThru
+      
+        Path
         
-          Emit a FileInfo for chaining.
+          Destination path for the RTF file.
         
-        SwitchParameter
+        String
         
-          SwitchParameter
+          String
           
         
         None
@@ -139202,6 +140338,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
+        
+          Open
+          
+            Open the document after saving.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           PageName
           
@@ -139250,18 +140398,6 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
-        
-          Show
-          
-            Open the document after saving.
-          
-          SwitchParameter
-          
-            SwitchParameter
-            
-          
-          None
-        
         
           Title
           
@@ -139366,6 +140502,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
+      
+        Open
+        
+          Open the document after saving.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         PageName
         
@@ -139414,18 +140562,6 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
-      
-        Show
-        
-          Open the document after saving.
-        
-        SwitchParameter
-        
-          SwitchParameter
-          
-        
-        None
-      
       
         Title
         
@@ -139662,18 +140798,6 @@ Use -NoSave or omit -Path when a document object should be returned for further
     
       
         New-OfficeWord
-        
-          AutoSave
-          
-            Enable OfficeIMO AutoSave mode.
-          
-          SwitchParameter
-          
-            SwitchParameter
-            
-          
-          None
-        
         
           Content
           
@@ -139710,18 +140834,6 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
-        
-          OutputPath
-          
-            Destination path for the document.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           PassThru
           
@@ -139746,36 +140858,12 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
-        
-          PdfAllowSystemFontEmbedding
-          
-            Allow the native Word PDF converter to embed installed system fonts used by the document.
-          
-          SwitchParameter
-          
-            SwitchParameter
-            
-          
-          None
-        
-        
-          PdfFontFamily
-          
-            Optional default font family used by the native Word PDF converter.
-          
-          String
-          
-            String
-            
-          
-          None
-        
-        
-          PdfPath
+        
+          Path
           
-            Optional PDF path to create from the same Word document before closing it.
+            Destination path for the document.
           
-          String
+          String
           
             String
             
@@ -139797,18 +140885,6 @@ Use -NoSave or omit -Path when a document object should be returned for further
       
     
     
-      
-        AutoSave
-        
-          Enable OfficeIMO AutoSave mode.
-        
-        SwitchParameter
-        
-          SwitchParameter
-          
-        
-        None
-      
       
         Content
         
@@ -139845,18 +140921,6 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
-      
-        OutputPath
-        
-          Destination path for the document.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         PassThru
         
@@ -139881,36 +140945,12 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
-      
-        PdfAllowSystemFontEmbedding
-        
-          Allow the native Word PDF converter to embed installed system fonts used by the document.
-        
-        SwitchParameter
-        
-          SwitchParameter
-          
-        
-        None
-      
-      
-        PdfFontFamily
-        
-          Optional default font family used by the native Word PDF converter.
-        
-        String
-        
-          String
-          
-        
-        None
-      
-      
-        PdfPath
+      
+        Path
         
-          Optional PDF path to create from the same Word document before closing it.
+          Destination path for the document.
         
-        String
+        String
         
           String
           
@@ -141188,18 +142228,6 @@ Use -NoSave or omit -Path when a document object should be returned for further
       
       
         Protect-OfficeExcelWorkbook
-        
-          InputPath
-          
-            Workbook path to update.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           LegacyPasswordHash
           
@@ -141248,6 +142276,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
+        
+          Path
+          
+            Workbook path to update.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           ProtectWindows
           
@@ -141350,18 +142390,6 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
-      
-        InputPath
-        
-          Workbook path to update.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         LegacyPasswordHash
         
@@ -141410,6 +142438,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
+      
+        Path
+        
+          Workbook path to update.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         ProtectWindows
         
@@ -142133,6 +143173,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
+        
+          PassThru
+          
+            Return the completed delete plan after a live operation.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           PlanOnly
           
@@ -142196,6 +143248,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
+      
+        PassThru
+        
+          Return the completed delete plan after a live operation.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         PlanOnly
         
@@ -142877,6 +143941,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           PassThruReport
           
@@ -142988,6 +144064,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         PassThruReport
         
@@ -143123,6 +144211,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Password
           
@@ -143186,6 +144286,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Password
         
@@ -143275,6 +144387,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Presentation
           
@@ -143302,6 +144426,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Presentation
         
@@ -143334,7 +144470,7 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
           PS> 
         
-        $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointRemoveSlide.pptx
+        $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRemoveSlide.pptx
             Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null
             Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null
             Remove-OfficePowerPointSlide -Presentation $ppt -Index 0 -Confirm:$false
@@ -143956,7 +145092,7 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
           PS> 
         
-        $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointRenameSection.pptx
+        $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRenameSection.pptx
             Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null
             Add-OfficePowerPointSection -Presentation $ppt -Name 'Results' -StartSlideIndex 0 | Out-Null
             Rename-OfficePowerPointSection -Presentation $ppt -Name 'Results' -NewName 'Deep Dive' -PassThru
@@ -143982,18 +145118,6 @@ Use -NoSave or omit -Path when a document object should be returned for further
     
       
         Repair-OfficeExcelWorkbook
-        
-          InputPath
-          
-            Workbook path to repair.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           NoSave
           
@@ -144018,6 +145142,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
+        
+          Path
+          
+            Workbook path to repair.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           SkipCalculation
           
@@ -144216,18 +145352,6 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
-      
-        InputPath
-        
-          Workbook path to repair.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         NoSave
         
@@ -144252,6 +145376,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
+      
+        Path
+        
+          Workbook path to repair.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         SkipCalculation
         
@@ -144802,6 +145938,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Path
           
@@ -144862,6 +146010,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Path
         
@@ -144944,6 +146104,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Path
           
@@ -144983,6 +146155,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Path
         
@@ -145131,10 +146315,10 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
-        
-          PassThru
+        
+          Open
           
-            Emit the workbook for further processing.
+            Open the workbook after saving.
           
           SwitchParameter
           
@@ -145144,21 +146328,21 @@ Use -NoSave or omit -Path when a document object should be returned for further
           None
         
         
-          Password
+          PassThru
           
-            Password used to save the workbook as an encrypted package.
+            Emit the workbook for further processing.
           
-          String
+          SwitchParameter
           
-            String
+            SwitchParameter
             
           
           None
         
         
-          Path
+          Password
           
-            Optional save-as path.
+            Password used to save the workbook as an encrypted package.
           
           String
           
@@ -145168,9 +146352,9 @@ Use -NoSave or omit -Path when a document object should be returned for further
           None
         
         
-          PdfPath
+          Path
           
-            Optional PDF path to create from the same workbook.
+            Optional save-as path.
           
           String
           
@@ -145203,18 +146387,6 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
-        
-          Show
-          
-            Open the workbook after saving.
-          
-          SwitchParameter
-          
-            SwitchParameter
-            
-          
-          None
-        
         
           ValidateOpenXml
           
@@ -145320,6 +146492,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
+      
+        Open
+        
+          Open the workbook after saving.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         PassThru
         
@@ -145356,18 +146540,6 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
-      
-        PdfPath
-        
-          Optional PDF path to create from the same workbook.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         SafePreflight
         
@@ -145392,18 +146564,6 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
-      
-        Show
-        
-          Open the workbook after saving.
-        
-        SwitchParameter
-        
-          SwitchParameter
-          
-        
-        None
-      
       
         ValidateOpenXml
         
@@ -145601,11 +146761,11 @@ Use -NoSave or omit -Path when a document object should be returned for further
       Save
       OfficeMarkdown
       
-        Saves a Markdown document and optionally creates a PDF sidecar.
+        Saves a Markdown document without changing its lifetime.
       
     
     
-      Saves a Markdown document and optionally creates a PDF sidecar.
+      Saves a Markdown document without changing its lifetime.
     
     
       
@@ -145651,18 +146811,6 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
-        
-          MarkdownPdfOptions
-          
-            Advanced Markdown PDF options. Friendly PDF parameters override matching values.
-          
-          MarkdownPdfSaveOptions
-          
-            MarkdownPdfSaveOptions
-            
-          
-          None
-        
         
           PassThru
           
@@ -145675,301 +146823,12 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
-        
+        
           Path
           
             Destination Markdown path.
           
-          String
-          
-            String
-            
-          
-          None
-        
-        
-          PdfApplyWordLikeTheme
-          
-            Apply the built-in Word-like Markdown PDF baseline theme.
-          
-          Boolean
-          
-            Boolean
-            
-          
-          None
-        
-        
-          PdfAuthor
-          
-            PDF author metadata.
-          
-          String
-          
-            String
-            
-          
-          None
-        
-        
-          PdfBaseDirectory
-          
-            Base directory used to resolve local Markdown images during PDF export.
-          
-          String
-          
-            String
-            
-          
-          None
-        
-        
-          PdfConversionReportVariable
-          
-            Variable name that receives the Markdown PDF conversion report.
-          
-          String
-          
-            String
-            
-          
-          None
-        
-        
-          PdfCreateOutlineFromHeadings
-          
-            Create PDF outlines from Markdown headings.
-          
-          Boolean
-          
-            Boolean
-            
-          
-          None
-        
-        
-          PdfDefaultImageHeight
-          
-            Fallback PDF image height in points.
-          
-          Double
-          
-            Double
-            
-          
-          None
-        
-        
-          PdfDefaultImageWidth
-          
-            Fallback PDF image width in points.
-          
-          Double
-          
-            Double
-            
-          
-          None
-        
-        
-          PdfFontFamily
-          
-            Default font family used by Markdown PDF export.
-          
-          String
-          
-            String
-            
-          
-          None
-        
-        
-          PdfFrontMatterRenderMode
-          
-            Controls how YAML front matter appears in the PDF body.
-          
-          MarkdownPdfFrontMatterRenderMode
-          
-            Hidden
-            DocumentHeader
-            Table
-          
-          
-            MarkdownPdfFrontMatterRenderMode
-            
-          
-          None
-        
-        
-          PdfIncludeDataUriImages
-          
-            Embed supported data URI images in Markdown PDF output.
-          
-          Boolean
-          
-            Boolean
-            
-          
-          None
-        
-        
-          PdfIncludeLocalImages
-          
-            Embed supported local image files in Markdown PDF output.
-          
-          Boolean
-          
-            Boolean
-            
-          
-          None
-        
-        
-          PdfKeywords
-          
-            PDF keywords metadata.
-          
-          String
-          
-            String
-            
-          
-          None
-        
-        
-          PdfMaximumDataUriImageBytes
-          
-            Maximum decoded bytes for one data URI image in Markdown PDF output.
-          
-          Int32
-          
-            Int32
-            
-          
-          None
-        
-        
-          PdfOptions
-          
-            Underlying OfficeIMO.Pdf options used by Markdown PDF export.
-          
-          PdfOptions
-          
-            PdfOptions
-            
-          
-          None
-        
-        
-          PdfPath
-          
-            Optional PDF path to create from the same Markdown document.
-          
-          String
-          
-            String
-            
-          
-          None
-        
-        
-          PdfRestrictLocalImagesToBaseDirectory
-          
-            Require local images to resolve under the base directory.
-          
-          Boolean
-          
-            Boolean
-            
-          
-          None
-        
-        
-          PdfSubject
-          
-            PDF subject metadata.
-          
-          String
-          
-            String
-            
-          
-          None
-        
-        
-          PdfTheme
-          
-            Built-in Markdown PDF visual theme.
-          
-          OfficeVisualThemeKind
-          
-            Plain
-            WordLike
-            TechnicalDocument
-            GitHubLike
-            Compact
-            Report
-          
-          
-            OfficeVisualThemeKind
-            
-          
-          None
-        
-        
-          PdfTitle
-          
-            PDF title metadata.
-          
-          String
-          
-            String
-            
-          
-          None
-        
-        
-          PdfUseFirstHeadingAsTitle
-          
-            Use the first Markdown heading as the PDF title when no title is supplied.
-          
-          Boolean
-          
-            Boolean
-            
-          
-          None
-        
-        
-          PdfUseFrontMatterMetadata
-          
-            Use front matter values as PDF metadata.
-          
-          Boolean
-          
-            Boolean
-            
-          
-          None
-        
-        
-          PdfUseFrontMatterVisualTheme
-          
-            Use front matter values to select a visual theme.
-          
-          Boolean
-          
-            Boolean
-            
-          
-          None
-        
-        
-          PdfWarningVariable
-          
-            Variable name that receives Markdown PDF export warnings.
-          
-          String
+          String
           
             String
             
@@ -146061,18 +146920,6 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
-      
-        MarkdownPdfOptions
-        
-          Advanced Markdown PDF options. Friendly PDF parameters override matching values.
-        
-        MarkdownPdfSaveOptions
-        
-          MarkdownPdfSaveOptions
-          
-        
-        None
-      
       
         PassThru
         
@@ -146085,301 +146932,12 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
-      
+      
         Path
         
           Destination Markdown path.
         
-        String
-        
-          String
-          
-        
-        None
-      
-      
-        PdfApplyWordLikeTheme
-        
-          Apply the built-in Word-like Markdown PDF baseline theme.
-        
-        Boolean
-        
-          Boolean
-          
-        
-        None
-      
-      
-        PdfAuthor
-        
-          PDF author metadata.
-        
-        String
-        
-          String
-          
-        
-        None
-      
-      
-        PdfBaseDirectory
-        
-          Base directory used to resolve local Markdown images during PDF export.
-        
-        String
-        
-          String
-          
-        
-        None
-      
-      
-        PdfConversionReportVariable
-        
-          Variable name that receives the Markdown PDF conversion report.
-        
-        String
-        
-          String
-          
-        
-        None
-      
-      
-        PdfCreateOutlineFromHeadings
-        
-          Create PDF outlines from Markdown headings.
-        
-        Boolean
-        
-          Boolean
-          
-        
-        None
-      
-      
-        PdfDefaultImageHeight
-        
-          Fallback PDF image height in points.
-        
-        Double
-        
-          Double
-          
-        
-        None
-      
-      
-        PdfDefaultImageWidth
-        
-          Fallback PDF image width in points.
-        
-        Double
-        
-          Double
-          
-        
-        None
-      
-      
-        PdfFontFamily
-        
-          Default font family used by Markdown PDF export.
-        
-        String
-        
-          String
-          
-        
-        None
-      
-      
-        PdfFrontMatterRenderMode
-        
-          Controls how YAML front matter appears in the PDF body.
-        
-        MarkdownPdfFrontMatterRenderMode
-        
-          Hidden
-          DocumentHeader
-          Table
-        
-        
-          MarkdownPdfFrontMatterRenderMode
-          
-        
-        None
-      
-      
-        PdfIncludeDataUriImages
-        
-          Embed supported data URI images in Markdown PDF output.
-        
-        Boolean
-        
-          Boolean
-          
-        
-        None
-      
-      
-        PdfIncludeLocalImages
-        
-          Embed supported local image files in Markdown PDF output.
-        
-        Boolean
-        
-          Boolean
-          
-        
-        None
-      
-      
-        PdfKeywords
-        
-          PDF keywords metadata.
-        
-        String
-        
-          String
-          
-        
-        None
-      
-      
-        PdfMaximumDataUriImageBytes
-        
-          Maximum decoded bytes for one data URI image in Markdown PDF output.
-        
-        Int32
-        
-          Int32
-          
-        
-        None
-      
-      
-        PdfOptions
-        
-          Underlying OfficeIMO.Pdf options used by Markdown PDF export.
-        
-        PdfOptions
-        
-          PdfOptions
-          
-        
-        None
-      
-      
-        PdfPath
-        
-          Optional PDF path to create from the same Markdown document.
-        
-        String
-        
-          String
-          
-        
-        None
-      
-      
-        PdfRestrictLocalImagesToBaseDirectory
-        
-          Require local images to resolve under the base directory.
-        
-        Boolean
-        
-          Boolean
-          
-        
-        None
-      
-      
-        PdfSubject
-        
-          PDF subject metadata.
-        
-        String
-        
-          String
-          
-        
-        None
-      
-      
-        PdfTheme
-        
-          Built-in Markdown PDF visual theme.
-        
-        OfficeVisualThemeKind
-        
-          Plain
-          WordLike
-          TechnicalDocument
-          GitHubLike
-          Compact
-          Report
-        
-        
-          OfficeVisualThemeKind
-          
-        
-        None
-      
-      
-        PdfTitle
-        
-          PDF title metadata.
-        
-        String
-        
-          String
-          
-        
-        None
-      
-      
-        PdfUseFirstHeadingAsTitle
-        
-          Use the first Markdown heading as the PDF title when no title is supplied.
-        
-        Boolean
-        
-          Boolean
-          
-        
-        None
-      
-      
-        PdfUseFrontMatterMetadata
-        
-          Use front matter values as PDF metadata.
-        
-        Boolean
-        
-          Boolean
-          
-        
-        None
-      
-      
-        PdfUseFrontMatterVisualTheme
-        
-          Use front matter values to select a visual theme.
-        
-        Boolean
-        
-          Boolean
-          
-        
-        None
-      
-      
-        PdfWarningVariable
-        
-          Variable name that receives Markdown PDF export warnings.
-        
-        String
+        String
         
           String
           
@@ -146441,11 +146999,6 @@ Use -NoSave or omit -Path when a document object should be returned for further
           OfficeIMO.Markdown.MarkdownDoc
         
       
-      
-        
-          System.IO.FileInfo
-        
-      
     
     
       
@@ -146454,13 +147007,13 @@ Use -NoSave or omit -Path when a document object should be returned for further
     
     
       
-        Save Markdown and PDF outputs.
+        Save a Markdown document.
         
           PS> 
         
-        $doc | Save-OfficeMarkdown -Path .\Report.md -PdfPath .\Report.pdf
+        $doc | Save-OfficeMarkdown -Path .\Report.md
         
-          Writes both artifacts from the same Markdown document model.
+          Writes the Markdown artifact and keeps the document available for further changes.
         
       
     
@@ -146517,6 +147070,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
           
           None
         
+        
+          PassThru
+          
+            Emit the save result, including preservation diagnostics.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Path
           
@@ -146568,6 +147133,18 @@ Use -NoSave or omit -Path when a document object should be returned for further
         
         None
       
+      
+        PassThru
+        
+          Emit the save result, including preservation diagnostics.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Path
         
@@ -146639,6 +147216,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          Open
+          
+            Open the PDF after saving.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           OwnerPassword
           
@@ -146654,7 +147243,7 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
           PassThru
           
-            Emit the document instead of the saved file.
+            Emit the document for further processing.
           
           SwitchParameter
           
@@ -146699,18 +147288,6 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
-        
-          Show
-          
-            Open the PDF after saving.
-          
-          SwitchParameter
-          
-            SwitchParameter
-            
-          
-          None
-        
       
     
     
@@ -146726,6 +147303,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
+      
+        Open
+        
+          Open the PDF after saving.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         OwnerPassword
         
@@ -146741,7 +147330,7 @@ The document is saved through the normal OfficeIMO.Pdf save path.
       
         PassThru
         
-          Emit the document instead of the saved file.
+          Emit the document for further processing.
         
         SwitchParameter
         
@@ -146786,18 +147375,6 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
-      
-        Show
-        
-          Open the PDF after saving.
-        
-        SwitchParameter
-        
-          SwitchParameter
-          
-        
-        None
-      
     
     
       
@@ -146812,11 +147389,6 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           OfficeIMO.Pdf.PdfDocument
         
       
-      
-        
-          System.IO.FileInfo
-        
-      
     
     
       
@@ -146853,6 +147425,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
     
       
         Save-OfficePowerPoint
+        
+          Open
+          
+            Launch the saved file in the default viewer.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           PassThru
           
@@ -146889,18 +147473,6 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
-        
-          PdfPath
-          
-            Optional PDF path to create from the same presentation.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           Presentation
           
@@ -146913,21 +147485,21 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
-        
-          Show
-          
-            Launch the saved file in the default viewer.
-          
-          SwitchParameter
-          
-            SwitchParameter
-            
-          
-          None
-        
       
     
     
+      
+        Open
+        
+          Launch the saved file in the default viewer.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         PassThru
         
@@ -146964,18 +147536,6 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
-      
-        PdfPath
-        
-          Optional PDF path to create from the same presentation.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         Presentation
         
@@ -146988,18 +147548,6 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
-      
-        Show
-        
-          Launch the saved file in the default viewer.
-        
-        SwitchParameter
-        
-          SwitchParameter
-          
-        
-        None
-      
     
     
       
@@ -147026,12 +147574,12 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
           PS> 
         
-        $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointSave.pptx
+        $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSave.pptx
             $slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1
             Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Saved later'
-            Save-OfficePowerPoint -Presentation $ppt -PdfPath .\Examples\Documents\PowerPointSave.pdf
+            Save-OfficePowerPoint -Presentation $ppt
         
-          Saves the current presentation and exports a PDF sidecar.
+          Saves the current presentation without closing it.
         
       
     
@@ -147064,10 +147612,10 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
-        
-          PassThru
+        
+          Open
           
-            Emit the document object instead of the saved file.
+            Open the document after saving.
           
           SwitchParameter
           
@@ -147076,26 +147624,26 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
-        
-          Path
+        
+          PassThru
           
-            Optional save-as path.
+            Emit the document object for further processing.
           
-          String
+          SwitchParameter
           
-            String
+            SwitchParameter
             
           
           None
         
-        
-          Show
+        
+          Path
           
-            Open the document after saving.
+            Optional save-as path.
           
-          SwitchParameter
+          String
           
-            SwitchParameter
+            String
             
           
           None
@@ -147115,10 +147663,10 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
-      
-        PassThru
+      
+        Open
         
-          Emit the document object instead of the saved file.
+          Open the document after saving.
         
         SwitchParameter
         
@@ -147127,26 +147675,26 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
-      
-        Path
+      
+        PassThru
         
-          Optional save-as path.
+          Emit the document object for further processing.
         
-        String
+        SwitchParameter
         
-          String
+          SwitchParameter
           
         
         None
       
-      
-        Show
+      
+        Path
         
-          Open the document after saving.
+          Optional save-as path.
         
-        SwitchParameter
+        String
         
-          SwitchParameter
+          String
           
         
         None
@@ -147165,11 +147713,6 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           OfficeIMO.Visio.VisioDocument
         
       
-      
-        
-          System.IO.FileInfo
-        
-      
     
     
       
@@ -147218,10 +147761,10 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
-        
-          PassThru
+        
+          Open
           
-            Emit the document object for further processing.
+            Open the document after saving.
           
           SwitchParameter
           
@@ -147231,33 +147774,9 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           None
         
         
-          Password
-          
-            Password used to save the document as an encrypted package.
-          
-          String
-          
-            String
-            
-          
-          None
-        
-        
-          Path
-          
-            Optional save-as path.
-          
-          String
-          
-            String
-            
-          
-          None
-        
-        
-          PdfAllowSystemFontEmbedding
+          PassThru
           
-            Allow the native Word PDF converter to embed installed system fonts used by the document.
+            Emit the document object for further processing.
           
           SwitchParameter
           
@@ -147267,9 +147786,9 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           None
         
         
-          PdfFontFamily
+          Password
           
-            Optional default font family used by the native Word PDF converter.
+            Password used to save the document as an encrypted package.
           
           String
           
@@ -147278,10 +147797,10 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
-        
-          PdfPath
+        
+          Path
           
-            Optional PDF path to create from the same Word document.
+            Optional save-as path.
           
           String
           
@@ -147290,18 +147809,6 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
-        
-          Show
-          
-            Open the document after saving.
-          
-          SwitchParameter
-          
-            SwitchParameter
-            
-          
-          None
-        
       
     
     
@@ -147317,10 +147824,10 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
-      
-        PassThru
+      
+        Open
         
-          Emit the document object for further processing.
+          Open the document after saving.
         
         SwitchParameter
         
@@ -147330,33 +147837,9 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         None
       
       
-        Password
-        
-          Password used to save the document as an encrypted package.
-        
-        String
-        
-          String
-          
-        
-        None
-      
-      
-        Path
-        
-          Optional save-as path.
-        
-        String
-        
-          String
-          
-        
-        None
-      
-      
-        PdfAllowSystemFontEmbedding
+        PassThru
         
-          Allow the native Word PDF converter to embed installed system fonts used by the document.
+          Emit the document object for further processing.
         
         SwitchParameter
         
@@ -147366,9 +147849,9 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         None
       
       
-        PdfFontFamily
+        Password
         
-          Optional default font family used by the native Word PDF converter.
+          Password used to save the document as an encrypted package.
         
         String
         
@@ -147377,10 +147860,10 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
-      
-        PdfPath
+      
+        Path
         
-          Optional PDF path to create from the same Word document.
+          Optional save-as path.
         
         String
         
@@ -147389,18 +147872,6 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
-      
-        Show
-        
-          Open the document after saving.
-        
-        SwitchParameter
-        
-          SwitchParameter
-          
-        
-        None
-      
     
     
       
@@ -148384,26 +148855,26 @@ The document is saved through the normal OfficeIMO.Pdf save path.
       
       
         Set-OfficeExcelActiveSheet
-        
-          InputPath
+        
+          PassThru
           
-            Workbook path to update.
+            Emit the activated worksheet.
           
-          String
+          SwitchParameter
           
-            String
+            SwitchParameter
             
           
           None
         
-        
-          PassThru
+        
+          Path
           
-            Emit the activated worksheet.
+            Workbook path to update.
           
-          SwitchParameter
+          String
           
-            SwitchParameter
+            String
             
           
           None
@@ -148498,26 +148969,26 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
-      
-        InputPath
+      
+        PassThru
         
-          Workbook path to update.
+          Emit the activated worksheet.
         
-        String
+        SwitchParameter
         
-          String
+          SwitchParameter
           
         
         None
       
-      
-        PassThru
+      
+        Path
         
-          Emit the activated worksheet.
+          Workbook path to update.
         
-        SwitchParameter
+        String
         
-          SwitchParameter
+          String
           
         
         None
@@ -149287,6 +149758,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Row
           
@@ -149446,6 +149929,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Sheet
           
@@ -149605,6 +150100,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Row
         
@@ -149842,6 +150349,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           ShowCategoryMajorGridlines
           
@@ -150113,6 +150632,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         ShowCategoryMajorGridlines
         
@@ -150461,6 +150992,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Position
           
@@ -150703,6 +151246,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Position
         
@@ -150943,6 +151498,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Position
           
@@ -151061,6 +151628,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Position
         
@@ -151177,6 +151756,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           PointIndex
           
@@ -151264,6 +151855,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           PointIndex
           
@@ -151351,6 +151954,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         PointIndex
         
@@ -151544,137 +152159,161 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
-        
-          SeriesIndex
-          
-            Zero-based series index.
-          
-          Int32
-          
-            Int32
-            
-          
-          None
-        
-      
-      
-        Set-OfficeExcelChartSeries
-        
-          Chart
-          
-            Chart to update.
-          
-          ExcelChart
-          
-            ExcelChart
-            
-          
-          None
-        
-        
-          FillColor
-          
-            Series fill color in hex format.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
-          IgnoreCase
-          
-            Ignore case when matching series name.
-          
-          Boolean
-          
-            Boolean
-            
-          
-          None
-        
-        
-          LineColor
-          
-            Series line color in hex format.
-          
-          String
-          
-            String
-            
-          
-          None
-        
-        
-          LineWidthPoints
-          
-            Series line width in points.
-          
-          Double
-          
-            Double
-            
-          
-          None
-        
-        
-          MarkerFillColor
-          
-            Marker fill color in hex format.
-          
-          String
-          
-            String
-            
-          
-          None
-        
-        
-          MarkerLineColor
-          
-            Marker line color in hex format.
-          
-          String
-          
-            String
-            
-          
-          None
-        
-        
-          MarkerLineWidthPoints
-          
-            Marker line width in points.
-          
-          Double
-          
-            Double
-            
-          
-          None
-        
-        
-          MarkerSize
-          
-            Marker size.
-          
-          Int32
-          
-            Int32
-            
-          
-          None
-        
-        
-          MarkerStyle
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
+        
+          SeriesIndex
+          
+            Zero-based series index.
+          
+          Int32
+          
+            Int32
+            
+          
+          None
+        
+      
+      
+        Set-OfficeExcelChartSeries
+        
+          Chart
+          
+            Chart to update.
+          
+          ExcelChart
+          
+            ExcelChart
+            
+          
+          None
+        
+        
+          FillColor
+          
+            Series fill color in hex format.
+          
+          String
+          
+            String
+            
+          
+          None
+        
+        
+          IgnoreCase
+          
+            Ignore case when matching series name.
+          
+          Boolean
+          
+            Boolean
+            
+          
+          None
+        
+        
+          LineColor
+          
+            Series line color in hex format.
+          
+          String
+          
+            String
+            
+          
+          None
+        
+        
+          LineWidthPoints
+          
+            Series line width in points.
+          
+          Double
+          
+            Double
+            
+          
+          None
+        
+        
+          MarkerFillColor
+          
+            Marker fill color in hex format.
+          
+          String
+          
+            String
+            
+          
+          None
+        
+        
+          MarkerLineColor
+          
+            Marker line color in hex format.
+          
+          String
+          
+            String
+            
+          
+          None
+        
+        
+          MarkerLineWidthPoints
+          
+            Marker line width in points.
+          
+          Double
+          
+            Double
+            
+          
+          None
+        
+        
+          MarkerSize
+          
+            Marker size.
+          
+          Int32
+          
+            Int32
+            
+          
+          None
+        
+        
+          MarkerStyle
+          
+            Marker style name.
+          
+          String
+          
+            String
+            
+          
+          None
+        
+        
+          PassThru
           
-            Marker style name.
+            Emit the object created or changed by the command.
           
-          String
+          SwitchParameter
           
-            String
+            SwitchParameter
             
           
           None
@@ -151814,6 +152453,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         SeriesIndex
         
@@ -151911,6 +152562,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           StyleId
           
@@ -151950,6 +152613,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         StyleId
         
@@ -152119,6 +152794,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Period
           
@@ -152278,6 +152965,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Period
           
@@ -152437,6 +153136,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Period
         
@@ -152582,6 +153293,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           StartRow
           
@@ -152669,6 +153392,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         StartRow
         
@@ -152832,6 +153567,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           StartColumn
           
@@ -152955,6 +153702,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         StartColumn
         
@@ -153219,6 +153978,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Pattern
           
@@ -153467,6 +154238,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Pattern
           
@@ -153739,6 +154522,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Pattern
         
@@ -154088,26 +154883,26 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
-        
-          InputPath
+        
+          PassThru
           
-            Workbook path to update.
+            Returns matching validation rules after updating them.
           
-          String
+          SwitchParameter
           
-            String
+            SwitchParameter
             
           
           None
         
-        
-          PassThru
+        
+          Path
           
-            Returns matching validation rules after updating them.
+            Workbook path to update.
           
-          SwitchParameter
+          String
           
-            SwitchParameter
+            String
             
           
           None
@@ -154466,26 +155261,26 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
-      
-        InputPath
+      
+        PassThru
         
-          Workbook path to update.
+          Returns matching validation rules after updating them.
         
-        String
+        SwitchParameter
         
-          String
+          SwitchParameter
           
         
         None
       
-      
-        PassThru
+      
+        Path
         
-          Returns matching validation rules after updating them.
+          Workbook path to update.
         
-        SwitchParameter
+        String
         
-          SwitchParameter
+          String
           
         
         None
@@ -155336,6 +156131,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Row
           
@@ -155375,6 +156182,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
       
     
     
@@ -155414,6 +156233,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Row
         
@@ -155481,6 +156312,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           TopRows
           
@@ -155520,6 +156363,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Sheet
           
@@ -155583,6 +156438,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Sheet
         
@@ -160259,26 +161126,26 @@ The document is saved through the normal OfficeIMO.Pdf save path.
       
       
         Set-OfficeExcelPrintArea
-        
-          InputPath
+        
+          PassThru
           
-            Workbook path to update.
+            Emit the worksheet after setting the print area.
           
-          String
+          SwitchParameter
           
-            String
+            SwitchParameter
             
           
           None
         
-        
-          PassThru
+        
+          Path
           
-            Emit the worksheet after setting the print area.
+            Workbook path to update.
           
-          SwitchParameter
+          String
           
-            SwitchParameter
+            String
             
           
           None
@@ -160397,26 +161264,26 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
-      
-        InputPath
+      
+        PassThru
         
-          Workbook path to update.
+          Emit the worksheet after setting the print area.
         
-        String
+        SwitchParameter
         
-          String
+          SwitchParameter
           
         
         None
       
-      
-        PassThru
+      
+        Path
         
-          Emit the worksheet after setting the print area.
+          Workbook path to update.
         
-        SwitchParameter
+        String
         
-          SwitchParameter
+          String
           
         
         None
@@ -160743,18 +161610,6 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
-        
-          InputPath
-          
-            Workbook path to update.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           Margins
           
@@ -160829,6 +161684,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          Path
+          
+            Workbook path to update.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           Preset
           
@@ -161209,18 +162076,6 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
-      
-        InputPath
-        
-          Workbook path to update.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         Margins
         
@@ -161295,6 +162150,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
+      
+        Path
+        
+          Workbook path to update.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         Preset
         
@@ -161598,18 +162465,6 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
-        
-          InputPath
-          
-            Workbook path to update.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           LastColumn
           
@@ -161646,6 +162501,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          Path
+          
+            Workbook path to update.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           Sheet
           
@@ -161832,18 +162699,6 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
-      
-        InputPath
-        
-          Workbook path to update.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         LastColumn
         
@@ -161880,6 +162735,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
+      
+        Path
+        
+          Workbook path to update.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         Sheet
         
@@ -162051,18 +162918,6 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
-        
-          InputPath
-          
-            Workbook path to update.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           NoSavePivotSourceData
           
@@ -162087,6 +162942,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          Path
+          
+            Workbook path to update.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           PivotTables
           
@@ -162237,18 +163104,6 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
-      
-        InputPath
-        
-          Workbook path to update.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         NoSavePivotSourceData
         
@@ -162273,6 +163128,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
+      
+        Path
+        
+          Workbook path to update.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         PivotTables
         
@@ -162459,26 +163326,26 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
-        
-          InputPath
+        
+          PassThru
           
-            Workbook path to update.
+            Emit written rich text runs.
           
-          String
+          SwitchParameter
           
-            String
+            SwitchParameter
             
           
           None
         
-        
-          PassThru
+        
+          Path
           
-            Emit written rich text runs.
+            Workbook path to update.
           
-          SwitchParameter
+          String
           
-            SwitchParameter
+            String
             
           
           None
@@ -162669,26 +163536,26 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
-      
-        InputPath
+      
+        PassThru
         
-          Workbook path to update.
+          Emit written rich text runs.
         
-        String
+        SwitchParameter
         
-          String
+          SwitchParameter
           
         
         None
       
-      
-        PassThru
+      
+        Path
         
-          Emit written rich text runs.
+          Workbook path to update.
         
-        SwitchParameter
+        String
         
-          SwitchParameter
+          String
           
         
         None
@@ -162906,6 +163773,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Row
           
@@ -163089,6 +163968,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Row
         
@@ -163264,6 +164155,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           StartRow
           
@@ -163363,6 +164266,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         StartRow
         
@@ -164336,18 +165251,6 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
-        
-          InputPath
-          
-            Workbook path to update.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           Name
           
@@ -164372,6 +165275,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          Path
+          
+            Workbook path to update.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           Xml
           
@@ -164498,18 +165413,6 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
-      
-        InputPath
-        
-          Workbook path to update.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         Name
         
@@ -164534,6 +165437,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
+      
+        Path
+        
+          Workbook path to update.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         Xml
         
@@ -166468,6 +167383,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           PassThruReport
           
@@ -166615,6 +167542,18 @@ The document is saved through the normal OfficeIMO.Pdf save path.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         PassThruReport
         
@@ -168279,6 +169218,18 @@ default, first-page, and even-page text, zones, images, shapes, rich text, and p
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Password
           
@@ -168402,6 +169353,18 @@ default, first-page, and even-page text, zones, images, shapes, rich text, and p
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Password
         
@@ -169363,6 +170326,18 @@ With -Path and -OutputPath, it rewrites an existing PDF with updated metadata un
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Password
           
@@ -169588,6 +170563,18 @@ With -Path and -OutputPath, it rewrites an existing PDF with updated metadata un
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Password
         
@@ -170570,6 +171557,18 @@ With -Path and -OutputPath, it rewrites an existing PDF with updated metadata un
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           PassThruReport
           
@@ -170645,6 +171644,18 @@ With -Path and -OutputPath, it rewrites an existing PDF with updated metadata un
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         PassThruReport
         
@@ -170934,6 +171945,18 @@ Apply a theme near the start of a New-OfficePdf script block so later content in
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Slide
           
@@ -170961,6 +171984,18 @@ Apply a theme near the start of a New-OfficePdf script block so later content in
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Slide
           
@@ -170988,6 +172023,18 @@ Apply a theme near the start of a New-OfficePdf script block so later content in
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Slide
           
@@ -171039,6 +172086,18 @@ Apply a theme near the start of a New-OfficePdf script block so later content in
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Slide
         
@@ -172265,6 +173324,18 @@ Apply a theme near the start of a New-OfficePdf script block so later content in
     
       
         Set-OfficePowerPointNotes
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Slide
           
@@ -172292,6 +173363,18 @@ Apply a theme near the start of a New-OfficePdf script block so later content in
       
     
     
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Slide
         
@@ -173444,6 +174527,18 @@ contents, then save or close the presentation.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Slide
           
@@ -173495,6 +174590,18 @@ contents, then save or close the presentation.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Slide
           
@@ -173572,6 +174679,18 @@ contents, then save or close the presentation.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Slide
           
@@ -173685,6 +174804,18 @@ contents, then save or close the presentation.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Slide
         
@@ -173746,6 +174877,18 @@ contents, then save or close the presentation.
     
       
         Set-OfficePowerPointSlideSize
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Portrait
           
@@ -173802,6 +174945,18 @@ contents, then save or close the presentation.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Presentation
           
@@ -173841,6 +174996,18 @@ contents, then save or close the presentation.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Presentation
           
@@ -173880,6 +175047,18 @@ contents, then save or close the presentation.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Presentation
           
@@ -173919,6 +175098,18 @@ contents, then save or close the presentation.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Presentation
           
@@ -173994,6 +175185,18 @@ contents, then save or close the presentation.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Portrait
         
@@ -174122,7 +175325,7 @@ contents, then save or close the presentation.
         
           PS> 
         
-        $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointCustomSize.pptx
+        $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointCustomSize.pptx
             Set-OfficePowerPointSlideSize -Presentation $ppt -WidthCm 25.4 -HeightCm 14.0
             Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Custom size'
         
@@ -174147,6 +175350,18 @@ contents, then save or close the presentation.
     
       
         Set-OfficePowerPointSlideTitle
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Slide
           
@@ -174174,6 +175389,18 @@ contents, then save or close the presentation.
       
     
     
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Slide
         
@@ -174241,6 +175468,18 @@ contents, then save or close the presentation.
     
       
         Set-OfficePowerPointSlideTransition
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Slide
           
@@ -174336,6 +175575,18 @@ contents, then save or close the presentation.
       
     
     
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Slide
         
@@ -180403,8 +181654,8 @@ cell inside a deck that already exists.
     
       
         Test-OfficeExcelAccessibility
-        
-          InputPath
+        
+          Path
           
             Workbook path.
           
@@ -180469,8 +181720,8 @@ cell inside a deck that already exists.
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Workbook path.
         
@@ -180569,8 +181820,8 @@ cell inside a deck that already exists.
           
           None
         
-        
-          InputPath
+        
+          Path
           
             Workbook path.
           
@@ -180707,8 +181958,8 @@ cell inside a deck that already exists.
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Workbook path.
         
@@ -180808,8 +182059,8 @@ cell inside a deck that already exists.
     
       
         Test-OfficeExcelWorkbook
-        
-          InputPath
+        
+          Path
           
             Workbook path.
           
@@ -180922,8 +182173,8 @@ cell inside a deck that already exists.
         
         None
       
-      
-        InputPath
+      
+        Path
         
           Workbook path.
         
@@ -181437,26 +182688,26 @@ cell inside a deck that already exists.
       
       
         Unprotect-OfficeExcelWorkbook
-        
-          InputPath
+        
+          PassThru
           
-            Workbook path to update.
+            Emit the workbook after removing protection.
           
-          String
+          SwitchParameter
           
-            String
+            SwitchParameter
             
           
           None
         
-        
-          PassThru
+        
+          Path
           
-            Emit the workbook after removing protection.
+            Workbook path to update.
           
-          SwitchParameter
+          String
           
-            SwitchParameter
+            String
             
           
           None
@@ -181503,26 +182754,26 @@ cell inside a deck that already exists.
         
         None
       
-      
-        InputPath
+      
+        PassThru
         
-          Workbook path to update.
+          Emit the workbook after removing protection.
         
-        String
+        SwitchParameter
         
-          String
+          SwitchParameter
           
         
         None
       
-      
-        PassThru
+      
+        Path
         
-          Emit the workbook after removing protection.
+          Workbook path to update.
         
-        SwitchParameter
+        String
         
-          SwitchParameter
+          String
           
         
         None
@@ -181778,18 +183029,6 @@ cell inside a deck that already exists.
           
           None
         
-        
-          InputPath
-          
-            Workbook path to update.
-          
-          String
-          
-            String
-            
-          
-          None
-        
         
           MatchAuthor
           
@@ -181814,6 +183053,18 @@ cell inside a deck that already exists.
           
           None
         
+        
+          Path
+          
+            Workbook path to update.
+          
+          String
+          
+            String
+            
+          
+          None
+        
         
           Range
           
@@ -182108,18 +183359,6 @@ cell inside a deck that already exists.
         
         None
       
-      
-        InputPath
-        
-          Workbook path to update.
-        
-        String
-        
-          String
-          
-        
-        None
-      
       
         MatchAuthor
         
@@ -182144,6 +183383,18 @@ cell inside a deck that already exists.
         
         None
       
+      
+        Path
+        
+          Workbook path to update.
+        
+        String
+        
+          String
+          
+        
+        None
+      
       
         Range
         
@@ -182279,10 +183530,10 @@ cell inside a deck that already exists.
           
           None
         
-        
-          InputPath
+        
+          NewValue
           
-            Workbook path to update.
+            Replacement text.
           
           String
           
@@ -182292,9 +183543,9 @@ cell inside a deck that already exists.
           None
         
         
-          NewValue
+          OldValue
           
-            Replacement text.
+            Text or pattern to replace.
           
           String
           
@@ -182303,10 +183554,34 @@ cell inside a deck that already exists.
           
           None
         
-        
-          OldValue
+        
+          Open
           
-            Text or pattern to replace.
+            Open the file after saving when using -System.IO.Path.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
+        
+          Path
+          
+            Workbook path to update.
           
           String
           
@@ -182363,18 +183638,6 @@ cell inside a deck that already exists.
           
           None
         
-        
-          Show
-          
-            Open the file after saving when using -Path.
-          
-          SwitchParameter
-          
-            SwitchParameter
-            
-          
-          None
-        
       
       
         Update-OfficeExcelText
@@ -182426,6 +183689,18 @@ cell inside a deck that already exists.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Range
           
@@ -182501,10 +183776,10 @@ cell inside a deck that already exists.
         
         None
       
-      
-        InputPath
+      
+        NewValue
         
-          Workbook path to update.
+          Replacement text.
         
         String
         
@@ -182514,9 +183789,9 @@ cell inside a deck that already exists.
         None
       
       
-        NewValue
+        OldValue
         
-          Replacement text.
+          Text or pattern to replace.
         
         String
         
@@ -182525,10 +183800,34 @@ cell inside a deck that already exists.
         
         None
       
-      
-        OldValue
+      
+        Open
         
-          Text or pattern to replace.
+          Open the file after saving when using -System.IO.Path.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
+      
+        Path
+        
+          Workbook path to update.
         
         String
         
@@ -182585,18 +183884,6 @@ cell inside a deck that already exists.
         
         None
       
-      
-        Show
-        
-          Open the file after saving when using -Path.
-        
-        SwitchParameter
-        
-          SwitchParameter
-          
-        
-        None
-      
     
     
       
@@ -182698,6 +183985,18 @@ cell inside a deck that already exists.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
       
       
         Update-OfficePowerPointText
@@ -182749,6 +184048,18 @@ cell inside a deck that already exists.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Presentation
           
@@ -182812,6 +184123,18 @@ cell inside a deck that already exists.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
         
           Slide
           
@@ -182875,6 +184198,18 @@ cell inside a deck that already exists.
         
         None
       
+      
+        PassThru
+        
+          Emit the object created or changed by the command.
+        
+        SwitchParameter
+        
+          SwitchParameter
+          
+        
+        None
+      
       
         Presentation
         
@@ -182930,7 +184265,7 @@ cell inside a deck that already exists.
         
           PS> 
         
-        $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointUpdateText.pptx
+        $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointUpdateText.pptx
             $slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1
             Add-OfficePowerPointTextBox -Slide $slide -Text 'FY24 summary' | Out-Null
             Set-OfficePowerPointNotes -Slide $slide -Text 'Mention FY24 assumptions.' | Out-Null
@@ -183629,6 +184964,18 @@ cell inside a deck that already exists.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
       
       
         Update-OfficeWordText
@@ -183728,6 +185075,18 @@ cell inside a deck that already exists.
           
           None
         
+        
+          PassThru
+          
+            Emit the object created or changed by the command.
+          
+          SwitchParameter
+          
+            SwitchParameter
+            
+          
+          None
+        
       
       
         Update-OfficeWordText
@@ -183791,10 +185150,10 @@ cell inside a deck that already exists.
           
           None
         
-        
-          InputPath
+        
+          NewValue
           
-            Path to the .docx file to update in place.
+            Replacement text.
           
           String
           
@@ -183804,9 +185163,9 @@ cell inside a deck that already exists.
           None
         
         
-          NewValue
+          OldValue
           
-            Replacement text.
+            Text to find.
           
           String
           
@@ -183815,22 +185174,22 @@ cell inside a deck that already exists.
           
           None
         
-        
-          OldValue
+        
+          Open
           
-            Text to find.
+            Open the file after saving when using -Path.
           
-          String
+          SwitchParameter
           
-            String
+            SwitchParameter
             
           
           None
         
         
-          Show
+          PassThru
           
-            Open the file after saving when using -Path.
+            Emit the object created or changed by the command.
           
           SwitchParameter
           
@@ -183839,6 +185198,18 @@ cell inside a deck that already exists.
           
           None
         
+        
+          Path
+          
+            Path to the .docx file to update in place.
+          
+          String
+          
+            String
+            
+          
+          None
+        
       
     
     
@@ -183914,10 +185285,10 @@ cell inside a deck that already exists.
         
         None
       
-      
-        InputPath
+      
+        NewValue
         
-          Path to the .docx file to update in place.
+          Replacement text.
         
         String
         
@@ -183927,9 +185298,9 @@ cell inside a deck that already exists.
         None
       
       
-        NewValue
+        OldValue
         
-          Replacement text.
+          Text to find.
         
         String
         
@@ -183938,22 +185309,22 @@ cell inside a deck that already exists.
         
         None
       
-      
-        OldValue
+      
+        Open
         
-          Text to find.
+          Open the file after saving when using -Path.
         
-        String
+        SwitchParameter
         
-          String
+          SwitchParameter
           
         
         None
       
       
-        Show
+        PassThru
         
-          Open the file after saving when using -Path.
+          Emit the object created or changed by the command.
         
         SwitchParameter
         
@@ -183962,6 +185333,18 @@ cell inside a deck that already exists.
         
         None
       
+      
+        Path
+        
+          Path to the .docx file to update in place.
+        
+        String
+        
+          String
+          
+        
+        None
+      
     
     
       
diff --git a/Docs/Get-OfficeExcel.md b/Docs/Get-OfficeExcel.md
index b61078c9..8fed0f0a 100644
--- a/Docs/Get-OfficeExcel.md
+++ b/Docs/Get-OfficeExcel.md
@@ -11,7 +11,7 @@ Opens an existing Excel workbook.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeExcel [-InputPath]  [-ReadOnly] [-AutoSave] [-Password ] []
+Get-OfficeExcel [-Path]  [-ReadOnly] [-AutoSave] [-Password ] []
 ```
 
 ### Uri
@@ -65,33 +65,33 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Path to the workbook to load.
+### -Password
+Password used to open an encrypted workbook package.
 
 ```yaml
 Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
+Parameter Sets: Path, Uri
+Aliases: None
 Possible values:
 
-Required: True
-Position: 0
+Required: False
+Position: named
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Password
-Password used to open an encrypted workbook package.
+### -Path
+Path to the workbook to load.
 
 ```yaml
 Type: String
-Parameter Sets: Path, Uri
-Aliases: None
+Parameter Sets: Path
+Aliases: InputPath, FilePath
 Possible values:
 
-Required: False
-Position: named
+Required: True
+Position: 0
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
diff --git a/Docs/Get-OfficeExcelComment.md b/Docs/Get-OfficeExcelComment.md
index fbef1a06..f6989d73 100644
--- a/Docs/Get-OfficeExcelComment.md
+++ b/Docs/Get-OfficeExcelComment.md
@@ -16,7 +16,7 @@ Get-OfficeExcelComment [-Sheet ] [-SheetIndex ] [-Address  [-Sheet ] [-SheetIndex ] [-Address ] [-Range ] [-Author ] [-TextContains ] []
+Get-OfficeExcelComment [-Path]  [-Sheet ] [-SheetIndex ] [-Address ] [-Range ] [-Author ] [-TextContains ] []
 ```
 
 ### Document
@@ -88,13 +88,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Workbook path to inspect.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: Path, FilePath
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeExcelCommentAudit.md b/Docs/Get-OfficeExcelCommentAudit.md
index cf7a0eac..9ed2ae5d 100644
--- a/Docs/Get-OfficeExcelCommentAudit.md
+++ b/Docs/Get-OfficeExcelCommentAudit.md
@@ -11,7 +11,7 @@ Audits legacy notes and threaded comments preserved in an Excel workbook.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeExcelCommentAudit [-InputPath]  [-IncludeComments] []
+Get-OfficeExcelCommentAudit [-Path]  [-IncludeComments] []
 ```
 
 ### Document
@@ -67,13 +67,13 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Workbook path.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: Path, FilePath
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeExcelConditionalFormatting.md b/Docs/Get-OfficeExcelConditionalFormatting.md
index 4226c45f..9b92fe63 100644
--- a/Docs/Get-OfficeExcelConditionalFormatting.md
+++ b/Docs/Get-OfficeExcelConditionalFormatting.md
@@ -16,7 +16,7 @@ Get-OfficeExcelConditionalFormatting [-Sheet ] [-SheetIndex ] [-R
 
 ### Path
 ```powershell
-Get-OfficeExcelConditionalFormatting [-InputPath]  [-Sheet ] [-SheetIndex ] [-Range ] [-HeaderName ] [-TableName ] [-HeaderRow ] [-IncludeHeader] []
+Get-OfficeExcelConditionalFormatting [-Path]  [-Sheet ] [-SheetIndex ] [-Range ] [-HeaderName ] [-TableName ] [-HeaderRow ] [-IncludeHeader] []
 ```
 
 ### Document
@@ -103,13 +103,13 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Workbook path to inspect.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: Path, FilePath
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeExcelDataModel.md b/Docs/Get-OfficeExcelDataModel.md
index 868cc7be..7c8dd13f 100644
--- a/Docs/Get-OfficeExcelDataModel.md
+++ b/Docs/Get-OfficeExcelDataModel.md
@@ -11,7 +11,7 @@ Inspects workbook data model, query, connection, and external-link package parts
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeExcelDataModel [-InputPath]  []
+Get-OfficeExcelDataModel [-Path]  []
 ```
 
 ### Document
@@ -52,13 +52,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Workbook path.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: Path, FilePath
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeExcelDataValidation.md b/Docs/Get-OfficeExcelDataValidation.md
index 6a4616fe..0eabae6c 100644
--- a/Docs/Get-OfficeExcelDataValidation.md
+++ b/Docs/Get-OfficeExcelDataValidation.md
@@ -16,7 +16,7 @@ Get-OfficeExcelDataValidation [-Sheet ] [-SheetIndex ] [-Range  [-Sheet ] [-SheetIndex ] [-Range ] [-HeaderName ] [-TableName ] [-HeaderRow ] [-IncludeHeader] []
+Get-OfficeExcelDataValidation [-Path]  [-Sheet ] [-SheetIndex ] [-Range ] [-HeaderName ] [-TableName ] [-HeaderRow ] [-IncludeHeader] []
 ```
 
 ### Document
@@ -103,13 +103,13 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Workbook path to inspect.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: Path, FilePath
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeExcelDocumentProperty.md b/Docs/Get-OfficeExcelDocumentProperty.md
index c8d07bb7..ffbaba6c 100644
--- a/Docs/Get-OfficeExcelDocumentProperty.md
+++ b/Docs/Get-OfficeExcelDocumentProperty.md
@@ -11,7 +11,7 @@ Gets built-in and application document properties from an Excel workbook.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeExcelDocumentProperty [-InputPath]  [-Name ] [-BuiltIn] [-Application] [-Custom] []
+Get-OfficeExcelDocumentProperty [-Path]  [-Name ] [-BuiltIn] [-Application] [-Custom] []
 ```
 
 ### Document
@@ -99,22 +99,6 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Path to the workbook.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: FilePath, Path
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -Name
 Property name filter (wildcards supported).
 
@@ -131,6 +115,22 @@ Accept pipeline input: False
 Accept wildcard characters: True
 ```
 
+### -Path
+Path to the workbook.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### CommonParameters
 This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
 
diff --git a/Docs/Get-OfficeExcelFormulaAnalysis.md b/Docs/Get-OfficeExcelFormulaAnalysis.md
index aa247936..24286276 100644
--- a/Docs/Get-OfficeExcelFormulaAnalysis.md
+++ b/Docs/Get-OfficeExcelFormulaAnalysis.md
@@ -11,7 +11,7 @@ Gets workbook formula references, functions, volatile formulas, and external lin
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeExcelFormulaAnalysis [-InputPath]  [-IncludeFormulas] []
+Get-OfficeExcelFormulaAnalysis [-Path]  [-IncludeFormulas] []
 ```
 
 ### Document
@@ -68,13 +68,13 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Workbook path.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: Path, FilePath
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeExcelNamedRange.md b/Docs/Get-OfficeExcelNamedRange.md
index 9e2a4a9f..6100b672 100644
--- a/Docs/Get-OfficeExcelNamedRange.md
+++ b/Docs/Get-OfficeExcelNamedRange.md
@@ -11,7 +11,7 @@ Gets defined names (named ranges) from an Excel workbook.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeExcelNamedRange [-InputPath]  [-Name ] [-Sheet ] [-SheetIndex ] []
+Get-OfficeExcelNamedRange [-Path]  [-Name ] [-Sheet ] [-SheetIndex ] []
 ```
 
 ### Uri
@@ -73,33 +73,33 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Path to the workbook.
+### -Name
+Optional named range to retrieve.
 
 ```yaml
 Type: String
-Parameter Sets: Path
-Aliases: FilePath, Path
+Parameter Sets: Path, Uri, Document
+Aliases: None
 Possible values:
 
-Required: True
-Position: 0
+Required: False
+Position: named
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Name
-Optional named range to retrieve.
+### -Path
+Path to the workbook.
 
 ```yaml
 Type: String
-Parameter Sets: Path, Uri, Document
-Aliases: None
+Parameter Sets: Path
+Aliases: InputPath, FilePath
 Possible values:
 
-Required: False
-Position: named
+Required: True
+Position: 0
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
diff --git a/Docs/Get-OfficeExcelPageBreak.md b/Docs/Get-OfficeExcelPageBreak.md
index 85cd07ee..2c87eeea 100644
--- a/Docs/Get-OfficeExcelPageBreak.md
+++ b/Docs/Get-OfficeExcelPageBreak.md
@@ -16,7 +16,7 @@ Get-OfficeExcelPageBreak [-Sheet ] [-SheetIndex ] [-Row] [-Column
 
 ### Path
 ```powershell
-Get-OfficeExcelPageBreak [-InputPath]  [-Sheet ] [-SheetIndex ] [-Row] [-Column] []
+Get-OfficeExcelPageBreak [-Path]  [-Sheet ] [-SheetIndex ] [-Row] [-Column] []
 ```
 
 ### Document
@@ -72,13 +72,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Workbook path to inspect.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: Path, FilePath
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeExcelPivotTable.md b/Docs/Get-OfficeExcelPivotTable.md
index b7399d09..d763a094 100644
--- a/Docs/Get-OfficeExcelPivotTable.md
+++ b/Docs/Get-OfficeExcelPivotTable.md
@@ -11,7 +11,7 @@ Gets pivot tables defined in a workbook.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeExcelPivotTable [-InputPath]  [-Name ] [-Sheet ] [-SheetIndex ] []
+Get-OfficeExcelPivotTable [-Path]  [-Name ] [-Sheet ] [-SheetIndex ] []
 ```
 
 ### Document
@@ -52,33 +52,33 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Path to the workbook.
+### -Name
+Optional pivot table name filter.
 
 ```yaml
 Type: String
-Parameter Sets: Path
-Aliases: FilePath, Path
+Parameter Sets: Path, Document
+Aliases: None
 Possible values:
 
-Required: True
-Position: 0
+Required: False
+Position: named
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Name
-Optional pivot table name filter.
+### -Path
+Path to the workbook.
 
 ```yaml
 Type: String
-Parameter Sets: Path, Document
-Aliases: None
+Parameter Sets: Path
+Aliases: InputPath, FilePath
 Possible values:
 
-Required: False
-Position: named
+Required: True
+Position: 0
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
diff --git a/Docs/Get-OfficeExcelPreflight.md b/Docs/Get-OfficeExcelPreflight.md
index 31c495a1..d1b80ee3 100644
--- a/Docs/Get-OfficeExcelPreflight.md
+++ b/Docs/Get-OfficeExcelPreflight.md
@@ -11,7 +11,7 @@ Runs OfficeIMO Excel feature and workflow preflight checks.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeExcelPreflight [-InputPath]  [-Capability ] [-IncludeFeatures] [-IncludeRepairHints] [-AsMarkdown] [-ThrowOnFailure] []
+Get-OfficeExcelPreflight [-Path]  [-Capability ] [-IncludeFeatures] [-IncludeRepairHints] [-AsMarkdown] [-ThrowOnFailure] []
 ```
 
 ### Document
@@ -115,13 +115,13 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Path to the workbook.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: Path, FilePath
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeExcelRange.md b/Docs/Get-OfficeExcelRange.md
index 746ece9b..07447f46 100644
--- a/Docs/Get-OfficeExcelRange.md
+++ b/Docs/Get-OfficeExcelRange.md
@@ -11,7 +11,7 @@ Reads an explicit A1 range from an Excel workbook.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeExcelRange [-InputPath]  -Range  [-Sheet ] [-SheetIndex ] [-HeadersInFirstRow ] [-NumericAsDecimal] [-AsHashtable] [-AsDataTable] []
+Get-OfficeExcelRange [-Path]  -Range  [-Sheet ] [-SheetIndex ] [-HeadersInFirstRow ] [-NumericAsDecimal] [-AsHashtable] [-AsDataTable] []
 ```
 
 ### Uri
@@ -121,33 +121,33 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Path to the workbook.
+### -NumericAsDecimal
+Prefer decimals instead of doubles for numeric values.
 
 ```yaml
-Type: String
-Parameter Sets: Path
-Aliases: FilePath, Path
+Type: SwitchParameter
+Parameter Sets: Path, Uri, Document
+Aliases: None
 Possible values:
 
-Required: True
-Position: 0
+Required: False
+Position: named
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -NumericAsDecimal
-Prefer decimals instead of doubles for numeric values.
+### -Path
+Path to the workbook.
 
 ```yaml
-Type: SwitchParameter
-Parameter Sets: Path, Uri, Document
-Aliases: None
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
 Possible values:
 
-Required: False
-Position: named
+Required: True
+Position: 0
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
diff --git a/Docs/Get-OfficeExcelRichText.md b/Docs/Get-OfficeExcelRichText.md
index 9e32a340..f4dabb00 100644
--- a/Docs/Get-OfficeExcelRichText.md
+++ b/Docs/Get-OfficeExcelRichText.md
@@ -16,7 +16,7 @@ Get-OfficeExcelRichText [-Sheet ] [-SheetIndex ] [-Row ] [
 
 ### Path
 ```powershell
-Get-OfficeExcelRichText [-InputPath]  [-Sheet ] [-SheetIndex ] [-Row ] [-Column ] [-Address ] []
+Get-OfficeExcelRichText [-Path]  [-Sheet ] [-SheetIndex ] [-Row ] [-Column ] [-Address ] []
 ```
 
 ### Document
@@ -88,13 +88,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Workbook path to inspect.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: Path, FilePath
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeExcelStreamingContract.md b/Docs/Get-OfficeExcelStreamingContract.md
index f89938c6..c94f8533 100644
--- a/Docs/Get-OfficeExcelStreamingContract.md
+++ b/Docs/Get-OfficeExcelStreamingContract.md
@@ -11,7 +11,7 @@ Reports large-workbook streaming and direct-writer suitability.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeExcelStreamingContract [-InputPath]  []
+Get-OfficeExcelStreamingContract [-Path]  []
 ```
 
 ### Document
@@ -54,13 +54,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Workbook path.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: Path, FilePath
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeExcelSummary.md b/Docs/Get-OfficeExcelSummary.md
index 5fed7ef8..216a03e1 100644
--- a/Docs/Get-OfficeExcelSummary.md
+++ b/Docs/Get-OfficeExcelSummary.md
@@ -11,7 +11,7 @@ Gets a compact structural summary of an Excel workbook.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeExcelSummary [-InputPath]  [-IncludeSheets] [-IncludeSchema] []
+Get-OfficeExcelSummary [-Path]  [-IncludeSheets] [-IncludeSchema] []
 ```
 
 ### Document
@@ -85,13 +85,13 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Path to the workbook.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: FilePath, Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeExcelTable.md b/Docs/Get-OfficeExcelTable.md
index 0bce6ed4..91ce49f5 100644
--- a/Docs/Get-OfficeExcelTable.md
+++ b/Docs/Get-OfficeExcelTable.md
@@ -11,7 +11,7 @@ Gets Excel tables defined in a workbook.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeExcelTable [-InputPath]  [-Name ] [-Sheet ] [-SheetIndex ] []
+Get-OfficeExcelTable [-Path]  [-Name ] [-Sheet ] [-SheetIndex ] []
 ```
 
 ### Uri
@@ -73,33 +73,33 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Path to the workbook.
+### -Name
+Optional table name filter.
 
 ```yaml
 Type: String
-Parameter Sets: Path
-Aliases: FilePath, Path
+Parameter Sets: Path, Uri, Document
+Aliases: None
 Possible values:
 
-Required: True
-Position: 0
+Required: False
+Position: named
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Name
-Optional table name filter.
+### -Path
+Path to the workbook.
 
 ```yaml
 Type: String
-Parameter Sets: Path, Uri, Document
-Aliases: None
+Parameter Sets: Path
+Aliases: InputPath, FilePath
 Possible values:
 
-Required: False
-Position: named
+Required: True
+Position: 0
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
diff --git a/Docs/Get-OfficeExcelTemplateMarker.md b/Docs/Get-OfficeExcelTemplateMarker.md
index 11b83814..9c56335a 100644
--- a/Docs/Get-OfficeExcelTemplateMarker.md
+++ b/Docs/Get-OfficeExcelTemplateMarker.md
@@ -16,7 +16,7 @@ Get-OfficeExcelTemplateMarker [-Sheet ] [-SheetIndex ] [-Value  [-Sheet ] [-SheetIndex ] [-Value ] [-MissingOnly] []
+Get-OfficeExcelTemplateMarker [-Path]  [-Sheet ] [-SheetIndex ] [-Value ] [-MissingOnly] []
 ```
 
 ### Document
@@ -54,33 +54,33 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Workbook path to inspect.
+### -MissingOnly
+Only returns markers that are not supplied by -Value.
 
 ```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
+Type: SwitchParameter
+Parameter Sets: Context, Path, Document
+Aliases: None
 Possible values:
 
-Required: True
-Position: 0
+Required: False
+Position: named
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -MissingOnly
-Only returns markers that are not supplied by -Value.
+### -Path
+Workbook path to inspect.
 
 ```yaml
-Type: SwitchParameter
-Parameter Sets: Context, Path, Document
-Aliases: None
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
 Possible values:
 
-Required: False
-Position: named
+Required: True
+Position: 0
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
diff --git a/Docs/Get-OfficeExcelUsedRange.md b/Docs/Get-OfficeExcelUsedRange.md
index 768c4776..70266117 100644
--- a/Docs/Get-OfficeExcelUsedRange.md
+++ b/Docs/Get-OfficeExcelUsedRange.md
@@ -11,7 +11,7 @@ Reads the used range from an Excel workbook.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeExcelUsedRange [-InputPath]  [-Sheet ] [-SheetIndex ] [-HeadersInFirstRow ] [-NumericAsDecimal] [-AsHashtable] [-AsDataTable] []
+Get-OfficeExcelUsedRange [-Path]  [-Sheet ] [-SheetIndex ] [-HeadersInFirstRow ] [-NumericAsDecimal] [-AsHashtable] [-AsDataTable] []
 ```
 
 ### Uri
@@ -121,33 +121,33 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Path to the workbook.
+### -NumericAsDecimal
+Prefer decimals instead of doubles for numeric values.
 
 ```yaml
-Type: String
-Parameter Sets: Path
-Aliases: FilePath, Path
+Type: SwitchParameter
+Parameter Sets: Path, Uri, Document
+Aliases: None
 Possible values:
 
-Required: True
-Position: 0
+Required: False
+Position: named
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -NumericAsDecimal
-Prefer decimals instead of doubles for numeric values.
+### -Path
+Path to the workbook.
 
 ```yaml
-Type: SwitchParameter
-Parameter Sets: Path, Uri, Document
-Aliases: None
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
 Possible values:
 
-Required: False
-Position: named
+Required: True
+Position: 0
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
diff --git a/Docs/Get-OfficeExcelWorksheetView.md b/Docs/Get-OfficeExcelWorksheetView.md
index c8f87c9e..2f2fc775 100644
--- a/Docs/Get-OfficeExcelWorksheetView.md
+++ b/Docs/Get-OfficeExcelWorksheetView.md
@@ -16,7 +16,7 @@ Get-OfficeExcelWorksheetView [-Sheet ] [-SheetIndex ] [ [-Sheet ] [-SheetIndex ] []
+Get-OfficeExcelWorksheetView [-Path]  [-Sheet ] [-SheetIndex ] []
 ```
 
 ### Document
@@ -56,13 +56,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Workbook path to inspect.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: Path, FilePath
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeMarkdown.md b/Docs/Get-OfficeMarkdown.md
index 6b9abb97..97551929 100644
--- a/Docs/Get-OfficeMarkdown.md
+++ b/Docs/Get-OfficeMarkdown.md
@@ -11,7 +11,7 @@ Parses Markdown text or files into a Markdown document model.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeMarkdown [-InputPath]  [-Options ] [-Profile ] [-BaseUri ] [-MaxInputCharacters ] [-NormalizeInput ] [-DisallowFileUrls ] [-AllowDataUrls ] [-AllowMailtoUrls ] [-AllowProtocolRelativeUrls ] [-RestrictUrlSchemes ] [-AllowedUrlScheme ] []
+Get-OfficeMarkdown [-Path]  [-Options ] [-Profile ] [-BaseUri ] [-MaxInputCharacters ] [-NormalizeInput ] [-DisallowFileUrls ] [-AllowDataUrls ] [-AllowMailtoUrls ] [-AllowProtocolRelativeUrls ] [-RestrictUrlSchemes ] [-AllowedUrlScheme ] []
 ```
 
 ### Text
@@ -136,22 +136,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Path to the Markdown file.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: FilePath, Path
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -MaxInputCharacters
 Maximum Markdown input length accepted by the reader.
 
@@ -200,6 +184,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Path to the Markdown file.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Profile
 Named reader profile used when Options is not supplied.
 
diff --git a/Docs/Get-OfficeMarkdownFrontMatter.md b/Docs/Get-OfficeMarkdownFrontMatter.md
index 81b06d8e..e9cd8f54 100644
--- a/Docs/Get-OfficeMarkdownFrontMatter.md
+++ b/Docs/Get-OfficeMarkdownFrontMatter.md
@@ -11,7 +11,7 @@ Gets YAML front matter entries from a Markdown document.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeMarkdownFrontMatter [-InputPath]  [-Options ] [-Profile ] [-BaseUri ] [-MaxInputCharacters ] [-NormalizeInput ] [-DisallowFileUrls ] [-AllowDataUrls ] [-AllowMailtoUrls ] [-AllowProtocolRelativeUrls ] [-RestrictUrlSchemes ] [-AllowedUrlScheme ] [-Key ] [-CaseSensitive] []
+Get-OfficeMarkdownFrontMatter [-Path]  [-Options ] [-Profile ] [-BaseUri ] [-MaxInputCharacters ] [-NormalizeInput ] [-DisallowFileUrls ] [-AllowDataUrls ] [-AllowMailtoUrls ] [-AllowProtocolRelativeUrls ] [-RestrictUrlSchemes ] [-AllowedUrlScheme ] [-Key ] [-CaseSensitive] []
 ```
 
 ### Document
@@ -178,22 +178,6 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Path to the Markdown file.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: FilePath, Path
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -Key
 Optional wildcard pattern matched against front matter keys.
 
@@ -258,6 +242,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Path to the Markdown file.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Profile
 Named reader profile used when Options is not supplied.
 
diff --git a/Docs/Get-OfficeMarkdownHeading.md b/Docs/Get-OfficeMarkdownHeading.md
index 5c5f202c..e6666a9c 100644
--- a/Docs/Get-OfficeMarkdownHeading.md
+++ b/Docs/Get-OfficeMarkdownHeading.md
@@ -11,7 +11,7 @@ Gets heading metadata from a Markdown document.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeMarkdownHeading [-InputPath]  [-Options ] [-Profile ] [-BaseUri ] [-MaxInputCharacters ] [-NormalizeInput ] [-DisallowFileUrls ] [-AllowDataUrls ] [-AllowMailtoUrls ] [-AllowProtocolRelativeUrls ] [-RestrictUrlSchemes ] [-AllowedUrlScheme ] [-MinLevel ] [-MaxLevel ] [-HeadingText ] [-Anchor ] [-CaseSensitive] []
+Get-OfficeMarkdownHeading [-Path]  [-Options ] [-Profile ] [-BaseUri ] [-MaxInputCharacters ] [-NormalizeInput ] [-DisallowFileUrls ] [-AllowDataUrls ] [-AllowMailtoUrls ] [-AllowProtocolRelativeUrls ] [-RestrictUrlSchemes ] [-AllowedUrlScheme ] [-MinLevel ] [-MaxLevel ] [-HeadingText ] [-Anchor ] [-CaseSensitive] []
 ```
 
 ### Document
@@ -205,22 +205,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Path to the Markdown file.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: FilePath, Path
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -MaxInputCharacters
 Maximum Markdown input length accepted by the reader.
 
@@ -301,6 +285,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Path to the Markdown file.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Profile
 Named reader profile used when Options is not supplied.
 
diff --git a/Docs/Get-OfficeMarkdownNode.md b/Docs/Get-OfficeMarkdownNode.md
index 6c7619da..959a1fd5 100644
--- a/Docs/Get-OfficeMarkdownNode.md
+++ b/Docs/Get-OfficeMarkdownNode.md
@@ -11,7 +11,7 @@ Gets the OfficeIMO.Markdown object tree from Markdown content.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeMarkdownNode [-InputPath]  [-Options ] [-Profile ] [-BaseUri ] [-MaxInputCharacters ] [-NormalizeInput ] [-DisallowFileUrls ] [-AllowDataUrls ] [-AllowMailtoUrls ] [-AllowProtocolRelativeUrls ] [-RestrictUrlSchemes ] [-AllowedUrlScheme ] [-NodeType ] [-MaxDepth ] [-CaseSensitive] [-Raw] []
+Get-OfficeMarkdownNode [-Path]  [-Options ] [-Profile ] [-BaseUri ] [-MaxInputCharacters ] [-NormalizeInput ] [-DisallowFileUrls ] [-AllowDataUrls ] [-AllowMailtoUrls ] [-AllowProtocolRelativeUrls ] [-RestrictUrlSchemes ] [-AllowedUrlScheme ] [-NodeType ] [-MaxDepth ] [-CaseSensitive] [-Raw] []
 ```
 
 ### Document
@@ -173,22 +173,6 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Path to the Markdown file.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: FilePath, Path
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -MaxDepth
 Maximum traversal depth. Zero returns only the document root.
 
@@ -269,6 +253,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Path to the Markdown file.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Profile
 Named reader profile used when Options is not supplied.
 
diff --git a/Docs/Get-OfficeMarkdownTable.md b/Docs/Get-OfficeMarkdownTable.md
index df29d630..12510fbc 100644
--- a/Docs/Get-OfficeMarkdownTable.md
+++ b/Docs/Get-OfficeMarkdownTable.md
@@ -11,7 +11,7 @@ Gets Markdown tables from a Markdown document.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeMarkdownTable [-InputPath]  [-Options ] [-Profile ] [-BaseUri ] [-MaxInputCharacters ] [-NormalizeInput ] [-DisallowFileUrls ] [-AllowDataUrls ] [-AllowMailtoUrls ] [-AllowProtocolRelativeUrls ] [-RestrictUrlSchemes ] [-AllowedUrlScheme ] [-AsObject] []
+Get-OfficeMarkdownTable [-Path]  [-Options ] [-Profile ] [-BaseUri ] [-MaxInputCharacters ] [-NormalizeInput ] [-DisallowFileUrls ] [-AllowDataUrls ] [-AllowMailtoUrls ] [-AllowProtocolRelativeUrls ] [-RestrictUrlSchemes ] [-AllowedUrlScheme ] [-AsObject] []
 ```
 
 ### Document
@@ -166,22 +166,6 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Path to the Markdown file.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: FilePath, Path
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -MaxInputCharacters
 Maximum Markdown input length accepted by the reader.
 
@@ -230,6 +214,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Path to the Markdown file.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Profile
 Named reader profile used when Options is not supplied.
 
diff --git a/Docs/Get-OfficePowerPoint.md b/Docs/Get-OfficePowerPoint.md
index ba4d150a..392322f8 100644
--- a/Docs/Get-OfficePowerPoint.md
+++ b/Docs/Get-OfficePowerPoint.md
@@ -11,7 +11,7 @@ Loads an existing PowerPoint presentation.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Get-OfficePowerPoint -FilePath  [-Password ] []
+Get-OfficePowerPoint -Path  [-Password ] []
 ```
 
 ## DESCRIPTION
@@ -21,15 +21,15 @@ Returns an OfficeIMO PowerPointPresentation for downstream slide operations.
 
 ### EXAMPLE 1
 ```powershell
-PS> $ppt = Get-OfficePowerPoint -FilePath .\Quarterly.pptx
+PS> $ppt = Get-OfficePowerPoint -Path .\Quarterly.pptx
 ```
 
 Reads Quarterly.pptx and exposes the presentation object.
 
 ## PARAMETERS
 
-### -FilePath
-Path to the .pptx file.
+### -Password
+Password used to open an encrypted presentation package.
 
 ```yaml
 Type: String
@@ -37,23 +37,23 @@ Parameter Sets: __AllParameterSets
 Aliases: None
 Possible values:
 
-Required: True
+Required: False
 Position: named
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Password
-Password used to open an encrypted presentation package.
+### -Path
+Path to the .pptx file.
 
 ```yaml
 Type: String
 Parameter Sets: __AllParameterSets
-Aliases: None
+Aliases: FilePath
 Possible values:
 
-Required: False
+Required: True
 Position: named
 Default value: None
 Accept pipeline input: False
diff --git a/Docs/Get-OfficePowerPointSection.md b/Docs/Get-OfficePowerPointSection.md
index 43df9cdf..02b879bf 100644
--- a/Docs/Get-OfficePowerPointSection.md
+++ b/Docs/Get-OfficePowerPointSection.md
@@ -21,7 +21,7 @@ Returns OfficeIMO section metadata so scripts can inspect section names and slid
 
 ### EXAMPLE 1
 ```powershell
-PS> $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointSectionsRead.pptx
+PS> $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSectionsRead.pptx
 Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null
 Add-OfficePowerPointSection -Presentation $ppt -Name 'Appendix' -StartSlideIndex 0 | Out-Null
 Get-OfficePowerPointSection -Presentation $ppt | Select-Object Name, FirstSlideIndex, SlideCount
diff --git a/Docs/Get-OfficePowerPointTheme.md b/Docs/Get-OfficePowerPointTheme.md
index 58764b9a..1e7fde9b 100644
--- a/Docs/Get-OfficePowerPointTheme.md
+++ b/Docs/Get-OfficePowerPointTheme.md
@@ -21,7 +21,7 @@ Gets theme information for a PowerPoint presentation master.
 
 ### EXAMPLE 1
 ```powershell
-PS> $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointThemeRead.pptx
+PS> $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointThemeRead.pptx
 Set-OfficePowerPointThemeName -Presentation $ppt -Name 'Service Brief'
 Set-OfficePowerPointThemeFonts -Presentation $ppt -MajorLatin 'Aptos Display' -MinorLatin 'Aptos'
 Get-OfficePowerPointTheme -Presentation $ppt | Select-Object Name, Master
diff --git a/Docs/Get-OfficeWord.md b/Docs/Get-OfficeWord.md
index 14aca8a5..ac8ff6b0 100644
--- a/Docs/Get-OfficeWord.md
+++ b/Docs/Get-OfficeWord.md
@@ -11,7 +11,7 @@ Opens an existing Word document.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Get-OfficeWord [-InputPath]  [[-Content] ] [-ReadOnly] [-AutoSave] [-Password ] []
+Get-OfficeWord [-Path]  [[-Content] ] [-ReadOnly] [-AutoSave] [-Password ] []
 ```
 
 ## DESCRIPTION
@@ -67,33 +67,33 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Path to the .docx. Accepts PS paths.
+### -Password
+Password used to open an encrypted document package.
 
 ```yaml
 Type: String
 Parameter Sets: __AllParameterSets
-Aliases: FilePath, Path
+Aliases: None
 Possible values:
 
-Required: True
-Position: 0
+Required: False
+Position: named
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Password
-Password used to open an encrypted document package.
+### -Path
+Path to the .docx. Accepts PS paths.
 
 ```yaml
 Type: String
 Parameter Sets: __AllParameterSets
-Aliases: None
+Aliases: InputPath, FilePath
 Possible values:
 
-Required: False
-Position: named
+Required: True
+Position: 0
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
diff --git a/Docs/Get-OfficeWordBookmark.md b/Docs/Get-OfficeWordBookmark.md
index c0a88007..c5813218 100644
--- a/Docs/Get-OfficeWordBookmark.md
+++ b/Docs/Get-OfficeWordBookmark.md
@@ -11,7 +11,7 @@ Gets bookmarks from a Word document.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeWordBookmark [-InputPath]  [-Name ] []
+Get-OfficeWordBookmark [-Path]  [-Name ] []
 ```
 
 ### Document
@@ -52,22 +52,6 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Path to the .docx file.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: FilePath, Path
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -Name
 Bookmark name filter (wildcards supported).
 
@@ -84,6 +68,22 @@ Accept pipeline input: False
 Accept wildcard characters: True
 ```
 
+### -Path
+Path to the .docx file.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### CommonParameters
 This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
 
diff --git a/Docs/Get-OfficeWordCheckBox.md b/Docs/Get-OfficeWordCheckBox.md
index 6428273e..a659854d 100644
--- a/Docs/Get-OfficeWordCheckBox.md
+++ b/Docs/Get-OfficeWordCheckBox.md
@@ -11,7 +11,7 @@ Gets checkbox content controls from a Word document.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeWordCheckBox [-InputPath]  [-Alias ] [-Tag ] [-Checked] [-Unchecked] []
+Get-OfficeWordCheckBox [-Path]  [-Alias ] [-Tag ] [-Checked] [-Unchecked] []
 ```
 
 ### Document
@@ -84,13 +84,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Path to the .docx file.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: FilePath, Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeWordComboBox.md b/Docs/Get-OfficeWordComboBox.md
index ffcad19c..5264e271 100644
--- a/Docs/Get-OfficeWordComboBox.md
+++ b/Docs/Get-OfficeWordComboBox.md
@@ -11,7 +11,7 @@ Gets combo box content controls from a Word document.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeWordComboBox [-InputPath]  [-Alias ] [-Tag ] []
+Get-OfficeWordComboBox [-Path]  [-Alias ] [-Tag ] []
 ```
 
 ### Document
@@ -68,13 +68,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Path to the .docx file.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: FilePath, Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeWordContentControl.md b/Docs/Get-OfficeWordContentControl.md
index 89e7ecee..d7b5ab68 100644
--- a/Docs/Get-OfficeWordContentControl.md
+++ b/Docs/Get-OfficeWordContentControl.md
@@ -11,7 +11,7 @@ Gets structured content controls from a Word document.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeWordContentControl [-InputPath]  [-Alias ] [-Tag ] [-Text ] []
+Get-OfficeWordContentControl [-Path]  [-Alias ] [-Tag ] [-Text ] []
 ```
 
 ### Document
@@ -68,13 +68,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Path to the .docx file.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: FilePath, Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeWordDatePicker.md b/Docs/Get-OfficeWordDatePicker.md
index f3ef335e..f11646e7 100644
--- a/Docs/Get-OfficeWordDatePicker.md
+++ b/Docs/Get-OfficeWordDatePicker.md
@@ -11,7 +11,7 @@ Gets date picker content controls from a Word document.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeWordDatePicker [-InputPath]  [-Alias ] [-Tag ] []
+Get-OfficeWordDatePicker [-Path]  [-Alias ] [-Tag ] []
 ```
 
 ### Document
@@ -68,13 +68,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Path to the .docx file.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: FilePath, Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeWordDocumentProperty.md b/Docs/Get-OfficeWordDocumentProperty.md
index 04101451..7020b32d 100644
--- a/Docs/Get-OfficeWordDocumentProperty.md
+++ b/Docs/Get-OfficeWordDocumentProperty.md
@@ -11,7 +11,7 @@ Gets built-in and custom document properties from a Word document.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeWordDocumentProperty [-InputPath]  [-Name ] [-BuiltIn] [-Custom] []
+Get-OfficeWordDocumentProperty [-Path]  [-Name ] [-BuiltIn] [-Custom] []
 ```
 
 ### Document
@@ -84,22 +84,6 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Path to the document.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: FilePath, Path
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -Name
 Property name filter (wildcards supported).
 
@@ -116,6 +100,22 @@ Accept pipeline input: False
 Accept wildcard characters: True
 ```
 
+### -Path
+Path to the document.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### CommonParameters
 This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
 
diff --git a/Docs/Get-OfficeWordDropDownList.md b/Docs/Get-OfficeWordDropDownList.md
index dacf644e..f2d25005 100644
--- a/Docs/Get-OfficeWordDropDownList.md
+++ b/Docs/Get-OfficeWordDropDownList.md
@@ -11,7 +11,7 @@ Gets dropdown list content controls from a Word document.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeWordDropDownList [-InputPath]  [-Alias ] [-Tag ] []
+Get-OfficeWordDropDownList [-Path]  [-Alias ] [-Tag ] []
 ```
 
 ### Document
@@ -68,13 +68,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Path to the .docx file.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: FilePath, Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeWordEndnote.md b/Docs/Get-OfficeWordEndnote.md
index 156e1dc0..d8ac65e7 100644
--- a/Docs/Get-OfficeWordEndnote.md
+++ b/Docs/Get-OfficeWordEndnote.md
@@ -11,7 +11,7 @@ Gets endnotes from a Word document or section.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeWordEndnote [-InputPath]  []
+Get-OfficeWordEndnote [-Path]  []
 ```
 
 ### Document
@@ -57,13 +57,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Path to the document.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: FilePath, Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeWordField.md b/Docs/Get-OfficeWordField.md
index 1a18c90c..a46f1544 100644
--- a/Docs/Get-OfficeWordField.md
+++ b/Docs/Get-OfficeWordField.md
@@ -11,7 +11,7 @@ Gets fields from a Word document.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeWordField [-InputPath]  [-FieldType ] [-Contains ] [-CaseSensitive] []
+Get-OfficeWordField [-Path]  [-FieldType ] [-Contains ] [-CaseSensitive] []
 ```
 
 ### Document
@@ -100,13 +100,13 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Path to the .docx file.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: FilePath, Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeWordFootnote.md b/Docs/Get-OfficeWordFootnote.md
index 78816594..2604d726 100644
--- a/Docs/Get-OfficeWordFootnote.md
+++ b/Docs/Get-OfficeWordFootnote.md
@@ -11,7 +11,7 @@ Gets footnotes from a Word document or section.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeWordFootnote [-InputPath]  []
+Get-OfficeWordFootnote [-Path]  []
 ```
 
 ### Document
@@ -57,13 +57,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Path to the document.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: FilePath, Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeWordHyperlink.md b/Docs/Get-OfficeWordHyperlink.md
index d9d88d4e..9b62901d 100644
--- a/Docs/Get-OfficeWordHyperlink.md
+++ b/Docs/Get-OfficeWordHyperlink.md
@@ -11,7 +11,7 @@ Gets hyperlinks from a Word document.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeWordHyperlink [-InputPath]  [-Text ] [-Url ] [-Anchor ] []
+Get-OfficeWordHyperlink [-Path]  [-Text ] [-Url ] [-Anchor ] []
 ```
 
 ### Document
@@ -78,35 +78,35 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Path to the document.
+### -Paragraph
+Paragraph to inspect.
 
 ```yaml
-Type: String
-Parameter Sets: Path
-Aliases: FilePath, Path
+Type: WordParagraph
+Parameter Sets: Paragraph
+Aliases: None
 Possible values:
 
 Required: True
-Position: 0
+Position: named
 Default value: None
-Accept pipeline input: False
+Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -Paragraph
-Paragraph to inspect.
+### -Path
+Path to the document.
 
 ```yaml
-Type: WordParagraph
-Parameter Sets: Paragraph
-Aliases: None
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
-Position: named
+Position: 0
 Default value: None
-Accept pipeline input: True (ByValue)
+Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
diff --git a/Docs/Get-OfficeWordImage.md b/Docs/Get-OfficeWordImage.md
index daceb1f4..826cb76f 100644
--- a/Docs/Get-OfficeWordImage.md
+++ b/Docs/Get-OfficeWordImage.md
@@ -11,7 +11,7 @@ Gets images from a Word document, section, or paragraph.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeWordImage [-InputPath]  []
+Get-OfficeWordImage [-Path]  []
 ```
 
 ### Document
@@ -62,35 +62,35 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Path to the document.
+### -Paragraph
+Paragraph to inspect.
 
 ```yaml
-Type: String
-Parameter Sets: Path
-Aliases: FilePath, Path
+Type: WordParagraph
+Parameter Sets: Paragraph
+Aliases: None
 Possible values:
 
 Required: True
-Position: 0
+Position: named
 Default value: None
-Accept pipeline input: False
+Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -Paragraph
-Paragraph to inspect.
+### -Path
+Path to the document.
 
 ```yaml
-Type: WordParagraph
-Parameter Sets: Paragraph
-Aliases: None
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
-Position: named
+Position: 0
 Default value: None
-Accept pipeline input: True (ByValue)
+Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
diff --git a/Docs/Get-OfficeWordList.md b/Docs/Get-OfficeWordList.md
index c5eb1e63..5d6d983a 100644
--- a/Docs/Get-OfficeWordList.md
+++ b/Docs/Get-OfficeWordList.md
@@ -11,7 +11,7 @@ Gets lists from a Word document or section.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeWordList [-InputPath]  [-IncludeEmpty] []
+Get-OfficeWordList [-Path]  [-IncludeEmpty] []
 ```
 
 ### Document
@@ -85,13 +85,13 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Path to the document to open read-only for list inspection.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: FilePath, Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeWordParagraph.md b/Docs/Get-OfficeWordParagraph.md
index 3124ca4f..fc9aadea 100644
--- a/Docs/Get-OfficeWordParagraph.md
+++ b/Docs/Get-OfficeWordParagraph.md
@@ -11,7 +11,7 @@ Gets paragraphs from a Word document or section.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeWordParagraph [-InputPath]  []
+Get-OfficeWordParagraph [-Path]  []
 ```
 
 ### Document
@@ -58,13 +58,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Path to the document.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: FilePath, Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeWordPictureControl.md b/Docs/Get-OfficeWordPictureControl.md
index 7ab57574..6b4fcb1a 100644
--- a/Docs/Get-OfficeWordPictureControl.md
+++ b/Docs/Get-OfficeWordPictureControl.md
@@ -11,7 +11,7 @@ Gets picture content controls from a Word document.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeWordPictureControl [-InputPath]  [-Alias ] [-Tag ] []
+Get-OfficeWordPictureControl [-Path]  [-Alias ] [-Tag ] []
 ```
 
 ### Document
@@ -68,13 +68,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Path to the .docx file.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: FilePath, Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeWordRepeatingSection.md b/Docs/Get-OfficeWordRepeatingSection.md
index 878943ab..0ebb456e 100644
--- a/Docs/Get-OfficeWordRepeatingSection.md
+++ b/Docs/Get-OfficeWordRepeatingSection.md
@@ -11,7 +11,7 @@ Gets repeating section content controls from a Word document.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeWordRepeatingSection [-InputPath]  [-Alias ] [-Tag ] []
+Get-OfficeWordRepeatingSection [-Path]  [-Alias ] [-Tag ] []
 ```
 
 ### Document
@@ -68,13 +68,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Path to the .docx file.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: FilePath, Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeWordSection.md b/Docs/Get-OfficeWordSection.md
index b04d3106..faeefc42 100644
--- a/Docs/Get-OfficeWordSection.md
+++ b/Docs/Get-OfficeWordSection.md
@@ -11,7 +11,7 @@ Gets sections from a Word document.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeWordSection [-InputPath]  [-Index ] []
+Get-OfficeWordSection [-Path]  [-Index ] []
 ```
 
 ### Document
@@ -68,13 +68,13 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Path to the document.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: FilePath, Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeWordShape.md b/Docs/Get-OfficeWordShape.md
index d0b76aae..640e3988 100644
--- a/Docs/Get-OfficeWordShape.md
+++ b/Docs/Get-OfficeWordShape.md
@@ -11,7 +11,7 @@ Gets shapes from a Word document, section, or paragraph.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeWordShape [-InputPath]  []
+Get-OfficeWordShape [-Path]  []
 ```
 
 ### Document
@@ -62,35 +62,35 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Path to the document.
+### -Paragraph
+Paragraph to inspect.
 
 ```yaml
-Type: String
-Parameter Sets: Path
-Aliases: FilePath, Path
+Type: WordParagraph
+Parameter Sets: Paragraph
+Aliases: None
 Possible values:
 
 Required: True
-Position: 0
+Position: named
 Default value: None
-Accept pipeline input: False
+Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -Paragraph
-Paragraph to inspect.
+### -Path
+Path to the document.
 
 ```yaml
-Type: WordParagraph
-Parameter Sets: Paragraph
-Aliases: None
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
-Position: named
+Position: 0
 Default value: None
-Accept pipeline input: True (ByValue)
+Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
diff --git a/Docs/Get-OfficeWordStatistics.md b/Docs/Get-OfficeWordStatistics.md
index a0928a6e..deb984a9 100644
--- a/Docs/Get-OfficeWordStatistics.md
+++ b/Docs/Get-OfficeWordStatistics.md
@@ -11,7 +11,7 @@ Gets document statistics from a Word document.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeWordStatistics [-InputPath]  []
+Get-OfficeWordStatistics [-Path]  []
 ```
 
 ### Document
@@ -52,13 +52,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Path to the Word document.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: FilePath, Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeWordTable.md b/Docs/Get-OfficeWordTable.md
index 5f8e0a7d..78ef4131 100644
--- a/Docs/Get-OfficeWordTable.md
+++ b/Docs/Get-OfficeWordTable.md
@@ -11,7 +11,7 @@ Gets tables from a Word document or section.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeWordTable [-InputPath]  [-IncludeNested] []
+Get-OfficeWordTable [-Path]  [-IncludeNested] []
 ```
 
 ### Document
@@ -74,13 +74,13 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Path to the document.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: FilePath, Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeWordTableOfContents.md b/Docs/Get-OfficeWordTableOfContents.md
index 83ddb39c..c8f7a15c 100644
--- a/Docs/Get-OfficeWordTableOfContents.md
+++ b/Docs/Get-OfficeWordTableOfContents.md
@@ -11,7 +11,7 @@ Gets the table of contents from a Word document.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Get-OfficeWordTableOfContents [-InputPath]  []
+Get-OfficeWordTableOfContents [-Path]  []
 ```
 
 ### Document
@@ -54,13 +54,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Path to the .docx file.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: FilePath, Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Get-OfficeWordText.md b/Docs/Get-OfficeWordText.md
index 4999d611..47bd7888 100644
--- a/Docs/Get-OfficeWordText.md
+++ b/Docs/Get-OfficeWordText.md
@@ -26,7 +26,7 @@ Get-OfficeWordText -Document  []
 
 ### Path
 ```powershell
-Get-OfficeWordText [-InputPath]  []
+Get-OfficeWordText [-Path]  []
 ```
 
 ## DESCRIPTION
@@ -59,35 +59,35 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Path to the document.
+### -Paragraph
+Paragraph to enumerate.
 
 ```yaml
-Type: String
-Parameter Sets: Path
-Aliases: FilePath, Path
+Type: WordParagraph
+Parameter Sets: Paragraph
+Aliases: None
 Possible values:
 
 Required: True
-Position: 0
+Position: named
 Default value: None
-Accept pipeline input: False
+Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -Paragraph
-Paragraph to enumerate.
+### -Path
+Path to the document.
 
 ```yaml
-Type: WordParagraph
-Parameter Sets: Paragraph
-Aliases: None
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
-Position: named
+Position: 0
 Default value: None
-Accept pipeline input: True (ByValue)
+Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
diff --git a/Docs/Import-OfficeExcelDelimitedText.md b/Docs/Import-OfficeExcelDelimitedText.md
index fb3b538c..5bf08f8c 100644
--- a/Docs/Import-OfficeExcelDelimitedText.md
+++ b/Docs/Import-OfficeExcelDelimitedText.md
@@ -11,7 +11,7 @@ Imports normalized CSV/TSV text into an Excel workbook through OfficeIMO.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Import-OfficeExcelDelimitedText [-InputPath]  -SourcePath  [-Delimiter ] [-SheetName ] [-CultureName ] [-NoHeader] [-SkipRows ] [-NoTable] [-NoTypeConversion] [-PassThru] [-WhatIf] [-Confirm] []
+Import-OfficeExcelDelimitedText [-Path]  -SourcePath  [-Delimiter ] [-SheetName ] [-CultureName ] [-NoHeader] [-SkipRows ] [-NoTable] [-NoTypeConversion] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -87,22 +87,6 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Workbook path.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -NoHeader
 Treat the first row as data.
 
@@ -167,6 +151,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Workbook path.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -SheetName
 Worksheet name to create or inspect.
 
diff --git a/Docs/Invoke-OfficeExcelTemplate.md b/Docs/Invoke-OfficeExcelTemplate.md
index 4236e208..f42b6573 100644
--- a/Docs/Invoke-OfficeExcelTemplate.md
+++ b/Docs/Invoke-OfficeExcelTemplate.md
@@ -16,7 +16,7 @@ Invoke-OfficeExcelTemplate -Value  [-Sheet ] [-SheetIndex  -Value  [-Sheet ] [-SheetIndex ] [-CultureName ] [-MissingValueBehavior ] [-ThrowOnMissing] [-PassThru] [-WhatIf] [-Confirm] []
+Invoke-OfficeExcelTemplate [-Path]  -Value  [-Sheet ] [-SheetIndex ] [-CultureName ] [-MissingValueBehavior ] [-ThrowOnMissing] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -70,22 +70,6 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Workbook path to update.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -MissingValueBehavior
 Behavior used when a marker is not supplied by -Value.
 
@@ -118,6 +102,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Workbook path to update.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Sheet
 Worksheet name to update. Defaults to the current DSL sheet or all workbook sheets.
 
diff --git a/Docs/Invoke-OfficeExcelTemplateOptionalRow.md b/Docs/Invoke-OfficeExcelTemplateOptionalRow.md
index 0ffe081f..4ef3d87c 100644
--- a/Docs/Invoke-OfficeExcelTemplateOptionalRow.md
+++ b/Docs/Invoke-OfficeExcelTemplateOptionalRow.md
@@ -16,7 +16,7 @@ Invoke-OfficeExcelTemplateOptionalRow -FirstRow  [-Sheet ] [-SheetI
 
 ### Path
 ```powershell
-Invoke-OfficeExcelTemplateOptionalRow [-InputPath]  -FirstRow  [-Sheet ] [-SheetIndex ] [-RowCount ] [-Value ] [-Remove] [-CultureName ] [-MissingValueBehavior ] [-ThrowOnMissing] [-PassThru] [-WhatIf] [-Confirm] []
+Invoke-OfficeExcelTemplateOptionalRow [-Path]  -FirstRow  [-Sheet ] [-SheetIndex ] [-RowCount ] [-Value ] [-Remove] [-CultureName ] [-MissingValueBehavior ] [-ThrowOnMissing] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -86,22 +86,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Workbook path to update.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -MissingValueBehavior
 Behavior used when a marker in the optional block is not supplied by -Value.
 
@@ -134,6 +118,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Workbook path to update.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Remove
 Removes the optional row block instead of keeping and binding it.
 
diff --git a/Docs/Invoke-OfficeExcelTemplateRow.md b/Docs/Invoke-OfficeExcelTemplateRow.md
index 3e3763b0..e37614b1 100644
--- a/Docs/Invoke-OfficeExcelTemplateRow.md
+++ b/Docs/Invoke-OfficeExcelTemplateRow.md
@@ -16,7 +16,7 @@ Invoke-OfficeExcelTemplateRow [-InputObject]  -TemplateRow  [-Sheet
 
 ### Path
 ```powershell
-Invoke-OfficeExcelTemplateRow [-InputPath]  [-InputObject]  -TemplateRow  [-Sheet ] [-SheetIndex ] [-CultureName ] [-MissingValueBehavior ] [-ThrowOnMissing] [-PassThru] [-WhatIf] [-Confirm] []
+Invoke-OfficeExcelTemplateRow [-Path]  [-InputObject]  -TemplateRow  [-Sheet ] [-SheetIndex ] [-CultureName ] [-MissingValueBehavior ] [-ThrowOnMissing] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -86,22 +86,6 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Workbook path to update.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -MissingValueBehavior
 Behavior used when a marker is not supplied by each input row.
 
@@ -134,6 +118,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Workbook path to update.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Sheet
 Worksheet name. Defaults to the current sheet inside an ExcelSheet block.
 
diff --git a/Docs/Invoke-OfficeExcelTemplateSheet.md b/Docs/Invoke-OfficeExcelTemplateSheet.md
index 7f2924bb..9ed8b034 100644
--- a/Docs/Invoke-OfficeExcelTemplateSheet.md
+++ b/Docs/Invoke-OfficeExcelTemplateSheet.md
@@ -16,7 +16,7 @@ Invoke-OfficeExcelTemplateSheet [-Item]  [-TemplateSheet ] [-She
 
 ### Path
 ```powershell
-Invoke-OfficeExcelTemplateSheet [-InputPath]  [-Item]  [-TemplateSheet ] [-SheetNameProperty ] [-CultureName ] [-MissingValueBehavior ] [-ThrowOnMissing] [-PassThru] [-WhatIf] [-Confirm] []
+Invoke-OfficeExcelTemplateSheet [-Path]  [-Item]  [-TemplateSheet ] [-SheetNameProperty ] [-CultureName ] [-MissingValueBehavior ] [-ThrowOnMissing] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -70,22 +70,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Workbook path to update.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -Item
 Pipeline data. Hashtables, dictionaries, PSCustomObjects, and typed objects are supported.
 
@@ -134,6 +118,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Workbook path to update.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -SheetNameProperty
 Input property used as the generated worksheet name.
 
diff --git a/Docs/Join-OfficeExcelSheet.md b/Docs/Join-OfficeExcelSheet.md
index 41b812f1..c1d08f68 100644
--- a/Docs/Join-OfficeExcelSheet.md
+++ b/Docs/Join-OfficeExcelSheet.md
@@ -16,7 +16,7 @@ Join-OfficeExcelSheet -SourceSheet  [-TargetSheet ] [-TargetShee
 
 ### Path
 ```powershell
-Join-OfficeExcelSheet [-InputPath]  -SourceSheet  [-TargetSheet ] [-TargetSheetIndex ] [-SourceDocument ] [-SourcePath ] [-SourceRange ] [-TargetStartRow ] [-TargetStartColumn ] [-NoSourceHeader] [-IncludeSourceHeader] [-MatchColumnsByHeader] [-TargetHeaderRow ] [-BlankRowsBefore ] [-OverwriteExistingCells] [-WhatIf] [-Confirm] []
+Join-OfficeExcelSheet [-Path]  -SourceSheet  [-TargetSheet ] [-TargetSheetIndex ] [-SourceDocument ] [-SourcePath ] [-SourceRange ] [-TargetStartRow ] [-TargetStartColumn ] [-NoSourceHeader] [-IncludeSourceHeader] [-MatchColumnsByHeader] [-TargetHeaderRow ] [-BlankRowsBefore ] [-OverwriteExistingCells] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -88,22 +88,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Target workbook path to update.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -MatchColumnsByHeader
 Match source columns to target columns by header text.
 
@@ -152,6 +136,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Target workbook path to update.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -SourceDocument
 Optional source workbook object for cross-workbook joins.
 
diff --git a/Docs/Join-OfficeExcelWorkbook.md b/Docs/Join-OfficeExcelWorkbook.md
index c6fcb3cf..56a87993 100644
--- a/Docs/Join-OfficeExcelWorkbook.md
+++ b/Docs/Join-OfficeExcelWorkbook.md
@@ -11,7 +11,7 @@ Merges worksheets from one or more workbooks into a target workbook.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Join-OfficeExcelWorkbook [-InputPath]  [[-SourcePath] ] [-SourceDocument ] [-SourceSheet ] [-SheetNamePrefix ] [-ValidationMode ] [-CopyMode ] [-WhatIf] [-Confirm] []
+Join-OfficeExcelWorkbook [-Path]  [[-SourcePath] ] [-SourceDocument ] [-SourceSheet ] [-SheetNamePrefix ] [-ValidationMode ] [-CopyMode ] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -76,13 +76,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Target workbook path to create or update.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: Path, FilePath, OutputPath
+Aliases: InputPath, FilePath, OutputPath
 Possible values:
 
 Required: True
diff --git a/Docs/Join-OfficeWordDocument.md b/Docs/Join-OfficeWordDocument.md
index ad916e57..a8707dfe 100644
--- a/Docs/Join-OfficeWordDocument.md
+++ b/Docs/Join-OfficeWordDocument.md
@@ -11,12 +11,12 @@ Appends one or more Word documents into a base Word document.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Join-OfficeWordDocument [-InputPath]  [-AppendPath]  [-OutputPath ] [-Show] [-PassThru] [-WhatIf] [-Confirm] []
+Join-OfficeWordDocument [-Path]  [-AppendPath]  [-OutputPath ] [-Open] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
 ```powershell
-Join-OfficeWordDocument [-AppendPath]  -Document  [-OutputPath ] [-Show] [-PassThru] [-WhatIf] [-Confirm] []
+Join-OfficeWordDocument [-AppendPath]  -Document  [-OutputPath ] [-Open] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -79,17 +79,17 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Base document path.
+### -Open
+Open the saved output with the shell.
 
 ```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path, BasePath
+Type: SwitchParameter
+Parameter Sets: Path, Document
+Aliases: Show
 Possible values:
 
-Required: True
-Position: 0
+Required: False
+Position: named
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
@@ -127,17 +127,17 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Show
-Open the saved output with the shell.
+### -Path
+Base document path.
 
 ```yaml
-Type: SwitchParameter
-Parameter Sets: Path, Document
-Aliases: None
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, BasePath
 Possible values:
 
-Required: False
-Position: named
+Required: True
+Position: 0
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
diff --git a/Docs/Move-OfficeExcelSheet.md b/Docs/Move-OfficeExcelSheet.md
index 423637b5..519a3326 100644
--- a/Docs/Move-OfficeExcelSheet.md
+++ b/Docs/Move-OfficeExcelSheet.md
@@ -16,7 +16,7 @@ Move-OfficeExcelSheet -Index  [-Sheet ] [-SheetIndex ] [-Pas
 
 ### Path
 ```powershell
-Move-OfficeExcelSheet [-InputPath]  -Index  [-Sheet ] [-SheetIndex ] [-PassThru] [-WhatIf] [-Confirm] []
+Move-OfficeExcelSheet [-Path]  -Index  [-Sheet ] [-SheetIndex ] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -76,33 +76,33 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Workbook path to update.
+### -PassThru
+Emit the moved worksheet.
 
 ```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
+Type: SwitchParameter
+Parameter Sets: Context, Path, Document
+Aliases: None
 Possible values:
 
-Required: True
-Position: 0
+Required: False
+Position: named
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -PassThru
-Emit the moved worksheet.
+### -Path
+Workbook path to update.
 
 ```yaml
-Type: SwitchParameter
-Parameter Sets: Context, Path, Document
-Aliases: None
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
 Possible values:
 
-Required: False
-Position: named
+Required: True
+Position: 0
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
diff --git a/Docs/Move-OfficePdfPage.md b/Docs/Move-OfficePdfPage.md
index 6bdb58fb..235edd82 100644
--- a/Docs/Move-OfficePdfPage.md
+++ b/Docs/Move-OfficePdfPage.md
@@ -11,7 +11,7 @@ Moves selected pages before another page and writes a new PDF.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Move-OfficePdfPage -Path  -PageRange  -BeforePage  -OutputPath  [-Password ] [-IgnorePermissionRestrictions] [-WhatIf] [-Confirm] []
+Move-OfficePdfPage -Path  -PageRange  -BeforePage  -OutputPath  [-Password ] [-IgnorePermissionRestrictions] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -96,6 +96,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Password
 Password used to authenticate an encrypted PDF.
 
diff --git a/Docs/New-OfficeExcel.md b/Docs/New-OfficeExcel.md
index 09bd79b1..31a1a2e1 100644
--- a/Docs/New-OfficeExcel.md
+++ b/Docs/New-OfficeExcel.md
@@ -11,7 +11,7 @@ Creates a new Excel workbook using the DSL.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-New-OfficeExcel [-FilePath]  [[-Content] ] [-TemplatePath ] [-AutoSave] [-NoSave] [-Open] [-Password ] [-SafePreflight] [-SafeRepairDefinedNames] [-ValidateOpenXml] [-DisableFastPackageWriter] [-EvaluateFormulas] [-ClearCachedFormulaResults] [-MarkFormulasDirty] [-ForceFullCalculationOnOpen] [-DateSystem ] [-PdfPath ] [-PassThru] [-DocumentTitle ] [-Author ] [-Subject ] [-Keywords ] [-Description ] [-Category ] [-Company ] [-Manager ] [-ApplicationName ] [-LastModifiedBy ] [-WhatIf] [-Confirm] []
+New-OfficeExcel [-Path]  [[-Content] ] [-TemplatePath ] [-NoSave] [-Open] [-Password ] [-SafePreflight] [-SafeRepairDefinedNames] [-ValidateOpenXml] [-DisableFastPackageWriter] [-EvaluateFormulas] [-ClearCachedFormulaResults] [-MarkFormulasDirty] [-ForceFullCalculationOnOpen] [-DateSystem ] [-PassThru] [-DocumentTitle ] [-Author ] [-Subject ] [-Keywords ] [-Description ] [-Category ] [-Company ] [-Manager ] [-ApplicationName ] [-LastModifiedBy ] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -71,22 +71,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -AutoSave
-Opt into OfficeIMO automatic saves during operations.
-
-```yaml
-Type: SwitchParameter
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -Category
 Workbook category metadata.
 
@@ -231,22 +215,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -FilePath
-Destination path for the workbook.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: Path
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -ForceFullCalculationOnOpen
 Request a full workbook recalculation when opened in Excel-compatible applications.
 
@@ -391,17 +359,17 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -PdfPath
-Optional PDF path to create from the same workbook before closing it.
+### -Path
+Destination path for the workbook.
 
 ```yaml
 Type: String
 Parameter Sets: __AllParameterSets
-Aliases: None
+Aliases: FilePath
 Possible values:
 
-Required: False
-Position: named
+Required: True
+Position: 0
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
diff --git a/Docs/New-OfficeExcelDashboard.md b/Docs/New-OfficeExcelDashboard.md
index d5ef7dbe..bf6aaab2 100644
--- a/Docs/New-OfficeExcelDashboard.md
+++ b/Docs/New-OfficeExcelDashboard.md
@@ -16,7 +16,7 @@ New-OfficeExcelDashboard [-InputObject]  [-Title ] [-Subtitle  -InputPath  [-Sheet ] [-SheetIndex ] [-Title ] [-Subtitle ] [-TableName ] [-TableRow ] [-TableColumn ] [-TableStyle ] [-NoAutoFilter] [-NoAutoFit] [-NoChart] [-ChartPreset ] [-ChartTitle ] [-ChartRow ] [-ChartColumn ] [-PassThru] [-WhatIf] [-Confirm] []
+New-OfficeExcelDashboard [-InputObject]  -Path  [-Sheet ] [-SheetIndex ] [-Title ] [-Subtitle ] [-TableName ] [-TableRow ] [-TableColumn ] [-TableStyle ] [-NoAutoFilter] [-NoAutoFit] [-NoChart] [-ChartPreset ] [-ChartTitle ] [-ChartRow ] [-ChartColumn ] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -134,22 +134,6 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Workbook path to update.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
-Possible values:
-
-Required: True
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -NoAutoFilter
 Disable AutoFilter dropdowns on the generated table.
 
@@ -214,6 +198,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Workbook path to update.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Sheet
 Worksheet name when using Path or Document.
 
diff --git a/Docs/New-OfficeMarkdown.md b/Docs/New-OfficeMarkdown.md
index c0b63a88..79800e51 100644
--- a/Docs/New-OfficeMarkdown.md
+++ b/Docs/New-OfficeMarkdown.md
@@ -11,7 +11,7 @@ Creates a Markdown document using a DSL scriptblock.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-New-OfficeMarkdown [-OutputPath]  [[-Content] ] [-PassThru] [-NoSave] [-PdfPath ] [-WriteOptions ] [-WriteProfile ] [-ImageRenderingMode ] [-LineEnding ] [-UnorderedListMarker ] [-MarkdownPdfOptions ] [-PdfOptions ] [-PdfTheme ] [-PdfFontFamily ] [-PdfTitle ] [-PdfAuthor ] [-PdfSubject ] [-PdfKeywords ] [-PdfBaseDirectory ] [-PdfApplyWordLikeTheme ] [-PdfIncludeLocalImages ] [-PdfIncludeDataUriImages ] [-PdfRestrictLocalImagesToBaseDirectory ] [-PdfMaximumDataUriImageBytes ] [-PdfDefaultImageWidth ] [-PdfDefaultImageHeight ] [-PdfFrontMatterRenderMode ] [-PdfUseFrontMatterVisualTheme ] [-PdfUseFrontMatterMetadata ] [-PdfUseFirstHeadingAsTitle ] [-PdfCreateOutlineFromHeadings ] [-PdfWarningVariable ] [-PdfConversionReportVariable ] [-WhatIf] [-Confirm] []
+New-OfficeMarkdown [-Path]  [[-Content] ] [-PassThru] [-NoSave] [-WriteOptions ] [-WriteProfile ] [-ImageRenderingMode ] [-LineEnding ] [-UnorderedListMarker ] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -88,22 +88,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -MarkdownPdfOptions
-Advanced Markdown PDF options. Friendly PDF parameters override matching values.
-
-```yaml
-Type: MarkdownPdfSaveOptions
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -NoSave
 Skip saving after executing the DSL.
 
@@ -120,22 +104,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -OutputPath
-Destination path for the Markdown file.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: FilePath, Path
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -PassThru
 Emit a FileInfo for chaining.
 
@@ -152,369 +120,17 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -PdfApplyWordLikeTheme
-Apply the built-in Word-like Markdown PDF baseline theme.
-
-```yaml
-Type: Boolean
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfAuthor
-PDF author metadata.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfBaseDirectory
-Base directory used to resolve local Markdown images during PDF export.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfConversionReportVariable
-Variable name that receives the Markdown PDF conversion report.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfCreateOutlineFromHeadings
-Create PDF outlines from Markdown headings.
-
-```yaml
-Type: Boolean
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfDefaultImageHeight
-Fallback PDF image height in points.
-
-```yaml
-Type: Double
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfDefaultImageWidth
-Fallback PDF image width in points.
-
-```yaml
-Type: Double
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfFontFamily
-Default font family used by Markdown PDF export.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfFrontMatterRenderMode
-Controls how YAML front matter appears in the PDF body.
-
-```yaml
-Type: MarkdownPdfFrontMatterRenderMode
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values: Hidden, DocumentHeader, Table
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfIncludeDataUriImages
-Embed supported data URI images in Markdown PDF output.
-
-```yaml
-Type: Boolean
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfIncludeLocalImages
-Embed supported local image files in Markdown PDF output.
-
-```yaml
-Type: Boolean
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfKeywords
-PDF keywords metadata.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfMaximumDataUriImageBytes
-Maximum decoded bytes for one data URI image in Markdown PDF output.
-
-```yaml
-Type: Int32
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfOptions
-Underlying OfficeIMO.Pdf options used by Markdown PDF export.
-
-```yaml
-Type: PdfOptions
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfPath
-Optional PDF path to create from the same Markdown document.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfRestrictLocalImagesToBaseDirectory
-Require local images to resolve under the base directory.
-
-```yaml
-Type: Boolean
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfSubject
-PDF subject metadata.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfTheme
-Built-in Markdown PDF visual theme.
-
-```yaml
-Type: OfficeVisualThemeKind
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values: Plain, WordLike, TechnicalDocument, GitHubLike, Compact, Report
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfTitle
-PDF title metadata.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfUseFirstHeadingAsTitle
-Use the first Markdown heading as the PDF title when no title is supplied.
-
-```yaml
-Type: Boolean
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfUseFrontMatterMetadata
-Use front matter values as PDF metadata.
-
-```yaml
-Type: Boolean
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfUseFrontMatterVisualTheme
-Use front matter values to select a visual theme.
-
-```yaml
-Type: Boolean
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfWarningVariable
-Variable name that receives Markdown PDF export warnings.
+### -Path
+Destination path for the Markdown file.
 
 ```yaml
 Type: String
 Parameter Sets: __AllParameterSets
-Aliases: None
+Aliases: FilePath, OutputPath
 Possible values:
 
-Required: False
-Position: named
+Required: True
+Position: 0
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
diff --git a/Docs/New-OfficeOpenDocument.md b/Docs/New-OfficeOpenDocument.md
index 9e9d9261..fb23fa89 100644
--- a/Docs/New-OfficeOpenDocument.md
+++ b/Docs/New-OfficeOpenDocument.md
@@ -11,7 +11,7 @@ Creates a native ODT, ODS, or ODP document.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-New-OfficeOpenDocument [-Kind]  [[-Path] ] [-WhatIf] [-Confirm] []
+New-OfficeOpenDocument [-Kind]  [[-Path] ] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -43,6 +43,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the saved file when a destination path is supplied.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Path
 Optional initial destination path.
 
@@ -69,6 +85,7 @@ This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable
 ## OUTPUTS
 
 - `OfficeIMO.OpenDocument.OdfDocument`
+- `System.IO.FileInfo`
 
 ## RELATED LINKS
 
diff --git a/Docs/New-OfficePdf.md b/Docs/New-OfficePdf.md
index 241b6835..29515b34 100644
--- a/Docs/New-OfficePdf.md
+++ b/Docs/New-OfficePdf.md
@@ -11,12 +11,12 @@ Creates a PDF document using the OfficeIMO.Pdf composition engine.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-New-OfficePdf [[-Path] ] [[-Content] ] [-PassThru] [-NoSave] [-Show] [-DefaultFont ] [-DefaultFontSize ] [-Theme ] [-FontFamily ] [-RegularFontPath ] [-BoldFontPath ] [-ItalicFontPath ] [-BoldItalicFontPath ] [-FileVersion ] [-CreateOutlineFromHeadings] [-OutlineExpansionLevel ] [-PageMode ] [-PageLayout ] [-IncludePageLabels] [-PageLabelPrefix ] [-OpenActionPage ] [-OpenActionMode ] [-OpenActionTop ] [-DisplayDocTitle] [-FitWindow] [-CenterWindow] [-HideToolbar] [-HideMenubar] [-HideWindowUI] [-FlattenVisualAnnotations] [-Password ] [-OwnerPassword ] [-Permission ] [-WhatIf] [-Confirm] []
+New-OfficePdf [[-Path] ] [[-Content] ] [-PassThru] [-NoSave] [-Open] [-DefaultFont ] [-DefaultFontSize ] [-Theme ] [-FontFamily ] [-RegularFontPath ] [-BoldFontPath ] [-ItalicFontPath ] [-BoldItalicFontPath ] [-FileVersion ] [-CreateOutlineFromHeadings] [-OutlineExpansionLevel ] [-PageMode ] [-PageLayout ] [-IncludePageLabels] [-PageLabelPrefix ] [-OpenActionPage ] [-OpenActionMode ] [-OpenActionTop ] [-DisplayDocTitle] [-FitWindow] [-CenterWindow] [-HideToolbar] [-HideMenubar] [-HideWindowUI] [-FlattenVisualAnnotations] [-Password ] [-OwnerPassword ] [-Permission ] [-WhatIf] [-Confirm] []
 ```
 
 ### Content
 ```powershell
-New-OfficePdf [[-Content] ] [-PassThru] [-NoSave] [-Show] [-DefaultFont ] [-DefaultFontSize ] [-Theme ] [-FontFamily ] [-RegularFontPath ] [-BoldFontPath ] [-ItalicFontPath ] [-BoldItalicFontPath ] [-FileVersion ] [-CreateOutlineFromHeadings] [-OutlineExpansionLevel ] [-PageMode ] [-PageLayout ] [-IncludePageLabels] [-PageLabelPrefix ] [-OpenActionPage ] [-OpenActionMode ] [-OpenActionTop ] [-DisplayDocTitle] [-FitWindow] [-CenterWindow] [-HideToolbar] [-HideMenubar] [-HideWindowUI] [-FlattenVisualAnnotations] [-Password ] [-OwnerPassword ] [-Permission ] [-WhatIf] [-Confirm] []
+New-OfficePdf [[-Content] ] [-PassThru] [-NoSave] [-Open] [-DefaultFont ] [-DefaultFontSize ] [-Theme ] [-FontFamily ] [-RegularFontPath ] [-BoldFontPath ] [-ItalicFontPath ] [-BoldItalicFontPath ] [-FileVersion ] [-CreateOutlineFromHeadings] [-OutlineExpansionLevel ] [-PageMode ] [-PageLayout ] [-IncludePageLabels] [-PageLabelPrefix ] [-OpenActionPage ] [-OpenActionMode ] [-OpenActionTop ] [-DisplayDocTitle] [-FitWindow] [-CenterWindow] [-HideToolbar] [-HideMenubar] [-HideWindowUI] [-FlattenVisualAnnotations] [-Password ] [-OwnerPassword ] [-Permission ] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -29,7 +29,7 @@ Use -NoSave or omit -Path when a document object should be returned for further
 
 ### EXAMPLE 1
 ```powershell
-PS> New-OfficePdf -Path .\Report.pdf { PdfHeading 'Report'; PdfParagraph 'Generated by PSWriteOffice' } -Show
+PS> New-OfficePdf -Path .\Report.pdf { PdfHeading 'Report'; PdfParagraph 'Generated by PSWriteOffice' } -Open
 ```
 
 Builds a PDF and opens it after saving.
@@ -347,6 +347,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Open
+Open the PDF after saving.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: Path, Content
+Aliases: Show
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -OpenActionMode
 Open-action destination mode.
 
@@ -555,22 +571,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Show
-Open the PDF after saving.
-
-```yaml
-Type: SwitchParameter
-Parameter Sets: Path, Content
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -Theme
 Built-in OfficeIMO.Pdf theme applied before the DSL content runs.
 
diff --git a/Docs/New-OfficePowerPoint.md b/Docs/New-OfficePowerPoint.md
index ae546055..1a1e6c59 100644
--- a/Docs/New-OfficePowerPoint.md
+++ b/Docs/New-OfficePowerPoint.md
@@ -11,7 +11,7 @@ Creates a PowerPoint presentation using the DSL.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-New-OfficePowerPoint [-FilePath]  [[-Content] ] [-Open] [-NoSave] [-PassThru] [-Password ] [-PdfPath ] [-WhatIf] [-Confirm] []
+New-OfficePowerPoint [-Path]  [[-Content] ] [-Open] [-NoSave] [-PassThru] [-Password ] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -21,10 +21,10 @@ Initializes a presentation, runs the DSL script block, and optionally saves the
 
 ### EXAMPLE 1
 ```powershell
-PS> $ppt = New-OfficePowerPoint -FilePath .\deck.pptx
+PS> $ppt = New-OfficePowerPoint -Path .\deck.pptx -NoSave
 ```
 
-Creates deck.pptx and returns the live presentation object for further editing.
+Creates a live presentation associated with deck.pptx for incremental composition.
 
 ### EXAMPLE 2
 ```powershell
@@ -51,22 +51,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -FilePath
-Destination path for the new .pptx.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: Path
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -NoSave
 Skip saving after executing the DSL.
 
@@ -100,7 +84,7 @@ Accept wildcard characters: False
 ```
 
 ### -PassThru
-Emit a FileInfo for chaining.
+Emit the saved FileInfo for chaining.
 
 ```yaml
 Type: SwitchParameter
@@ -131,17 +115,17 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -PdfPath
-Optional PDF path to create from the same presentation before closing it.
+### -Path
+Destination path for the new .pptx.
 
 ```yaml
 Type: String
 Parameter Sets: __AllParameterSets
-Aliases: None
+Aliases: FilePath
 Possible values:
 
-Required: False
-Position: named
+Required: True
+Position: 0
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
diff --git a/Docs/New-OfficeRtf.md b/Docs/New-OfficeRtf.md
index aade14f5..5768907b 100644
--- a/Docs/New-OfficeRtf.md
+++ b/Docs/New-OfficeRtf.md
@@ -11,7 +11,7 @@ Creates an RTF document with plain paragraph content.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-New-OfficeRtf [-OutputPath]  [[-Text] ] [-PassThru] [-NoSave] [-WhatIf] [-Confirm] []
+New-OfficeRtf [-Path]  [[-Text] ] [-PassThru] [-NoSave] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -45,33 +45,33 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -OutputPath
-Destination path for the RTF file.
+### -PassThru
+Emit a FileInfo for chaining.
 
 ```yaml
-Type: String
+Type: SwitchParameter
 Parameter Sets: __AllParameterSets
-Aliases: FilePath, Path
+Aliases: None
 Possible values:
 
-Required: True
-Position: 0
+Required: False
+Position: named
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -PassThru
-Emit a FileInfo for chaining.
+### -Path
+Destination path for the RTF file.
 
 ```yaml
-Type: SwitchParameter
+Type: String
 Parameter Sets: __AllParameterSets
-Aliases: None
+Aliases: FilePath, OutputPath
 Possible values:
 
-Required: False
-Position: named
+Required: True
+Position: 0
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
diff --git a/Docs/New-OfficeVisio.md b/Docs/New-OfficeVisio.md
index 637c3d49..c8733063 100644
--- a/Docs/New-OfficeVisio.md
+++ b/Docs/New-OfficeVisio.md
@@ -11,7 +11,7 @@ Creates a new OfficeIMO.Visio document with an initial page and optional DSL con
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-New-OfficeVisio [-Path]  [[-Content] ] [-PageName ] [-Width ] [-Height ] [-Unit ] [-Title ] [-Author ] [-RequestRecalcOnOpen] [-UseMastersByDefault] [-NoSave] [-Show] [-PassThru] [-WhatIf] [-Confirm] []
+New-OfficeVisio [-Path]  [[-Content] ] [-PageName ] [-Width ] [-Height ] [-Unit ] [-Title ] [-Author ] [-RequestRecalcOnOpen] [-UseMastersByDefault] [-NoSave] [-Open] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -96,6 +96,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Open
+Open the document after saving.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: Show
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -PageName
 Initial page name.
 
@@ -160,22 +176,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Show
-Open the document after saving.
-
-```yaml
-Type: SwitchParameter
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -Title
 Optional document title.
 
diff --git a/Docs/New-OfficeWord.md b/Docs/New-OfficeWord.md
index 08585422..f4c88bbb 100644
--- a/Docs/New-OfficeWord.md
+++ b/Docs/New-OfficeWord.md
@@ -11,7 +11,7 @@ Creates a Word document using the DSL.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-New-OfficeWord [-OutputPath]  [[-Content] ] [-TemplatePath ] [-PassThru] [-Open] [-NoSave] [-AutoSave] [-Password ] [-PdfPath ] [-PdfFontFamily ] [-PdfAllowSystemFontEmbedding] [-WhatIf] [-Confirm] []
+New-OfficeWord [-Path]  [[-Content] ] [-TemplatePath ] [-PassThru] [-Open] [-NoSave] [-Password ] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -45,22 +45,6 @@ Associates the output path with a live document, adds content through the pipeli
 
 ## PARAMETERS
 
-### -AutoSave
-Enable OfficeIMO AutoSave mode.
-
-```yaml
-Type: SwitchParameter
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -Content
 DSL scriptblock describing document content.
 
@@ -109,22 +93,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -OutputPath
-Destination path for the document.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: FilePath, Path
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -PassThru
 Emit a FileInfo for chaining.
 
@@ -157,49 +125,17 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -PdfAllowSystemFontEmbedding
-Allow the native Word PDF converter to embed installed system fonts used by the document.
-
-```yaml
-Type: SwitchParameter
-Parameter Sets: __AllParameterSets
-Aliases: AllowSystemFontEmbedding
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfFontFamily
-Optional default font family used by the native Word PDF converter.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfPath
-Optional PDF path to create from the same Word document before closing it.
+### -Path
+Destination path for the document.
 
 ```yaml
 Type: String
 Parameter Sets: __AllParameterSets
-Aliases: None
+Aliases: FilePath, OutputPath
 Possible values:
 
-Required: False
-Position: named
+Required: True
+Position: 0
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
diff --git a/Docs/Protect-OfficeExcelWorkbook.md b/Docs/Protect-OfficeExcelWorkbook.md
index 2a47241d..e44bfcad 100644
--- a/Docs/Protect-OfficeExcelWorkbook.md
+++ b/Docs/Protect-OfficeExcelWorkbook.md
@@ -16,7 +16,7 @@ Protect-OfficeExcelWorkbook [-NoStructure] [-ProtectWindows] [-Password 
 
 ### Path
 ```powershell
-Protect-OfficeExcelWorkbook [-InputPath]  [-NoStructure] [-ProtectWindows] [-Password ] [-LegacyPasswordHash ] [-PassThru] [-WhatIf] [-Confirm] []
+Protect-OfficeExcelWorkbook [-Path]  [-NoStructure] [-ProtectWindows] [-Password ] [-LegacyPasswordHash ] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -56,22 +56,6 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Workbook path to update.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -LegacyPasswordHash
 Optional precomputed legacy workbook protection hash to write as-is.
 
@@ -136,6 +120,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Workbook path to update.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -ProtectWindows
 Protect workbook windows where supported by the consuming application.
 
diff --git a/Docs/Readme.md b/Docs/Readme.md
index 00e22020..f156c3c1 100644
--- a/Docs/Readme.md
+++ b/Docs/Readme.md
@@ -595,6 +595,9 @@ Runs a script block against editable worksheet rows.
 ### [Export-OfficeCsv](Export-OfficeCsv.md)
 Exports objects or a CSV document to a CSV file.
 
+### [Export-OfficeDocumentPdf](Export-OfficeDocumentPdf.md)
+Exports a Word, Excel, PowerPoint, Markdown, or RTF document to PDF.
+
 ### [Export-OfficeExcel](Export-OfficeExcel.md)
 Exports PowerShell objects to an Excel workbook using an operator-friendly surface.
 
@@ -1166,7 +1169,7 @@ Saves an Excel workbook without disposing it.
 Saves an OfficeIMO LaTeX document.
 
 ### [Save-OfficeMarkdown](Save-OfficeMarkdown.md)
-Saves a Markdown document and optionally creates a PDF sidecar.
+Saves a Markdown document without changing its lifetime.
 
 ### [Save-OfficeOpenDocument](Save-OfficeOpenDocument.md)
 Saves a native OpenDocument model with entry-level preservation diagnostics.
diff --git a/Docs/Remove-OfficeConfluencePage.md b/Docs/Remove-OfficeConfluencePage.md
index 42013673..0fe60a4c 100644
--- a/Docs/Remove-OfficeConfluencePage.md
+++ b/Docs/Remove-OfficeConfluencePage.md
@@ -11,7 +11,7 @@ Plans or deletes a Confluence Cloud page.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Remove-OfficeConfluencePage [-PageId]  [-Session ] [-Purge] [-Draft] [-PlanOnly] [-WhatIf] [-Confirm] []
+Remove-OfficeConfluencePage [-PageId]  [-Session ] [-Purge] [-Draft] [-PlanOnly] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -67,6 +67,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Return the completed delete plan after a live operation.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -PlanOnly
 Return the exact delete plan without contacting Confluence.
 
diff --git a/Docs/Remove-OfficePdfAnnotation.md b/Docs/Remove-OfficePdfAnnotation.md
index 378d804f..9843a6b2 100644
--- a/Docs/Remove-OfficePdfAnnotation.md
+++ b/Docs/Remove-OfficePdfAnnotation.md
@@ -11,7 +11,7 @@ Removes PDF annotations matching friendly filters.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Remove-OfficePdfAnnotation [-Path]  [-OutputPath]  [-Password ] [-IgnorePermissionRestrictions] [-ObjectNumber ] [-PageNumber ] [-Subtype ] [-KeepPopups] [-PassThruReport] [-WhatIf] [-Confirm] []
+Remove-OfficePdfAnnotation [-Path]  [-OutputPath]  [-Password ] [-IgnorePermissionRestrictions] [-ObjectNumber ] [-PageNumber ] [-Subtype ] [-KeepPopups] [-PassThruReport] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -107,6 +107,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -PassThruReport
 Return the annotation edit result instead of the output file.
 
diff --git a/Docs/Remove-OfficePdfPage.md b/Docs/Remove-OfficePdfPage.md
index 10ce0e7d..81aa5efd 100644
--- a/Docs/Remove-OfficePdfPage.md
+++ b/Docs/Remove-OfficePdfPage.md
@@ -11,7 +11,7 @@ Removes selected pages from a PDF and writes a new PDF.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Remove-OfficePdfPage -Path  -PageRange  -OutputPath  [-Password ] [-IgnorePermissionRestrictions] [-WhatIf] [-Confirm] []
+Remove-OfficePdfPage -Path  -PageRange  -OutputPath  [-Password ] [-IgnorePermissionRestrictions] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -80,6 +80,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Password
 Password used to authenticate an encrypted PDF.
 
diff --git a/Docs/Remove-OfficePowerPointSlide.md b/Docs/Remove-OfficePowerPointSlide.md
index 6cd26402..3d60c3af 100644
--- a/Docs/Remove-OfficePowerPointSlide.md
+++ b/Docs/Remove-OfficePowerPointSlide.md
@@ -11,7 +11,7 @@ Removes a slide by index.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Remove-OfficePowerPointSlide -Presentation  -Index  [-WhatIf] [-Confirm] []
+Remove-OfficePowerPointSlide -Presentation  -Index  [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -21,7 +21,7 @@ Supports -WhatIf/-Confirm thanks to SupportsShouldProcess.
 
 ### EXAMPLE 1
 ```powershell
-PS> $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointRemoveSlide.pptx
+PS> $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRemoveSlide.pptx
 Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null
 Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null
 Remove-OfficePowerPointSlide -Presentation $ppt -Index 0 -Confirm:$false
@@ -48,6 +48,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Presentation
 Presentation to modify.
 
diff --git a/Docs/Rename-OfficePowerPointSection.md b/Docs/Rename-OfficePowerPointSection.md
index d3e48f71..e4d9f485 100644
--- a/Docs/Rename-OfficePowerPointSection.md
+++ b/Docs/Rename-OfficePowerPointSection.md
@@ -21,7 +21,7 @@ Renames a PowerPoint section.
 
 ### EXAMPLE 1
 ```powershell
-PS> $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointRenameSection.pptx
+PS> $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRenameSection.pptx
 Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null
 Add-OfficePowerPointSection -Presentation $ppt -Name 'Results' -StartSlideIndex 0 | Out-Null
 Rename-OfficePowerPointSection -Presentation $ppt -Name 'Results' -NewName 'Deep Dive' -PassThru
diff --git a/Docs/Repair-OfficeExcelWorkbook.md b/Docs/Repair-OfficeExcelWorkbook.md
index 45c0f841..06a65ae3 100644
--- a/Docs/Repair-OfficeExcelWorkbook.md
+++ b/Docs/Repair-OfficeExcelWorkbook.md
@@ -11,7 +11,7 @@ Runs OfficeIMO safe workbook repairs for common package, table, view, print, dra
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Repair-OfficeExcelWorkbook [-InputPath]  [-SkipDefinedNames] [-SkipTables] [-SkipSheetViews] [-SkipPrintSettings] [-SkipDrawings] [-SkipCalculation] [-NoSave] [-PassThru] [-WhatIf] [-Confirm] []
+Repair-OfficeExcelWorkbook [-Path]  [-SkipDefinedNames] [-SkipTables] [-SkipSheetViews] [-SkipPrintSettings] [-SkipDrawings] [-SkipCalculation] [-NoSave] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -53,22 +53,6 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Workbook path to repair.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -NoSave
 Do not save after applying repairs to an open document.
 
@@ -101,6 +85,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Workbook path to repair.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -SkipCalculation
 Skip calculation-chain cleanup and recalc-on-open metadata.
 
diff --git a/Docs/Save-OfficeEmail.md b/Docs/Save-OfficeEmail.md
index c8984548..0d914b96 100644
--- a/Docs/Save-OfficeEmail.md
+++ b/Docs/Save-OfficeEmail.md
@@ -11,7 +11,7 @@ Saves an email document as EML, EMLX, MSG, or TNEF with fidelity diagnostics.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Save-OfficeEmail [-Path]  -Document  [-Format ] [-Options ] [-WhatIf] [-Confirm] []
+Save-OfficeEmail [-Path]  -Document  [-Format ] [-Options ] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -75,6 +75,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Path
 Destination path.
 
diff --git a/Docs/Save-OfficeEmailMailbox.md b/Docs/Save-OfficeEmailMailbox.md
index f9a992c7..8ecd4d61 100644
--- a/Docs/Save-OfficeEmailMailbox.md
+++ b/Docs/Save-OfficeEmailMailbox.md
@@ -11,7 +11,7 @@ Saves a native mbox mailbox with output diagnostics.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Save-OfficeEmailMailbox [-Path]  -Mailbox  [-Options ] [-WhatIf] [-Confirm] []
+Save-OfficeEmailMailbox [-Path]  -Mailbox  [-Options ] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -59,6 +59,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Path
 Destination mbox path.
 
diff --git a/Docs/Save-OfficeExcel.md b/Docs/Save-OfficeExcel.md
index 93b6c9cf..1e3fda16 100644
--- a/Docs/Save-OfficeExcel.md
+++ b/Docs/Save-OfficeExcel.md
@@ -11,7 +11,7 @@ Saves an Excel workbook without disposing it.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Save-OfficeExcel [-Document]  [-Path ] [-Show] [-Password ] [-SafePreflight] [-SafeRepairDefinedNames] [-ValidateOpenXml] [-DisableFastPackageWriter] [-EvaluateFormulas] [-ClearCachedFormulaResults] [-MarkFormulasDirty] [-ForceFullCalculationOnOpen] [-PdfPath ] [-DateSystem ] [-PassThru] [-WhatIf] [-Confirm] []
+Save-OfficeExcel [-Document]  [-Path ] [-Open] [-Password ] [-SafePreflight] [-SafeRepairDefinedNames] [-ValidateOpenXml] [-DisableFastPackageWriter] [-EvaluateFormulas] [-ClearCachedFormulaResults] [-MarkFormulasDirty] [-ForceFullCalculationOnOpen] [-DateSystem ] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -140,13 +140,13 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -PassThru
-Emit the workbook for further processing.
+### -Open
+Open the workbook after saving.
 
 ```yaml
 Type: SwitchParameter
 Parameter Sets: __AllParameterSets
-Aliases: None
+Aliases: Show
 Possible values:
 
 Required: False
@@ -156,11 +156,11 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Password
-Password used to save the workbook as an encrypted package.
+### -PassThru
+Emit the workbook for further processing.
 
 ```yaml
-Type: String
+Type: SwitchParameter
 Parameter Sets: __AllParameterSets
 Aliases: None
 Possible values:
@@ -172,8 +172,8 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Path
-Optional save-as path.
+### -Password
+Password used to save the workbook as an encrypted package.
 
 ```yaml
 Type: String
@@ -188,8 +188,8 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -PdfPath
-Optional PDF path to create from the same workbook.
+### -Path
+Optional save-as path.
 
 ```yaml
 Type: String
@@ -236,22 +236,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Show
-Open the workbook after saving.
-
-```yaml
-Type: SwitchParameter
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -ValidateOpenXml
 Validate the saved package with OpenXmlValidator and throw on errors.
 
diff --git a/Docs/Save-OfficeMarkdown.md b/Docs/Save-OfficeMarkdown.md
index d7058f84..d829c50b 100644
--- a/Docs/Save-OfficeMarkdown.md
+++ b/Docs/Save-OfficeMarkdown.md
@@ -6,25 +6,25 @@ schema: 2.0.0
 ---
 # Save-OfficeMarkdown
 ## SYNOPSIS
-Saves a Markdown document and optionally creates a PDF sidecar.
+Saves a Markdown document without changing its lifetime.
 
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Save-OfficeMarkdown [-Document]  [[-Path] ] [-PdfPath ] [-WriteOptions ] [-WriteProfile ] [-ImageRenderingMode ] [-LineEnding ] [-UnorderedListMarker ] [-MarkdownPdfOptions ] [-PdfOptions ] [-PdfTheme ] [-PdfFontFamily ] [-PdfTitle ] [-PdfAuthor ] [-PdfSubject ] [-PdfKeywords ] [-PdfBaseDirectory ] [-PdfApplyWordLikeTheme ] [-PdfIncludeLocalImages ] [-PdfIncludeDataUriImages ] [-PdfRestrictLocalImagesToBaseDirectory ] [-PdfMaximumDataUriImageBytes ] [-PdfDefaultImageWidth ] [-PdfDefaultImageHeight ] [-PdfFrontMatterRenderMode ] [-PdfUseFrontMatterVisualTheme ] [-PdfUseFrontMatterMetadata ] [-PdfUseFirstHeadingAsTitle ] [-PdfCreateOutlineFromHeadings ] [-PdfWarningVariable ] [-PdfConversionReportVariable ] [-PassThru] [-WhatIf] [-Confirm] []
+Save-OfficeMarkdown [-Document]  [-Path]  [-WriteOptions ] [-WriteProfile ] [-ImageRenderingMode ] [-LineEnding ] [-UnorderedListMarker ] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
-Saves a Markdown document and optionally creates a PDF sidecar.
+Saves a Markdown document without changing its lifetime.
 
 ## EXAMPLES
 
 ### EXAMPLE 1
 ```powershell
-PS> $doc | Save-OfficeMarkdown -Path .\Report.md -PdfPath .\Report.pdf
+PS> $doc | Save-OfficeMarkdown -Path .\Report.md
 ```
 
-Writes both artifacts from the same Markdown document model.
+Writes the Markdown artifact and keeps the document available for further changes.
 
 ## PARAMETERS
 
@@ -76,22 +76,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -MarkdownPdfOptions
-Advanced Markdown PDF options. Friendly PDF parameters override matching values.
-
-```yaml
-Type: MarkdownPdfSaveOptions
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -PassThru
 Emit the Markdown document rather than the saved file.
 
@@ -117,381 +101,13 @@ Parameter Sets: __AllParameterSets
 Aliases: FilePath
 Possible values:
 
-Required: False
+Required: True
 Position: 1
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -PdfApplyWordLikeTheme
-Apply the built-in Word-like Markdown PDF baseline theme.
-
-```yaml
-Type: Boolean
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfAuthor
-PDF author metadata.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfBaseDirectory
-Base directory used to resolve local Markdown images during PDF export.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfConversionReportVariable
-Variable name that receives the Markdown PDF conversion report.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfCreateOutlineFromHeadings
-Create PDF outlines from Markdown headings.
-
-```yaml
-Type: Boolean
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfDefaultImageHeight
-Fallback PDF image height in points.
-
-```yaml
-Type: Double
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfDefaultImageWidth
-Fallback PDF image width in points.
-
-```yaml
-Type: Double
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfFontFamily
-Default font family used by Markdown PDF export.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfFrontMatterRenderMode
-Controls how YAML front matter appears in the PDF body.
-
-```yaml
-Type: MarkdownPdfFrontMatterRenderMode
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values: Hidden, DocumentHeader, Table
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfIncludeDataUriImages
-Embed supported data URI images in Markdown PDF output.
-
-```yaml
-Type: Boolean
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfIncludeLocalImages
-Embed supported local image files in Markdown PDF output.
-
-```yaml
-Type: Boolean
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfKeywords
-PDF keywords metadata.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfMaximumDataUriImageBytes
-Maximum decoded bytes for one data URI image in Markdown PDF output.
-
-```yaml
-Type: Int32
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfOptions
-Underlying OfficeIMO.Pdf options used by Markdown PDF export.
-
-```yaml
-Type: PdfOptions
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfPath
-Optional PDF path to create from the same Markdown document.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfRestrictLocalImagesToBaseDirectory
-Require local images to resolve under the base directory.
-
-```yaml
-Type: Boolean
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfSubject
-PDF subject metadata.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfTheme
-Built-in Markdown PDF visual theme.
-
-```yaml
-Type: OfficeVisualThemeKind
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values: Plain, WordLike, TechnicalDocument, GitHubLike, Compact, Report
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfTitle
-PDF title metadata.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfUseFirstHeadingAsTitle
-Use the first Markdown heading as the PDF title when no title is supplied.
-
-```yaml
-Type: Boolean
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfUseFrontMatterMetadata
-Use front matter values as PDF metadata.
-
-```yaml
-Type: Boolean
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfUseFrontMatterVisualTheme
-Use front matter values to select a visual theme.
-
-```yaml
-Type: Boolean
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfWarningVariable
-Variable name that receives Markdown PDF export warnings.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -UnorderedListMarker
 Unordered list marker: '-', '*', or '+'.
 
@@ -550,7 +166,6 @@ This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable
 ## OUTPUTS
 
 - `OfficeIMO.Markdown.MarkdownDoc`
-- `System.IO.FileInfo`
 
 ## RELATED LINKS
 
diff --git a/Docs/Save-OfficeOpenDocument.md b/Docs/Save-OfficeOpenDocument.md
index 72790789..2a4cfc1e 100644
--- a/Docs/Save-OfficeOpenDocument.md
+++ b/Docs/Save-OfficeOpenDocument.md
@@ -11,7 +11,7 @@ Saves a native OpenDocument model with entry-level preservation diagnostics.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Save-OfficeOpenDocument [-Path]  -Document  [-Options ] [-FailOnLoss] [-WhatIf] [-Confirm] []
+Save-OfficeOpenDocument [-Path]  -Document  [-Options ] [-FailOnLoss] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -75,6 +75,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the save result, including preservation diagnostics.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Path
 Destination path.
 
diff --git a/Docs/Save-OfficePdf.md b/Docs/Save-OfficePdf.md
index a3ca66e6..1d7f8f11 100644
--- a/Docs/Save-OfficePdf.md
+++ b/Docs/Save-OfficePdf.md
@@ -11,7 +11,7 @@ Saves an OfficeIMO.Pdf document.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Save-OfficePdf [-Document]  [-Path]  [-Show] [-PassThru] [-Password ] [-OwnerPassword ] [-Permission ] [-WhatIf] [-Confirm] []
+Save-OfficePdf [-Document]  [-Path]  [-Open] [-PassThru] [-Password ] [-OwnerPassword ] [-Permission ] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -46,6 +46,22 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
+### -Open
+Open the PDF after saving.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: Show
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -OwnerPassword
 Optional owner password for the generated encrypted PDF.
 
@@ -63,7 +79,7 @@ Accept wildcard characters: False
 ```
 
 ### -PassThru
-Emit the document instead of the saved file.
+Emit the document for further processing.
 
 ```yaml
 Type: SwitchParameter
@@ -126,22 +142,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Show
-Open the PDF after saving.
-
-```yaml
-Type: SwitchParameter
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### CommonParameters
 This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
 
@@ -152,7 +152,6 @@ This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable
 ## OUTPUTS
 
 - `OfficeIMO.Pdf.PdfDocument`
-- `System.IO.FileInfo`
 
 ## RELATED LINKS
 
diff --git a/Docs/Save-OfficePowerPoint.md b/Docs/Save-OfficePowerPoint.md
index 301976f8..7eb76363 100644
--- a/Docs/Save-OfficePowerPoint.md
+++ b/Docs/Save-OfficePowerPoint.md
@@ -11,7 +11,7 @@ Saves a presentation without disposing it.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Save-OfficePowerPoint -Presentation  [-Path ] [-Show] [-Password ] [-PdfPath ] [-PassThru] [-WhatIf] [-Confirm] []
+Save-OfficePowerPoint -Presentation  [-Path ] [-Open] [-Password ] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -21,23 +21,23 @@ Use Close-OfficePowerPoint -Save when the presentation should be saved and close
 
 ### EXAMPLE 1
 ```powershell
-PS> $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointSave.pptx
+PS> $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSave.pptx
 $slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1
 Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Saved later'
-Save-OfficePowerPoint -Presentation $ppt -PdfPath .\Examples\Documents\PowerPointSave.pdf
+Save-OfficePowerPoint -Presentation $ppt
 ```
 
-Saves the current presentation and exports a PDF sidecar.
+Saves the current presentation without closing it.
 
 ## PARAMETERS
 
-### -PassThru
-Emit the still-open presentation for further processing.
+### -Open
+Launch the saved file in the default viewer.
 
 ```yaml
 Type: SwitchParameter
 Parameter Sets: __AllParameterSets
-Aliases: None
+Aliases: Show
 Possible values:
 
 Required: False
@@ -47,11 +47,11 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Password
-Password used to save the presentation as an encrypted package.
+### -PassThru
+Emit the still-open presentation for further processing.
 
 ```yaml
-Type: String
+Type: SwitchParameter
 Parameter Sets: __AllParameterSets
 Aliases: None
 Possible values:
@@ -63,13 +63,13 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Path
-Optional save-as path.
+### -Password
+Password used to save the presentation as an encrypted package.
 
 ```yaml
 Type: String
 Parameter Sets: __AllParameterSets
-Aliases: FilePath
+Aliases: None
 Possible values:
 
 Required: False
@@ -79,13 +79,13 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -PdfPath
-Optional PDF path to create from the same presentation.
+### -Path
+Optional save-as path.
 
 ```yaml
 Type: String
 Parameter Sets: __AllParameterSets
-Aliases: None
+Aliases: FilePath
 Possible values:
 
 Required: False
@@ -111,22 +111,6 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -Show
-Launch the saved file in the default viewer.
-
-```yaml
-Type: SwitchParameter
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### CommonParameters
 This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
 
diff --git a/Docs/Save-OfficeVisio.md b/Docs/Save-OfficeVisio.md
index 1f052fd4..9ebd942a 100644
--- a/Docs/Save-OfficeVisio.md
+++ b/Docs/Save-OfficeVisio.md
@@ -11,7 +11,7 @@ Saves an OfficeIMO.Visio document.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Save-OfficeVisio [-Document]  [[-Path] ] [-Show] [-PassThru] [-WhatIf] [-Confirm] []
+Save-OfficeVisio [-Document]  [[-Path] ] [-Open] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -45,13 +45,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -PassThru
-Emit the document object instead of the saved file.
+### -Open
+Open the document after saving.
 
 ```yaml
 Type: SwitchParameter
 Parameter Sets: __AllParameterSets
-Aliases: None
+Aliases: Show
 Possible values:
 
 Required: False
@@ -61,33 +61,33 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Path
-Optional save-as path.
+### -PassThru
+Emit the document object for further processing.
 
 ```yaml
-Type: String
+Type: SwitchParameter
 Parameter Sets: __AllParameterSets
-Aliases: FilePath
+Aliases: None
 Possible values:
 
 Required: False
-Position: 1
+Position: named
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Show
-Open the document after saving.
+### -Path
+Optional save-as path.
 
 ```yaml
-Type: SwitchParameter
+Type: String
 Parameter Sets: __AllParameterSets
-Aliases: None
+Aliases: FilePath
 Possible values:
 
 Required: False
-Position: named
+Position: 1
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
@@ -103,7 +103,6 @@ This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable
 ## OUTPUTS
 
 - `OfficeIMO.Visio.VisioDocument`
-- `System.IO.FileInfo`
 
 ## RELATED LINKS
 
diff --git a/Docs/Save-OfficeWord.md b/Docs/Save-OfficeWord.md
index c9ca7c36..fff29a24 100644
--- a/Docs/Save-OfficeWord.md
+++ b/Docs/Save-OfficeWord.md
@@ -11,7 +11,7 @@ Saves a Word document without disposing it.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Save-OfficeWord [-Document]  [-Path ] [-Show] [-Password ] [-PdfPath ] [-PdfFontFamily ] [-PdfAllowSystemFontEmbedding] [-PassThru] [-WhatIf] [-Confirm] []
+Save-OfficeWord [-Document]  [-Path ] [-Open] [-Password ] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -44,45 +44,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -PassThru
-Emit the document object for further processing.
+### -Open
+Open the document after saving.
 
 ```yaml
 Type: SwitchParameter
 Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -Password
-Password used to save the document as an encrypted package.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -Path
-Optional save-as path.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
-Aliases: FilePath
+Aliases: Show
 Possible values:
 
 Required: False
@@ -92,28 +60,12 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -PdfAllowSystemFontEmbedding
-Allow the native Word PDF converter to embed installed system fonts used by the document.
+### -PassThru
+Emit the document object for further processing.
 
 ```yaml
 Type: SwitchParameter
 Parameter Sets: __AllParameterSets
-Aliases: AllowSystemFontEmbedding
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
-### -PdfFontFamily
-Optional default font family used by the native Word PDF converter.
-
-```yaml
-Type: String
-Parameter Sets: __AllParameterSets
 Aliases: None
 Possible values:
 
@@ -124,8 +76,8 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -PdfPath
-Optional PDF path to create from the same Word document.
+### -Password
+Password used to save the document as an encrypted package.
 
 ```yaml
 Type: String
@@ -140,13 +92,13 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Show
-Open the document after saving.
+### -Path
+Optional save-as path.
 
 ```yaml
-Type: SwitchParameter
+Type: String
 Parameter Sets: __AllParameterSets
-Aliases: None
+Aliases: FilePath
 Possible values:
 
 Required: False
diff --git a/Docs/Set-OfficeExcelActiveSheet.md b/Docs/Set-OfficeExcelActiveSheet.md
index 86088268..68b37b8d 100644
--- a/Docs/Set-OfficeExcelActiveSheet.md
+++ b/Docs/Set-OfficeExcelActiveSheet.md
@@ -16,7 +16,7 @@ Set-OfficeExcelActiveSheet [-PassThru] [-WhatIf] [-Confirm] []
 
 ### Path
 ```powershell
-Set-OfficeExcelActiveSheet [-InputPath]  [-Sheet ] [-SheetIndex ] [-PassThru] [-WhatIf] [-Confirm] []
+Set-OfficeExcelActiveSheet [-Path]  [-Sheet ] [-SheetIndex ] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -56,33 +56,33 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Workbook path to update.
+### -PassThru
+Emit the activated worksheet.
 
 ```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
+Type: SwitchParameter
+Parameter Sets: Context, Path, Document
+Aliases: None
 Possible values:
 
-Required: True
-Position: 0
+Required: False
+Position: named
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -PassThru
-Emit the activated worksheet.
+### -Path
+Workbook path to update.
 
 ```yaml
-Type: SwitchParameter
-Parameter Sets: Context, Path, Document
-Aliases: None
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
 Possible values:
 
-Required: False
-Position: named
+Required: True
+Position: 0
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
diff --git a/Docs/Set-OfficeExcelCell.md b/Docs/Set-OfficeExcelCell.md
index f14baaa4..503a3563 100644
--- a/Docs/Set-OfficeExcelCell.md
+++ b/Docs/Set-OfficeExcelCell.md
@@ -11,12 +11,12 @@ Sets a cell value, formula, or number format within the current worksheet.
 ## SYNTAX
 ### Coordinates
 ```powershell
-Set-OfficeExcelCell [-Worksheet ] [-Document ] [-Sheet ] [-SheetIndex ] [-Row ] [-Column ] [-Value ] [-Formula ] [-NumberFormat ] [-BackgroundColor ] [-GradientFrom ] [-GradientTo ] [-GradientDegree ] []
+Set-OfficeExcelCell [-Worksheet ] [-Document ] [-Sheet ] [-SheetIndex ] [-Row ] [-Column ] [-Value ] [-Formula ] [-NumberFormat ] [-BackgroundColor ] [-GradientFrom ] [-GradientTo ] [-GradientDegree ] [-PassThru] []
 ```
 
 ### Address
 ```powershell
-Set-OfficeExcelCell [-Worksheet ] [-Document ] [-Sheet ] [-SheetIndex ] [-Address ] [-Value ] [-Formula ] [-NumberFormat ] [-BackgroundColor ] [-GradientFrom ] [-GradientTo ] [-GradientDegree ] []
+Set-OfficeExcelCell [-Worksheet ] [-Document ] [-Sheet ] [-SheetIndex ] [-Address ] [-Value ] [-Formula ] [-NumberFormat ] [-BackgroundColor ] [-GradientFrom ] [-GradientTo ] [-GradientDegree ] [-PassThru] []
 ```
 
 ## DESCRIPTION
@@ -184,6 +184,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: Coordinates, Address
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Row
 1-based row index.
 
diff --git a/Docs/Set-OfficeExcelChartAxis.md b/Docs/Set-OfficeExcelChartAxis.md
index 08d78b10..f4b1c590 100644
--- a/Docs/Set-OfficeExcelChartAxis.md
+++ b/Docs/Set-OfficeExcelChartAxis.md
@@ -11,7 +11,7 @@ Configures common Excel chart axis titles, formats, scale, and gridlines.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Set-OfficeExcelChartAxis -Chart  [-AxisGroup ] [-CategoryTitle ] [-ValueTitle ] [-CategoryNumberFormat ] [-ValueNumberFormat ] [-SourceLinked ] [-ValueMinimum ] [-ValueMaximum ] [-ValueMajorUnit ] [-ValueMinorUnit ] [-CategoryMinimum ] [-CategoryMaximum ] [-CategoryMajorUnit ] [-CategoryMinorUnit ] [-ShowCategoryMajorGridlines] [-ShowCategoryMinorGridlines] [-ShowValueMajorGridlines] [-ShowValueMinorGridlines] [-CategoryGridlineColor ] [-ValueGridlineColor ] [-GridlineWidthPoints ] []
+Set-OfficeExcelChartAxis -Chart  [-AxisGroup ] [-CategoryTitle ] [-ValueTitle ] [-CategoryNumberFormat ] [-ValueNumberFormat ] [-SourceLinked ] [-ValueMinimum ] [-ValueMaximum ] [-ValueMajorUnit ] [-ValueMinorUnit ] [-CategoryMinimum ] [-CategoryMaximum ] [-CategoryMajorUnit ] [-CategoryMinorUnit ] [-ShowCategoryMajorGridlines] [-ShowCategoryMinorGridlines] [-ShowValueMajorGridlines] [-ShowValueMinorGridlines] [-CategoryGridlineColor ] [-ValueGridlineColor ] [-GridlineWidthPoints ] [-PassThru] []
 ```
 
 ## DESCRIPTION
@@ -196,6 +196,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -ShowCategoryMajorGridlines
 Show category major gridlines.
 
diff --git a/Docs/Set-OfficeExcelChartDataLabels.md b/Docs/Set-OfficeExcelChartDataLabels.md
index 43733c2c..b4f09c30 100644
--- a/Docs/Set-OfficeExcelChartDataLabels.md
+++ b/Docs/Set-OfficeExcelChartDataLabels.md
@@ -11,7 +11,7 @@ Configures data labels and optional styling for an Excel chart.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Set-OfficeExcelChartDataLabels -Chart  [-ShowValue ] [-ShowCategoryName ] [-ShowSeriesName ] [-ShowLegendKey ] [-ShowPercent ] [-Position ] [-NumberFormat ] [-SourceLinked ] [-FontSizePoints ] [-Bold ] [-Italic ] [-Color ] [-FontName ] [-FillColor ] [-LineColor ] [-LineWidthPoints ] [-NoFill] [-NoLine] []
+Set-OfficeExcelChartDataLabels -Chart  [-ShowValue ] [-ShowCategoryName ] [-ShowSeriesName ] [-ShowLegendKey ] [-ShowPercent ] [-Position ] [-NumberFormat ] [-SourceLinked ] [-FontSizePoints ] [-Bold ] [-Italic ] [-Color ] [-FontName ] [-FillColor ] [-LineColor ] [-LineWidthPoints ] [-NoFill] [-NoLine] [-PassThru] []
 ```
 
 ## DESCRIPTION
@@ -220,6 +220,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Position
 Optional data label position.
 
diff --git a/Docs/Set-OfficeExcelChartLegend.md b/Docs/Set-OfficeExcelChartLegend.md
index 12696962..a23b1cf4 100644
--- a/Docs/Set-OfficeExcelChartLegend.md
+++ b/Docs/Set-OfficeExcelChartLegend.md
@@ -11,7 +11,7 @@ Configures legend visibility and styling for an Excel chart.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Set-OfficeExcelChartLegend -Chart  [-Position ] [-Overlay ] [-Hide] [-FontSizePoints ] [-Bold ] [-Italic ] [-Color ] [-FontName ] []
+Set-OfficeExcelChartLegend -Chart  [-Position ] [-Overlay ] [-Hide] [-FontSizePoints ] [-Bold ] [-Italic ] [-Color ] [-FontName ] [-PassThru] []
 ```
 
 ## DESCRIPTION
@@ -156,6 +156,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Position
 Legend position.
 
diff --git a/Docs/Set-OfficeExcelChartPoint.md b/Docs/Set-OfficeExcelChartPoint.md
index 3643ef8c..a60388a9 100644
--- a/Docs/Set-OfficeExcelChartPoint.md
+++ b/Docs/Set-OfficeExcelChartPoint.md
@@ -11,12 +11,12 @@ Configures fill and line styling for a single Excel chart data point.
 ## SYNTAX
 ### Index (Default)
 ```powershell
-Set-OfficeExcelChartPoint -Chart  -SeriesIndex  -PointIndex  [-FillColor ] [-LineColor ] [-LineWidthPoints ] []
+Set-OfficeExcelChartPoint -Chart  -SeriesIndex  -PointIndex  [-FillColor ] [-LineColor ] [-LineWidthPoints ] [-PassThru] []
 ```
 
 ### Name
 ```powershell
-Set-OfficeExcelChartPoint -Chart  -SeriesName  -PointIndex  [-IgnoreCase ] [-FillColor ] [-LineColor ] [-LineWidthPoints ] []
+Set-OfficeExcelChartPoint -Chart  -SeriesName  -PointIndex  [-IgnoreCase ] [-FillColor ] [-LineColor ] [-LineWidthPoints ] [-PassThru] []
 ```
 
 ## DESCRIPTION
@@ -113,6 +113,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: Index, Name
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -PointIndex
 Zero-based data point index within the series.
 
diff --git a/Docs/Set-OfficeExcelChartSeries.md b/Docs/Set-OfficeExcelChartSeries.md
index ff2b2a36..72a510d4 100644
--- a/Docs/Set-OfficeExcelChartSeries.md
+++ b/Docs/Set-OfficeExcelChartSeries.md
@@ -11,12 +11,12 @@ Configures Excel chart series colors, line style, and markers.
 ## SYNTAX
 ### Index (Default)
 ```powershell
-Set-OfficeExcelChartSeries -Chart  -SeriesIndex  [-FillColor ] [-LineColor ] [-LineWidthPoints ] [-MarkerStyle ] [-MarkerSize ] [-MarkerFillColor ] [-MarkerLineColor ] [-MarkerLineWidthPoints ] []
+Set-OfficeExcelChartSeries -Chart  -SeriesIndex  [-FillColor ] [-LineColor ] [-LineWidthPoints ] [-MarkerStyle ] [-MarkerSize ] [-MarkerFillColor ] [-MarkerLineColor ] [-MarkerLineWidthPoints ] [-PassThru] []
 ```
 
 ### Name
 ```powershell
-Set-OfficeExcelChartSeries -Chart  -SeriesName  [-IgnoreCase ] [-FillColor ] [-LineColor ] [-LineWidthPoints ] [-MarkerStyle ] [-MarkerSize ] [-MarkerFillColor ] [-MarkerLineColor ] [-MarkerLineWidthPoints ] []
+Set-OfficeExcelChartSeries -Chart  -SeriesName  [-IgnoreCase ] [-FillColor ] [-LineColor ] [-LineWidthPoints ] [-MarkerStyle ] [-MarkerSize ] [-MarkerFillColor ] [-MarkerLineColor ] [-MarkerLineWidthPoints ] [-PassThru] []
 ```
 
 ## DESCRIPTION
@@ -193,6 +193,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: Index, Name
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -SeriesIndex
 Zero-based series index.
 
diff --git a/Docs/Set-OfficeExcelChartStyle.md b/Docs/Set-OfficeExcelChartStyle.md
index face4764..b1c9decb 100644
--- a/Docs/Set-OfficeExcelChartStyle.md
+++ b/Docs/Set-OfficeExcelChartStyle.md
@@ -11,7 +11,7 @@ Applies a built-in style and color preset to an Excel chart.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Set-OfficeExcelChartStyle -Chart  [-StyleId ] [-ColorStyleId ] []
+Set-OfficeExcelChartStyle -Chart  [-StyleId ] [-ColorStyleId ] [-PassThru] []
 ```
 
 ## DESCRIPTION
@@ -60,6 +60,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -StyleId
 Chart style identifier.
 
diff --git a/Docs/Set-OfficeExcelChartTrendline.md b/Docs/Set-OfficeExcelChartTrendline.md
index 7a178cc2..e0feb45a 100644
--- a/Docs/Set-OfficeExcelChartTrendline.md
+++ b/Docs/Set-OfficeExcelChartTrendline.md
@@ -11,12 +11,12 @@ Adds or replaces an Excel chart series trendline.
 ## SYNTAX
 ### Index (Default)
 ```powershell
-Set-OfficeExcelChartTrendline -Chart  -SeriesIndex  -Type  [-Order ] [-Period ] [-Forward ] [-Backward ] [-Intercept ] [-DisplayEquation] [-DisplayRSquared] [-LineColor ] [-LineWidthPoints ] []
+Set-OfficeExcelChartTrendline -Chart  -SeriesIndex  -Type  [-Order ] [-Period ] [-Forward ] [-Backward ] [-Intercept ] [-DisplayEquation] [-DisplayRSquared] [-LineColor ] [-LineWidthPoints ] [-PassThru] []
 ```
 
 ### Name
 ```powershell
-Set-OfficeExcelChartTrendline -Chart  -SeriesName  -Type  [-IgnoreCase ] [-Order ] [-Period ] [-Forward ] [-Backward ] [-Intercept ] [-DisplayEquation] [-DisplayRSquared] [-LineColor ] [-LineWidthPoints ] []
+Set-OfficeExcelChartTrendline -Chart  -SeriesName  -Type  [-IgnoreCase ] [-Order ] [-Period ] [-Forward ] [-Backward ] [-Intercept ] [-DisplayEquation] [-DisplayRSquared] [-LineColor ] [-LineWidthPoints ] [-PassThru] []
 ```
 
 ## DESCRIPTION
@@ -193,6 +193,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: Index, Name
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Period
 Moving-average period.
 
diff --git a/Docs/Set-OfficeExcelColumn.md b/Docs/Set-OfficeExcelColumn.md
index 8b3b972b..24005e89 100644
--- a/Docs/Set-OfficeExcelColumn.md
+++ b/Docs/Set-OfficeExcelColumn.md
@@ -11,7 +11,7 @@ Writes values or formatting to a column in the current worksheet.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Set-OfficeExcelColumn [[-Column] ] [-ColumnName ] [-Values ] [-StartRow ] [-Width ] [-Hidden ] [-AutoFit] []
+Set-OfficeExcelColumn [[-Column] ] [-ColumnName ] [-Values ] [-StartRow ] [-Width ] [-Hidden ] [-AutoFit] [-PassThru] []
 ```
 
 ## DESCRIPTION
@@ -92,6 +92,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -StartRow
 Starting row index (1-based) for values.
 
diff --git a/Docs/Set-OfficeExcelColumnGroup.md b/Docs/Set-OfficeExcelColumnGroup.md
index 65dca338..d4c1b93f 100644
--- a/Docs/Set-OfficeExcelColumnGroup.md
+++ b/Docs/Set-OfficeExcelColumnGroup.md
@@ -11,7 +11,7 @@ Configures collapsible Excel outline grouping for worksheet columns.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Set-OfficeExcelColumnGroup [[-StartColumn] ] [[-EndColumn] ] [-StartColumnName ] [-EndColumnName ] [-OutlineLevel ] [-Collapsed] [-Hidden] [-Clear] [-KeepHidden] [-SummaryRight ] []
+Set-OfficeExcelColumnGroup [[-StartColumn] ] [[-EndColumn] ] [-StartColumnName ] [-EndColumnName ] [-OutlineLevel ] [-Collapsed] [-Hidden] [-Clear] [-KeepHidden] [-SummaryRight ] [-PassThru] []
 ```
 
 ## DESCRIPTION
@@ -140,6 +140,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -StartColumn
 First 1-based column in the group.
 
diff --git a/Docs/Set-OfficeExcelColumnStyleByHeader.md b/Docs/Set-OfficeExcelColumnStyleByHeader.md
index 900b29da..49353cff 100644
--- a/Docs/Set-OfficeExcelColumnStyleByHeader.md
+++ b/Docs/Set-OfficeExcelColumnStyleByHeader.md
@@ -11,12 +11,12 @@ Applies common number, fill, font, and status styles to a worksheet column resol
 ## SYNTAX
 ### Context (Default)
 ```powershell
-Set-OfficeExcelColumnStyleByHeader [-Header]  [-IncludeHeader] [-Style ] [-Decimals ] [-CultureName ] [-NumberFormat ] [-Pattern ] [-Bold] [-BackgroundColor ] [-FontColor ] [-Alignment ] [-BackgroundByText ] [-FontColorByText ] [-BoldByText ] [-CaseSensitive] [-Width ] [-AutoFit] [-IgnoreMissing] []
+Set-OfficeExcelColumnStyleByHeader [-Header]  [-IncludeHeader] [-Style ] [-Decimals ] [-CultureName ] [-NumberFormat ] [-Pattern ] [-Bold] [-BackgroundColor ] [-FontColor ] [-Alignment ] [-BackgroundByText ] [-FontColorByText ] [-BoldByText ] [-CaseSensitive] [-Width ] [-AutoFit] [-IgnoreMissing] [-PassThru] []
 ```
 
 ### Document
 ```powershell
-Set-OfficeExcelColumnStyleByHeader [-Header]  -Document  [-Sheet ] [-SheetIndex ] [-IncludeHeader] [-Style ] [-Decimals ] [-CultureName ] [-NumberFormat ] [-Pattern ] [-Bold] [-BackgroundColor ] [-FontColor ] [-Alignment ] [-BackgroundByText ] [-FontColorByText ] [-BoldByText ] [-CaseSensitive] [-Width ] [-AutoFit] [-IgnoreMissing] []
+Set-OfficeExcelColumnStyleByHeader [-Header]  -Document  [-Sheet ] [-SheetIndex ] [-IncludeHeader] [-Style ] [-Decimals ] [-CultureName ] [-NumberFormat ] [-Pattern ] [-Bold] [-BackgroundColor ] [-FontColor ] [-Alignment ] [-BackgroundByText ] [-FontColorByText ] [-BoldByText ] [-CaseSensitive] [-Width ] [-AutoFit] [-IgnoreMissing] [-PassThru] []
 ```
 
 ## DESCRIPTION
@@ -292,6 +292,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: Context, Document
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Pattern
 Date or DateTime number format pattern.
 
diff --git a/Docs/Set-OfficeExcelDataValidationMessage.md b/Docs/Set-OfficeExcelDataValidationMessage.md
index 30edfaa7..ec68db6e 100644
--- a/Docs/Set-OfficeExcelDataValidationMessage.md
+++ b/Docs/Set-OfficeExcelDataValidationMessage.md
@@ -16,7 +16,7 @@ Set-OfficeExcelDataValidationMessage [-Sheet ] [-SheetIndex ] [-R
 
 ### Path
 ```powershell
-Set-OfficeExcelDataValidationMessage [-InputPath]  [-Sheet ] [-SheetIndex ] [-Range ] [-HeaderName ] [-TableName ] [-HeaderRow ] [-IncludeHeader] [-PromptTitle ] [-Prompt ] [-ErrorTitle ] [-ErrorMessage ] [-ShowInputMessage] [-ShowErrorMessage] [-PassThru] [-WhatIf] [-Confirm] []
+Set-OfficeExcelDataValidationMessage [-Path]  [-Sheet ] [-SheetIndex ] [-Range ] [-HeaderName ] [-TableName ] [-HeaderRow ] [-IncludeHeader] [-PromptTitle ] [-Prompt ] [-ErrorTitle ] [-ErrorMessage ] [-ShowInputMessage] [-ShowErrorMessage] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -136,33 +136,33 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Workbook path to update.
+### -PassThru
+Returns matching validation rules after updating them.
 
 ```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
+Type: SwitchParameter
+Parameter Sets: Context, Path, Document
+Aliases: None
 Possible values:
 
-Required: True
-Position: 0
+Required: False
+Position: named
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -PassThru
-Returns matching validation rules after updating them.
+### -Path
+Workbook path to update.
 
 ```yaml
-Type: SwitchParameter
-Parameter Sets: Context, Path, Document
-Aliases: None
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
 Possible values:
 
-Required: False
-Position: named
+Required: True
+Position: 0
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
diff --git a/Docs/Set-OfficeExcelFormula.md b/Docs/Set-OfficeExcelFormula.md
index 9949b49b..cf44e205 100644
--- a/Docs/Set-OfficeExcelFormula.md
+++ b/Docs/Set-OfficeExcelFormula.md
@@ -11,12 +11,12 @@ Sets a formula in a worksheet cell.
 ## SYNTAX
 ### Coordinates
 ```powershell
-Set-OfficeExcelFormula -Formula  [-Row ] [-Column ] []
+Set-OfficeExcelFormula -Formula  [-Row ] [-Column ] [-PassThru] []
 ```
 
 ### Address
 ```powershell
-Set-OfficeExcelFormula -Formula  [-Address ] []
+Set-OfficeExcelFormula -Formula  [-Address ] [-PassThru] []
 ```
 
 ## DESCRIPTION
@@ -81,6 +81,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: Coordinates, Address
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Row
 1-based row index.
 
diff --git a/Docs/Set-OfficeExcelFreeze.md b/Docs/Set-OfficeExcelFreeze.md
index ac9f0404..a7fe9048 100644
--- a/Docs/Set-OfficeExcelFreeze.md
+++ b/Docs/Set-OfficeExcelFreeze.md
@@ -11,12 +11,12 @@ Freezes panes on the current worksheet.
 ## SYNTAX
 ### Context (Default)
 ```powershell
-Set-OfficeExcelFreeze [-TopRows ] [-LeftColumns ] []
+Set-OfficeExcelFreeze [-TopRows ] [-LeftColumns ] [-PassThru] []
 ```
 
 ### Document
 ```powershell
-Set-OfficeExcelFreeze -Document  [-Sheet ] [-SheetIndex ] [-TopRows ] [-LeftColumns ] []
+Set-OfficeExcelFreeze -Document  [-Sheet ] [-SheetIndex ] [-TopRows ] [-LeftColumns ] [-PassThru] []
 ```
 
 ## DESCRIPTION
@@ -72,6 +72,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: Context, Document
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Sheet
 Worksheet name when using Document.
 
diff --git a/Docs/Set-OfficeExcelPrintArea.md b/Docs/Set-OfficeExcelPrintArea.md
index 2ebd9880..b970e40c 100644
--- a/Docs/Set-OfficeExcelPrintArea.md
+++ b/Docs/Set-OfficeExcelPrintArea.md
@@ -16,7 +16,7 @@ Set-OfficeExcelPrintArea [-Range]  [-Sheet ] [-SheetIndex  [-Range]  [-Sheet ] [-SheetIndex ] [-PassThru] [-WhatIf] [-Confirm] []
+Set-OfficeExcelPrintArea [-Path]  [-Range]  [-Sheet ] [-SheetIndex ] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -58,33 +58,33 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Workbook path to update.
+### -PassThru
+Emit the worksheet after setting the print area.
 
 ```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
+Type: SwitchParameter
+Parameter Sets: Context, Path, Document
+Aliases: None
 Possible values:
 
-Required: True
-Position: 0
+Required: False
+Position: named
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -PassThru
-Emit the worksheet after setting the print area.
+### -Path
+Workbook path to update.
 
 ```yaml
-Type: SwitchParameter
-Parameter Sets: Context, Path, Document
-Aliases: None
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
 Possible values:
 
-Required: False
-Position: named
+Required: True
+Position: 0
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
diff --git a/Docs/Set-OfficeExcelPrintLayout.md b/Docs/Set-OfficeExcelPrintLayout.md
index bfe634a9..e88193a8 100644
--- a/Docs/Set-OfficeExcelPrintLayout.md
+++ b/Docs/Set-OfficeExcelPrintLayout.md
@@ -16,7 +16,7 @@ Set-OfficeExcelPrintLayout [-Sheet ] [-SheetIndex ] [-Preset  [-Sheet ] [-SheetIndex ] [-Preset ] [-PrintArea ] [-Orientation ] [-Margins ] [-FitToWidth ] [-FitToHeight ] [-Scale ] [-PageOrder ] [-RepeatFirstRow ] [-RepeatLastRow ] [-RepeatFirstColumn ] [-RepeatLastColumn ] [-NoPresetPrintTitles] [-PassThru] [-WhatIf] [-Confirm] []
+Set-OfficeExcelPrintLayout [-Path]  [-Sheet ] [-SheetIndex ] [-Preset ] [-PrintArea ] [-Orientation ] [-Margins ] [-FitToWidth ] [-FitToHeight ] [-Scale ] [-PageOrder ] [-RepeatFirstRow ] [-RepeatLastRow ] [-RepeatFirstColumn ] [-RepeatLastColumn ] [-NoPresetPrintTitles] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -86,22 +86,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Workbook path to update.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -Margins
 Optional margin preset override.
 
@@ -182,6 +166,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Workbook path to update.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Preset
 Print layout preset.
 
diff --git a/Docs/Set-OfficeExcelPrintTitles.md b/Docs/Set-OfficeExcelPrintTitles.md
index fcf0fe64..43f8f263 100644
--- a/Docs/Set-OfficeExcelPrintTitles.md
+++ b/Docs/Set-OfficeExcelPrintTitles.md
@@ -16,7 +16,7 @@ Set-OfficeExcelPrintTitles [-Sheet ] [-SheetIndex ] [-FirstRow  [-Sheet ] [-SheetIndex ] [-FirstRow ] [-LastRow ] [-FirstColumn ] [-LastColumn ] [-Clear] [-PassThru] [-WhatIf] [-Confirm] []
+Set-OfficeExcelPrintTitles [-Path]  [-Sheet ] [-SheetIndex ] [-FirstRow ] [-LastRow ] [-FirstColumn ] [-LastColumn ] [-Clear] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -107,22 +107,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Workbook path to update.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -LastColumn
 Last 1-based column to repeat.
 
@@ -171,6 +155,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Workbook path to update.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Sheet
 Worksheet name. Defaults to the current sheet inside an ExcelSheet block.
 
diff --git a/Docs/Set-OfficeExcelRefreshOnOpen.md b/Docs/Set-OfficeExcelRefreshOnOpen.md
index dcdc815d..37b74bee 100644
--- a/Docs/Set-OfficeExcelRefreshOnOpen.md
+++ b/Docs/Set-OfficeExcelRefreshOnOpen.md
@@ -16,7 +16,7 @@ Set-OfficeExcelRefreshOnOpen [-PivotTables] [-Connections] [-Disable] [-SavePivo
 
 ### Path
 ```powershell
-Set-OfficeExcelRefreshOnOpen [-InputPath]  [-PivotTables] [-Connections] [-Disable] [-SavePivotSourceData] [-NoSavePivotSourceData] [-PassThru] [-WhatIf] [-Confirm] []
+Set-OfficeExcelRefreshOnOpen [-Path]  [-PivotTables] [-Connections] [-Disable] [-SavePivotSourceData] [-NoSavePivotSourceData] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -88,22 +88,6 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Workbook path to update.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -NoSavePivotSourceData
 Do not save pivot cache source data.
 
@@ -136,6 +120,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Workbook path to update.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -PivotTables
 Update pivot cache refresh-on-open metadata.
 
diff --git a/Docs/Set-OfficeExcelRichText.md b/Docs/Set-OfficeExcelRichText.md
index 1b9d95e5..8347cbc1 100644
--- a/Docs/Set-OfficeExcelRichText.md
+++ b/Docs/Set-OfficeExcelRichText.md
@@ -16,7 +16,7 @@ Set-OfficeExcelRichText -Run  [-Sheet ] [-SheetIndex ]
 
 ### Path
 ```powershell
-Set-OfficeExcelRichText [-InputPath]  -Run  [-Sheet ] [-SheetIndex ] [-Row ] [-Column ] [-Address ] [-PassThru] [-WhatIf] [-Confirm] []
+Set-OfficeExcelRichText [-Path]  -Run  [-Sheet ] [-SheetIndex ] [-Row ] [-Column ] [-Address ] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -88,33 +88,33 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Workbook path to update.
+### -PassThru
+Emit written rich text runs.
 
 ```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
+Type: SwitchParameter
+Parameter Sets: Context, Path, Document
+Aliases: None
 Possible values:
 
-Required: True
-Position: 0
+Required: False
+Position: named
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -PassThru
-Emit written rich text runs.
+### -Path
+Workbook path to update.
 
 ```yaml
-Type: SwitchParameter
-Parameter Sets: Context, Path, Document
-Aliases: None
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
 Possible values:
 
-Required: False
-Position: named
+Required: True
+Position: 0
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
diff --git a/Docs/Set-OfficeExcelRow.md b/Docs/Set-OfficeExcelRow.md
index c678fc1a..584d3660 100644
--- a/Docs/Set-OfficeExcelRow.md
+++ b/Docs/Set-OfficeExcelRow.md
@@ -11,7 +11,7 @@ Writes a row of values to the current worksheet.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Set-OfficeExcelRow [-Row]  [[-Values] ] [-StartColumn ] [-Height ] [-ClearHeight] [-AutoFit] [-Hidden ] [-Bold ] [-Italic ] [-Underline ] [-WrapText ] [-FontName ] [-BackgroundColor ] [-FirstColumn ] [-LastColumn ] []
+Set-OfficeExcelRow [-Row]  [[-Values] ] [-StartColumn ] [-Height ] [-ClearHeight] [-AutoFit] [-Hidden ] [-Bold ] [-Italic ] [-Underline ] [-WrapText ] [-FontName ] [-BackgroundColor ] [-FirstColumn ] [-LastColumn ] [-PassThru] []
 ```
 
 ## DESCRIPTION
@@ -188,6 +188,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Row
 1-based row index.
 
diff --git a/Docs/Set-OfficeExcelRowGroup.md b/Docs/Set-OfficeExcelRowGroup.md
index 89c5fcc2..a6d94627 100644
--- a/Docs/Set-OfficeExcelRowGroup.md
+++ b/Docs/Set-OfficeExcelRowGroup.md
@@ -11,7 +11,7 @@ Configures collapsible Excel outline grouping for worksheet rows.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Set-OfficeExcelRowGroup [-StartRow]  [[-EndRow] ] [-OutlineLevel ] [-Collapsed] [-Hidden] [-Clear] [-KeepHidden] [-SummaryBelow ] []
+Set-OfficeExcelRowGroup [-StartRow]  [[-EndRow] ] [-OutlineLevel ] [-Collapsed] [-Hidden] [-Clear] [-KeepHidden] [-SummaryBelow ] [-PassThru] []
 ```
 
 ## DESCRIPTION
@@ -124,6 +124,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -StartRow
 First 1-based row in the group.
 
diff --git a/Docs/Set-OfficeExcelTheme.md b/Docs/Set-OfficeExcelTheme.md
index a722cbd4..d89e57bf 100644
--- a/Docs/Set-OfficeExcelTheme.md
+++ b/Docs/Set-OfficeExcelTheme.md
@@ -16,7 +16,7 @@ Set-OfficeExcelTheme [-Default] [-Xml ] [-XmlPath ] [-Name  [-Default] [-Xml ] [-XmlPath ] [-Name ] [-PassThru] [-WhatIf] [-Confirm] []
+Set-OfficeExcelTheme [-Path]  [-Default] [-Xml ] [-XmlPath ] [-Name ] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -72,22 +72,6 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Workbook path to update.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -Name
 Optional workbook theme name to apply after writing the theme.
 
@@ -120,6 +104,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Workbook path to update.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Xml
 Theme XML to write to the workbook theme part.
 
diff --git a/Docs/Set-OfficePdfAnnotation.md b/Docs/Set-OfficePdfAnnotation.md
index 7e590685..1a6affb2 100644
--- a/Docs/Set-OfficePdfAnnotation.md
+++ b/Docs/Set-OfficePdfAnnotation.md
@@ -11,7 +11,7 @@ Updates a single indirect PDF annotation.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Set-OfficePdfAnnotation [-Path]  [-OutputPath]  -ObjectNumber  [-Password ] [-IgnorePermissionRestrictions] [-Contents ] [-Title ] [-Name ] [-Flags ] [-Color ] [-RemoveAction] [-PassThruReport] [-WhatIf] [-Confirm] []
+Set-OfficePdfAnnotation [-Path]  [-OutputPath]  -ObjectNumber  [-Password ] [-IgnorePermissionRestrictions] [-Contents ] [-Title ] [-Name ] [-Flags ] [-Color ] [-RemoveAction] [-PassThruReport] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -139,6 +139,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -PassThruReport
 Return the annotation edit result instead of the output file.
 
diff --git a/Docs/Set-OfficePdfForm.md b/Docs/Set-OfficePdfForm.md
index 3134470e..bee4edd3 100644
--- a/Docs/Set-OfficePdfForm.md
+++ b/Docs/Set-OfficePdfForm.md
@@ -11,7 +11,7 @@ Fills and optionally flattens simple AcroForm fields in an existing PDF.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Set-OfficePdfForm -Path  -OutputPath  [-Password ] [-IgnorePermissionRestrictions] [-Field ] [-Flatten] [-KeepNeedAppearances] [-Incremental] [-AppearanceFontPath ] [-AppearanceFontFamilyName ] [-WhatIf] [-Confirm] []
+Set-OfficePdfForm -Path  -OutputPath  [-Password ] [-IgnorePermissionRestrictions] [-Field ] [-Flatten] [-KeepNeedAppearances] [-Incremental] [-AppearanceFontPath ] [-AppearanceFontFamilyName ] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -161,6 +161,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Password
 Password used to authenticate an encrypted PDF.
 
diff --git a/Docs/Set-OfficePdfPage.md b/Docs/Set-OfficePdfPage.md
index 2d483457..ade41044 100644
--- a/Docs/Set-OfficePdfPage.md
+++ b/Docs/Set-OfficePdfPage.md
@@ -11,7 +11,7 @@ Sets page-level PDF properties and writes a new PDF.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Set-OfficePdfPage -Path  -OutputPath  [-PageRange ] [-Rotation ] [-BoxName ] [-Left ] [-Bottom ] [-Right ] [-Top ] [-PageSize ] [-Width ] [-Height ] [-Landscape] [-ResizeMode ] [-ResizeMargin ] [-Password ] [-IgnorePermissionRestrictions] [-WhatIf] [-Confirm] []
+Set-OfficePdfPage -Path  -OutputPath  [-PageRange ] [-Rotation ] [-BoxName ] [-Left ] [-Bottom ] [-Right ] [-Top ] [-PageSize ] [-Width ] [-Height ] [-Landscape] [-ResizeMode ] [-ResizeMargin ] [-Password ] [-IgnorePermissionRestrictions] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -176,6 +176,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Password
 Password used to authenticate an encrypted PDF.
 
diff --git a/Docs/Set-OfficePdfSignature.md b/Docs/Set-OfficePdfSignature.md
index f010f570..016243d7 100644
--- a/Docs/Set-OfficePdfSignature.md
+++ b/Docs/Set-OfficePdfSignature.md
@@ -11,7 +11,7 @@ Injects externally produced CMS, CAdES, or timestamp signature bytes into a prep
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Set-OfficePdfSignature [-Path]  [-SignaturePath]  [-OutputPath]  [-Password ] [-IgnorePermissionRestrictions] [-PassThruReport] [-WhatIf] [-Confirm] []
+Set-OfficePdfSignature [-Path]  [-SignaturePath]  [-OutputPath]  [-Password ] [-IgnorePermissionRestrictions] [-PassThruReport] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -61,6 +61,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -PassThruReport
 Return a signature validation report for the written PDF instead of only the output file.
 
diff --git a/Docs/Set-OfficePowerPointBackground.md b/Docs/Set-OfficePowerPointBackground.md
index 01fdb6b1..5c39b26f 100644
--- a/Docs/Set-OfficePowerPointBackground.md
+++ b/Docs/Set-OfficePowerPointBackground.md
@@ -11,17 +11,17 @@ Sets the slide background color or image.
 ## SYNTAX
 ### Color (Default)
 ```powershell
-Set-OfficePowerPointBackground [-Color]  [-Slide ] []
+Set-OfficePowerPointBackground [-Color]  [-Slide ] [-PassThru] []
 ```
 
 ### Image
 ```powershell
-Set-OfficePowerPointBackground [-ImagePath]  [-Slide ] []
+Set-OfficePowerPointBackground [-ImagePath]  [-Slide ] [-PassThru] []
 ```
 
 ### Clear
 ```powershell
-Set-OfficePowerPointBackground -Clear [-Slide ] []
+Set-OfficePowerPointBackground -Clear [-Slide ] [-PassThru] []
 ```
 
 ## DESCRIPTION
@@ -93,6 +93,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: Color, Image, Clear
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Slide
 Slide to update (optional inside a slide DSL scope).
 
diff --git a/Docs/Set-OfficePowerPointNotes.md b/Docs/Set-OfficePowerPointNotes.md
index 4215a9a5..7d227b29 100644
--- a/Docs/Set-OfficePowerPointNotes.md
+++ b/Docs/Set-OfficePowerPointNotes.md
@@ -11,7 +11,7 @@ Sets speaker notes for a PowerPoint slide.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Set-OfficePowerPointNotes [-Text]  [-Slide ] []
+Set-OfficePowerPointNotes [-Text]  [-Slide ] [-PassThru] []
 ```
 
 ## DESCRIPTION
@@ -32,6 +32,22 @@ Writes speaker notes to a generated slide.
 
 ## PARAMETERS
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Slide
 Slide whose notes should be updated (optional inside DSL).
 
diff --git a/Docs/Set-OfficePowerPointSlideLayout.md b/Docs/Set-OfficePowerPointSlideLayout.md
index 07dc1bd0..c2935897 100644
--- a/Docs/Set-OfficePowerPointSlideLayout.md
+++ b/Docs/Set-OfficePowerPointSlideLayout.md
@@ -11,17 +11,17 @@ Changes the layout used by a slide.
 ## SYNTAX
 ### Index (Default)
 ```powershell
-Set-OfficePowerPointSlideLayout -Layout  [-Slide ] [-Master ] []
+Set-OfficePowerPointSlideLayout -Layout  [-Slide ] [-Master ] [-PassThru] []
 ```
 
 ### Name
 ```powershell
-Set-OfficePowerPointSlideLayout -LayoutName  [-Slide ] [-Master ] [-CaseSensitive] []
+Set-OfficePowerPointSlideLayout -LayoutName  [-Slide ] [-Master ] [-CaseSensitive] [-PassThru] []
 ```
 
 ### Type
 ```powershell
-Set-OfficePowerPointSlideLayout -LayoutType  [-Slide ] [-Master ] []
+Set-OfficePowerPointSlideLayout -LayoutType  [-Slide ] [-Master ] [-PassThru] []
 ```
 
 ## DESCRIPTION
@@ -118,6 +118,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: Index, Name, Type
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Slide
 Slide to update (optional inside a slide DSL scope).
 
diff --git a/Docs/Set-OfficePowerPointSlideSize.md b/Docs/Set-OfficePowerPointSlideSize.md
index b9fe955e..7430c620 100644
--- a/Docs/Set-OfficePowerPointSlideSize.md
+++ b/Docs/Set-OfficePowerPointSlideSize.md
@@ -11,27 +11,27 @@ Sets the slide size for a PowerPoint presentation.
 ## SYNTAX
 ### Preset (Default)
 ```powershell
-Set-OfficePowerPointSlideSize -Preset  [-Presentation ] [-Portrait] []
+Set-OfficePowerPointSlideSize -Preset  [-Presentation ] [-Portrait] [-PassThru] []
 ```
 
 ### Centimeters
 ```powershell
-Set-OfficePowerPointSlideSize -WidthCm  -HeightCm  [-Presentation ] []
+Set-OfficePowerPointSlideSize -WidthCm  -HeightCm  [-Presentation ] [-PassThru] []
 ```
 
 ### Inches
 ```powershell
-Set-OfficePowerPointSlideSize -WidthInches  -HeightInches  [-Presentation ] []
+Set-OfficePowerPointSlideSize -WidthInches  -HeightInches  [-Presentation ] [-PassThru] []
 ```
 
 ### Points
 ```powershell
-Set-OfficePowerPointSlideSize -WidthPoints  -HeightPoints  [-Presentation ] []
+Set-OfficePowerPointSlideSize -WidthPoints  -HeightPoints  [-Presentation ] [-PassThru] []
 ```
 
 ### Emus
 ```powershell
-Set-OfficePowerPointSlideSize -WidthEmus  -HeightEmus  [-Presentation ] []
+Set-OfficePowerPointSlideSize -WidthEmus  -HeightEmus  [-Presentation ] [-PassThru] []
 ```
 
 ## DESCRIPTION
@@ -51,7 +51,7 @@ Applies the 16:9 widescreen preset before adding slides.
 
 ### EXAMPLE 2
 ```powershell
-PS> $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointCustomSize.pptx
+PS> $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointCustomSize.pptx
 Set-OfficePowerPointSlideSize -Presentation $ppt -WidthCm 25.4 -HeightCm 14.0
 Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Custom size'
 ```
@@ -124,6 +124,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: Preset, Centimeters, Inches, Points, Emus
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Portrait
 Apply the preset in portrait orientation.
 
diff --git a/Docs/Set-OfficePowerPointSlideTitle.md b/Docs/Set-OfficePowerPointSlideTitle.md
index 9b6671b4..3729420f 100644
--- a/Docs/Set-OfficePowerPointSlideTitle.md
+++ b/Docs/Set-OfficePowerPointSlideTitle.md
@@ -11,7 +11,7 @@ Sets the text of the title placeholder on a slide.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Set-OfficePowerPointSlideTitle -Title  [-Slide ] []
+Set-OfficePowerPointSlideTitle -Title  [-Slide ] [-PassThru] []
 ```
 
 ## DESCRIPTION
@@ -28,6 +28,22 @@ Updates the first slide’s title.
 
 ## PARAMETERS
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Slide
 Slide whose title should change (optional inside DSL).
 
diff --git a/Docs/Set-OfficePowerPointSlideTransition.md b/Docs/Set-OfficePowerPointSlideTransition.md
index 71591fd2..1d77be0a 100644
--- a/Docs/Set-OfficePowerPointSlideTransition.md
+++ b/Docs/Set-OfficePowerPointSlideTransition.md
@@ -11,7 +11,7 @@ Sets the transition used when advancing to a slide.
 ## SYNTAX
 ### __AllParameterSets
 ```powershell
-Set-OfficePowerPointSlideTransition -Transition  [-Slide ] []
+Set-OfficePowerPointSlideTransition -Transition  [-Slide ] [-PassThru] []
 ```
 
 ## DESCRIPTION
@@ -28,6 +28,22 @@ Updates the first slide so it uses the Fade transition.
 
 ## PARAMETERS
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: __AllParameterSets
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Slide
 Slide to update (optional inside a slide DSL scope).
 
diff --git a/Docs/Test-OfficeExcelAccessibility.md b/Docs/Test-OfficeExcelAccessibility.md
index f3b97f16..027ce967 100644
--- a/Docs/Test-OfficeExcelAccessibility.md
+++ b/Docs/Test-OfficeExcelAccessibility.md
@@ -11,7 +11,7 @@ Checks workbook accessibility and compliance signals.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Test-OfficeExcelAccessibility [-InputPath]  [-Quiet] []
+Test-OfficeExcelAccessibility [-Path]  [-Quiet] []
 ```
 
 ### Document
@@ -52,13 +52,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Workbook path.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: Path, FilePath
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Test-OfficeExcelTemplateBinding.md b/Docs/Test-OfficeExcelTemplateBinding.md
index 972178ef..9aaf75d1 100644
--- a/Docs/Test-OfficeExcelTemplateBinding.md
+++ b/Docs/Test-OfficeExcelTemplateBinding.md
@@ -11,7 +11,7 @@ Validates Excel template markers against supplied bindings before applying a tem
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Test-OfficeExcelTemplateBinding [-InputPath]  -Binding  [-Quiet] [-AsMarkdown] [-ThrowOnMissing] []
+Test-OfficeExcelTemplateBinding [-Path]  -Binding  [-Quiet] [-AsMarkdown] [-ThrowOnMissing] []
 ```
 
 ### Document
@@ -87,13 +87,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Workbook path.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: Path, FilePath
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Test-OfficeExcelWorkbook.md b/Docs/Test-OfficeExcelWorkbook.md
index a06b8d54..75ec68de 100644
--- a/Docs/Test-OfficeExcelWorkbook.md
+++ b/Docs/Test-OfficeExcelWorkbook.md
@@ -11,7 +11,7 @@ Runs OfficeIMO workbook diagnostics and optional safe repairs.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Test-OfficeExcelWorkbook [-InputPath]  [-RepairDefinedNames] [-SkipOpenXmlValidation] [-Quiet] [-WhatIf] [-Confirm] []
+Test-OfficeExcelWorkbook [-Path]  [-RepairDefinedNames] [-SkipOpenXmlValidation] [-Quiet] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -54,13 +54,13 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
+### -Path
 Workbook path.
 
 ```yaml
 Type: String
 Parameter Sets: Path
-Aliases: Path, FilePath
+Aliases: InputPath, FilePath
 Possible values:
 
 Required: True
diff --git a/Docs/Unprotect-OfficeExcelWorkbook.md b/Docs/Unprotect-OfficeExcelWorkbook.md
index 485becee..f9f90806 100644
--- a/Docs/Unprotect-OfficeExcelWorkbook.md
+++ b/Docs/Unprotect-OfficeExcelWorkbook.md
@@ -16,7 +16,7 @@ Unprotect-OfficeExcelWorkbook [-PassThru] [-WhatIf] [-Confirm] [ [-PassThru] [-WhatIf] [-Confirm] []
+Unprotect-OfficeExcelWorkbook [-Path]  [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -56,33 +56,33 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Workbook path to update.
+### -PassThru
+Emit the workbook after removing protection.
 
 ```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
+Type: SwitchParameter
+Parameter Sets: Context, Path, Document
+Aliases: None
 Possible values:
 
-Required: True
-Position: 0
+Required: False
+Position: named
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -PassThru
-Emit the workbook after removing protection.
+### -Path
+Workbook path to update.
 
 ```yaml
-Type: SwitchParameter
-Parameter Sets: Context, Path, Document
-Aliases: None
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
 Possible values:
 
-Required: False
-Position: named
+Required: True
+Position: 0
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
diff --git a/Docs/Update-OfficeExcelComment.md b/Docs/Update-OfficeExcelComment.md
index 689617a2..80da0af1 100644
--- a/Docs/Update-OfficeExcelComment.md
+++ b/Docs/Update-OfficeExcelComment.md
@@ -16,7 +16,7 @@ Update-OfficeExcelComment [-Sheet ] [-SheetIndex ] [-Address  [-Sheet ] [-SheetIndex ] [-Address ] [-Range ] [-MatchAuthor ] [-TextContains ] [-All] [-Text ] [-Run ] [-Author ] [-Initials ] [-PassThru] [-WhatIf] [-Confirm] []
+Update-OfficeExcelComment [-Path]  [-Sheet ] [-SheetIndex ] [-Address ] [-Range ] [-MatchAuthor ] [-TextContains ] [-All] [-Text ] [-Run ] [-Author ] [-Initials ] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
@@ -120,22 +120,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Workbook path to update.
-
-```yaml
-Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
-Possible values:
-
-Required: True
-Position: 0
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### -MatchAuthor
 Existing comment author to match, ignoring case.
 
@@ -168,6 +152,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Workbook path to update.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Range
 A1 cell or range to match.
 
diff --git a/Docs/Update-OfficeExcelText.md b/Docs/Update-OfficeExcelText.md
index e0c17456..cfac004e 100644
--- a/Docs/Update-OfficeExcelText.md
+++ b/Docs/Update-OfficeExcelText.md
@@ -11,12 +11,12 @@ Replaces text in worksheet values.
 ## SYNTAX
 ### Path (Default)
 ```powershell
-Update-OfficeExcelText [-InputPath]  -OldValue  -NewValue  [-Sheet ] [-SheetIndex ] [-Range ] [-CaseSensitive] [-Regex] [-Show] [-WhatIf] [-Confirm] []
+Update-OfficeExcelText [-Path]  -OldValue  -NewValue  [-Sheet ] [-SheetIndex ] [-Range ] [-CaseSensitive] [-Regex] [-Open] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
 ```powershell
-Update-OfficeExcelText -Document  -OldValue  -NewValue  [-Sheet ] [-SheetIndex ] [-Range ] [-CaseSensitive] [-Regex] [-WhatIf] [-Confirm] []
+Update-OfficeExcelText -Document  -OldValue  -NewValue  [-Sheet ] [-SheetIndex ] [-Range ] [-CaseSensitive] [-Regex] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -69,24 +69,24 @@ Accept pipeline input: True (ByValue)
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Workbook path to update.
+### -NewValue
+Replacement text.
 
 ```yaml
 Type: String
-Parameter Sets: Path
-Aliases: Path, FilePath
+Parameter Sets: Path, Document
+Aliases: None
 Possible values:
 
 Required: True
-Position: 0
+Position: named
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -NewValue
-Replacement text.
+### -OldValue
+Text or pattern to replace.
 
 ```yaml
 Type: String
@@ -101,22 +101,54 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -OldValue
-Text or pattern to replace.
+### -Open
+Open the file after saving when using -System.IO.Path.
 
 ```yaml
-Type: String
+Type: SwitchParameter
+Parameter Sets: Path
+Aliases: Show
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
 Parameter Sets: Path, Document
 Aliases: None
 Possible values:
 
-Required: True
+Required: False
 Position: named
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Workbook path to update.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Range
 A1 range to update. Defaults to each selected worksheet's used range.
 
@@ -181,22 +213,6 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Show
-Open the file after saving when using -Path.
-
-```yaml
-Type: SwitchParameter
-Parameter Sets: Path
-Aliases: None
-Possible values:
-
-Required: False
-Position: named
-Default value: None
-Accept pipeline input: False
-Accept wildcard characters: False
-```
-
 ### CommonParameters
 This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
 
diff --git a/Docs/Update-OfficePowerPointText.md b/Docs/Update-OfficePowerPointText.md
index be8aefea..538a2710 100644
--- a/Docs/Update-OfficePowerPointText.md
+++ b/Docs/Update-OfficePowerPointText.md
@@ -11,17 +11,17 @@ Replaces text in a PowerPoint slide or presentation.
 ## SYNTAX
 ### Auto (Default)
 ```powershell
-Update-OfficePowerPointText -OldValue  -NewValue  [-IncludeTables ] [-IncludeNotes] []
+Update-OfficePowerPointText -OldValue  -NewValue  [-IncludeTables ] [-IncludeNotes] [-PassThru] []
 ```
 
 ### Presentation
 ```powershell
-Update-OfficePowerPointText -OldValue  -NewValue  [-Presentation ] [-IncludeTables ] [-IncludeNotes] []
+Update-OfficePowerPointText -OldValue  -NewValue  [-Presentation ] [-IncludeTables ] [-IncludeNotes] [-PassThru] []
 ```
 
 ### Slide
 ```powershell
-Update-OfficePowerPointText -OldValue  -NewValue  [-Slide ] [-IncludeTables ] [-IncludeNotes] []
+Update-OfficePowerPointText -OldValue  -NewValue  [-Slide ] [-IncludeTables ] [-IncludeNotes] [-PassThru] []
 ```
 
 ## DESCRIPTION
@@ -31,7 +31,7 @@ Can replace text in text boxes, tables, and optionally notes using the OfficeIMO
 
 ### EXAMPLE 1
 ```powershell
-PS> $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointUpdateText.pptx
+PS> $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointUpdateText.pptx
 $slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1
 Add-OfficePowerPointTextBox -Slide $slide -Text 'FY24 summary' | Out-Null
 Set-OfficePowerPointNotes -Slide $slide -Text 'Mention FY24 assumptions.' | Out-Null
@@ -106,6 +106,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -PassThru
+Emit the object created or changed by the command.
+
+```yaml
+Type: SwitchParameter
+Parameter Sets: Auto, Presentation, Slide
+Aliases: None
+Possible values:
+
+Required: False
+Position: named
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### -Presentation
 Presentation to update.
 
diff --git a/Docs/Update-OfficeWordText.md b/Docs/Update-OfficeWordText.md
index 54618c8d..38e83fbd 100644
--- a/Docs/Update-OfficeWordText.md
+++ b/Docs/Update-OfficeWordText.md
@@ -11,17 +11,17 @@ Replaces text in a Word document.
 ## SYNTAX
 ### Auto (Default)
 ```powershell
-Update-OfficeWordText -OldValue  -NewValue  [-CaseSensitive] [-IncludeHyperlinkText] [-IncludeHyperlinkUri] [-IncludeHyperlinkAnchor] [-IncludeHyperlinkTooltip] [-WhatIf] [-Confirm] []
+Update-OfficeWordText -OldValue  -NewValue  [-CaseSensitive] [-IncludeHyperlinkText] [-IncludeHyperlinkUri] [-IncludeHyperlinkAnchor] [-IncludeHyperlinkTooltip] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Document
 ```powershell
-Update-OfficeWordText -OldValue  -NewValue  [-Document ] [-CaseSensitive] [-IncludeHyperlinkText] [-IncludeHyperlinkUri] [-IncludeHyperlinkAnchor] [-IncludeHyperlinkTooltip] [-WhatIf] [-Confirm] []
+Update-OfficeWordText -OldValue  -NewValue  [-Document ] [-CaseSensitive] [-IncludeHyperlinkText] [-IncludeHyperlinkUri] [-IncludeHyperlinkAnchor] [-IncludeHyperlinkTooltip] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ### Path
 ```powershell
-Update-OfficeWordText [-InputPath]  -OldValue  -NewValue  [-CaseSensitive] [-IncludeHyperlinkText] [-IncludeHyperlinkUri] [-IncludeHyperlinkAnchor] [-IncludeHyperlinkTooltip] [-Show] [-WhatIf] [-Confirm] []
+Update-OfficeWordText [-Path]  -OldValue  -NewValue  [-CaseSensitive] [-IncludeHyperlinkText] [-IncludeHyperlinkUri] [-IncludeHyperlinkAnchor] [-IncludeHyperlinkTooltip] [-Open] [-PassThru] [-WhatIf] [-Confirm] []
 ```
 
 ## DESCRIPTION
@@ -141,24 +141,24 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -InputPath
-Path to the .docx file to update in place.
+### -NewValue
+Replacement text.
 
 ```yaml
 Type: String
-Parameter Sets: Path
-Aliases: FilePath, Path
+Parameter Sets: Auto, Document, Path
+Aliases: None
 Possible values:
 
 Required: True
-Position: 0
+Position: named
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -NewValue
-Replacement text.
+### -OldValue
+Text to find.
 
 ```yaml
 Type: String
@@ -173,28 +173,28 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -OldValue
-Text to find.
+### -Open
+Open the file after saving when using -Path.
 
 ```yaml
-Type: String
-Parameter Sets: Auto, Document, Path
-Aliases: None
+Type: SwitchParameter
+Parameter Sets: Path
+Aliases: Show
 Possible values:
 
-Required: True
+Required: False
 Position: named
 Default value: None
 Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
-### -Show
-Open the file after saving when using -Path.
+### -PassThru
+Emit the object created or changed by the command.
 
 ```yaml
 Type: SwitchParameter
-Parameter Sets: Path
+Parameter Sets: Auto, Document, Path
 Aliases: None
 Possible values:
 
@@ -205,6 +205,22 @@ Accept pipeline input: False
 Accept wildcard characters: False
 ```
 
+### -Path
+Path to the .docx file to update in place.
+
+```yaml
+Type: String
+Parameter Sets: Path
+Aliases: InputPath, FilePath
+Possible values:
+
+Required: True
+Position: 0
+Default value: None
+Accept pipeline input: False
+Accept wildcard characters: False
+```
+
 ### CommonParameters
 This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).
 
diff --git a/Examples/Csv/Example-CsvAdvanced.ps1 b/Examples/Csv/Example-CsvAdvanced.ps1
index fec653ec..c9830c15 100644
--- a/Examples/Csv/Example-CsvAdvanced.ps1
+++ b/Examples/Csv/Example-CsvAdvanced.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'Csv-Advanced.csv'
 $rows = @(
     [PSCustomObject]@{ Name = 'Alpha'; Score = 92; Active = $true }
diff --git a/Examples/Csv/Example-CsvBasic.ps1 b/Examples/Csv/Example-CsvBasic.ps1
index 1256b196..90af1840 100644
--- a/Examples/Csv/Example-CsvBasic.ps1
+++ b/Examples/Csv/Example-CsvBasic.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'Data.csv'
 $rows = @(
     [PSCustomObject]@{ Name = 'Alpha'; Value = 1 }
diff --git a/Examples/Csv/Example-CsvDbaClientXRoundTrip.ps1 b/Examples/Csv/Example-CsvDbaClientXRoundTrip.ps1
index 0c5d87e2..1248caef 100644
--- a/Examples/Csv/Example-CsvDbaClientXRoundTrip.ps1
+++ b/Examples/Csv/Example-CsvDbaClientXRoundTrip.ps1
@@ -72,7 +72,7 @@ try {
     $rows |
         Export-OfficeCsv `
             -Path $Path `
-            -ErrorAction Stop | Out-Null
+            -ErrorAction Stop
 
     $table = Import-OfficeCsv `
         -Path $Path `
diff --git a/Examples/ExamplePowerPoint01-AddSlides.ps1 b/Examples/ExamplePowerPoint01-AddSlides.ps1
index 06220d21..4e37d141 100644
--- a/Examples/ExamplePowerPoint01-AddSlides.ps1
+++ b/Examples/ExamplePowerPoint01-AddSlides.ps1
@@ -1,18 +1,17 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot 'Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'ExamplePowerPoint1.pptx'
-$presentation = New-OfficePowerPoint -FilePath $path
+$presentation = New-OfficePowerPoint -Path $path -NoSave
 
-$slide1 = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1
-Set-OfficePowerPointSlideTitle -Slide $slide1 -Title 'Status Update' | Out-Null
-Add-OfficePowerPointTextBox -Slide $slide1 -Text 'Generated with PSWriteOffice' -X 80 -Y 150 -Width 320 -Height 40 | Out-Null
-Add-OfficePowerPointShape -Slide $slide1 -ShapeType Rectangle -X 80 -Y 210 -Width 320 -Height 120 -FillColor '#DDEEFF' -OutlineColor '#4472C4' -OutlineWidth 1 | Out-Null
+$slide1 = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru
+Set-OfficePowerPointSlideTitle -Slide $slide1 -Title 'Status Update'
+Add-OfficePowerPointTextBox -Slide $slide1 -Text 'Generated with PSWriteOffice' -X 80 -Y 150 -Width 320 -Height 40
+Add-OfficePowerPointShape -Slide $slide1 -ShapeType Rectangle -X 80 -Y 210 -Width 320 -Height 120 -FillColor '#DDEEFF' -OutlineColor '#4472C4' -OutlineWidth 1
 
-$slide2 = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1
-Set-OfficePowerPointSlideTitle -Slide $slide2 -Title 'Next Steps' | Out-Null
-Add-OfficePowerPointTextBox -Slide $slide2 -Text '1. Review numbers  2. Plan Q1  3. Ship' -X 80 -Y 150 -Width 360 -Height 80 | Out-Null
+$slide2 = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru
+Set-OfficePowerPointSlideTitle -Slide $slide2 -Title 'Next Steps'
+Add-OfficePowerPointTextBox -Slide $slide2 -Text '1. Review numbers  2. Plan Q1  3. Ship' -X 80 -Y 150 -Width 360 -Height 80
 
 Save-OfficePowerPoint -Presentation $presentation
 Write-Host "Presentation saved to $path"
diff --git a/Examples/ExamplePowerPoint02-Basic.ps1 b/Examples/ExamplePowerPoint02-Basic.ps1
index 1e3e3d6b..48b400e6 100644
--- a/Examples/ExamplePowerPoint02-Basic.ps1
+++ b/Examples/ExamplePowerPoint02-Basic.ps1
@@ -1,11 +1,10 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot 'Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'BasicExample.pptx'
-$presentation = New-OfficePowerPoint -FilePath $path
+$presentation = New-OfficePowerPoint -Path $path -NoSave
 
-Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 | Out-Null
+Add-OfficePowerPointSlide -Presentation $presentation -Layout 1
 Save-OfficePowerPoint -Presentation $presentation
 
 Write-Host "Presentation saved to $path"
diff --git a/Examples/ExamplePowerPoint04-Text.ps1 b/Examples/ExamplePowerPoint04-Text.ps1
index c0596444..335bf2bb 100644
--- a/Examples/ExamplePowerPoint04-Text.ps1
+++ b/Examples/ExamplePowerPoint04-Text.ps1
@@ -1,13 +1,12 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot 'Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'ExamplePowerPoint4.pptx'
-$presentation = New-OfficePowerPoint -FilePath $path
+$presentation = New-OfficePowerPoint -Path $path -NoSave
 
-$slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1
-Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Quarterly Report' | Out-Null
-Add-OfficePowerPointTextBox -Slide $slide -Text 'Generated with PSWriteOffice' -X 90 -Y 160 -Width 320 -Height 50 | Out-Null
+$slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru
+Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Quarterly Report'
+Add-OfficePowerPointTextBox -Slide $slide -Text 'Generated with PSWriteOffice' -X 90 -Y 160 -Width 320 -Height 50
 
 Save-OfficePowerPoint -Presentation $presentation
 Write-Host "Presentation saved to $path"
diff --git a/Examples/ExamplePowerPoint05-Load.ps1 b/Examples/ExamplePowerPoint05-Load.ps1
index 195a15bb..cce0a1dc 100644
--- a/Examples/ExamplePowerPoint05-Load.ps1
+++ b/Examples/ExamplePowerPoint05-Load.ps1
@@ -1,11 +1,10 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot 'Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'LoadExample.pptx'
-$presentation = New-OfficePowerPoint -FilePath $path
-Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 | Out-Null
+$presentation = New-OfficePowerPoint -Path $path -NoSave
+Add-OfficePowerPointSlide -Presentation $presentation -Layout 1
 Save-OfficePowerPoint -Presentation $presentation
 
-$loaded = Get-OfficePowerPoint -FilePath $path
+$loaded = Get-OfficePowerPoint -Path $path
 Write-Host "Loaded presentation with $($loaded.Slides.Count) slide(s)."
diff --git a/Examples/ExamplePowerPoint06-RemoveSlide.ps1 b/Examples/ExamplePowerPoint06-RemoveSlide.ps1
index f4c485f6..d27c785b 100644
--- a/Examples/ExamplePowerPoint06-RemoveSlide.ps1
+++ b/Examples/ExamplePowerPoint06-RemoveSlide.ps1
@@ -1,11 +1,10 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot 'Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'ExamplePowerPoint6.pptx'
-$presentation = New-OfficePowerPoint -FilePath $path
-Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 | Out-Null
-Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 | Out-Null
+$presentation = New-OfficePowerPoint -Path $path -NoSave
+Add-OfficePowerPointSlide -Presentation $presentation -Layout 1
+Add-OfficePowerPointSlide -Presentation $presentation -Layout 1
 
 Remove-OfficePowerPointSlide -Presentation $presentation -Index 0
 Save-OfficePowerPoint -Presentation $presentation
diff --git a/Examples/ExamplePowerPoint07-WhatIf.ps1 b/Examples/ExamplePowerPoint07-WhatIf.ps1
index 08fae844..dd100127 100644
--- a/Examples/ExamplePowerPoint07-WhatIf.ps1
+++ b/Examples/ExamplePowerPoint07-WhatIf.ps1
@@ -1,10 +1,9 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot 'Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'WhatIfExample.pptx'
-$presentation = New-OfficePowerPoint -FilePath $path
-Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 | Out-Null
+$presentation = New-OfficePowerPoint -Path $path -NoSave
+Add-OfficePowerPointSlide -Presentation $presentation -Layout 1
 
 Save-OfficePowerPoint -Presentation $presentation -WhatIf
 Write-Host "WhatIf completed for $path"
diff --git a/Examples/ExamplePowerPoint08-TablesAndShapes.ps1 b/Examples/ExamplePowerPoint08-TablesAndShapes.ps1
index 9b81e93c..6873e5da 100644
--- a/Examples/ExamplePowerPoint08-TablesAndShapes.ps1
+++ b/Examples/ExamplePowerPoint08-TablesAndShapes.ps1
@@ -1,12 +1,11 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot 'Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'ExamplePowerPoint8-TablesAndShapes.pptx'
-$presentation = New-OfficePowerPoint -FilePath $path
+$presentation = New-OfficePowerPoint -Path $path -NoSave
 
-$slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1
-Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Tables & Shapes' | Out-Null
+$slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru
+Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Tables & Shapes'
 
 $data = @(
     [PSCustomObject]@{ Product = 'Alpha'; Qty = 12; Revenue = 1200 }
@@ -14,9 +13,9 @@ $data = @(
     [PSCustomObject]@{ Product = 'Gamma'; Qty = 20; Revenue = 1840 }
 )
 
-Add-OfficePowerPointTable -Slide $slide -Data $data -X 60 -Y 140 -Width 420 -Height 200 | Out-Null
-Add-OfficePowerPointShape -Slide $slide -ShapeType Ellipse -X 520 -Y 140 -Width 140 -Height 140 -FillColor '#FFE699' -OutlineColor '#C65911' -OutlineWidth 1 | Out-Null
-Add-OfficePowerPointTextBox -Slide $slide -Text 'Highlights' -X 530 -Y 300 -Width 120 -Height 40 | Out-Null
+Add-OfficePowerPointTable -Slide $slide -Data $data -X 60 -Y 140 -Width 420 -Height 200
+Add-OfficePowerPointShape -Slide $slide -ShapeType Ellipse -X 520 -Y 140 -Width 140 -Height 140 -FillColor '#FFE699' -OutlineColor '#C65911' -OutlineWidth 1
+Add-OfficePowerPointTextBox -Slide $slide -Text 'Highlights' -X 530 -Y 300 -Width 120 -Height 40
 
 Save-OfficePowerPoint -Presentation $presentation
 Write-Host "Presentation saved to $path"
diff --git a/Examples/ExamplePowerPoint09-Placeholders.ps1 b/Examples/ExamplePowerPoint09-Placeholders.ps1
index 3bd1dde2..e3f74069 100644
--- a/Examples/ExamplePowerPoint09-Placeholders.ps1
+++ b/Examples/ExamplePowerPoint09-Placeholders.ps1
@@ -1,9 +1,8 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot 'Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'ExamplePowerPoint9-Placeholders.pptx'
-$presentation = New-OfficePowerPoint -FilePath $path
+$presentation = New-OfficePowerPoint -Path $path -NoSave
 
 $layouts = Get-OfficePowerPointLayout -Presentation $presentation
 $layout = $layouts | Where-Object { $_.Type } | Select-Object -First 1
@@ -12,25 +11,25 @@ if (-not $layout) {
 }
 
 $slide = if ($layout.Type) {
-    Add-OfficePowerPointSlide -Presentation $presentation -LayoutType $layout.Type -Master $layout.MasterIndex
+    Add-OfficePowerPointSlide -Presentation $presentation -LayoutType $layout.Type -Master $layout.MasterIndex -PassThru
 } elseif ($layout.Name) {
-    Add-OfficePowerPointSlide -Presentation $presentation -LayoutName $layout.Name -Master $layout.MasterIndex
+    Add-OfficePowerPointSlide -Presentation $presentation -LayoutName $layout.Name -Master $layout.MasterIndex -PassThru
 } else {
-    Add-OfficePowerPointSlide -Presentation $presentation -Layout $layout.LayoutIndex -Master $layout.MasterIndex
+    Add-OfficePowerPointSlide -Presentation $presentation -Layout $layout.LayoutIndex -Master $layout.MasterIndex -PassThru
 }
 
-Set-OfficePowerPointPlaceholderText -Slide $slide -PlaceholderType Title -Text 'Status Update' | Out-Null
+Set-OfficePowerPointPlaceholderText -Slide $slide -PlaceholderType Title -Text 'Status Update'
 
 $layoutPlaceholders = Get-OfficePowerPointLayoutPlaceholder -Slide $slide
 $placeholder = $layoutPlaceholders | Where-Object { $_.PlaceholderType } | Select-Object -First 1
 if ($placeholder) {
     $placeholderType = $placeholder.PlaceholderType.ToString()
     Set-OfficePowerPointLayoutPlaceholderBounds -Presentation $presentation -Master $layout.MasterIndex -Layout $layout.LayoutIndex `
-        -PlaceholderType $placeholderType -Index $placeholder.PlaceholderIndex -Left 60 -Top 140 -Width 520 -Height 240 | Out-Null
+        -PlaceholderType $placeholderType -Index $placeholder.PlaceholderIndex -Left 60 -Top 140 -Width 520 -Height 240
     Set-OfficePowerPointLayoutPlaceholderTextMargins -Presentation $presentation -Master $layout.MasterIndex -Layout $layout.LayoutIndex `
-        -PlaceholderType $placeholderType -Index $placeholder.PlaceholderIndex -Left 12 -Top 8 -Right 12 -Bottom 8 | Out-Null
+        -PlaceholderType $placeholderType -Index $placeholder.PlaceholderIndex -Left 12 -Top 8 -Right 12 -Bottom 8
     Set-OfficePowerPointLayoutPlaceholderTextStyle -Presentation $presentation -Master $layout.MasterIndex -Layout $layout.LayoutIndex `
-        -PlaceholderType $placeholderType -Index $placeholder.PlaceholderIndex -Style Body -FontSize 18 -Bold $true | Out-Null
+        -PlaceholderType $placeholderType -Index $placeholder.PlaceholderIndex -Style Body -FontSize 18 -Bold $true
 }
 
 Save-OfficePowerPoint -Presentation $presentation
diff --git a/Examples/ExamplePowerPoint10-Dsl.ps1 b/Examples/ExamplePowerPoint10-Dsl.ps1
index 39b555ef..83b273c3 100644
--- a/Examples/ExamplePowerPoint10-Dsl.ps1
+++ b/Examples/ExamplePowerPoint10-Dsl.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot 'Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'DslExample.pptx'
 $data = @(
     [pscustomobject]@{ Item = 'Alpha'; Qty = 10 }
diff --git a/Examples/ExamplePowerPoint11-InspectionDsl.ps1 b/Examples/ExamplePowerPoint11-InspectionDsl.ps1
index 25381697..5738608e 100644
--- a/Examples/ExamplePowerPoint11-InspectionDsl.ps1
+++ b/Examples/ExamplePowerPoint11-InspectionDsl.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot 'Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'DslInspection.pptx'
 
 New-OfficePowerPoint -Path $path {
diff --git a/Examples/ExamplePowerPoint12-LayoutDsl.ps1 b/Examples/ExamplePowerPoint12-LayoutDsl.ps1
index 990f7326..4dcfe94a 100644
--- a/Examples/ExamplePowerPoint12-LayoutDsl.ps1
+++ b/Examples/ExamplePowerPoint12-LayoutDsl.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot 'Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'LayoutDslExample.pptx'
 
 New-OfficePowerPoint -Path $path {
diff --git a/Examples/ExamplePowerPoint13-LayoutPlaceholderAliases.ps1 b/Examples/ExamplePowerPoint13-LayoutPlaceholderAliases.ps1
index ed34d4f7..eab9962b 100644
--- a/Examples/ExamplePowerPoint13-LayoutPlaceholderAliases.ps1
+++ b/Examples/ExamplePowerPoint13-LayoutPlaceholderAliases.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot 'Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'LayoutPlaceholderAliases.pptx'
 
 New-OfficePowerPoint -Path $path {
diff --git a/Examples/Excel/Example-ExcelAdvanced.ps1 b/Examples/Excel/Example-ExcelAdvanced.ps1
index 1b4c5ec1..5cf9a798 100644
--- a/Examples/Excel/Example-ExcelAdvanced.ps1
+++ b/Examples/Excel/Example-ExcelAdvanced.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'Example-ExcelAdvanced.xlsx'
 $data = @(
     [pscustomobject]@{ Region = 'North'; Quarter = 'Q1'; Sales = 1200; Status = 'New' }
@@ -29,7 +28,7 @@ New-OfficeExcel -Path $path {
         ExcelComment -Cell 'C2' -Text 'Review this value'
 
         if (Test-Path $imagePath) {
-            ExcelImage -Path $imagePath -Range 'I8:J12' -Name 'OfficeIMOLogo' -AltText 'OfficeIMO logo' | Out-Null
+            ExcelImage -Path $imagePath -Range 'I8:J12' -Name 'OfficeIMOLogo' -AltText 'OfficeIMO logo'
         }
     }
 
diff --git a/Examples/Excel/Example-ExcelAliasDsl.ps1 b/Examples/Excel/Example-ExcelAliasDsl.ps1
index 2216f650..196e2c8b 100644
--- a/Examples/Excel/Example-ExcelAliasDsl.ps1
+++ b/Examples/Excel/Example-ExcelAliasDsl.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $orders = @(
     [PSCustomObject]@{ Item = 'Router'; Qty = 15; Status = 'In Stock' }
     [PSCustomObject]@{ Item = 'Switch'; Qty = 4; Status = 'Low' }
@@ -18,6 +17,6 @@ New-OfficeExcel -Path $path {
 
         ExcelTable -Data $orders -TableName 'InventoryTable'
     }
-} -PassThru | Out-Null
+}
 
 Write-Host "Workbook saved to $path"
diff --git a/Examples/Excel/Example-ExcelBasic.ps1 b/Examples/Excel/Example-ExcelBasic.ps1
index f6a0398b..fed4ca8a 100644
--- a/Examples/Excel/Example-ExcelBasic.ps1
+++ b/Examples/Excel/Example-ExcelBasic.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $data = @(
     [PSCustomObject]@{ Region = 'North America'; Revenue = 125000; YoY = 0.12 }
     [PSCustomObject]@{ Region = 'EMEA'; Revenue = 98000; YoY = 0.22 }
@@ -15,6 +14,6 @@ New-OfficeExcel -Path $path {
         Add-OfficeExcelTable -Data $data -TableName 'Sales' -TableStyle 'TableStyleMedium9'
         Set-OfficeExcelColumn -Column 1 -AutoFit
     }
-} -PassThru | Out-Null
+}
 
 Write-Host "Workbook saved to $path"
diff --git a/Examples/Excel/Example-ExcelChartFormatting.ps1 b/Examples/Excel/Example-ExcelChartFormatting.ps1
index 39c633a2..519e2f33 100644
--- a/Examples/Excel/Example-ExcelChartFormatting.ps1
+++ b/Examples/Excel/Example-ExcelChartFormatting.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'Excel-ChartFormatting.xlsx'
 $rows = @(
     [PSCustomObject]@{ Region = 'NA'; Revenue = 100 }
@@ -17,8 +16,8 @@ New-OfficeExcel -Path $path {
         $chart |
             Set-OfficeExcelChartLegend -Position Right |
             Set-OfficeExcelChartDataLabels -ShowValue $true -ShowPercent $true -Position OutsideEnd -NumberFormat '0.0%' -SourceLinked:$false |
-            Set-OfficeExcelChartStyle -StyleId 251 -ColorStyleId 10 | Out-Null
+            Set-OfficeExcelChartStyle -StyleId 251 -ColorStyleId 10
     }
-} | Out-Null
+}
 
 Write-Host "Workbook saved to $path"
diff --git a/Examples/Excel/Example-ExcelDbaClientXRoundTrip.ps1 b/Examples/Excel/Example-ExcelDbaClientXRoundTrip.ps1
index 77bb9f8e..100f4ef1 100644
--- a/Examples/Excel/Example-ExcelDbaClientXRoundTrip.ps1
+++ b/Examples/Excel/Example-ExcelDbaClientXRoundTrip.ps1
@@ -78,7 +78,7 @@ try {
             -AutoFit `
             -FreezeTopRow `
             -BoldTopRow `
-            -ErrorAction Stop | Out-Null
+            -ErrorAction Stop
 
     $table = Import-OfficeExcel `
         -Path $Path `
diff --git a/Examples/Excel/Example-ExcelHtmlReview.ps1 b/Examples/Excel/Example-ExcelHtmlReview.ps1
index ec255af8..a3aa6144 100644
--- a/Examples/Excel/Example-ExcelHtmlReview.ps1
+++ b/Examples/Excel/Example-ExcelHtmlReview.ps1
@@ -1,8 +1,7 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $workbookPath = Join-Path $documents 'Excel-HtmlReview.xlsx'
 $semanticHtmlPath = Join-Path $documents 'Excel-HtmlReview.semantic.html'
 $visualHtmlPath = Join-Path $documents 'Excel-HtmlReview.visual.html'
@@ -21,10 +20,10 @@ New-OfficeExcel -Path $workbookPath {
         Set-OfficeExcelCell -Cell 'E1' -Value 'Total incidents'
         Set-OfficeExcelColumn -Column 1, 2, 3, 4, 5 -AutoFit
     }
-} -PassThru | Out-Null
+}
 
-ConvertTo-OfficeExcelHtml -Path $workbookPath -OutputPath $semanticHtmlPath -Title 'Service Workbook Review' -PassThru | Out-Null
-ConvertTo-OfficeExcelHtml -Path $workbookPath -Profile VisualReview -OutputPath $visualHtmlPath -Title 'Service Workbook Visual Review' -PassThru | Out-Null
+ConvertTo-OfficeExcelHtml -Path $workbookPath -OutputPath $semanticHtmlPath -Title 'Service Workbook Review'
+ConvertTo-OfficeExcelHtml -Path $workbookPath -Profile VisualReview -OutputPath $visualHtmlPath -Title 'Service Workbook Visual Review'
 
 Write-Host "Workbook saved to $workbookPath"
 Write-Host "Semantic HTML saved to $semanticHtmlPath"
diff --git a/Examples/Excel/Example-ExcelHtmlTablesViaPSParseHTML.ps1 b/Examples/Excel/Example-ExcelHtmlTablesViaPSParseHTML.ps1
index 8ad5d00c..1c59561a 100644
--- a/Examples/Excel/Example-ExcelHtmlTablesViaPSParseHTML.ps1
+++ b/Examples/Excel/Example-ExcelHtmlTablesViaPSParseHTML.ps1
@@ -2,8 +2,7 @@ Import-Module PSParseHTML -ErrorAction Stop
 Import-Module PSWriteOffice -ErrorAction Stop
 
 $outputDirectory = Join-Path $PSScriptRoot '..\Documents'
-New-Item -ItemType Directory -Path $outputDirectory -Force | Out-Null
-
+$null = New-Item -ItemType Directory -Path $outputDirectory -Force
 $htmlPath = Join-Path $outputDirectory 'HtmlTables.html'
 $excelPath = Join-Path $outputDirectory 'HtmlTables.xlsx'
 
diff --git a/Examples/Excel/Example-ExcelInternalLinks.ps1 b/Examples/Excel/Example-ExcelInternalLinks.ps1
index 943816c0..af630744 100644
--- a/Examples/Excel/Example-ExcelInternalLinks.ps1
+++ b/Examples/Excel/Example-ExcelInternalLinks.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'Excel-InternalLinks.xlsx'
 $rows = @(
     [PSCustomObject]@{ Sheet = 'Alpha'; Target = 'Alpha' }
@@ -24,6 +23,6 @@ New-OfficeExcel -Path $path {
     Add-OfficeExcelSheet -Name 'Beta' -Content {
         Set-OfficeExcelCell -Address 'A1' -Value 'Beta Home'
     }
-} | Out-Null
+}
 
 Write-Host "Workbook saved to $path"
diff --git a/Examples/Excel/Example-ExcelLinksAndImages.ps1 b/Examples/Excel/Example-ExcelLinksAndImages.ps1
index 55729dee..1c36fe33 100644
--- a/Examples/Excel/Example-ExcelLinksAndImages.ps1
+++ b/Examples/Excel/Example-ExcelLinksAndImages.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'Excel-LinksAndImages.xlsx'
 
 New-OfficeExcel -Path $path {
@@ -13,6 +12,6 @@ New-OfficeExcel -Path $path {
         Set-OfficeExcelHostHyperlink -Address 'B2' -Url 'https://learn.microsoft.com/office/open-xml/'
         Add-OfficeExcelImageFromUrl -Address 'D2' -Url 'https://raw.githubusercontent.com/github/explore/main/topics/powershell/powershell.png' -WidthPixels 48 -HeightPixels 48
     }
-} | Out-Null
+}
 
 Write-Host "Workbook saved to $path"
diff --git a/Examples/Excel/Example-ExcelModifyExistingTables.ps1 b/Examples/Excel/Example-ExcelModifyExistingTables.ps1
index 776d317d..c97e787c 100644
--- a/Examples/Excel/Example-ExcelModifyExistingTables.ps1
+++ b/Examples/Excel/Example-ExcelModifyExistingTables.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'Excel-ModifyExistingTables.xlsx'
 
 $initialRows = @(
@@ -16,7 +15,7 @@ New-OfficeExcel -Path $path {
     ExcelSheet 'Notes' {
         Set-OfficeExcelCell -Address A1 -Value 'This workbook is modified after it is created.'
     }
-} | Out-Null
+}
 
 # Second pass: append rows to the named table without rebuilding the workbook through the DSL.
 $workbook = Get-OfficeExcel -Path $path
@@ -26,8 +25,7 @@ try {
             Service = 'File Services'
             Status  = 'Ready'
             Owner   = 'Storage'
-        }) -PassThru |
-        Out-Null
+        }) -PassThru
 
     $moreRows = @(
         [PSCustomObject]@{ Service = 'Network'; Status = 'Investigating'; Owner = 'Platform' }
@@ -35,8 +33,7 @@ try {
     )
 
     $workbook |
-        Add-OfficeExcelTableRow -Sheet Readiness -TableName ServiceReadiness -InputObject $moreRows |
-        Out-Null
+        Add-OfficeExcelTableRow -Sheet Readiness -TableName ServiceReadiness -InputObject $moreRows
 } finally {
     Close-OfficeExcel -Document $workbook -Save
 }
diff --git a/Examples/Excel/Example-ExcelNavigationAndRanges.ps1 b/Examples/Excel/Example-ExcelNavigationAndRanges.ps1
index e1a51040..3936b71c 100644
--- a/Examples/Excel/Example-ExcelNavigationAndRanges.ps1
+++ b/Examples/Excel/Example-ExcelNavigationAndRanges.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'Excel-NavigationAndRanges.xlsx'
 $rows = @(
     [PSCustomObject]@{ Region = 'North America'; Revenue = 125000 }
@@ -19,7 +18,7 @@ New-OfficeExcel -Path $path {
         ExcelRow -Row 2 -Values 'Generated', (Get-Date -Format 'yyyy-MM-dd')
     }
     ExcelTableOfContents -IncludeNamedRanges
-} | Out-Null
+}
 
 Write-Host "Workbook saved to $path"
 Write-Host ''
diff --git a/Examples/Excel/Example-ExcelPictures.ps1 b/Examples/Excel/Example-ExcelPictures.ps1
index 128daeaa..34ba8dca 100644
--- a/Examples/Excel/Example-ExcelPictures.ps1
+++ b/Examples/Excel/Example-ExcelPictures.ps1
@@ -1,8 +1,7 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'Excel-Pictures.xlsx'
 $imagePath = Join-Path $PSScriptRoot '..\Word\Example-WordTableCells.fixture.png'
 
@@ -21,6 +20,6 @@ New-OfficeExcel -Path $path {
         ExcelColumn -ColumnName C -Width 18
         ExcelColumn -ColumnName E -Width 24
     }
-} | Out-Null
+}
 
 Write-Host "Workbook saved to $path"
diff --git a/Examples/Excel/Example-ExcelReadObjects.ps1 b/Examples/Excel/Example-ExcelReadObjects.ps1
index 288969a3..39299927 100644
--- a/Examples/Excel/Example-ExcelReadObjects.ps1
+++ b/Examples/Excel/Example-ExcelReadObjects.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'Excel-ReadObjects.xlsx'
 $rows = @(
     [PSCustomObject]@{ Region = 'NA'; Revenue = 100 }
@@ -17,7 +16,7 @@ New-OfficeExcel -Path $path {
         Set-OfficeExcelHeaderFooter -HeaderCenter 'Demo' -FooterRight 'Page &P of &N'
         Invoke-OfficeExcelAutoFit -Columns
     }
-} | Out-Null
+}
 
 $data = Get-OfficeExcelData -Path $path -Sheet 'Data'
 $data | Format-Table
diff --git a/Examples/Excel/Example-ExcelTablesAndRanges.ps1 b/Examples/Excel/Example-ExcelTablesAndRanges.ps1
index 4b951392..81d233b9 100644
--- a/Examples/Excel/Example-ExcelTablesAndRanges.ps1
+++ b/Examples/Excel/Example-ExcelTablesAndRanges.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $data = @(
     [PSCustomObject]@{ Region = 'North America'; Revenue = 125000; Owner = 'Ada' }
     [PSCustomObject]@{ Region = 'EMEA'; Revenue = 98000; Owner = 'Linus' }
@@ -18,7 +17,7 @@ New-OfficeExcel -Path $path {
     ExcelSheet 'Notes' {
         ExcelCell -Address 'A1' -Value 'Generated by PSWriteOffice'
     }
-} | Out-Null
+}
 
 Write-Host "Workbook saved to $path"
 Write-Host 'Tables:'
diff --git a/Examples/Excel/Example-ExcelUrlLinks.ps1 b/Examples/Excel/Example-ExcelUrlLinks.ps1
index ce3cffe3..4f182c2d 100644
--- a/Examples/Excel/Example-ExcelUrlLinks.ps1
+++ b/Examples/Excel/Example-ExcelUrlLinks.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'Excel-UrlLinks.xlsx'
 $rows = @(
     [PSCustomObject]@{ RFC = 'rfc7208'; Spec = 'rfc5321' }
@@ -18,6 +17,6 @@ New-OfficeExcel -Path $path {
         Set-OfficeExcelUrlLinksByHeader -Header 'RFC' -TableName 'LinksTable' -UrlScript { param($text) "https://datatracker.ietf.org/doc/html/$text" } -TitleScript { param($text) "Open $text" }
         Set-OfficeExcelUrlLinks -Range 'D2:D3' -UrlScript { param($text) "https://datatracker.ietf.org/doc/html/$text" }
     }
-} | Out-Null
+}
 
 Write-Host "Workbook saved to $path"
diff --git a/Examples/Excel/Recipe-Excel-CompareWorkbooks.ps1 b/Examples/Excel/Recipe-Excel-CompareWorkbooks.ps1
index e1e51d98..34fb89ef 100644
--- a/Examples/Excel/Recipe-Excel-CompareWorkbooks.ps1
+++ b/Examples/Excel/Recipe-Excel-CompareWorkbooks.ps1
@@ -15,4 +15,4 @@ ExcelNew -Path $candidate {
     }
 }
 
-Compare-OfficeExcelWorkbook -InputPath $baseline -DifferencePath $candidate
+Compare-OfficeExcelWorkbook -Path $baseline -DifferencePath $candidate
diff --git a/Examples/Excel/Recipe-Excel-ImportDelimited.ps1 b/Examples/Excel/Recipe-Excel-ImportDelimited.ps1
index bd60652c..e8208d10 100644
--- a/Examples/Excel/Recipe-Excel-ImportDelimited.ps1
+++ b/Examples/Excel/Recipe-Excel-ImportDelimited.ps1
@@ -8,7 +8,7 @@ ExcelNew -Path $workbook {
 }
 
 Import-OfficeExcelDelimitedText `
-    -InputPath $workbook `
+    -Path $workbook `
     -SourcePath $csv `
     -Delimiter ';' `
     -SheetName 'Sales'
diff --git a/Examples/Excel/Recipe-Excel-MergeWorkbooks.ps1 b/Examples/Excel/Recipe-Excel-MergeWorkbooks.ps1
index 2a3e5326..a02275df 100644
--- a/Examples/Excel/Recipe-Excel-MergeWorkbooks.ps1
+++ b/Examples/Excel/Recipe-Excel-MergeWorkbooks.ps1
@@ -19,7 +19,7 @@ ExcelNew -Path $source {
 }
 
 Join-OfficeExcelWorkbook `
-    -InputPath $target `
+    -Path $target `
     -SourcePath $source `
     -SourceSheet 'North', 'South' `
     -SheetNamePrefix 'Region '
diff --git a/Examples/Markdown/Example-MarkdownAdvanced.ps1 b/Examples/Markdown/Example-MarkdownAdvanced.ps1
index f0d9a6a4..c595ca92 100644
--- a/Examples/Markdown/Example-MarkdownAdvanced.ps1
+++ b/Examples/Markdown/Example-MarkdownAdvanced.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'Example-MarkdownAdvanced.md'
 $data = @(
     [pscustomobject]@{ Metric = 'Latency'; Value = '120ms' }
@@ -33,6 +32,6 @@ New-OfficeMarkdown -Path $path {
     MarkdownCode -Language 'powershell' -Content 'Get-Service | Select-Object -First 5'
     MarkdownHorizontalRule
     MarkdownQuote -Text 'Availability is a feature.'
-} -PassThru | Out-Null
+}
 
 Write-Host "Markdown saved to $path"
diff --git a/Examples/Markdown/Example-MarkdownDsl.ps1 b/Examples/Markdown/Example-MarkdownDsl.ps1
index 3c95a28d..d3de7f2f 100644
--- a/Examples/Markdown/Example-MarkdownDsl.ps1
+++ b/Examples/Markdown/Example-MarkdownDsl.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'Example-MarkdownDsl.md'
 $data = @(
     [pscustomobject]@{ Name = 'Alpha'; Value = 1 }
@@ -16,6 +15,6 @@ New-OfficeMarkdown -Path $path {
     MarkdownCode -Language 'powershell' -Content 'Get-Date'
     MarkdownHorizontalRule
     MarkdownQuote -Text 'Ship fast, learn faster.'
-} -PassThru | Out-Null
+}
 
 Write-Host "Markdown saved to $path"
diff --git a/Examples/Markdown/Recipe-Markdown-InspectContent.ps1 b/Examples/Markdown/Recipe-Markdown-InspectContent.ps1
index 6dcf822b..443e7042 100644
--- a/Examples/Markdown/Recipe-Markdown-InspectContent.ps1
+++ b/Examples/Markdown/Recipe-Markdown-InspectContent.ps1
@@ -7,6 +7,6 @@ MarkdownNew -Path $path {
     MarkdownTable -InputObject @([pscustomobject]@{ Control = 'Backups'; Status = 'Ready' })
 }
 
-Get-OfficeMarkdownFrontMatter -InputPath $path
-Get-OfficeMarkdownHeading -InputPath $path
-Get-OfficeMarkdownTable -InputPath $path -AsObject
+Get-OfficeMarkdownFrontMatter -Path $path
+Get-OfficeMarkdownHeading -Path $path
+Get-OfficeMarkdownTable -Path $path -AsObject
diff --git a/Examples/Markdown/Recipe-Markdown-PublishHtml.ps1 b/Examples/Markdown/Recipe-Markdown-PublishHtml.ps1
index b5c0fc31..c373924f 100644
--- a/Examples/Markdown/Recipe-Markdown-PublishHtml.ps1
+++ b/Examples/Markdown/Recipe-Markdown-PublishHtml.ps1
@@ -7,7 +7,7 @@ MarkdownNew -Path $markdownPath {
 }
 
 ConvertTo-OfficeMarkdownHtml `
-    -InputPath $markdownPath `
+    -Path $markdownPath `
     -OutputPath $htmlPath `
     -DocumentMode `
     -Title 'Operations handbook' `
diff --git a/Examples/Markdown/Recipe-Markdown-WordRoundTrip.ps1 b/Examples/Markdown/Recipe-Markdown-WordRoundTrip.ps1
index 1b20c71a..8332c346 100644
--- a/Examples/Markdown/Recipe-Markdown-WordRoundTrip.ps1
+++ b/Examples/Markdown/Recipe-Markdown-WordRoundTrip.ps1
@@ -7,5 +7,5 @@ MarkdownNew -Path $markdownPath {
     MarkdownList -Items 'Prepare', 'Approve', 'Deploy'
 }
 
-ConvertFrom-OfficeWordMarkdown -FilePath $markdownPath -OutputPath $wordPath
-ConvertTo-OfficeWordMarkdown -FilePath $wordPath -OutputPath $roundTripPath
+ConvertFrom-OfficeWordMarkdown -Path $markdownPath -OutputPath $wordPath
+ConvertTo-OfficeWordMarkdown -Path $wordPath -OutputPath $roundTripPath
diff --git a/Examples/Pdf/Example-OfficePdfExports.ps1 b/Examples/Pdf/Example-OfficePdfExports.ps1
new file mode 100644
index 00000000..d39a228a
--- /dev/null
+++ b/Examples/Pdf/Example-OfficePdfExports.ps1
@@ -0,0 +1,53 @@
+$ErrorActionPreference = 'Stop'
+
+Import-Module PSWriteOffice -ErrorAction Stop
+
+$documents = Join-Path $PSScriptRoot '..\Documents'
+$null = New-Item -Path $documents -ItemType Directory -Force
+$wordPath = Join-Path $documents 'Example-OfficePdfExport.docx'
+$wordPdf = Join-Path $documents 'Example-OfficePdfExport-Word.pdf'
+$excelPath = Join-Path $documents 'Example-OfficePdfExport.xlsx'
+$excelPdf = Join-Path $documents 'Example-OfficePdfExport-Excel.pdf'
+$markdownPath = Join-Path $documents 'Example-OfficePdfExport.md'
+$markdownPdf = Join-Path $documents 'Example-OfficePdfExport-Markdown.pdf'
+$powerPointPath = Join-Path $documents 'Example-OfficePdfExport.pptx'
+$powerPointPdf = Join-Path $documents 'Example-OfficePdfExport-PowerPoint.pdf'
+
+$rows = @(
+    [pscustomobject]@{ Name = 'Alpha'; Status = 'Ready'; Count = 12 }
+    [pscustomobject]@{ Name = 'Beta'; Status = 'Review'; Count = 7 }
+)
+
+New-OfficeWord -Path $wordPath {
+    WordParagraph -Text 'Word PDF export' -Style Heading1
+    WordParagraph 'Create the source document, then choose the output format explicitly.'
+    WordTable -InputObject $rows -Layout AutoFitToWindow
+}
+Export-OfficeDocumentPdf -InputPath $wordPath -Path $wordPdf
+
+New-OfficeExcel -Path $excelPath {
+    ExcelSheet -Name 'Summary' {
+        ExcelTable -Data $rows
+        ExcelAutoFit
+    }
+}
+Export-OfficeDocumentPdf -InputPath $excelPath -Path $excelPdf
+
+New-OfficeMarkdown -Path $markdownPath {
+    MarkdownHeading -Level 1 -Text 'Markdown PDF export'
+    MarkdownParagraph 'Markdown keeps the same authoring mindset with format-appropriate simplification.'
+    MarkdownTable -InputObject $rows
+}
+Export-OfficeDocumentPdf -InputPath $markdownPath -Path $markdownPdf
+
+New-OfficePowerPoint -Path $powerPointPath {
+    PptSlide {
+        PptTitle -Title 'PowerPoint PDF export'
+        PptBullets -Bullets 'Create the deck', 'Export the PDF', 'Inspect generated output'
+    }
+}
+Export-OfficeDocumentPdf -InputPath $powerPointPath -Path $powerPointPdf
+
+Get-Item -LiteralPath $wordPdf, $excelPdf, $markdownPdf, $powerPointPdf |
+    Select-Object FullName, Length |
+    Format-Table -AutoSize
diff --git a/Examples/Pdf/Example-OfficePdfSidecars.ps1 b/Examples/Pdf/Example-OfficePdfSidecars.ps1
deleted file mode 100644
index 3cc8a7b5..00000000
--- a/Examples/Pdf/Example-OfficePdfSidecars.ps1
+++ /dev/null
@@ -1,50 +0,0 @@
-$ErrorActionPreference = 'Stop'
-
-Import-Module PSWriteOffice -ErrorAction Stop
-
-$documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
-$wordPath = Join-Path $documents 'Example-OfficePdfSidecar.docx'
-$wordPdf = Join-Path $documents 'Example-OfficePdfSidecar-Word.pdf'
-$excelPath = Join-Path $documents 'Example-OfficePdfSidecar.xlsx'
-$excelPdf = Join-Path $documents 'Example-OfficePdfSidecar-Excel.pdf'
-$markdownPath = Join-Path $documents 'Example-OfficePdfSidecar.md'
-$markdownPdf = Join-Path $documents 'Example-OfficePdfSidecar-Markdown.pdf'
-$powerPointPath = Join-Path $documents 'Example-OfficePdfSidecar.pptx'
-$powerPointPdf = Join-Path $documents 'Example-OfficePdfSidecar-PowerPoint.pdf'
-
-$rows = @(
-    [pscustomobject]@{ Name = 'Alpha'; Status = 'Ready'; Count = 12 }
-    [pscustomobject]@{ Name = 'Beta'; Status = 'Review'; Count = 7 }
-)
-
-New-OfficeWord -Path $wordPath -PdfPath $wordPdf {
-    WordParagraph -Text 'Word PDF sidecar' -Style Heading1
-    WordParagraph 'The Word document and PDF sidecar are saved in one command.'
-    WordTable -InputObject $rows -Layout AutoFitToWindow
-} | Out-Null
-
-New-OfficeExcel -Path $excelPath -PdfPath $excelPdf {
-    ExcelSheet -Name 'Summary' {
-        ExcelTable -Data $rows
-        ExcelAutoFit
-    }
-} | Out-Null
-
-New-OfficeMarkdown -Path $markdownPath -PdfPath $markdownPdf {
-    MarkdownHeading -Level 1 -Text 'Markdown PDF sidecar'
-    MarkdownParagraph 'Markdown keeps the same authoring mindset with format-appropriate simplification.'
-    MarkdownTable -InputObject $rows
-} | Out-Null
-
-New-OfficePowerPoint -Path $powerPointPath -PdfPath $powerPointPdf {
-    PptSlide {
-        PptTitle -Title 'PowerPoint PDF sidecar'
-        PptBullets -Bullets 'Create the deck', 'Save the PDF sidecar', 'Inspect generated output'
-    }
-} | Out-Null
-
-Get-Item -LiteralPath $wordPdf, $excelPdf, $markdownPdf, $powerPointPdf |
-    Select-Object FullName, Length |
-    Format-Table -AutoSize
diff --git a/Examples/Pdf/Example-PdfOperations.ps1 b/Examples/Pdf/Example-PdfOperations.ps1
index 21e8f54d..0e072bad 100644
--- a/Examples/Pdf/Example-PdfOperations.ps1
+++ b/Examples/Pdf/Example-PdfOperations.ps1
@@ -4,7 +4,7 @@ Import-Module PSWriteOffice -ErrorAction Stop
 
 $documents = Join-Path $PSScriptRoot '..\Documents'
 $splitDirectory = Join-Path $documents 'Example-PdfOperations-Split'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
+$null = New-Item -Path $documents -ItemType Directory -Force
 Remove-Item -Path $splitDirectory -Recurse -Force -ErrorAction SilentlyContinue
 
 $first = Join-Path $documents 'Example-PdfOperations-A.pdf'
@@ -17,18 +17,18 @@ $stamped = Join-Path $documents 'Example-PdfOperations-Stamped.pdf'
 New-OfficePdf -Path $first {
     PdfHeading 'Operations Part A'
     PdfParagraph 'This source PDF is generated by PSWriteOffice.'
-} | Out-Null
+}
 
 New-OfficePdf -Path $second {
     PdfHeading 'Operations Part B'
     PdfParagraph 'This second PDF will be joined, split, rotated, stamped, and inspected.'
-} | Out-Null
+}
 
-Join-OfficePdf -Path $first, $second -OutputPath $joined -PassThru | Out-Null
-Split-OfficePdf -Path $joined -OutputDirectory $splitDirectory -Prefix 'part' | Out-Null
-Set-OfficePdfPage -Path $joined -Rotation 90 -PageRange '2' -OutputPath $rotated | Out-Null
-Set-OfficePdfMetadata -Path $rotated -OutputPath $metadata -Title 'PDF Operations Example' -Author 'PSWriteOffice' -Subject 'Existing PDF operations' | Out-Null
-Add-OfficePdfStamp -Path $metadata -OutputPath $stamped -Text 'REVIEWED' -Color '#0F766E' -FontSize 22 -Rotation 12 -PageRange '1' | Out-Null
+Join-OfficePdf -Path $first, $second -OutputPath $joined
+Split-OfficePdf -Path $joined -OutputDirectory $splitDirectory -Prefix 'part'
+Set-OfficePdfPage -Path $joined -Rotation 90 -PageRange '2' -OutputPath $rotated
+Set-OfficePdfMetadata -Path $rotated -OutputPath $metadata -Title 'PDF Operations Example' -Author 'PSWriteOffice' -Subject 'Existing PDF operations'
+Add-OfficePdfStamp -Path $metadata -OutputPath $stamped -Text 'REVIEWED' -Color '#0F766E' -FontSize 22 -Rotation 12 -PageRange '1'
 
 $markdown = ConvertTo-OfficePdfMarkdown -Path $stamped
 $info = Get-OfficePdfInfo -Path $stamped
diff --git a/Examples/Pdf/Example-PdfReportDsl.ps1 b/Examples/Pdf/Example-PdfReportDsl.ps1
index d0875f1e..8f29f755 100644
--- a/Examples/Pdf/Example-PdfReportDsl.ps1
+++ b/Examples/Pdf/Example-PdfReportDsl.ps1
@@ -3,8 +3,7 @@ $ErrorActionPreference = 'Stop'
 Import-Module PSWriteOffice -ErrorAction Stop
 
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'Example-PdfReportDsl.pdf'
 $attachmentPath = Join-Path $documents 'Example-PdfReportDsl-notes.txt'
 Set-Content -LiteralPath $attachmentPath -Value 'Synthetic report notes embedded by PSWriteOffice.' -Encoding UTF8
@@ -66,7 +65,7 @@ New-OfficePdf -Path $path {
 
     PdfSpacer 10
     PdfAttachment -Path $attachmentPath -Description 'Generated example notes'
-} -PassThru | Out-Null
+}
 
 $info = Get-OfficePdfInfo -Path $path
 [pscustomobject]@{
diff --git a/Examples/PowerPoint/Example-PowerPointBackgroundsAndLayout.ps1 b/Examples/PowerPoint/Example-PowerPointBackgroundsAndLayout.ps1
index a48b1f3e..2401d668 100644
--- a/Examples/PowerPoint/Example-PowerPointBackgroundsAndLayout.ps1
+++ b/Examples/PowerPoint/Example-PowerPointBackgroundsAndLayout.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'PowerPoint-BackgroundsAndLayout.pptx'
 $imagePath = Join-Path $documents 'PowerPoint-Background.bmp'
 
@@ -15,24 +14,24 @@ $imagePath = Join-Path $documents 'PowerPoint-Background.bmp'
     0xFF, 0x00
 [System.IO.File]::WriteAllBytes($imagePath, $bytes)
 
-$ppt = New-OfficePowerPoint -FilePath $path
-Set-OfficePowerPointSlideSize -Presentation $ppt -WidthCm 30 -HeightCm 20 | Out-Null
+$ppt = New-OfficePowerPoint -Path $path -NoSave
+Set-OfficePowerPointSlideSize -Presentation $ppt -WidthCm 30 -HeightCm 20
 
-$slide1 = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1
-Set-OfficePowerPointSlideTitle -Slide $slide1 -Title 'Content Grid' | Out-Null
-Set-OfficePowerPointBackground -Slide $slide1 -Color '#F4F7FB' | Out-Null
+$slide1 = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 -PassThru
+Set-OfficePowerPointSlideTitle -Slide $slide1 -Title 'Content Grid'
+Set-OfficePowerPointBackground -Slide $slide1 -Color '#F4F7FB'
 
 $columns = @(Get-OfficePowerPointLayoutBox -Presentation $ppt -ColumnCount 2 -MarginCm 1.5 -GutterCm 1.0)
 foreach ($index in 0..($columns.Count - 1)) {
     $box = $columns[$index]
-    Add-OfficePowerPointTextBox -Slide $slide1 -Text "Column $($index + 1)" -X $box.LeftPoints -Y $box.TopPoints -Width $box.WidthPoints -Height 48 | Out-Null
+    Add-OfficePowerPointTextBox -Slide $slide1 -Text "Column $($index + 1)" -X $box.LeftPoints -Y $box.TopPoints -Width $box.WidthPoints -Height 48
 }
 
-$slide2 = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1
-Set-OfficePowerPointSlideTitle -Slide $slide2 -Title 'Image Background' | Out-Null
-Set-OfficePowerPointBackground -Slide $slide2 -ImagePath $imagePath | Out-Null
+$slide2 = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 -PassThru
+Set-OfficePowerPointSlideTitle -Slide $slide2 -Title 'Image Background'
+Set-OfficePowerPointBackground -Slide $slide2 -ImagePath $imagePath
 
 Save-OfficePowerPoint -Presentation $ppt
-$ppt.Dispose()
+$ppt | Close-OfficePowerPoint
 
 Write-Host "Presentation saved to $path"
diff --git a/Examples/PowerPoint/Example-PowerPointCharts.ps1 b/Examples/PowerPoint/Example-PowerPointCharts.ps1
index d8a09e93..fb43bd28 100644
--- a/Examples/PowerPoint/Example-PowerPointCharts.ps1
+++ b/Examples/PowerPoint/Example-PowerPointCharts.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'PowerPoint-Charts.pptx'
 $rows = @(
     [PSCustomObject]@{ Month = 'Jan'; MonthNumber = 1; Sales = 10; Profit = 4 }
@@ -9,21 +8,21 @@ $rows = @(
     [PSCustomObject]@{ Month = 'Mar'; MonthNumber = 3; Sales = 18; Profit = 8 }
 )
 
-$ppt = New-OfficePowerPoint -FilePath $path
+$ppt = New-OfficePowerPoint -Path $path -NoSave
 
-$columnSlide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1
-Set-OfficePowerPointSlideTitle -Slide $columnSlide -Title 'Column Chart' | Out-Null
-Add-OfficePowerPointChart -Slide $columnSlide -Data $rows -CategoryProperty Month -SeriesProperty Sales, Profit -Title 'Sales vs Profit' | Out-Null
+$columnSlide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 -PassThru
+Set-OfficePowerPointSlideTitle -Slide $columnSlide -Title 'Column Chart'
+Add-OfficePowerPointChart -Slide $columnSlide -Data $rows -CategoryProperty Month -SeriesProperty Sales, Profit -Title 'Sales vs Profit'
 
-$pieSlide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1
-Set-OfficePowerPointSlideTitle -Slide $pieSlide -Title 'Pie Chart' | Out-Null
-Add-OfficePowerPointChart -Slide $pieSlide -Type Pie -Data $rows -CategoryProperty Month -SeriesProperty Sales -Title 'Sales Mix' | Out-Null
+$pieSlide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 -PassThru
+Set-OfficePowerPointSlideTitle -Slide $pieSlide -Title 'Pie Chart'
+Add-OfficePowerPointChart -Slide $pieSlide -Type Pie -Data $rows -CategoryProperty Month -SeriesProperty Sales -Title 'Sales Mix'
 
-$scatterSlide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1
-Set-OfficePowerPointSlideTitle -Slide $scatterSlide -Title 'Scatter Chart' | Out-Null
-Add-OfficePowerPointChart -Slide $scatterSlide -Type Scatter -Data $rows -XProperty MonthNumber -YProperty Sales, Profit -Title 'Trend Scatter' | Out-Null
+$scatterSlide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 -PassThru
+Set-OfficePowerPointSlideTitle -Slide $scatterSlide -Title 'Scatter Chart'
+Add-OfficePowerPointChart -Slide $scatterSlide -Type Scatter -Data $rows -XProperty MonthNumber -YProperty Sales, Profit -Title 'Trend Scatter'
 
 Save-OfficePowerPoint -Presentation $ppt
-$ppt.Dispose()
+$ppt | Close-OfficePowerPoint
 
 Write-Host "Presentation saved to $path"
diff --git a/Examples/PowerPoint/Example-PowerPointCopySlides.ps1 b/Examples/PowerPoint/Example-PowerPointCopySlides.ps1
index 94d73a67..e2800767 100644
--- a/Examples/PowerPoint/Example-PowerPointCopySlides.ps1
+++ b/Examples/PowerPoint/Example-PowerPointCopySlides.ps1
@@ -1,19 +1,18 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'PowerPoint-CopySlides.pptx'
-$presentation = New-OfficePowerPoint -FilePath $path
+$presentation = New-OfficePowerPoint -Path $path -NoSave
 
-$intro = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1
+$intro = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru
 Set-OfficePowerPointSlideTitle -Slide $intro -Title 'Executive Summary'
-Add-OfficePowerPointTextBox -Slide $intro -Text 'Quarterly revenue and margin summary' -X 80 -Y 150 -Width 360 -Height 60 | Out-Null
+Add-OfficePowerPointTextBox -Slide $intro -Text 'Quarterly revenue and margin summary' -X 80 -Y 150 -Width 360 -Height 60
 Set-OfficePowerPointNotes -Slide $intro -Text 'Use this for board prep.'
 
-$closing = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1
+$closing = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru
 Set-OfficePowerPointSlideTitle -Slide $closing -Title 'Appendix'
 
-Copy-OfficePowerPointSlide -Presentation $presentation -Index 0 -InsertAt 1 | Out-Null
+Copy-OfficePowerPointSlide -Presentation $presentation -Index 0 -InsertAt 1
 
 Save-OfficePowerPoint -Presentation $presentation
 
diff --git a/Examples/PowerPoint/Example-PowerPointHtmlReview.ps1 b/Examples/PowerPoint/Example-PowerPointHtmlReview.ps1
index fdf92399..81074d81 100644
--- a/Examples/PowerPoint/Example-PowerPointHtmlReview.ps1
+++ b/Examples/PowerPoint/Example-PowerPointHtmlReview.ps1
@@ -1,31 +1,30 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $presentationPath = Join-Path $documents 'PowerPoint-HtmlReview.pptx'
 $semanticHtmlPath = Join-Path $documents 'PowerPoint-HtmlReview.semantic.html'
 $visualHtmlPath = Join-Path $documents 'PowerPoint-HtmlReview.visual.html'
 
-$presentation = New-OfficePowerPoint -FilePath $presentationPath
+$presentation = New-OfficePowerPoint -Path $presentationPath -NoSave
 
-$statusSlide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1
-Set-OfficePowerPointSlideTitle -Slide $statusSlide -Title 'Monthly Service Review' | Out-Null
-Add-OfficePowerPointTextBox -Slide $statusSlide -Text 'Identity, Messaging, and Reporting are ready for leadership review.' -X 80 -Y 140 -Width 560 -Height 80 | Out-Null
-Set-OfficePowerPointNotes -Slide $statusSlide -Text 'Use this slide to introduce the operational status summary.' | Out-Null
+$statusSlide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru
+Set-OfficePowerPointSlideTitle -Slide $statusSlide -Title 'Monthly Service Review'
+Add-OfficePowerPointTextBox -Slide $statusSlide -Text 'Identity, Messaging, and Reporting are ready for leadership review.' -X 80 -Y 140 -Width 560 -Height 80
+Set-OfficePowerPointNotes -Slide $statusSlide -Text 'Use this slide to introduce the operational status summary.'
 
-$tableSlide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1
-Set-OfficePowerPointSlideTitle -Slide $tableSlide -Title 'Open Items' | Out-Null
+$tableSlide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru
+Set-OfficePowerPointSlideTitle -Slide $tableSlide -Title 'Open Items'
 Add-OfficePowerPointTable -Slide $tableSlide -Headers 'Area', 'Owner', 'Next Step' -Rows @(
     @('Messaging', 'Collaboration', 'Review retry spikes')
     @('Reporting', 'Analytics', 'Publish refreshed dashboard')
-) -X 70 -Y 130 -Width 600 -Height 160 | Out-Null
+) -X 70 -Y 130 -Width 600 -Height 160
 
 Save-OfficePowerPoint -Presentation $presentation
-$presentation.Dispose()
+$presentation | Close-OfficePowerPoint
 
-ConvertTo-OfficePowerPointHtml -Path $presentationPath -OutputPath $semanticHtmlPath -Title 'Deck Review' -PassThru | Out-Null
-ConvertTo-OfficePowerPointHtml -Path $presentationPath -Profile VisualReview -OutputPath $visualHtmlPath -Title 'Deck Visual Review' -PassThru | Out-Null
+ConvertTo-OfficePowerPointHtml -Path $presentationPath -OutputPath $semanticHtmlPath -Title 'Deck Review'
+ConvertTo-OfficePowerPointHtml -Path $presentationPath -Profile VisualReview -OutputPath $visualHtmlPath -Title 'Deck Visual Review'
 
 Write-Host "Presentation saved to $presentationPath"
 Write-Host "Semantic HTML saved to $semanticHtmlPath"
diff --git a/Examples/PowerPoint/Example-PowerPointModifyExistingShapes.ps1 b/Examples/PowerPoint/Example-PowerPointModifyExistingShapes.ps1
index fd2a8c45..efea2183 100644
--- a/Examples/PowerPoint/Example-PowerPointModifyExistingShapes.ps1
+++ b/Examples/PowerPoint/Example-PowerPointModifyExistingShapes.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'PowerPoint-ModifyExistingShapes.pptx'
 
 $initialRows = @(
@@ -9,46 +8,42 @@ $initialRows = @(
     [PSCustomObject]@{ Metric = 'Quality'; State = 'Watching' }
 )
 
-$presentation = New-OfficePowerPoint -FilePath $path
+$presentation = New-OfficePowerPoint -Path $path -NoSave
 try {
-    $slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1
-    Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Release readiness' | Out-Null
-    Add-OfficePowerPointTextBox -Slide $slide -Text 'Status marker: Draft release' -X 70 -Y 110 -Width 420 -Height 45 | Out-Null
-    Add-OfficePowerPointTable -Slide $slide -InputObject $initialRows -X 70 -Y 180 -Width 500 -Height 170 | Out-Null
+    $slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru
+    Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Release readiness'
+    Add-OfficePowerPointTextBox -Slide $slide -Text 'Status marker: Draft release' -X 70 -Y 110 -Width 420 -Height 45
+    Add-OfficePowerPointTable -Slide $slide -InputObject $initialRows -X 70 -Y 180 -Width 500 -Height 170
 } finally {
     Close-OfficePowerPoint -Presentation $presentation -Save
 }
 
 # Second pass: find existing shapes, then modify their content directly.
-$deck = Get-OfficePowerPoint -FilePath $path
+$deck = Get-OfficePowerPoint -Path $path
 try {
     Find-OfficePowerPointShape -Presentation $deck -Text 'Status marker' -Kind TextBox |
-        Set-OfficePowerPointShapeText -Text 'Status marker: Ready for launch' |
-        Out-Null
+        Set-OfficePowerPointShapeText -Text 'Status marker: Ready for launch'
 
     $readinessTable = Find-OfficePowerPointShape -Presentation $deck -Text 'Risk' -Kind Table | Select-Object -First 1
 
     $readinessTable |
-        Add-OfficePowerPointTableRow -Values 'Latency', 'Investigating' |
-        Out-Null
+        Add-OfficePowerPointTableRow -Values 'Latency', 'Investigating'
 
     $readinessTable |
         Add-OfficePowerPointTableRow -Values ([ordered]@{
             Metric = 'Documentation'
             State  = 'Ready'
-        }) |
-        Out-Null
+        })
 
     $readinessTable |
-        Set-OfficePowerPointTableCell -Row 1 -Column 1 -Text 'Mitigating' |
-        Out-Null
+        Set-OfficePowerPointTableCell -Row 1 -Column 1 -Text 'Mitigating'
 } finally {
     Close-OfficePowerPoint -Presentation $deck -Save
 }
 
 Write-Host "Updated PowerPoint deck saved to $path"
 Write-Host 'Matching shapes:'
-$reloaded = Get-OfficePowerPoint -FilePath $path
+$reloaded = Get-OfficePowerPoint -Path $path
 try {
     Find-OfficePowerPointShape -Presentation $reloaded -Text 'Ready' |
         Select-Object SlideIndex, ShapeIndex, Kind, Text |
diff --git a/Examples/PowerPoint/Example-PowerPointSectionsAndImport.ps1 b/Examples/PowerPoint/Example-PowerPointSectionsAndImport.ps1
index 0acd518a..314c0bb2 100644
--- a/Examples/PowerPoint/Example-PowerPointSectionsAndImport.ps1
+++ b/Examples/PowerPoint/Example-PowerPointSectionsAndImport.ps1
@@ -1,41 +1,40 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $sourcePath = Join-Path $documents 'PowerPoint-Source.pptx'
 $targetPath = Join-Path $documents 'PowerPoint-SectionsAndImport.pptx'
 
-$source = New-OfficePowerPoint -FilePath $sourcePath
-$sourceSlide = Add-OfficePowerPointSlide -Presentation $source -Layout 1
+$source = New-OfficePowerPoint -Path $sourcePath -NoSave
+$sourceSlide = Add-OfficePowerPointSlide -Presentation $source -Layout 1 -PassThru
 Set-OfficePowerPointSlideTitle -Slide $sourceSlide -Title 'FY24 Imported'
-Add-OfficePowerPointTextBox -Slide $sourceSlide -Text 'FY24 details from source deck' -X 80 -Y 150 -Width 320 -Height 60 | Out-Null
+Add-OfficePowerPointTextBox -Slide $sourceSlide -Text 'FY24 details from source deck' -X 80 -Y 150 -Width 320 -Height 60
 Set-OfficePowerPointNotes -Slide $sourceSlide -Text 'FY24 source notes'
 Save-OfficePowerPoint -Presentation $source
 
-$target = New-OfficePowerPoint -FilePath $targetPath
-$slide1 = Add-OfficePowerPointSlide -Presentation $target -Layout 1
+$target = New-OfficePowerPoint -Path $targetPath -NoSave
+$slide1 = Add-OfficePowerPointSlide -Presentation $target -Layout 1 -PassThru
 Set-OfficePowerPointSlideTitle -Slide $slide1 -Title 'FY24 Overview'
-Add-OfficePowerPointTextBox -Slide $slide1 -Text 'FY24 summary for leadership' -X 80 -Y 150 -Width 320 -Height 60 | Out-Null
+Add-OfficePowerPointTextBox -Slide $slide1 -Text 'FY24 summary for leadership' -X 80 -Y 150 -Width 320 -Height 60
 
-$slide2 = Add-OfficePowerPointSlide -Presentation $target -Layout 1
+$slide2 = Add-OfficePowerPointSlide -Presentation $target -Layout 1 -PassThru
 Set-OfficePowerPointSlideTitle -Slide $slide2 -Title 'FY24 Results'
 
-Add-OfficePowerPointSection -Presentation $target -Name 'Intro' -StartSlideIndex 0 | Out-Null
-Add-OfficePowerPointSection -Presentation $target -Name 'Results' -StartSlideIndex 1 | Out-Null
+Add-OfficePowerPointSection -Presentation $target -Name 'Intro' -StartSlideIndex 0
+Add-OfficePowerPointSection -Presentation $target -Name 'Results' -StartSlideIndex 1
 Rename-OfficePowerPointSection -Presentation $target -Name 'Results' -NewName 'Deep Dive'
 
-Update-OfficePowerPointText -Presentation $target -OldValue 'FY24' -NewValue 'FY25' | Out-Null
-Copy-OfficePowerPointSlide -Presentation $target -Index 0 -InsertAt 1 | Out-Null
-Import-OfficePowerPointSlide -Presentation $target -SourcePath $sourcePath -SourceIndex 0 -InsertAt 1 | Out-Null
+Update-OfficePowerPointText -Presentation $target -OldValue 'FY24' -NewValue 'FY25'
+Copy-OfficePowerPointSlide -Presentation $target -Index 0 -InsertAt 1
+Import-OfficePowerPointSlide -Presentation $target -SourcePath $sourcePath -SourceIndex 0 -InsertAt 1
 
 Save-OfficePowerPoint -Presentation $target
 
 Write-Host "Target deck saved to $targetPath"
 Write-Host ''
 Write-Host 'Sections:'
-$reloaded = Get-OfficePowerPoint -FilePath $targetPath
+$reloaded = Get-OfficePowerPoint -Path $targetPath
 try {
     Get-OfficePowerPointSection -Presentation $reloaded | Format-Table
 } finally {
-    $reloaded.Dispose()
+    $reloaded | Close-OfficePowerPoint
 }
diff --git a/Examples/PowerPoint/Example-PowerPointThemeAndLayout.ps1 b/Examples/PowerPoint/Example-PowerPointThemeAndLayout.ps1
index 101b9c80..56ef011d 100644
--- a/Examples/PowerPoint/Example-PowerPointThemeAndLayout.ps1
+++ b/Examples/PowerPoint/Example-PowerPointThemeAndLayout.ps1
@@ -1,12 +1,11 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'PowerPoint-ThemeAndLayout.pptx'
-$ppt = New-OfficePowerPoint -FilePath $path
+$ppt = New-OfficePowerPoint -Path $path -NoSave
 
-$slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1
-Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Theme Demo' | Out-Null
+$slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 -PassThru
+Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Theme Demo'
 
 $layouts = Get-OfficePowerPointLayout -Presentation $ppt
 $targetLayout = $layouts | Where-Object LayoutIndex -ne $slide.LayoutIndex | Select-Object -First 1
@@ -19,17 +18,17 @@ Set-OfficePowerPointThemeFonts -Presentation $ppt -MajorLatin 'Aptos' -MinorLati
 Set-OfficePowerPointThemeName -Presentation $ppt -Name 'Contoso Theme' -AllMasters
 
 if ($targetLayout.Type) {
-    $slide | Set-OfficePowerPointSlideLayout -LayoutType $targetLayout.Type -Master $targetLayout.MasterIndex | Out-Null
+    $slide | Set-OfficePowerPointSlideLayout -LayoutType $targetLayout.Type -Master $targetLayout.MasterIndex
 } elseif ($targetLayout.Name) {
-    $slide | Set-OfficePowerPointSlideLayout -LayoutName $targetLayout.Name -Master $targetLayout.MasterIndex | Out-Null
+    $slide | Set-OfficePowerPointSlideLayout -LayoutName $targetLayout.Name -Master $targetLayout.MasterIndex
 } else {
-    $slide | Set-OfficePowerPointSlideLayout -Layout $targetLayout.LayoutIndex -Master $targetLayout.MasterIndex | Out-Null
+    $slide | Set-OfficePowerPointSlideLayout -Layout $targetLayout.LayoutIndex -Master $targetLayout.MasterIndex
 }
 
 $theme = Get-OfficePowerPointTheme -Presentation $ppt
 $theme | Format-List
 
 Save-OfficePowerPoint -Presentation $ppt
-$ppt.Dispose()
+$ppt | Close-OfficePowerPoint
 
 Write-Host "Presentation saved to $path"
diff --git a/Examples/PowerPoint/Example-PowerPointTransitionsAndSizing.ps1 b/Examples/PowerPoint/Example-PowerPointTransitionsAndSizing.ps1
index 17d63308..f8cec9d1 100644
--- a/Examples/PowerPoint/Example-PowerPointTransitionsAndSizing.ps1
+++ b/Examples/PowerPoint/Example-PowerPointTransitionsAndSizing.ps1
@@ -1,19 +1,18 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'PowerPoint-TransitionsAndSizing.pptx'
 
-$presentation = New-OfficePowerPoint -FilePath $path
-Set-OfficePowerPointSlideSize -Presentation $presentation -Preset Screen16x9 | Out-Null
+$presentation = New-OfficePowerPoint -Path $path -NoSave
+Set-OfficePowerPointSlideSize -Presentation $presentation -Preset Screen16x9
 
-$intro = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1
-Set-OfficePowerPointSlideTitle -Slide $intro -Title 'Executive Summary' | Out-Null
-Set-OfficePowerPointSlideTransition -Slide $intro -Transition Fade | Out-Null
+$intro = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru
+Set-OfficePowerPointSlideTitle -Slide $intro -Title 'Executive Summary'
+Set-OfficePowerPointSlideTransition -Slide $intro -Transition Fade
 
-$details = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1
-Set-OfficePowerPointSlideTitle -Slide $details -Title 'Details' | Out-Null
-Set-OfficePowerPointSlideTransition -Slide $details -Transition Morph | Out-Null
+$details = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru
+Set-OfficePowerPointSlideTitle -Slide $details -Title 'Details'
+Set-OfficePowerPointSlideTransition -Slide $details -Transition Morph
 
 Save-OfficePowerPoint -Presentation $presentation
 
diff --git a/Examples/PowerPoint/Recipe-PowerPoint-CopyAndRemoveSlides.ps1 b/Examples/PowerPoint/Recipe-PowerPoint-CopyAndRemoveSlides.ps1
index 91da5c85..2bc8571a 100644
--- a/Examples/PowerPoint/Recipe-PowerPoint-CopyAndRemoveSlides.ps1
+++ b/Examples/PowerPoint/Recipe-PowerPoint-CopyAndRemoveSlides.ps1
@@ -1,7 +1,7 @@
 $path = '.\PowerPoint-Copy-And-Remove.pptx'
 
 $presentation = New-OfficePowerPoint -Path $path -NoSave
-$overview = Add-OfficePowerPointSlide -Presentation $presentation
+$overview = Add-OfficePowerPointSlide -Presentation $presentation -PassThru
 Set-OfficePowerPointSlideTitle -Slide $overview -Title 'Reusable overview'
 Add-OfficePowerPointTextBox -Slide $overview -Text 'Shared service story' -X 80 -Y 150 -Width 560 -Height 70
 
@@ -9,7 +9,7 @@ Copy-OfficePowerPointSlide -Presentation $presentation -Index 0 -InsertAt 1
 $copied = Get-OfficePowerPointSlide -Presentation $presentation -Index 1
 Set-OfficePowerPointSlideTitle -Slide $copied -Title 'Customer-specific overview'
 
-$draft = Add-OfficePowerPointSlide -Presentation $presentation
+$draft = Add-OfficePowerPointSlide -Presentation $presentation -PassThru
 Set-OfficePowerPointSlideTitle -Slide $draft -Title 'Draft slide to remove'
 Remove-OfficePowerPointSlide -Presentation $presentation -Index 2
 
diff --git a/Examples/PowerPoint/Recipe-PowerPoint-InspectDeck.ps1 b/Examples/PowerPoint/Recipe-PowerPoint-InspectDeck.ps1
index 5f8d1f64..c27022bb 100644
--- a/Examples/PowerPoint/Recipe-PowerPoint-InspectDeck.ps1
+++ b/Examples/PowerPoint/Recipe-PowerPoint-InspectDeck.ps1
@@ -11,7 +11,7 @@ PptNew -Path $path {
     }
 }
 
-$presentation = Get-OfficePowerPoint -FilePath $path
+$presentation = Get-OfficePowerPoint -Path $path
 foreach ($index in 0..($presentation.Slides.Count - 1)) {
     $slide = Get-OfficePowerPointSlide -Presentation $presentation -Index $index
     $summary = Get-OfficePowerPointSlideSummary -Slide $slide
diff --git a/Examples/PowerPoint/Recipe-PowerPoint-ObjectComposition.ps1 b/Examples/PowerPoint/Recipe-PowerPoint-ObjectComposition.ps1
index 1e9fe79a..03fe5cf1 100644
--- a/Examples/PowerPoint/Recipe-PowerPoint-ObjectComposition.ps1
+++ b/Examples/PowerPoint/Recipe-PowerPoint-ObjectComposition.ps1
@@ -1,12 +1,12 @@
 $path = '.\PowerPoint-Object-Composition.pptx'
 $presentation = New-OfficePowerPoint -Path $path -NoSave
 
-$titleSlide = Add-OfficePowerPointSlide -Presentation $presentation -LayoutType Title
+$titleSlide = Add-OfficePowerPointSlide -Presentation $presentation -LayoutType Title -PassThru
 Set-OfficePowerPointSlideTitle -Slide $titleSlide -Title 'Customer onboarding review'
 Add-OfficePowerPointTextBox -Slide $titleSlide -Text 'Decisions, owners, and the next milestone' -X 90 -Y 190 -Width 700 -Height 70
 Set-OfficePowerPointNotes -Slide $titleSlide -Text 'Open with the customer outcome, then confirm the two decisions.'
 
-$actionSlide = Add-OfficePowerPointSlide -Presentation $presentation -LayoutType Text
+$actionSlide = Add-OfficePowerPointSlide -Presentation $presentation -LayoutType Text -PassThru
 Set-OfficePowerPointSlideTitle -Slide $actionSlide -Title 'Actions'
 Add-OfficePowerPointTextBox -Slide $actionSlide -Run @{
     Text = 'Owner: ', 'Delivery', '    Due: ', 'Friday'
diff --git a/Examples/PowerPoint/Recipe-PowerPoint-ReuseSlides.ps1 b/Examples/PowerPoint/Recipe-PowerPoint-ReuseSlides.ps1
index 17d3c349..f5701558 100644
--- a/Examples/PowerPoint/Recipe-PowerPoint-ReuseSlides.ps1
+++ b/Examples/PowerPoint/Recipe-PowerPoint-ReuseSlides.ps1
@@ -15,7 +15,7 @@ PptNew -Path $targetPath {
     }
 }
 
-$target = Get-OfficePowerPoint -FilePath $targetPath
+$target = Get-OfficePowerPoint -Path $targetPath
 Import-OfficePowerPointSlide -Presentation $target -SourcePath $sourcePath -SourceIndex 0 -InsertAt 1
 Copy-OfficePowerPointSlide -Presentation $target -Index 0 -InsertAt 2
 Add-OfficePowerPointSection -Presentation $target -Name 'Shared material' -StartSlideIndex 1
diff --git a/Examples/PowerPoint/Recipe-PowerPoint-SectionsAndNotes.ps1 b/Examples/PowerPoint/Recipe-PowerPoint-SectionsAndNotes.ps1
index 81d7089d..26cf77e1 100644
--- a/Examples/PowerPoint/Recipe-PowerPoint-SectionsAndNotes.ps1
+++ b/Examples/PowerPoint/Recipe-PowerPoint-SectionsAndNotes.ps1
@@ -1,11 +1,11 @@
 $path = '.\PowerPoint-Sections-And-Notes.pptx'
 
 $presentation = New-OfficePowerPoint -Path $path -NoSave
-$cover = Add-OfficePowerPointSlide -Presentation $presentation
+$cover = Add-OfficePowerPointSlide -Presentation $presentation -PassThru
 Set-OfficePowerPointSlideTitle -Slide $cover -Title 'Service review'
 Set-OfficePowerPointNotes -Slide $cover -Text 'Introduce the reporting period and desired decision.'
 
-$evidence = Add-OfficePowerPointSlide -Presentation $presentation
+$evidence = Add-OfficePowerPointSlide -Presentation $presentation -PassThru
 Set-OfficePowerPointSlideTitle -Slide $evidence -Title 'Evidence'
 Add-OfficePowerPointTextBox -Slide $evidence -Text 'Availability remained above 99.9%.' -X 80 -Y 150 -Width 650 -Height 70
 Set-OfficePowerPointNotes -Slide $evidence -Text 'Pause for questions before moving to actions.'
diff --git a/Examples/PowerPoint/Recipe-PowerPoint-UpdateExisting.ps1 b/Examples/PowerPoint/Recipe-PowerPoint-UpdateExisting.ps1
index 61cc2e6a..38ac80c8 100644
--- a/Examples/PowerPoint/Recipe-PowerPoint-UpdateExisting.ps1
+++ b/Examples/PowerPoint/Recipe-PowerPoint-UpdateExisting.ps1
@@ -11,6 +11,6 @@ PptNew -Path $path {
     }
 }
 
-$presentation = Get-OfficePowerPoint -FilePath $path
+$presentation = Get-OfficePowerPoint -Path $path
 Update-OfficePowerPointText -Presentation $presentation -OldValue 'FY24' -NewValue 'FY25' -IncludeNotes
 Close-OfficePowerPoint -Presentation $presentation -Save
diff --git a/Examples/Rtf/Example-RtfMarkdownRoundTrip.ps1 b/Examples/Rtf/Example-RtfMarkdownRoundTrip.ps1
index 37872f28..93852406 100644
--- a/Examples/Rtf/Example-RtfMarkdownRoundTrip.ps1
+++ b/Examples/Rtf/Example-RtfMarkdownRoundTrip.ps1
@@ -1,8 +1,7 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $markdownPath = Join-Path $documents 'Rtf-MarkdownRoundTrip.md'
 $rtfPath = Join-Path $documents 'Rtf-MarkdownRoundTrip.rtf'
 $roundTripMarkdownPath = Join-Path $documents 'Rtf-MarkdownRoundTrip.from-rtf.md'
@@ -22,8 +21,8 @@ The weekly service review is ready.
 | Reporting | Analytics |
 '@ | Set-Content -Path $markdownPath -Encoding UTF8
 
-ConvertTo-OfficeRtf -MarkdownPath $markdownPath -OutputPath $rtfPath -PassThru | Out-Null
-ConvertFrom-OfficeRtf -Path $rtfPath -As Markdown -OutputPath $roundTripMarkdownPath -PassThru | Out-Null
+ConvertTo-OfficeRtf -MarkdownPath $markdownPath -OutputPath $rtfPath
+ConvertFrom-OfficeRtf -Path $rtfPath -As Markdown -OutputPath $roundTripMarkdownPath
 
 Write-Host "Markdown saved to $markdownPath"
 Write-Host "RTF saved to $rtfPath"
diff --git a/Examples/Showcase/Showcase-Excel-OperationalDashboard.ps1 b/Examples/Showcase/Showcase-Excel-OperationalDashboard.ps1
index 7bdaf6fd..3bed4b07 100644
--- a/Examples/Showcase/Showcase-Excel-OperationalDashboard.ps1
+++ b/Examples/Showcase/Showcase-Excel-OperationalDashboard.ps1
@@ -5,8 +5,7 @@ param(
 Import-Module PSWriteOffice -ErrorAction Stop
 
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'Showcase-Excel-OperationalDashboard.xlsx'
 $logoPath = Join-Path $PSScriptRoot '..\Word\Example-WordTableCells.fixture.png'
 
@@ -80,7 +79,7 @@ New-OfficeExcel -Path $path {
             Set-OfficeExcelChartStyle -StyleId 251 -ColorStyleId 10
 
         if (Test-Path $logoPath) {
-            ExcelImage -Path $logoPath -Address 'J1' -WidthPixels 140 -HeightPixels 52 -AltText 'PSWriteOffice operational dashboard logo' | Out-Null
+            ExcelImage -Path $logoPath -Address 'J1' -WidthPixels 140 -HeightPixels 52 -AltText 'PSWriteOffice operational dashboard logo'
         }
 
         ExcelHeaderFooter -HeaderCenter 'PSWriteOffice operational dashboard' -FooterRight 'Page &P of &N'
@@ -142,7 +141,7 @@ New-OfficeExcel -Path $path {
 } -Open:$Open
 
 $threaded = Add-OfficeExcelThreadedComment -Path $path -Sheet Summary -Address A2 -Text 'Review dashboard posture before sending to service owners.' -Author 'Automation Reviewer' -PassThru
-Add-OfficeExcelThreadedComment -Path $path -Sheet Summary -Address A2 -Text 'Ready for owner review.' -Author 'Report Owner' -ParentId $threaded.Id -Done | Out-Null
+Add-OfficeExcelThreadedComment -Path $path -Sheet Summary -Address A2 -Text 'Ready for owner review.' -Author 'Report Owner' -ParentId $threaded.Id -Done
 
 Add-OfficeExcelPowerQueryMetadata -Path $path `
     -Name 'OperationalDashboardQuery' `
@@ -151,7 +150,7 @@ Add-OfficeExcelPowerQueryMetadata -Path $path `
     -CommandText 'let Source = Excel.CurrentWorkbook(){[Name="ServiceHealth"]}[Content] in Source' `
     -Description 'Refresh metadata for Excel-compatible applications; PSWriteOffice does not execute Power Query.' `
     -RefreshOnOpen `
-    -PassThru | Out-Null
+
 
 $doctor = Test-OfficeExcelWorkbook -Path $path -SkipOpenXmlValidation
 $accessibility = Test-OfficeExcelAccessibility -Path $path
diff --git a/Examples/Showcase/Showcase-PowerPoint-ServiceBrief.ps1 b/Examples/Showcase/Showcase-PowerPoint-ServiceBrief.ps1
index 820e1e1e..967fcc49 100644
--- a/Examples/Showcase/Showcase-PowerPoint-ServiceBrief.ps1
+++ b/Examples/Showcase/Showcase-PowerPoint-ServiceBrief.ps1
@@ -5,8 +5,7 @@ param(
 Import-Module PSWriteOffice -ErrorAction Stop
 
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'Showcase-PowerPoint-ServiceBrief.pptx'
 
 $process = @(
@@ -73,12 +72,12 @@ New-OfficePowerPoint -Path $path {
     PptSlideSize -Preset Screen16x9
     PptDesignerDeck -Plan $plan -AccentColor '#008C95' -Seed 'pswriteoffice-showcase' -Purpose 'technical service brief' -Name 'PSWriteOffice Showcase' -FooterLeft 'PSWriteOffice' -FooterRight 'OfficeIMO designer' -CreativeDirectionPack TechnicalMap -LayoutStrategy ContentFirst
 
-    $chartSlide = PptSlide
+    $chartSlide = PptSlide -PassThru
     PptTitle -Slide $chartSlide -Title 'Coverage and polish scorecard'
     PptChart -Slide $chartSlide -Type ClusteredColumn -Data $chartRows -CategoryProperty Product -SeriesProperty Coverage, Polish -Title 'Current Surface vs Polish Target' -X 58 -Y 118 -Width 610 -Height 265
     PptNotes -Slide $chartSlide -Text 'Use this slide as the bridge between the designer slides and the concrete backlog.'
 
-    $tableSlide = PptSlide
+    $tableSlide = PptSlide -PassThru
     PptTitle -Slide $tableSlide -Title 'Immediate implementation path'
     PptTable -Slide $tableSlide -Data $tableRows -X 64 -Y 132 -Width 590 -Height 210
     PptNotes -Slide $tableSlide -Text 'Close with the next concrete pull request slices: visual screenshots, blog drafts, and richer wrappers.'
@@ -89,7 +88,7 @@ New-OfficePowerPoint -Path $path {
     Get-OfficePowerPointSlide -Index 0 | PptTransition -Transition Fade
 } -Open:$Open
 
-$presentation = Get-OfficePowerPoint -FilePath $path
+$presentation = Get-OfficePowerPoint -Path $path
 $summary = Get-OfficePowerPointSlideSummary -Presentation $presentation
 $presentation | Close-OfficePowerPoint
 
diff --git a/Examples/Showcase/Showcase-RichTextRuns.ps1 b/Examples/Showcase/Showcase-RichTextRuns.ps1
index 1f32d9e6..c224d2b9 100644
--- a/Examples/Showcase/Showcase-RichTextRuns.ps1
+++ b/Examples/Showcase/Showcase-RichTextRuns.ps1
@@ -8,8 +8,7 @@ if (Test-Path -LiteralPath $moduleManifest) {
 }
 
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $wordPath = Join-Path $documents 'Showcase-RichTextRuns.docx'
 $excelPath = Join-Path $documents 'Showcase-RichTextRuns.xlsx'
 $pdfPath = Join-Path $documents 'Showcase-RichTextRuns.pdf'
@@ -46,7 +45,7 @@ WordNew -Path $wordPath {
             , @('Backup', (WordTableCellSpec -Run @(WordTextRun 'Watch' -Color DarkOrange -Bold)), 'Operations')
         )
     }
-} -PassThru | Out-Null
+}
 
 ExcelNew -Path $excelPath {
     ExcelSheet -Name 'Summary' -Content {
@@ -62,7 +61,7 @@ ExcelNew -Path $excelPath {
         ExcelTable -Data $serviceRows -TableName 'ServiceReadiness'
         ExcelAutoFit
     }
-} -PassThru | Out-Null
+}
 
 PdfNew -Path $pdfPath {
     PdfHeading 'Rich text runs'
@@ -83,7 +82,7 @@ PdfNew -Path $pdfPath {
         , @((PdfTableCell -Run @(PdfTextRun 'Identity Sync' -Bold; PdfTextRun ' 99.98%' -Color SeaGreen)), 'Ready', 'Platform')
         , @('Backup', (PdfTableCell -Run @(PdfTextRun 'Watch' -Color DarkOrange -Bold)), 'Operations')
     )
-} -PassThru | Out-Null
+}
 
 PptNew -Path $pptPath {
     PptSlide {
@@ -114,7 +113,7 @@ PptNew -Path $pptPath {
             , @('Backup', @{ Run = @(PptTextRun 'Watch' -Color DarkOrange -Bold) }, 'Operations')
         ) -X 70 -Y 190 -Width 560 -Height 220
     }
-} -PassThru | Out-Null
+}
 
 Write-Host "Word document saved to $wordPath"
 Write-Host "Excel workbook saved to $excelPath"
diff --git a/Examples/Showcase/Showcase-Word-ExecutiveReport.ps1 b/Examples/Showcase/Showcase-Word-ExecutiveReport.ps1
index 4fe356ad..a80dcc58 100644
--- a/Examples/Showcase/Showcase-Word-ExecutiveReport.ps1
+++ b/Examples/Showcase/Showcase-Word-ExecutiveReport.ps1
@@ -3,8 +3,7 @@ $ErrorActionPreference = 'Stop'
 Import-Module PSWriteOffice -ErrorAction Stop
 
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'Showcase-Word-ExecutiveReport.docx'
 Remove-Item -Path $path -Force -ErrorAction SilentlyContinue
 
@@ -120,7 +119,7 @@ New-OfficeWord -Path $path {
         Update-OfficeWordFields
         Update-OfficeWordTableOfContents
     }
-} | Out-Null
+}
 
 $document = Get-OfficeWord -Path $path -ReadOnly
 try {
@@ -134,5 +133,5 @@ try {
         Endnotes        = @(Get-OfficeWordEndnote -Document $document).Count
     } | Format-List
 } finally {
-    $document.Dispose()
+    $document | Close-OfficeWord
 }
diff --git a/Examples/Visio/Example-Visio-ArchitectureMap.ps1 b/Examples/Visio/Example-Visio-ArchitectureMap.ps1
index fa49809b..705e5535 100644
--- a/Examples/Visio/Example-Visio-ArchitectureMap.ps1
+++ b/Examples/Visio/Example-Visio-ArchitectureMap.ps1
@@ -7,17 +7,16 @@ $ErrorActionPreference = 'Stop'
 
 Import-Module PSWriteOffice -ErrorAction Stop
 
-New-Item -Path $OutputDirectory -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $OutputDirectory -ItemType Directory -Force
 $path = Join-Path $OutputDirectory 'Example-Visio-ArchitectureMap.vsdx'
 $svgPath = Join-Path $OutputDirectory 'Example-Visio-ArchitectureMap.svg'
 $pngPath = Join-Path $OutputDirectory 'Example-Visio-ArchitectureMap.png'
 
 New-OfficeVisio -Path $path -Title 'Service architecture map' -Author 'PSWriteOffice' -Width 12 -Height 7.5 -UseMastersByDefault -RequestRecalcOnOpen {
-    Import-OfficeVisioStencil -BuiltIn Architecture -Name Arch -Default | Out-Null
-    Import-OfficeVisioStencil -BuiltIn Cloud -Name Cloud | Out-Null
-    Import-OfficeVisioStencil -BuiltIn SecurityIdentity -Name Security | Out-Null
-    Import-OfficeVisioStencil -BuiltIn DataPlatform -Name Data | Out-Null
+    Import-OfficeVisioStencil -BuiltIn Architecture -Name Arch -Default
+    Import-OfficeVisioStencil -BuiltIn Cloud -Name Cloud
+    Import-OfficeVisioStencil -BuiltIn SecurityIdentity -Name Security
+    Import-OfficeVisioStencil -BuiltIn DataPlatform -Name Data
 
     VisioTextBox 'SaaS control plane' -X 6 -Y 6.85 -Width 4.2 -Height 0.42 -FillColor '#FFFFFF' -LineColor '#FFFFFF'
     VisioTextBox 'Boundaries, trust points, and platform services are editable Visio shapes.' -X 6 -Y 6.43 -Width 6.8 -Height 0.28 -FillColor '#FFFFFF' -LineColor '#FFFFFF'
@@ -47,10 +46,10 @@ New-OfficeVisio -Path $path -Title 'Service architecture map' -Author 'PSWriteOf
     VisioConnector -From worker -To queue -Kind Straight -FromSide Bottom -ToSide Top -EndArrow Triangle -Label 'async' -LineColor '#0D9488'
     VisioConnector -From queue -To archive -Kind Straight -FromSide Right -ToSide Left -EndArrow Triangle -LineColor '#C026D3'
     VisioConnector -From sql -To monitor -Kind Straight -FromSide Right -ToSide Left -EndArrow Triangle -LineColor '#E11D48'
-} | Out-Null
+}
 
-ConvertTo-OfficeVisioSvg -Path $path -OutputPath $svgPath | Out-Null
-ConvertTo-OfficeVisioPng -Path $path -OutputPath $pngPath | Out-Null
+ConvertTo-OfficeVisioSvg -Path $path -OutputPath $svgPath
+ConvertTo-OfficeVisioPng -Path $path -OutputPath $pngPath
 
 if ($Open) {
     Invoke-Item $svgPath
diff --git a/Examples/Visio/Example-Visio-NetworkTopology.ps1 b/Examples/Visio/Example-Visio-NetworkTopology.ps1
index 602c4232..fea928c7 100644
--- a/Examples/Visio/Example-Visio-NetworkTopology.ps1
+++ b/Examples/Visio/Example-Visio-NetworkTopology.ps1
@@ -7,15 +7,14 @@ $ErrorActionPreference = 'Stop'
 
 Import-Module PSWriteOffice -ErrorAction Stop
 
-New-Item -Path $OutputDirectory -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $OutputDirectory -ItemType Directory -Force
 $path = Join-Path $OutputDirectory 'Example-Visio-NetworkTopology.vsdx'
 $svgPath = Join-Path $OutputDirectory 'Example-Visio-NetworkTopology.svg'
 $pngPath = Join-Path $OutputDirectory 'Example-Visio-NetworkTopology.png'
 
 New-OfficeVisio -Path $path -Title 'Branch office topology' -Author 'PSWriteOffice' -Width 11 -Height 7 -UseMastersByDefault -RequestRecalcOnOpen {
-    Import-OfficeVisioStencil -BuiltIn Network -Name Net -Default | Out-Null
-    Import-OfficeVisioStencil -BuiltIn Infrastructure -Name Infra | Out-Null
+    Import-OfficeVisioStencil -BuiltIn Network -Name Net -Default
+    Import-OfficeVisioStencil -BuiltIn Infrastructure -Name Infra
 
     VisioTextBox 'Branch office network' -X 5.5 -Y 6.35 -Width 4.5 -Height 0.42 -FillColor '#FFFFFF' -LineColor '#FFFFFF'
     VisioTextBox 'Zones, devices, and traffic paths from the OfficeIMO network stencil catalog.' -X 5.5 -Y 5.98 -Width 6.4 -Height 0.28 -FillColor '#FFFFFF' -LineColor '#FFFFFF'
@@ -43,10 +42,10 @@ New-OfficeVisio -Path $path -Title 'Branch office topology' -Author 'PSWriteOffi
     VisioConnector -From core -To printer -Kind Straight -FromSide Right -ToSide Left -EndArrow Triangle -LineColor '#64748B'
     VisioConnector -From core -To app -Kind Straight -FromSide Right -ToSide Left -EndArrow Triangle -Label 'VLAN 20' -LineColor '#7C3AED'
     VisioConnector -From app -To nas -Kind Straight -FromSide Right -ToSide Left -EndArrow Triangle -Label 'backup' -LineColor '#C026D3'
-} | Out-Null
+}
 
-ConvertTo-OfficeVisioSvg -Path $path -OutputPath $svgPath | Out-Null
-ConvertTo-OfficeVisioPng -Path $path -OutputPath $pngPath | Out-Null
+ConvertTo-OfficeVisioSvg -Path $path -OutputPath $svgPath
+ConvertTo-OfficeVisioPng -Path $path -OutputPath $pngPath
 
 if ($Open) {
     Invoke-Item $svgPath
diff --git a/Examples/Visio/Example-Visio-PackageStencil.ps1 b/Examples/Visio/Example-Visio-PackageStencil.ps1
index 683bd80a..90079ab4 100644
--- a/Examples/Visio/Example-Visio-PackageStencil.ps1
+++ b/Examples/Visio/Example-Visio-PackageStencil.ps1
@@ -24,8 +24,7 @@ if (-not (Test-Path -LiteralPath $StencilPackagePath)) {
     throw "Stencil package was not found. Provide -StencilPackagePath with a .vssx, .vstx, or .vsdx file."
 }
 
-New-Item -Path $OutputDirectory -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $OutputDirectory -ItemType Directory -Force
 $path = Join-Path $OutputDirectory 'Example-Visio-PackageStencil.vsdx'
 $svgPath = Join-Path $OutputDirectory 'Example-Visio-PackageStencil.svg'
 $pngPath = Join-Path $OutputDirectory 'Example-Visio-PackageStencil.png'
@@ -37,7 +36,7 @@ if ($sampleStencils.Count -eq 0) {
 }
 
 New-OfficeVisio -Path $path -Title 'Package-backed stencils' -Author 'PSWriteOffice' -Width 10 -Height 6.5 -UseMastersByDefault -RequestRecalcOnOpen {
-    Import-OfficeVisioStencil -Catalog $catalog -Name Package -Default | Out-Null
+    Import-OfficeVisioStencil -Catalog $catalog -Name Package -Default
     VisioTextBox 'Package-backed stencil import' -X 5 -Y 5.8 -Width 4.6 -Height 0.38 -FillColor '#FFFFFF' -LineColor '#FFFFFF'
     VisioTextBox "Loaded from $([System.IO.Path]::GetFileName($StencilPackagePath))" -X 5 -Y 5.42 -Width 5.2 -Height 0.26 -FillColor '#FFFFFF' -LineColor '#FFFFFF'
 
@@ -50,10 +49,10 @@ New-OfficeVisio -Path $path -Title 'Package-backed stencils' -Author 'PSWriteOff
     VisioStencil -Stencil $third -Key importedC -Text 'Package master C' -X 8 -Y 3.4 -FillColor '#DCFCE7' -LineColor '#16A34A'
     VisioConnector -From importedA -To importedB -Kind Straight -FromSide Right -ToSide Left -EndArrow Triangle -Label 'loaded' -LineColor '#0284C7'
     VisioConnector -From importedB -To importedC -Kind Straight -FromSide Right -ToSide Left -EndArrow Triangle -Label 'reused' -LineColor '#16A34A'
-} | Out-Null
+}
 
-ConvertTo-OfficeVisioSvg -Path $path -OutputPath $svgPath | Out-Null
-ConvertTo-OfficeVisioPng -Path $path -OutputPath $pngPath | Out-Null
+ConvertTo-OfficeVisioSvg -Path $path -OutputPath $svgPath
+ConvertTo-OfficeVisioPng -Path $path -OutputPath $pngPath
 
 if ($Open) {
     Invoke-Item $svgPath
diff --git a/Examples/Visio/Example-Visio-StencilFlow.ps1 b/Examples/Visio/Example-Visio-StencilFlow.ps1
index 30937851..82be0756 100644
--- a/Examples/Visio/Example-Visio-StencilFlow.ps1
+++ b/Examples/Visio/Example-Visio-StencilFlow.ps1
@@ -7,14 +7,13 @@ $ErrorActionPreference = 'Stop'
 
 Import-Module PSWriteOffice -ErrorAction Stop
 
-New-Item -Path $OutputDirectory -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $OutputDirectory -ItemType Directory -Force
 $path = Join-Path $OutputDirectory 'Example-Visio-StencilFlow.vsdx'
 $svgPath = Join-Path $OutputDirectory 'Example-Visio-StencilFlow.svg'
 $pngPath = Join-Path $OutputDirectory 'Example-Visio-StencilFlow.png'
 
 New-OfficeVisio -Path $path -Title 'Customer onboarding flow' -Author 'PSWriteOffice' -Width 11 -Height 8.5 -UseMastersByDefault -RequestRecalcOnOpen {
-    Import-OfficeVisioStencil -BuiltIn Flowchart -Name Flow -Default | Out-Null
+    Import-OfficeVisioStencil -BuiltIn Flowchart -Name Flow -Default
 
     VisioTextBox 'Customer onboarding' -X 5.5 -Y 7.55 -Width 5.2 -Height 0.42 -FillColor '#FFFFFF' -LineColor '#FFFFFF'
     VisioTextBox 'A compact, editable flowchart generated from PowerShell and OfficeIMO stencils.' -X 5.5 -Y 7.08 -Width 6.4 -Height 0.32 -FillColor '#FFFFFF' -LineColor '#FFFFFF'
@@ -39,10 +38,10 @@ New-OfficeVisio -Path $path -Title 'Customer onboarding flow' -Author 'PSWriteOf
     VisioConnector -From packet -To done -Kind Straight -FromSide Bottom -ToSide Top -EndArrow Triangle -LineColor '#0F766E'
     VisioConnector -From decision -To rework -Kind Straight -FromSide Bottom -ToSide Top -EndArrow Triangle -Label 'no' -LineColor '#E11D48'
     VisioConnector -From rework -To validate -Kind Straight -FromSide Left -ToSide Bottom -EndArrow Triangle -LineColor '#E11D48'
-} | Out-Null
+}
 
-ConvertTo-OfficeVisioSvg -Path $path -OutputPath $svgPath | Out-Null
-ConvertTo-OfficeVisioPng -Path $path -OutputPath $pngPath | Out-Null
+ConvertTo-OfficeVisioSvg -Path $path -OutputPath $svgPath
+ConvertTo-OfficeVisioPng -Path $path -OutputPath $pngPath
 
 if ($Open) {
     Invoke-Item $svgPath
diff --git a/Examples/Visuals/Example-ChartForgeXVisuals.ps1 b/Examples/Visuals/Example-ChartForgeXVisuals.ps1
index 268daa57..560b16f7 100644
--- a/Examples/Visuals/Example-ChartForgeXVisuals.ps1
+++ b/Examples/Visuals/Example-ChartForgeXVisuals.ps1
@@ -4,8 +4,7 @@ Import-Module ImagePlayground -ErrorAction Stop
 Import-Module PSWriteOffice -ErrorAction Stop
 
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $chart = New-ImageTopology -Node @(
     New-ImageTopologyNode -Id api -Label API -Detail (New-ImageTopologyNodeDetail -Label Runtime -Value '.NET 10')
     New-ImageTopologyNode -Id db -Label Database
@@ -21,21 +20,21 @@ $artifact | Export-ImageVisualArtifact -FilePath $svgPath
 $officeVisual = $artifact | ConvertTo-OfficeVisual -Width 420 -SvgPolicy RasterizeWhenNeeded
 
 New-OfficeWord -Path (Join-Path $documents 'service-map.docx') {
-    WordSection { WordParagraph { $officeVisual | Add-OfficeWordVisual | Out-Null } }
-} | Out-Null
+    WordSection { WordParagraph { $officeVisual | Add-OfficeWordVisual  } }
+}
 
 New-OfficeExcel -Path (Join-Path $documents 'service-map.xlsx') {
     Add-OfficeExcelSheet -Name Dashboard -Content {
-        $officeVisual | Add-OfficeExcelVisual -Address B2 | Out-Null
+        $officeVisual | Add-OfficeExcelVisual -Address B2
     }
-} | Out-Null
+}
 
 New-OfficePowerPoint -Path (Join-Path $documents 'service-map.pptx') {
-    PptSlide { $officeVisual | Add-OfficePowerPointVisual -X 48 -Y 72 | Out-Null }
-} | Out-Null
+    PptSlide { $officeVisual | Add-OfficePowerPointVisual -X 48 -Y 72  }
+}
 
 New-OfficePdf -Path (Join-Path $documents 'service-map.pdf') {
     $officeVisual | Add-OfficePdfVisual -Align Center
-} | Out-Null
+}
 
 $officeVisual.Report
diff --git a/Examples/Word/Example-WordAdvanced.ps1 b/Examples/Word/Example-WordAdvanced.ps1
index 25f9df90..633bd323 100644
--- a/Examples/Word/Example-WordAdvanced.ps1
+++ b/Examples/Word/Example-WordAdvanced.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'Example-WordAdvanced.docx'
 $data = @(
     [pscustomobject]@{ Item = 'Alpha'; Total = 1200 }
diff --git a/Examples/Word/Example-WordAliasDsl.ps1 b/Examples/Word/Example-WordAliasDsl.ps1
index af8a5326..b9a5ec55 100644
--- a/Examples/Word/Example-WordAliasDsl.ps1
+++ b/Examples/Word/Example-WordAliasDsl.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $orders = @(
     [PSCustomObject]@{ Customer = 'Contoso'; Total = 1850; Status = 'Open' }
     [PSCustomObject]@{ Customer = 'Fabrikam'; Total = 640; Status = 'Closed' }
@@ -40,6 +39,6 @@ New-OfficeWord -Path $docPath {
             WordBold (Get-Date -Format 'yyyy-MM-dd HH:mm')
         }
     }
-} -PassThru | Out-Null
+}
 
 Write-Host "Document saved to $docPath"
diff --git a/Examples/Word/Example-WordBackgroundMailMerge.ps1 b/Examples/Word/Example-WordBackgroundMailMerge.ps1
index 1224980c..6aaa662f 100644
--- a/Examples/Word/Example-WordBackgroundMailMerge.ps1
+++ b/Examples/Word/Example-WordBackgroundMailMerge.ps1
@@ -21,7 +21,7 @@ New-OfficeWord -Path $Path {
         FirstName = 'Ada'
         OrderId   = 4242
     }
-} | Out-Null
+}
 
 Get-OfficeWord -Path $Path -ReadOnly | ForEach-Object {
     try {
@@ -30,6 +30,6 @@ Get-OfficeWord -Path $Path -ReadOnly | ForEach-Object {
         (Find-OfficeWord -Path $Path -Text 'Ada').Count
         (Find-OfficeWord -Path $Path -Text '4242').Count
     } finally {
-        $_.Dispose()
+        $_ | Close-OfficeWord
     }
 }
diff --git a/Examples/Word/Example-WordBasic.ps1 b/Examples/Word/Example-WordBasic.ps1
index 9bc3d79e..18b37448 100644
--- a/Examples/Word/Example-WordBasic.ps1
+++ b/Examples/Word/Example-WordBasic.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $data = @(
     [PSCustomObject]@{ Region = 'North America'; Revenue = 125000; YoY = '12%' }
     [PSCustomObject]@{ Region = 'EMEA'; Revenue = 98000; YoY = '22%' }
@@ -30,6 +29,6 @@ New-OfficeWord -Path $docPath {
             Add-OfficeWordTableCondition -FilterScript { $_.Revenue -gt 100000 } -BackgroundColor '#e6fffb'
         }
     }
-} -PassThru | Out-Null
+}
 
 Write-Host "Document saved to $docPath"
diff --git a/Examples/Word/Example-WordCharts.ps1 b/Examples/Word/Example-WordCharts.ps1
index d5dbea60..b360fca5 100644
--- a/Examples/Word/Example-WordCharts.ps1
+++ b/Examples/Word/Example-WordCharts.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $rows = @(
     [PSCustomObject]@{ Region = 'North America'; Revenue = 125000 }
     [PSCustomObject]@{ Region = 'EMEA'; Revenue = 98000 }
@@ -28,9 +27,13 @@ New-OfficeWord -Path $docPath {
     Add-OfficeWordChart -Type Line -Data $trend -CategoryProperty Month -SeriesProperty Sales, Profit -Legend -XAxisTitle 'Month' -YAxisTitle 'Value' -SeriesColor '#1f77b4', '#ff7f0e'
 
     Add-OfficeWordParagraph -Text 'Pie chart anchored inside a table cell'
-    $table = Add-OfficeWordTable -InputObject $tableRows -Style 'GridTable1LightAccent1' -PassThru
-    $cellParagraph = $table.Rows[1].Cells[1].AddParagraph()
-    Add-OfficeWordChart -Paragraph $cellParagraph -Type Pie -Data $rows -CategoryProperty Region -SeriesProperty Revenue -Title 'Cell Revenue Mix' -WidthPixels 420 -HeightPixels 280
-} | Out-Null
+    Add-OfficeWordTable -InputObject $tableRows -Style 'GridTable1LightAccent1' {
+        WordTableCell -Row 1 -Column 1 {
+            WordParagraph {
+                WordChart -Type Pie -Data $rows -CategoryProperty Region -SeriesProperty Revenue -Title 'Cell Revenue Mix' -WidthPixels 420 -HeightPixels 280
+            }
+        }
+    }
+}
 
 Write-Host "Document saved to $docPath"
diff --git a/Examples/Word/Example-WordFind.ps1 b/Examples/Word/Example-WordFind.ps1
index 5b045ca9..d7a41076 100644
--- a/Examples/Word/Example-WordFind.ps1
+++ b/Examples/Word/Example-WordFind.ps1
@@ -1,18 +1,17 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'Word-Find.docx'
 
 New-OfficeWord -Path $path {
     Add-OfficeWordParagraph -Text 'Hello from PSWriteOffice'
-} | Out-Null
+}
 
 $doc = Get-OfficeWord -Path $path
 try {
-    $null = $doc.AddBookmark('Bookmark1')
-    $paragraph = $doc.AddParagraph('Page')
-    $null = $paragraph.AddField([OfficeIMO.Word.WordFieldType]::Page)
+    $paragraph = Add-OfficeWordParagraph -Target $doc -Text 'Page' -PassThru
+    Add-OfficeWordBookmark -Paragraph $paragraph -Name 'Bookmark1'
+    Add-OfficeWordField -Paragraph $paragraph -Type Page
 } finally {
     Close-OfficeWord -Document $doc -Save
 }
diff --git a/Examples/Word/Example-WordHtmlConvert.ps1 b/Examples/Word/Example-WordHtmlConvert.ps1
index aa4b6491..0579379d 100644
--- a/Examples/Word/Example-WordHtmlConvert.ps1
+++ b/Examples/Word/Example-WordHtmlConvert.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $docPath = Join-Path $documents 'Word-HtmlSource.docx'
 $htmlPath = Join-Path $documents 'Word-HtmlSource.html'
 $roundtripPath = Join-Path $documents 'Word-HtmlRoundtrip.docx'
@@ -11,10 +10,10 @@ New-OfficeWord -Path $docPath {
         Add-OfficeWordParagraph -Text 'Hello from HTML conversion.' -Style Heading2
         Add-OfficeWordParagraph -Text 'This document will round-trip to HTML.'
     }
-} | Out-Null
+}
 
-ConvertTo-OfficeWordHtml -Path $docPath -OutputPath $htmlPath -PassThru | Out-Null
-ConvertFrom-OfficeWordHtml -Path $htmlPath -OutputPath $roundtripPath -PassThru | Out-Null
+ConvertTo-OfficeWordHtml -Path $docPath -OutputPath $htmlPath
+ConvertFrom-OfficeWordHtml -Path $htmlPath -OutputPath $roundtripPath
 
 Write-Host "HTML saved to $htmlPath"
 Write-Host "Round-trip document saved to $roundtripPath"
diff --git a/Examples/Word/Example-WordLineBreaks.ps1 b/Examples/Word/Example-WordLineBreaks.ps1
index 415284d8..885352ab 100644
--- a/Examples/Word/Example-WordLineBreaks.ps1
+++ b/Examples/Word/Example-WordLineBreaks.ps1
@@ -1,20 +1,19 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'Example-WordLineBreaks.docx'
-$document = New-OfficeWord -Path $path
+$document = New-OfficeWord -Path $path -NoSave
 
-# AddBreak() creates a same-paragraph line break similar to Shift+Enter in Word.
-$paragraph = $document.AddParagraph('Line 1 in the same paragraph')
-$null = $paragraph.AddBreak()
-$null = $paragraph.AddText('Line 2 after AddBreak()')
-$null = $paragraph.AddBreak()
-$null = $paragraph.AddText('Line 3 still in the same paragraph')
+# Add-OfficeWordBreak creates a same-paragraph line break similar to Shift+Enter in Word.
+$paragraph = Add-OfficeWordParagraph -Target $document -Text 'Line 1 in the same paragraph' -PassThru
+Add-OfficeWordBreak -Paragraph $paragraph
+Add-OfficeWordText -Paragraph $paragraph -Text 'Line 2 after the line break'
+Add-OfficeWordBreak -Paragraph $paragraph
+Add-OfficeWordText -Paragraph $paragraph -Text 'Line 3 still in the same paragraph'
 
-# AddParagraph() creates a new paragraph, so an empty paragraph gives a visible blank line.
-$null = $document.AddParagraph()
-$null = $document.AddParagraph('This text comes after an empty paragraph break.')
+# An empty paragraph creates a visible blank line.
+Add-OfficeWordParagraph -Target $document
+Add-OfficeWordParagraph -Target $document -Text 'This text comes after an empty paragraph break.'
 
 Close-OfficeWord -Document $document -Save
 
diff --git a/Examples/Word/Example-WordLinksAndProperties.ps1 b/Examples/Word/Example-WordLinksAndProperties.ps1
index 204fc63d..d8e23bff 100644
--- a/Examples/Word/Example-WordLinksAndProperties.ps1
+++ b/Examples/Word/Example-WordLinksAndProperties.ps1
@@ -19,7 +19,7 @@ New-OfficeWord -Path $Path {
         WordText 'Summary section'
         WordBookmark -Name 'Summary'
     }
-} | Out-Null
+}
 
 $links = Get-OfficeWordHyperlink -Path $Path
 $properties = Get-OfficeWordDocumentProperty -Path $Path
diff --git a/Examples/Word/Example-WordMarkdownConvert.ps1 b/Examples/Word/Example-WordMarkdownConvert.ps1
index e6897b60..984f5536 100644
--- a/Examples/Word/Example-WordMarkdownConvert.ps1
+++ b/Examples/Word/Example-WordMarkdownConvert.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $docPath = Join-Path $documents 'Word-MarkdownSource.docx'
 $markdownPath = Join-Path $documents 'Word-MarkdownSource.md'
 $roundtripPath = Join-Path $documents 'Word-MarkdownRoundtrip.docx'
@@ -13,10 +12,10 @@ New-OfficeWord -Path $docPath {
         Add-OfficeWordListItem -Text 'Alpha'
         Add-OfficeWordListItem -Text 'Beta'
     }
-} | Out-Null
+}
 
-ConvertTo-OfficeWordMarkdown -Path $docPath -OutputPath $markdownPath -PassThru | Out-Null
-ConvertFrom-OfficeWordMarkdown -Path $markdownPath -OutputPath $roundtripPath -PassThru | Out-Null
+ConvertTo-OfficeWordMarkdown -Path $docPath -OutputPath $markdownPath
+ConvertFrom-OfficeWordMarkdown -Path $markdownPath -OutputPath $roundtripPath
 
 Write-Host "Markdown saved to $markdownPath"
 Write-Host "Round-trip document saved to $roundtripPath"
diff --git a/Examples/Word/Example-WordModifyExistingObjects.ps1 b/Examples/Word/Example-WordModifyExistingObjects.ps1
index 3ba4e014..e2027fe3 100644
--- a/Examples/Word/Example-WordModifyExistingObjects.ps1
+++ b/Examples/Word/Example-WordModifyExistingObjects.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'Word-ModifyExistingObjects.docx'
 
 $initialRisks = @(
@@ -19,7 +18,7 @@ New-OfficeWord -Path $path {
         WordListItem -Text 'Initial review'
         WordListItem -Text 'Security approval'
     }
-} | Out-Null
+}
 
 # Second pass: treat the file as an existing document that came from a user or template.
 $document = Get-OfficeWord -Path $path
@@ -31,26 +30,21 @@ try {
             Item  = 'Mitigation plan'
             Owner = 'Service Desk'
             State = 'Ready'
-        }) -PassThru |
-        Out-Null
+        }) -PassThru
 
     $riskTable |
-        Add-OfficeWordTableRow -Values 'Release communication', 'Operations', 'Draft' |
-        Out-Null
+        Add-OfficeWordTableRow -Values 'Release communication', 'Operations', 'Draft'
 
     $riskTable |
         Get-OfficeWordTableCell -Row 2 -Column 2 |
-        Set-OfficeWordTableCell -Text 'Investigating' -ShadingFillColor '#fff2cc' -ShadingPattern Clear |
-        Out-Null
+        Set-OfficeWordTableCell -Text 'Investigating' -ShadingFillColor '#fff2cc' -ShadingPattern Clear
 
     Find-OfficeWordList -Document $document -Text 'Initial review' |
-        Add-OfficeWordListItem -Text 'Business sign-off' |
-        Out-Null
+        Add-OfficeWordListItem -Text 'Business sign-off'
 
     Get-OfficeWordList -Document $document |
         Where-Object { $_.ListItems.Text -contains 'Initial review' } |
-        Add-OfficeWordListItem -Text 'Go-live approval' |
-        Out-Null
+        Add-OfficeWordListItem -Text 'Go-live approval'
 } finally {
     Close-OfficeWord -Document $document -Save
 }
diff --git a/Examples/Word/Example-WordProtectionWatermark.ps1 b/Examples/Word/Example-WordProtectionWatermark.ps1
index f6aa6e3e..5ffa2db4 100644
--- a/Examples/Word/Example-WordProtectionWatermark.ps1
+++ b/Examples/Word/Example-WordProtectionWatermark.ps1
@@ -1,13 +1,12 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $path = Join-Path $documents 'Word-ProtectedWatermark.docx'
 
 New-OfficeWord -Path $path {
     Add-OfficeWordParagraph -Text 'Confidential report'
     Add-OfficeWordWatermark -Text 'CONFIDENTIAL'
     Protect-OfficeWordDocument -Password 'secret'
-} | Out-Null
+}
 
 Write-Host "Document saved to $path"
diff --git a/Examples/Word/Example-WordReplaceText.ps1 b/Examples/Word/Example-WordReplaceText.ps1
index e81d8879..59609867 100644
--- a/Examples/Word/Example-WordReplaceText.ps1
+++ b/Examples/Word/Example-WordReplaceText.ps1
@@ -15,7 +15,7 @@ New-OfficeWord -Path $Path {
         WordText 'Summary'
         WordBookmark -Name 'FY24Summary'
     }
-} | Out-Null
+}
 
 Update-OfficeWordText -Path $Path -OldValue 'FY24' -NewValue 'FY25' -IncludeHyperlinkText -IncludeHyperlinkUri -IncludeHyperlinkAnchor -IncludeHyperlinkTooltip
 
diff --git a/Examples/Word/Example-WordTableCalculatedColumns.ps1 b/Examples/Word/Example-WordTableCalculatedColumns.ps1
index 4cfe26fe..cdf114d1 100644
--- a/Examples/Word/Example-WordTableCalculatedColumns.ps1
+++ b/Examples/Word/Example-WordTableCalculatedColumns.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $services = @(
     [PSCustomObject]@{
         Name        = 'Directory API'
@@ -43,6 +42,6 @@ New-OfficeWord -Path $docPath {
     Add-OfficeWordParagraph -Text 'Calculated and projected columns'
     Add-OfficeWordParagraph -Text 'Shape your objects before Add-OfficeWordTable when you want extra columns or friendlier labels.'
     Add-OfficeWordTable -InputObject $tableData -Style 'GridTable1LightAccent1'
-} | Out-Null
+}
 
 Write-Host "Document saved to $docPath"
diff --git a/Examples/Word/Example-WordTableCells.ps1 b/Examples/Word/Example-WordTableCells.ps1
index f4e7e4d1..d11a27c3 100644
--- a/Examples/Word/Example-WordTableCells.ps1
+++ b/Examples/Word/Example-WordTableCells.ps1
@@ -35,7 +35,7 @@ New-OfficeWord -Path $path {
             WordTable -Data $nestedRows -Style TableGrid
         }
     }
-} | Out-Null
+}
 
 Write-Host "Document saved to $path"
 Write-Host "Image fixture saved to $imagePath"
diff --git a/Examples/Word/Example-WordTableConditions.ps1 b/Examples/Word/Example-WordTableConditions.ps1
index dbb3dcae..59452f41 100644
--- a/Examples/Word/Example-WordTableConditions.ps1
+++ b/Examples/Word/Example-WordTableConditions.ps1
@@ -1,7 +1,6 @@
 Import-Module PSWriteOffice -ErrorAction Stop
 $documents = Join-Path $PSScriptRoot '..\Documents'
-New-Item -Path $documents -ItemType Directory -Force | Out-Null
-
+$null = New-Item -Path $documents -ItemType Directory -Force
 $data = @(
     [PSCustomObject]@{ Name = 'Alpha'; Score = 92; Owner = 'Ada' }
     [PSCustomObject]@{ Name = 'Beta'; Score = 76; Owner = 'Linus' }
@@ -18,6 +17,6 @@ New-OfficeWord -Path $docPath {
             WordTableCondition -FilterScript { $_.Score -lt 70 } -BackgroundColor '#ffe6e6'
         }
     }
-} | Out-Null
+}
 
 Write-Host "Document saved to $docPath"
\ No newline at end of file
diff --git a/Examples/Word/Recipe-Word-HtmlToDocument.ps1 b/Examples/Word/Recipe-Word-HtmlToDocument.ps1
index c9775799..0cfd915b 100644
--- a/Examples/Word/Recipe-Word-HtmlToDocument.ps1
+++ b/Examples/Word/Recipe-Word-HtmlToDocument.ps1
@@ -6,4 +6,4 @@ $html = @'
 '@
 
 ConvertFrom-OfficeWordHtml -Html $html -OutputPath '.\Service-Review.docx'
-ConvertTo-OfficeWordMarkdown -FilePath '.\Service-Review.docx' -OutputPath '.\Service-Review.md'
+ConvertTo-OfficeWordMarkdown -Path '.\Service-Review.docx' -OutputPath '.\Service-Review.md'
diff --git a/Examples/Word/Recipe-Word-MergeDocuments.ps1 b/Examples/Word/Recipe-Word-MergeDocuments.ps1
index 42772a99..ec5ae2a6 100644
--- a/Examples/Word/Recipe-Word-MergeDocuments.ps1
+++ b/Examples/Word/Recipe-Word-MergeDocuments.ps1
@@ -23,4 +23,4 @@ WordNew -Path $appendix {
     }
 }
 
-Join-OfficeWordDocument -InputPath $cover -AppendPath $detail,$appendix -OutputPath $merged
+Join-OfficeWordDocument -Path $cover -AppendPath $detail,$appendix -OutputPath $merged
diff --git a/Examples/Workflows/Recipe-Markdown-Word-PdfDelivery.ps1 b/Examples/Workflows/Recipe-Markdown-Word-PdfDelivery.ps1
index a446ab53..3bc16ea0 100644
--- a/Examples/Workflows/Recipe-Markdown-Word-PdfDelivery.ps1
+++ b/Examples/Workflows/Recipe-Markdown-Word-PdfDelivery.ps1
@@ -10,5 +10,5 @@ $document | Save-OfficeMarkdown -Path $markdownPath
 
 ConvertFrom-OfficeWordMarkdown -Document $document -OutputPath $wordPath
 $word = Get-OfficeWord -Path $wordPath
-$word | Save-OfficeWord -PdfPath $pdfPath
+$word | Export-OfficeDocumentPdf -Path $pdfPath
 $word | Close-OfficeWord
diff --git a/PSWriteOffice.psd1 b/PSWriteOffice.psd1
index 02aba850..257436ca 100644
--- a/PSWriteOffice.psd1
+++ b/PSWriteOffice.psd1
@@ -1,7 +1,7 @@
 @{
     AliasesToExport        = @('Compare-OfficeExcelSheet', 'ConvertFrom-MarkdownHtml', 'ConvertFrom-PdfHtml', 'ConvertFrom-Rtf', 'ConvertFrom-WordHtml', 'ConvertFrom-WordMarkdown', 'ConvertTo-ExcelHtml', 'ConvertTo-MarkdownHtml', 'ConvertTo-PdfExcel', 'ConvertTo-PdfHtml', 'ConvertTo-PdfPowerPoint', 'ConvertTo-PdfWord', 'ConvertTo-PowerPointHtml', 'ConvertTo-Rtf', 'ConvertTo-VisioPng', 'ConvertTo-VisioSvg', 'ConvertTo-WordHtml', 'ConvertTo-WordMarkdown', 'Edit-ExcelRow', 'ExcelAccessibility', 'ExcelActiveSheet', 'ExcelAutoFilter', 'ExcelAutoFilterClear', 'ExcelAutoFilterSet', 'ExcelAutoFit', 'ExcelCell', 'ExcelChart', 'ExcelChartAxis', 'ExcelChartPoint', 'ExcelChartSeries', 'ExcelChartTrendline', 'ExcelColumn', 'ExcelColumnGroup', 'ExcelColumnStyle', 'ExcelColumnStyleByHeader', 'ExcelComment', 'ExcelCommentAudit', 'ExcelCommentClear', 'ExcelCommentRemove', 'ExcelComments', 'ExcelCommentsAudit', 'ExcelCommentUpdate', 'ExcelCompare', 'ExcelConditionalColorScale', 'ExcelConditionalDataBar', 'ExcelConditionalFormatting', 'ExcelConditionalFormattingClear', 'ExcelConditionalIconSet', 'ExcelConditionalRule', 'ExcelConnectionMetadata', 'ExcelCsvImport', 'ExcelDashboard', 'ExcelDashboardChart', 'ExcelDataModel', 'ExcelDataSet', 'ExcelDataValidation', 'ExcelDataValidationClear', 'ExcelDataValidationMessage', 'ExcelDateSystem', 'ExcelDelimitedImport', 'ExcelDoctor', 'ExcelExecutionPolicy', 'ExcelExport', 'ExcelFormula', 'ExcelFormulaAnalysis', 'ExcelFormulaAudit', 'ExcelFreeze', 'ExcelGridlines', 'ExcelHeaderFooter', 'ExcelHyperlink', 'ExcelHyperlinkHost', 'ExcelHyperlinkSmart', 'ExcelImage', 'ExcelImageFromUrl', 'ExcelImport', 'ExcelInternalLinks', 'ExcelInternalLinksByHeader', 'ExcelMargins', 'ExcelNamedRange', 'ExcelNamedRangeRemove', 'ExcelNamedRangeRename', 'ExcelNew', 'ExcelNumberFormatPreset', 'ExcelOrientation', 'ExcelPackageCopy', 'ExcelPackageMetadata', 'ExcelPageBreak', 'ExcelPageBreakClear', 'ExcelPageBreaks', 'ExcelPageSetup', 'ExcelPivotTable', 'ExcelPivotTables', 'ExcelPowerQuery', 'ExcelPowerQueryMetadata', 'ExcelPreflight', 'ExcelPrintArea', 'ExcelPrintLayout', 'ExcelPrintTitles', 'ExcelProtect', 'ExcelQueryMetadata', 'ExcelRangeClear', 'ExcelRefreshOnOpen', 'ExcelRepair', 'ExcelReportCallout', 'ExcelReportKpiRow', 'ExcelReportLegend', 'ExcelReportParagraph', 'ExcelReportSection', 'ExcelReportSheet', 'ExcelReportSpacer', 'ExcelReportTable', 'ExcelReportTitle', 'ExcelRichText', 'ExcelRichTextRuns', 'ExcelRow', 'ExcelRowEdit', 'ExcelRowGroup', 'ExcelRuntimePreflight', 'ExcelSheet', 'ExcelSheetCopy', 'ExcelSheetJoin', 'ExcelSheetMerge', 'ExcelSheetOrder', 'ExcelSheetTabColor', 'ExcelSheetView', 'ExcelSheetVisibility', 'ExcelSlicer', 'ExcelSort', 'ExcelSparkline', 'ExcelStreamingContract', 'ExcelSubtotals', 'ExcelSubtotalSummary', 'ExcelSummary', 'ExcelTable', 'ExcelTableOfContents', 'ExcelTableStyle', 'ExcelTemplate', 'ExcelTemplateApply', 'ExcelTemplateBinding', 'ExcelTemplateMarkers', 'ExcelTemplateOptionalRow', 'ExcelTemplateOptionalRows', 'ExcelTemplateRow', 'ExcelTemplateRows', 'ExcelTemplateSheet', 'ExcelTemplateSheets', 'ExcelTemplateValidate', 'ExcelTextRun', 'ExcelTheme', 'ExcelThreadedComment', 'ExcelTimeline', 'ExcelUnprotect', 'ExcelUrlLinks', 'ExcelUrlLinksByHeader', 'ExcelValidationCustomFormula', 'ExcelValidationDate', 'ExcelValidationDecimal', 'ExcelValidationList', 'ExcelValidationTextLength', 'ExcelValidationTime', 'ExcelValidationWholeNumber', 'ExcelVisual', 'ExcelWorkbookCompare', 'ExcelWorkbookCopy', 'ExcelWorkbookDoctor', 'ExcelWorkbookJoin', 'ExcelWorkbookMerge', 'ExcelWorkbookProtect', 'ExcelWorkbookRepair', 'ExcelWorkbookUnprotect', 'ExcelWorksheetView', 'ExcelWriteReservation', 'ExcelWriteReservationClear', 'ExcelWriteReservationSet', 'Export-OfficeDocumentAsset', 'Export-VisioStencilPreviewGallery', 'Find-VisioStencil', 'Get-OfficeReaderCapability', 'Import-VisioStencil', 'MarkdownCallout', 'MarkdownCode', 'MarkdownDefinitionList', 'MarkdownDetails', 'MarkdownFrontMatter', 'MarkdownHeading', 'MarkdownHorizontalRule', 'MarkdownHr', 'MarkdownImage', 'MarkdownList', 'MarkdownNew', 'MarkdownParagraph', 'MarkdownQuote', 'MarkdownTable', 'MarkdownTableOfContents', 'MarkdownTaskList', 'MarkdownToc', 'Merge-OfficeExcelSheet', 'Merge-OfficeExcelWorkbook', 'Merge-OfficeWordDocument', 'New-VisioGallery', 'OfficeVisual', 'PdfAttachment', 'PdfBackground', 'PdfBackgroundImage', 'PdfBackgroundShape', 'PdfBookmark', 'PdfCanvasStamp', 'PdfCanvasText', 'PdfCompliance', 'PdfElectronicInvoice', 'PdfFooter', 'PdfFormField', 'PdfHeader', 'PdfHeading', 'PdfHorizontalRule', 'PdfHr', 'PdfImage', 'PdfList', 'PdfMetadata', 'PdfNativeTextRun', 'PdfNew', 'PdfPageBorder', 'PdfPageBreak', 'PdfPageOverlay', 'PdfPageSetup', 'PdfPanel', 'PdfParagraph', 'PdfRow', 'PdfSpace', 'PdfSpacer', 'PdfStamp', 'PdfTable', 'PdfTableCell', 'PdfTableCellCheckBox', 'PdfTableCellField', 'PdfTableCellImage', 'PdfText', 'PdfTextRun', 'PdfTheme', 'PdfVisual', 'PdfWatermark', 'PowerPointNew', 'PowerPointTextRun', 'PptArrange', 'PptBackground', 'PptBullets', 'PptChart', 'PptDeckPlan', 'PptDesignerDeck', 'PptImage', 'PptLayoutBox', 'PptLayoutPlaceholderBounds', 'PptLayoutPlaceholderMargins', 'PptLayoutPlaceholders', 'PptLayoutPlaceholderTextStyle', 'PptNew', 'PptNotes', 'PptPlaceholderText', 'PptPlanCapability', 'PptPlanCardGrid', 'PptPlanCaseStudy', 'PptPlanCoverage', 'PptPlanLogoWall', 'PptPlanProcess', 'PptPlanSection', 'PptSection', 'PptShape', 'PptShapeLayout', 'PptSlide', 'PptSlideLayout', 'PptSlideSize', 'PptTable', 'PptTextBox', 'PptTextRun', 'PptTheme', 'PptThemeColor', 'PptThemeFonts', 'PptThemeName', 'PptTitle', 'PptTransition', 'PptVisual', 'Read-OfficeDocument', 'Read-OfficeDocumentAsset', 'Read-OfficeDocumentChunk', 'Read-OfficeDocumentTable', 'Read-OfficeDocumentVisual', 'Replace-OfficeExcelText', 'Replace-OfficePowerPointText', 'Replace-OfficeRtfText', 'Replace-OfficeWordText', 'RtfNew', 'RtfOpen', 'RtfText', 'Set-OfficeExcelSheetOrder', 'TextRun', 'VisioArrange', 'VisioConnector', 'VisioContainer', 'VisioDiamond', 'VisioEllipse', 'VisioInfo', 'VisioLayout', 'VisioNew', 'VisioOpen', 'VisioPage', 'VisioRect', 'VisioRectangle', 'VisioSave', 'VisioStencil', 'VisioStencilCatalog', 'VisioText', 'VisioTextBox', 'WordBold', 'WordBookmark', 'WordBreak', 'WordChart', 'WordCheckBox', 'WordCheckBoxes', 'WordComboBox', 'WordComboBoxes', 'WordContentControl', 'WordContentControls', 'WordCoverPage', 'WordDatePicker', 'WordDatePickers', 'WordDocumentJoin', 'WordDropDownList', 'WordDropDownLists', 'WordEndnote', 'WordEndnotes', 'WordEquation', 'WordField', 'WordFooter', 'WordFootnote', 'WordFootnotes', 'WordHeader', 'WordHyperlink', 'WordImage', 'WordImages', 'WordImageStyle', 'WordItalic', 'WordList', 'WordListItem', 'WordNew', 'WordPageNumber', 'WordPageSetup', 'WordParagraph', 'WordParagraphStyle', 'WordPictureControl', 'WordPictureControls', 'WordRepeatingSection', 'WordRepeatingSections', 'WordSection', 'WordShape', 'WordShapes', 'WordShapeStyle', 'WordStatistics', 'WordTable', 'WordTableCell', 'WordTableCells', 'WordTableCellSpec', 'WordTableCellStyle', 'WordTableCondition', 'WordTableOfContents', 'WordTabStop', 'WordText', 'WordTextBox', 'WordTextRun', 'WordTextStyle', 'WordVisual', 'WordWatermark')
     Author                 = 'Przemyslaw Klys'
-    CmdletsToExport        = @('Add-OfficeExcelAutoFilter', 'Add-OfficeExcelChart', 'Add-OfficeExcelComment', 'Add-OfficeExcelConditionalColorScale', 'Add-OfficeExcelConditionalDataBar', 'Add-OfficeExcelConditionalIconSet', 'Add-OfficeExcelConditionalRule', 'Add-OfficeExcelDashboardChart', 'Add-OfficeExcelDataSet', 'Add-OfficeExcelImage', 'Add-OfficeExcelImageFromUrl', 'Add-OfficeExcelPackageMetadata', 'Add-OfficeExcelPageBreak', 'Add-OfficeExcelPivotTable', 'Add-OfficeExcelPowerQueryMetadata', 'Add-OfficeExcelReportCallout', 'Add-OfficeExcelReportKpiRow', 'Add-OfficeExcelReportLegend', 'Add-OfficeExcelReportParagraph', 'Add-OfficeExcelReportSection', 'Add-OfficeExcelReportSheet', 'Add-OfficeExcelReportSpacer', 'Add-OfficeExcelReportTable', 'Add-OfficeExcelReportTitle', 'Add-OfficeExcelSheet', 'Add-OfficeExcelSlicer', 'Add-OfficeExcelSparkline', 'Add-OfficeExcelSubtotalSummary', 'Add-OfficeExcelTable', 'Add-OfficeExcelTableOfContents', 'Add-OfficeExcelTableRow', 'Add-OfficeExcelThreadedComment', 'Add-OfficeExcelTimeline', 'Add-OfficeExcelValidationCustomFormula', 'Add-OfficeExcelValidationDate', 'Add-OfficeExcelValidationDecimal', 'Add-OfficeExcelValidationList', 'Add-OfficeExcelValidationTextLength', 'Add-OfficeExcelValidationTime', 'Add-OfficeExcelValidationWholeNumber', 'Add-OfficeExcelVisual', 'Add-OfficeMarkdownCallout', 'Add-OfficeMarkdownCode', 'Add-OfficeMarkdownDefinitionList', 'Add-OfficeMarkdownDetails', 'Add-OfficeMarkdownFrontMatter', 'Add-OfficeMarkdownHeading', 'Add-OfficeMarkdownHorizontalRule', 'Add-OfficeMarkdownImage', 'Add-OfficeMarkdownList', 'Add-OfficeMarkdownParagraph', 'Add-OfficeMarkdownQuote', 'Add-OfficeMarkdownTable', 'Add-OfficeMarkdownTableOfContents', 'Add-OfficeMarkdownTaskList', 'Add-OfficePdfAttachment', 'Add-OfficePdfBackgroundShape', 'Add-OfficePdfBookmark', 'Add-OfficePdfCanvas', 'Add-OfficePdfCanvasText', 'Add-OfficePdfFormField', 'Add-OfficePdfHeading', 'Add-OfficePdfHorizontalRule', 'Add-OfficePdfImage', 'Add-OfficePdfList', 'Add-OfficePdfPageBreak', 'Add-OfficePdfPageOverlay', 'Add-OfficePdfPanel', 'Add-OfficePdfParagraph', 'Add-OfficePdfRow', 'Add-OfficePdfSpacer', 'Add-OfficePdfStamp', 'Add-OfficePdfTable', 'Add-OfficePdfText', 'Add-OfficePdfVisual', 'Add-OfficePdfWatermark', 'Add-OfficePowerPointBullets', 'Add-OfficePowerPointChart', 'Add-OfficePowerPointDesignerDeck', 'Add-OfficePowerPointImage', 'Add-OfficePowerPointPlanCapability', 'Add-OfficePowerPointPlanCardGrid', 'Add-OfficePowerPointPlanCaseStudy', 'Add-OfficePowerPointPlanCoverage', 'Add-OfficePowerPointPlanLogoWall', 'Add-OfficePowerPointPlanProcess', 'Add-OfficePowerPointPlanSection', 'Add-OfficePowerPointSection', 'Add-OfficePowerPointShape', 'Add-OfficePowerPointSlide', 'Add-OfficePowerPointTable', 'Add-OfficePowerPointTableRow', 'Add-OfficePowerPointTextBox', 'Add-OfficePowerPointVisual', 'Add-OfficeVisioConnector', 'Add-OfficeVisioContainer', 'Add-OfficeVisioDiamond', 'Add-OfficeVisioEllipse', 'Add-OfficeVisioPage', 'Add-OfficeVisioRectangle', 'Add-OfficeVisioStencilShape', 'Add-OfficeVisioTextBox', 'Add-OfficeWordBookmark', 'Add-OfficeWordBreak', 'Add-OfficeWordChart', 'Add-OfficeWordCheckBox', 'Add-OfficeWordComboBox', 'Add-OfficeWordContentControl', 'Add-OfficeWordCoverPage', 'Add-OfficeWordDatePicker', 'Add-OfficeWordDropDownList', 'Add-OfficeWordEndnote', 'Add-OfficeWordEquation', 'Add-OfficeWordField', 'Add-OfficeWordFooter', 'Add-OfficeWordFootnote', 'Add-OfficeWordHeader', 'Add-OfficeWordHyperlink', 'Add-OfficeWordImage', 'Add-OfficeWordList', 'Add-OfficeWordListItem', 'Add-OfficeWordPageNumber', 'Add-OfficeWordParagraph', 'Add-OfficeWordPictureControl', 'Add-OfficeWordRepeatingSection', 'Add-OfficeWordSection', 'Add-OfficeWordShape', 'Add-OfficeWordTable', 'Add-OfficeWordTableCell', 'Add-OfficeWordTableCondition', 'Add-OfficeWordTableOfContents', 'Add-OfficeWordTableRow', 'Add-OfficeWordTabStop', 'Add-OfficeWordText', 'Add-OfficeWordTextBox', 'Add-OfficeWordVisual', 'Add-OfficeWordWatermark', 'Clear-OfficeExcelAutoFilter', 'Clear-OfficeExcelComment', 'Clear-OfficeExcelConditionalFormatting', 'Clear-OfficeExcelDataValidation', 'Clear-OfficeExcelPageBreak', 'Clear-OfficeExcelRange', 'Clear-OfficeExcelWriteReservation', 'Clear-OfficePdfBackgroundShape', 'Close-OfficeExcel', 'Close-OfficePowerPoint', 'Close-OfficeWord', 'Compare-OfficeExcelRange', 'Compare-OfficeExcelWorkbook', 'Compare-OfficePdfVisual', 'Compare-OfficeWordDocument', 'ConvertFrom-OfficeAsciiDocMarkdown', 'ConvertFrom-OfficeCsv', 'ConvertFrom-OfficeLatexMarkdown', 'ConvertFrom-OfficeMarkdownHtml', 'ConvertFrom-OfficeOpenDocument', 'ConvertFrom-OfficePdfHtml', 'ConvertFrom-OfficeRtf', 'ConvertFrom-OfficeWordHtml', 'ConvertFrom-OfficeWordMarkdown', 'ConvertTo-OfficeAsciiDocMarkdown', 'ConvertTo-OfficeCsv', 'ConvertTo-OfficeExcelHtml', 'ConvertTo-OfficeExcelWorkbook', 'ConvertTo-OfficeLatexMarkdown', 'ConvertTo-OfficeMarkdown', 'ConvertTo-OfficeMarkdownHtml', 'ConvertTo-OfficeOpenDocument', 'ConvertTo-OfficePdfExcel', 'ConvertTo-OfficePdfFlatAnnotation', 'ConvertTo-OfficePdfFlatForm', 'ConvertTo-OfficePdfHtml', 'ConvertTo-OfficePdfMarkdown', 'ConvertTo-OfficePdfOptimized', 'ConvertTo-OfficePdfPowerPoint', 'ConvertTo-OfficePdfRedacted', 'ConvertTo-OfficePdfSanitized', 'ConvertTo-OfficePdfTextRun', 'ConvertTo-OfficePdfWord', 'ConvertTo-OfficePowerPointHtml', 'ConvertTo-OfficeRtf', 'ConvertTo-OfficeVisioPng', 'ConvertTo-OfficeVisioSvg', 'ConvertTo-OfficeVisioVisual', 'ConvertTo-OfficeVisual', 'ConvertTo-OfficeWordDocument', 'ConvertTo-OfficeWordHtml', 'ConvertTo-OfficeWordMarkdown', 'Copy-OfficeExcelSheet', 'Copy-OfficeExcelWorkbook', 'Copy-OfficePdfPage', 'Copy-OfficePowerPointSlide', 'Edit-OfficeExcelRow', 'Export-OfficeCsv', 'Export-OfficeExcel', 'Export-OfficeExcelChartImage', 'Export-OfficeExcelGoogleSpreadsheet', 'Export-OfficeExcelImage', 'Export-OfficeExcelRangeImage', 'Export-OfficeHtmlImage', 'Export-OfficePdfImage', 'Export-OfficePdfLayoutOverlay', 'Export-OfficePdfXfdf', 'Export-OfficePowerPointImage', 'Export-OfficeVisioImage', 'Export-OfficeVisioStencilPreviewGallery', 'Export-OfficeVisioVisual', 'Export-OfficeWordGoogleDocument', 'Export-OfficeWordImage', 'Find-OfficeExcel', 'Find-OfficePowerPointShape', 'Find-OfficeVisioStencil', 'Find-OfficeWord', 'Find-OfficeWordList', 'Find-OfficeWordTable', 'Get-OfficeAsciiDoc', 'Get-OfficeConfluenceAttachment', 'Get-OfficeConfluencePage', 'Get-OfficeCsv', 'Get-OfficeDocument', 'Get-OfficeDocumentAsset', 'Get-OfficeDocumentBatch', 'Get-OfficeDocumentCapability', 'Get-OfficeDocumentChunk', 'Get-OfficeDocumentDetection', 'Get-OfficeDocumentHierarchy', 'Get-OfficeDocumentIngest', 'Get-OfficeDocumentPageMarkdown', 'Get-OfficeDocumentStructured', 'Get-OfficeDocumentTable', 'Get-OfficeDocumentVisual', 'Get-OfficeEmail', 'Get-OfficeEmailMailbox', 'Get-OfficeExcel', 'Get-OfficeExcelComment', 'Get-OfficeExcelCommentAudit', 'Get-OfficeExcelConditionalFormatting', 'Get-OfficeExcelData', 'Get-OfficeExcelDataModel', 'Get-OfficeExcelDataValidation', 'Get-OfficeExcelDocumentProperty', 'Get-OfficeExcelFormulaAnalysis', 'Get-OfficeExcelNamedRange', 'Get-OfficeExcelNumberFormatPreset', 'Get-OfficeExcelPageBreak', 'Get-OfficeExcelPivotTable', 'Get-OfficeExcelPreflight', 'Get-OfficeExcelRange', 'Get-OfficeExcelRichText', 'Get-OfficeExcelRuntimePreflight', 'Get-OfficeExcelStreamingContract', 'Get-OfficeExcelSummary', 'Get-OfficeExcelTable', 'Get-OfficeExcelTableStyle', 'Get-OfficeExcelTemplateMarker', 'Get-OfficeExcelUsedRange', 'Get-OfficeExcelWorksheetView', 'Get-OfficeExcelWriteReservation', 'Get-OfficeLatex', 'Get-OfficeMarkdown', 'Get-OfficeMarkdownFrontMatter', 'Get-OfficeMarkdownHeading', 'Get-OfficeMarkdownNode', 'Get-OfficeMarkdownTable', 'Get-OfficeOpenDocument', 'Get-OfficePdf', 'Get-OfficePdfAnnotation', 'Get-OfficePdfAppendOnlyMutation', 'Get-OfficePdfAttachment', 'Get-OfficePdfCompliance', 'Get-OfficePdfDiagnostic', 'Get-OfficePdfFont', 'Get-OfficePdfFormField', 'Get-OfficePdfImage', 'Get-OfficePdfInfo', 'Get-OfficePdfInteractionMap', 'Get-OfficePdfOptimization', 'Get-OfficePdfPreflight', 'Get-OfficePdfRedactionPlan', 'Get-OfficePdfSignature', 'Get-OfficePdfText', 'Get-OfficePdfTextDiagnostic', 'Get-OfficePowerPoint', 'Get-OfficePowerPointInspection', 'Get-OfficePowerPointLayout', 'Get-OfficePowerPointLayoutBox', 'Get-OfficePowerPointLayoutPlaceholder', 'Get-OfficePowerPointNotes', 'Get-OfficePowerPointPlaceholder', 'Get-OfficePowerPointSection', 'Get-OfficePowerPointShape', 'Get-OfficePowerPointSlide', 'Get-OfficePowerPointSlideSummary', 'Get-OfficePowerPointTheme', 'Get-OfficeProtectionCapability', 'Get-OfficeRtf', 'Get-OfficeVisio', 'Get-OfficeVisioInfo', 'Get-OfficeVisioStencilCatalog', 'Get-OfficeWord', 'Get-OfficeWordBookmark', 'Get-OfficeWordCheckBox', 'Get-OfficeWordComboBox', 'Get-OfficeWordContentControl', 'Get-OfficeWordDatePicker', 'Get-OfficeWordDocumentProperty', 'Get-OfficeWordDropDownList', 'Get-OfficeWordEndnote', 'Get-OfficeWordField', 'Get-OfficeWordFootnote', 'Get-OfficeWordHyperlink', 'Get-OfficeWordImage', 'Get-OfficeWordList', 'Get-OfficeWordParagraph', 'Get-OfficeWordPictureControl', 'Get-OfficeWordRepeatingSection', 'Get-OfficeWordReview', 'Get-OfficeWordSection', 'Get-OfficeWordShape', 'Get-OfficeWordStatistics', 'Get-OfficeWordTable', 'Get-OfficeWordTableCell', 'Get-OfficeWordTableOfContents', 'Get-OfficeWordText', 'Import-OfficeCsv', 'Import-OfficeExcel', 'Import-OfficeExcelDelimitedText', 'Import-OfficePdfXfdf', 'Import-OfficePowerPointSlide', 'Import-OfficeVisioStencil', 'Invoke-OfficeExcelAutoFit', 'Invoke-OfficeExcelSort', 'Invoke-OfficeExcelTemplate', 'Invoke-OfficeExcelTemplateOptionalRow', 'Invoke-OfficeExcelTemplateRow', 'Invoke-OfficeExcelTemplateSheet', 'Invoke-OfficePdfOcrMerge', 'Invoke-OfficeWordMailMerge', 'Join-OfficeExcelSheet', 'Join-OfficeExcelWorkbook', 'Join-OfficePdf', 'Join-OfficeWordDocument', 'Move-OfficeExcelSheet', 'Move-OfficePdfPage', 'New-OfficeConfluenceSession', 'New-OfficeDocumentReader', 'New-OfficeExcel', 'New-OfficeExcelDashboard', 'New-OfficeMarkdown', 'New-OfficeOpenDocument', 'New-OfficePdf', 'New-OfficePdfSignature', 'New-OfficePdfTableCell', 'New-OfficePdfTableCellCheckBox', 'New-OfficePdfTableCellField', 'New-OfficePdfTableCellImage', 'New-OfficePowerPoint', 'New-OfficePowerPointDeckPlan', 'New-OfficeRtf', 'New-OfficeTextRun', 'New-OfficeVisio', 'New-OfficeVisioGallery', 'New-OfficeWord', 'New-OfficeWordTableCell', 'Protect-OfficeExcelSheet', 'Protect-OfficeExcelWorkbook', 'Protect-OfficeWordDocument', 'Publish-OfficeConfluencePage', 'Remove-OfficeConfluencePage', 'Remove-OfficeExcelComment', 'Remove-OfficeExcelNamedRange', 'Remove-OfficePdfAnnotation', 'Remove-OfficePdfPage', 'Remove-OfficePowerPointSlide', 'Remove-OfficeWordTableOfContents', 'Rename-OfficeExcelNamedRange', 'Rename-OfficePowerPointSection', 'Repair-OfficeExcelWorkbook', 'Resolve-OfficeWordRevision', 'Save-OfficeAsciiDoc', 'Save-OfficeEmail', 'Save-OfficeEmailMailbox', 'Save-OfficeExcel', 'Save-OfficeLatex', 'Save-OfficeMarkdown', 'Save-OfficeOpenDocument', 'Save-OfficePdf', 'Save-OfficePowerPoint', 'Save-OfficeVisio', 'Save-OfficeWord', 'Search-OfficeDocument', 'Send-OfficeConfluenceAttachment', 'Set-OfficeConfluenceManagedSection', 'Set-OfficeExcelActiveSheet', 'Set-OfficeExcelAutoFilter', 'Set-OfficeExcelCell', 'Set-OfficeExcelChartAxis', 'Set-OfficeExcelChartDataLabels', 'Set-OfficeExcelChartLegend', 'Set-OfficeExcelChartPoint', 'Set-OfficeExcelChartSeries', 'Set-OfficeExcelChartStyle', 'Set-OfficeExcelChartTrendline', 'Set-OfficeExcelColumn', 'Set-OfficeExcelColumnGroup', 'Set-OfficeExcelColumnStyleByHeader', 'Set-OfficeExcelDataValidationMessage', 'Set-OfficeExcelDateSystem', 'Set-OfficeExcelDocumentProperty', 'Set-OfficeExcelExecutionPolicy', 'Set-OfficeExcelFormula', 'Set-OfficeExcelFreeze', 'Set-OfficeExcelGridlines', 'Set-OfficeExcelHeaderFooter', 'Set-OfficeExcelHostHyperlink', 'Set-OfficeExcelHyperlink', 'Set-OfficeExcelInternalLinks', 'Set-OfficeExcelInternalLinksByHeader', 'Set-OfficeExcelMargins', 'Set-OfficeExcelNamedRange', 'Set-OfficeExcelOrientation', 'Set-OfficeExcelPageSetup', 'Set-OfficeExcelPrintArea', 'Set-OfficeExcelPrintLayout', 'Set-OfficeExcelPrintTitles', 'Set-OfficeExcelRefreshOnOpen', 'Set-OfficeExcelRichText', 'Set-OfficeExcelRow', 'Set-OfficeExcelRowGroup', 'Set-OfficeExcelSheetTabColor', 'Set-OfficeExcelSheetVisibility', 'Set-OfficeExcelSmartHyperlink', 'Set-OfficeExcelTheme', 'Set-OfficeExcelUrlLinks', 'Set-OfficeExcelUrlLinksByHeader', 'Set-OfficeExcelWorksheetView', 'Set-OfficeExcelWriteReservation', 'Set-OfficePdfAnnotation', 'Set-OfficePdfBackground', 'Set-OfficePdfBackgroundImage', 'Set-OfficePdfCompliance', 'Set-OfficePdfElectronicInvoice', 'Set-OfficePdfFooter', 'Set-OfficePdfForm', 'Set-OfficePdfHeader', 'Set-OfficePdfMetadata', 'Set-OfficePdfPage', 'Set-OfficePdfPageBorder', 'Set-OfficePdfPageSetup', 'Set-OfficePdfSignature', 'Set-OfficePdfTheme', 'Set-OfficePowerPointBackground', 'Set-OfficePowerPointLayoutPlaceholderBounds', 'Set-OfficePowerPointLayoutPlaceholderTextMargins', 'Set-OfficePowerPointLayoutPlaceholderTextStyle', 'Set-OfficePowerPointNotes', 'Set-OfficePowerPointPlaceholderText', 'Set-OfficePowerPointShapeLayout', 'Set-OfficePowerPointShapeText', 'Set-OfficePowerPointSlideLayout', 'Set-OfficePowerPointSlideSize', 'Set-OfficePowerPointSlideTitle', 'Set-OfficePowerPointSlideTransition', 'Set-OfficePowerPointTableCell', 'Set-OfficePowerPointThemeColor', 'Set-OfficePowerPointThemeFonts', 'Set-OfficePowerPointThemeName', 'Set-OfficeVisioShapeLayout', 'Set-OfficeWordBackground', 'Set-OfficeWordDocumentProperty', 'Set-OfficeWordImage', 'Set-OfficeWordPageSetup', 'Set-OfficeWordParagraphStyle', 'Set-OfficeWordShape', 'Set-OfficeWordTableCell', 'Set-OfficeWordTableOfContents', 'Set-OfficeWordTextStyle', 'Split-OfficePdf', 'Test-OfficeExcelAccessibility', 'Test-OfficeExcelTemplateBinding', 'Test-OfficeExcelWorkbook', 'Test-OfficePdfRewrite', 'Unprotect-OfficeExcelSheet', 'Unprotect-OfficeExcelWorkbook', 'Update-OfficeExcelComment', 'Update-OfficeExcelText', 'Update-OfficePowerPointText', 'Update-OfficeRtfText', 'Update-OfficeWordFields', 'Update-OfficeWordTableOfContents', 'Update-OfficeWordText')
+    CmdletsToExport        = @('Add-OfficeExcelAutoFilter', 'Add-OfficeExcelChart', 'Add-OfficeExcelComment', 'Add-OfficeExcelConditionalColorScale', 'Add-OfficeExcelConditionalDataBar', 'Add-OfficeExcelConditionalIconSet', 'Add-OfficeExcelConditionalRule', 'Add-OfficeExcelDashboardChart', 'Add-OfficeExcelDataSet', 'Add-OfficeExcelImage', 'Add-OfficeExcelImageFromUrl', 'Add-OfficeExcelPackageMetadata', 'Add-OfficeExcelPageBreak', 'Add-OfficeExcelPivotTable', 'Add-OfficeExcelPowerQueryMetadata', 'Add-OfficeExcelReportCallout', 'Add-OfficeExcelReportKpiRow', 'Add-OfficeExcelReportLegend', 'Add-OfficeExcelReportParagraph', 'Add-OfficeExcelReportSection', 'Add-OfficeExcelReportSheet', 'Add-OfficeExcelReportSpacer', 'Add-OfficeExcelReportTable', 'Add-OfficeExcelReportTitle', 'Add-OfficeExcelSheet', 'Add-OfficeExcelSlicer', 'Add-OfficeExcelSparkline', 'Add-OfficeExcelSubtotalSummary', 'Add-OfficeExcelTable', 'Add-OfficeExcelTableOfContents', 'Add-OfficeExcelTableRow', 'Add-OfficeExcelThreadedComment', 'Add-OfficeExcelTimeline', 'Add-OfficeExcelValidationCustomFormula', 'Add-OfficeExcelValidationDate', 'Add-OfficeExcelValidationDecimal', 'Add-OfficeExcelValidationList', 'Add-OfficeExcelValidationTextLength', 'Add-OfficeExcelValidationTime', 'Add-OfficeExcelValidationWholeNumber', 'Add-OfficeExcelVisual', 'Add-OfficeMarkdownCallout', 'Add-OfficeMarkdownCode', 'Add-OfficeMarkdownDefinitionList', 'Add-OfficeMarkdownDetails', 'Add-OfficeMarkdownFrontMatter', 'Add-OfficeMarkdownHeading', 'Add-OfficeMarkdownHorizontalRule', 'Add-OfficeMarkdownImage', 'Add-OfficeMarkdownList', 'Add-OfficeMarkdownParagraph', 'Add-OfficeMarkdownQuote', 'Add-OfficeMarkdownTable', 'Add-OfficeMarkdownTableOfContents', 'Add-OfficeMarkdownTaskList', 'Add-OfficePdfAttachment', 'Add-OfficePdfBackgroundShape', 'Add-OfficePdfBookmark', 'Add-OfficePdfCanvas', 'Add-OfficePdfCanvasText', 'Add-OfficePdfFormField', 'Add-OfficePdfHeading', 'Add-OfficePdfHorizontalRule', 'Add-OfficePdfImage', 'Add-OfficePdfList', 'Add-OfficePdfPageBreak', 'Add-OfficePdfPageOverlay', 'Add-OfficePdfPanel', 'Add-OfficePdfParagraph', 'Add-OfficePdfRow', 'Add-OfficePdfSpacer', 'Add-OfficePdfStamp', 'Add-OfficePdfTable', 'Add-OfficePdfText', 'Add-OfficePdfVisual', 'Add-OfficePdfWatermark', 'Add-OfficePowerPointBullets', 'Add-OfficePowerPointChart', 'Add-OfficePowerPointDesignerDeck', 'Add-OfficePowerPointImage', 'Add-OfficePowerPointPlanCapability', 'Add-OfficePowerPointPlanCardGrid', 'Add-OfficePowerPointPlanCaseStudy', 'Add-OfficePowerPointPlanCoverage', 'Add-OfficePowerPointPlanLogoWall', 'Add-OfficePowerPointPlanProcess', 'Add-OfficePowerPointPlanSection', 'Add-OfficePowerPointSection', 'Add-OfficePowerPointShape', 'Add-OfficePowerPointSlide', 'Add-OfficePowerPointTable', 'Add-OfficePowerPointTableRow', 'Add-OfficePowerPointTextBox', 'Add-OfficePowerPointVisual', 'Add-OfficeVisioConnector', 'Add-OfficeVisioContainer', 'Add-OfficeVisioDiamond', 'Add-OfficeVisioEllipse', 'Add-OfficeVisioPage', 'Add-OfficeVisioRectangle', 'Add-OfficeVisioStencilShape', 'Add-OfficeVisioTextBox', 'Add-OfficeWordBookmark', 'Add-OfficeWordBreak', 'Add-OfficeWordChart', 'Add-OfficeWordCheckBox', 'Add-OfficeWordComboBox', 'Add-OfficeWordContentControl', 'Add-OfficeWordCoverPage', 'Add-OfficeWordDatePicker', 'Add-OfficeWordDropDownList', 'Add-OfficeWordEndnote', 'Add-OfficeWordEquation', 'Add-OfficeWordField', 'Add-OfficeWordFooter', 'Add-OfficeWordFootnote', 'Add-OfficeWordHeader', 'Add-OfficeWordHyperlink', 'Add-OfficeWordImage', 'Add-OfficeWordList', 'Add-OfficeWordListItem', 'Add-OfficeWordPageNumber', 'Add-OfficeWordParagraph', 'Add-OfficeWordPictureControl', 'Add-OfficeWordRepeatingSection', 'Add-OfficeWordSection', 'Add-OfficeWordShape', 'Add-OfficeWordTable', 'Add-OfficeWordTableCell', 'Add-OfficeWordTableCondition', 'Add-OfficeWordTableOfContents', 'Add-OfficeWordTableRow', 'Add-OfficeWordTabStop', 'Add-OfficeWordText', 'Add-OfficeWordTextBox', 'Add-OfficeWordVisual', 'Add-OfficeWordWatermark', 'Clear-OfficeExcelAutoFilter', 'Clear-OfficeExcelComment', 'Clear-OfficeExcelConditionalFormatting', 'Clear-OfficeExcelDataValidation', 'Clear-OfficeExcelPageBreak', 'Clear-OfficeExcelRange', 'Clear-OfficeExcelWriteReservation', 'Clear-OfficePdfBackgroundShape', 'Close-OfficeExcel', 'Close-OfficePowerPoint', 'Close-OfficeWord', 'Compare-OfficeExcelRange', 'Compare-OfficeExcelWorkbook', 'Compare-OfficePdfVisual', 'Compare-OfficeWordDocument', 'ConvertFrom-OfficeAsciiDocMarkdown', 'ConvertFrom-OfficeCsv', 'ConvertFrom-OfficeLatexMarkdown', 'ConvertFrom-OfficeMarkdownHtml', 'ConvertFrom-OfficeOpenDocument', 'ConvertFrom-OfficePdfHtml', 'ConvertFrom-OfficeRtf', 'ConvertFrom-OfficeWordHtml', 'ConvertFrom-OfficeWordMarkdown', 'ConvertTo-OfficeAsciiDocMarkdown', 'ConvertTo-OfficeCsv', 'ConvertTo-OfficeExcelHtml', 'ConvertTo-OfficeExcelWorkbook', 'ConvertTo-OfficeLatexMarkdown', 'ConvertTo-OfficeMarkdown', 'ConvertTo-OfficeMarkdownHtml', 'ConvertTo-OfficeOpenDocument', 'ConvertTo-OfficePdfExcel', 'ConvertTo-OfficePdfFlatAnnotation', 'ConvertTo-OfficePdfFlatForm', 'ConvertTo-OfficePdfHtml', 'ConvertTo-OfficePdfMarkdown', 'ConvertTo-OfficePdfOptimized', 'ConvertTo-OfficePdfPowerPoint', 'ConvertTo-OfficePdfRedacted', 'ConvertTo-OfficePdfSanitized', 'ConvertTo-OfficePdfTextRun', 'ConvertTo-OfficePdfWord', 'ConvertTo-OfficePowerPointHtml', 'ConvertTo-OfficeRtf', 'ConvertTo-OfficeVisioPng', 'ConvertTo-OfficeVisioSvg', 'ConvertTo-OfficeVisioVisual', 'ConvertTo-OfficeVisual', 'ConvertTo-OfficeWordDocument', 'ConvertTo-OfficeWordHtml', 'ConvertTo-OfficeWordMarkdown', 'Copy-OfficeExcelSheet', 'Copy-OfficeExcelWorkbook', 'Copy-OfficePdfPage', 'Copy-OfficePowerPointSlide', 'Edit-OfficeExcelRow', 'Export-OfficeCsv', 'Export-OfficeDocumentPdf', 'Export-OfficeExcel', 'Export-OfficeExcelChartImage', 'Export-OfficeExcelGoogleSpreadsheet', 'Export-OfficeExcelImage', 'Export-OfficeExcelRangeImage', 'Export-OfficeHtmlImage', 'Export-OfficePdfImage', 'Export-OfficePdfLayoutOverlay', 'Export-OfficePdfXfdf', 'Export-OfficePowerPointImage', 'Export-OfficeVisioImage', 'Export-OfficeVisioStencilPreviewGallery', 'Export-OfficeVisioVisual', 'Export-OfficeWordGoogleDocument', 'Export-OfficeWordImage', 'Find-OfficeExcel', 'Find-OfficePowerPointShape', 'Find-OfficeVisioStencil', 'Find-OfficeWord', 'Find-OfficeWordList', 'Find-OfficeWordTable', 'Get-OfficeAsciiDoc', 'Get-OfficeConfluenceAttachment', 'Get-OfficeConfluencePage', 'Get-OfficeCsv', 'Get-OfficeDocument', 'Get-OfficeDocumentAsset', 'Get-OfficeDocumentBatch', 'Get-OfficeDocumentCapability', 'Get-OfficeDocumentChunk', 'Get-OfficeDocumentDetection', 'Get-OfficeDocumentHierarchy', 'Get-OfficeDocumentIngest', 'Get-OfficeDocumentPageMarkdown', 'Get-OfficeDocumentStructured', 'Get-OfficeDocumentTable', 'Get-OfficeDocumentVisual', 'Get-OfficeEmail', 'Get-OfficeEmailMailbox', 'Get-OfficeExcel', 'Get-OfficeExcelComment', 'Get-OfficeExcelCommentAudit', 'Get-OfficeExcelConditionalFormatting', 'Get-OfficeExcelData', 'Get-OfficeExcelDataModel', 'Get-OfficeExcelDataValidation', 'Get-OfficeExcelDocumentProperty', 'Get-OfficeExcelFormulaAnalysis', 'Get-OfficeExcelNamedRange', 'Get-OfficeExcelNumberFormatPreset', 'Get-OfficeExcelPageBreak', 'Get-OfficeExcelPivotTable', 'Get-OfficeExcelPreflight', 'Get-OfficeExcelRange', 'Get-OfficeExcelRichText', 'Get-OfficeExcelRuntimePreflight', 'Get-OfficeExcelStreamingContract', 'Get-OfficeExcelSummary', 'Get-OfficeExcelTable', 'Get-OfficeExcelTableStyle', 'Get-OfficeExcelTemplateMarker', 'Get-OfficeExcelUsedRange', 'Get-OfficeExcelWorksheetView', 'Get-OfficeExcelWriteReservation', 'Get-OfficeLatex', 'Get-OfficeMarkdown', 'Get-OfficeMarkdownFrontMatter', 'Get-OfficeMarkdownHeading', 'Get-OfficeMarkdownNode', 'Get-OfficeMarkdownTable', 'Get-OfficeOpenDocument', 'Get-OfficePdf', 'Get-OfficePdfAnnotation', 'Get-OfficePdfAppendOnlyMutation', 'Get-OfficePdfAttachment', 'Get-OfficePdfCompliance', 'Get-OfficePdfDiagnostic', 'Get-OfficePdfFont', 'Get-OfficePdfFormField', 'Get-OfficePdfImage', 'Get-OfficePdfInfo', 'Get-OfficePdfInteractionMap', 'Get-OfficePdfOptimization', 'Get-OfficePdfPreflight', 'Get-OfficePdfRedactionPlan', 'Get-OfficePdfSignature', 'Get-OfficePdfText', 'Get-OfficePdfTextDiagnostic', 'Get-OfficePowerPoint', 'Get-OfficePowerPointInspection', 'Get-OfficePowerPointLayout', 'Get-OfficePowerPointLayoutBox', 'Get-OfficePowerPointLayoutPlaceholder', 'Get-OfficePowerPointNotes', 'Get-OfficePowerPointPlaceholder', 'Get-OfficePowerPointSection', 'Get-OfficePowerPointShape', 'Get-OfficePowerPointSlide', 'Get-OfficePowerPointSlideSummary', 'Get-OfficePowerPointTheme', 'Get-OfficeProtectionCapability', 'Get-OfficeRtf', 'Get-OfficeVisio', 'Get-OfficeVisioInfo', 'Get-OfficeVisioStencilCatalog', 'Get-OfficeWord', 'Get-OfficeWordBookmark', 'Get-OfficeWordCheckBox', 'Get-OfficeWordComboBox', 'Get-OfficeWordContentControl', 'Get-OfficeWordDatePicker', 'Get-OfficeWordDocumentProperty', 'Get-OfficeWordDropDownList', 'Get-OfficeWordEndnote', 'Get-OfficeWordField', 'Get-OfficeWordFootnote', 'Get-OfficeWordHyperlink', 'Get-OfficeWordImage', 'Get-OfficeWordList', 'Get-OfficeWordParagraph', 'Get-OfficeWordPictureControl', 'Get-OfficeWordRepeatingSection', 'Get-OfficeWordReview', 'Get-OfficeWordSection', 'Get-OfficeWordShape', 'Get-OfficeWordStatistics', 'Get-OfficeWordTable', 'Get-OfficeWordTableCell', 'Get-OfficeWordTableOfContents', 'Get-OfficeWordText', 'Import-OfficeCsv', 'Import-OfficeExcel', 'Import-OfficeExcelDelimitedText', 'Import-OfficePdfXfdf', 'Import-OfficePowerPointSlide', 'Import-OfficeVisioStencil', 'Invoke-OfficeExcelAutoFit', 'Invoke-OfficeExcelSort', 'Invoke-OfficeExcelTemplate', 'Invoke-OfficeExcelTemplateOptionalRow', 'Invoke-OfficeExcelTemplateRow', 'Invoke-OfficeExcelTemplateSheet', 'Invoke-OfficePdfOcrMerge', 'Invoke-OfficeWordMailMerge', 'Join-OfficeExcelSheet', 'Join-OfficeExcelWorkbook', 'Join-OfficePdf', 'Join-OfficeWordDocument', 'Move-OfficeExcelSheet', 'Move-OfficePdfPage', 'New-OfficeConfluenceSession', 'New-OfficeDocumentReader', 'New-OfficeExcel', 'New-OfficeExcelDashboard', 'New-OfficeMarkdown', 'New-OfficeOpenDocument', 'New-OfficePdf', 'New-OfficePdfSignature', 'New-OfficePdfTableCell', 'New-OfficePdfTableCellCheckBox', 'New-OfficePdfTableCellField', 'New-OfficePdfTableCellImage', 'New-OfficePowerPoint', 'New-OfficePowerPointDeckPlan', 'New-OfficeRtf', 'New-OfficeTextRun', 'New-OfficeVisio', 'New-OfficeVisioGallery', 'New-OfficeWord', 'New-OfficeWordTableCell', 'Protect-OfficeExcelSheet', 'Protect-OfficeExcelWorkbook', 'Protect-OfficeWordDocument', 'Publish-OfficeConfluencePage', 'Remove-OfficeConfluencePage', 'Remove-OfficeExcelComment', 'Remove-OfficeExcelNamedRange', 'Remove-OfficePdfAnnotation', 'Remove-OfficePdfPage', 'Remove-OfficePowerPointSlide', 'Remove-OfficeWordTableOfContents', 'Rename-OfficeExcelNamedRange', 'Rename-OfficePowerPointSection', 'Repair-OfficeExcelWorkbook', 'Resolve-OfficeWordRevision', 'Save-OfficeAsciiDoc', 'Save-OfficeEmail', 'Save-OfficeEmailMailbox', 'Save-OfficeExcel', 'Save-OfficeLatex', 'Save-OfficeMarkdown', 'Save-OfficeOpenDocument', 'Save-OfficePdf', 'Save-OfficePowerPoint', 'Save-OfficeVisio', 'Save-OfficeWord', 'Search-OfficeDocument', 'Send-OfficeConfluenceAttachment', 'Set-OfficeConfluenceManagedSection', 'Set-OfficeExcelActiveSheet', 'Set-OfficeExcelAutoFilter', 'Set-OfficeExcelCell', 'Set-OfficeExcelChartAxis', 'Set-OfficeExcelChartDataLabels', 'Set-OfficeExcelChartLegend', 'Set-OfficeExcelChartPoint', 'Set-OfficeExcelChartSeries', 'Set-OfficeExcelChartStyle', 'Set-OfficeExcelChartTrendline', 'Set-OfficeExcelColumn', 'Set-OfficeExcelColumnGroup', 'Set-OfficeExcelColumnStyleByHeader', 'Set-OfficeExcelDataValidationMessage', 'Set-OfficeExcelDateSystem', 'Set-OfficeExcelDocumentProperty', 'Set-OfficeExcelExecutionPolicy', 'Set-OfficeExcelFormula', 'Set-OfficeExcelFreeze', 'Set-OfficeExcelGridlines', 'Set-OfficeExcelHeaderFooter', 'Set-OfficeExcelHostHyperlink', 'Set-OfficeExcelHyperlink', 'Set-OfficeExcelInternalLinks', 'Set-OfficeExcelInternalLinksByHeader', 'Set-OfficeExcelMargins', 'Set-OfficeExcelNamedRange', 'Set-OfficeExcelOrientation', 'Set-OfficeExcelPageSetup', 'Set-OfficeExcelPrintArea', 'Set-OfficeExcelPrintLayout', 'Set-OfficeExcelPrintTitles', 'Set-OfficeExcelRefreshOnOpen', 'Set-OfficeExcelRichText', 'Set-OfficeExcelRow', 'Set-OfficeExcelRowGroup', 'Set-OfficeExcelSheetTabColor', 'Set-OfficeExcelSheetVisibility', 'Set-OfficeExcelSmartHyperlink', 'Set-OfficeExcelTheme', 'Set-OfficeExcelUrlLinks', 'Set-OfficeExcelUrlLinksByHeader', 'Set-OfficeExcelWorksheetView', 'Set-OfficeExcelWriteReservation', 'Set-OfficePdfAnnotation', 'Set-OfficePdfBackground', 'Set-OfficePdfBackgroundImage', 'Set-OfficePdfCompliance', 'Set-OfficePdfElectronicInvoice', 'Set-OfficePdfFooter', 'Set-OfficePdfForm', 'Set-OfficePdfHeader', 'Set-OfficePdfMetadata', 'Set-OfficePdfPage', 'Set-OfficePdfPageBorder', 'Set-OfficePdfPageSetup', 'Set-OfficePdfSignature', 'Set-OfficePdfTheme', 'Set-OfficePowerPointBackground', 'Set-OfficePowerPointLayoutPlaceholderBounds', 'Set-OfficePowerPointLayoutPlaceholderTextMargins', 'Set-OfficePowerPointLayoutPlaceholderTextStyle', 'Set-OfficePowerPointNotes', 'Set-OfficePowerPointPlaceholderText', 'Set-OfficePowerPointShapeLayout', 'Set-OfficePowerPointShapeText', 'Set-OfficePowerPointSlideLayout', 'Set-OfficePowerPointSlideSize', 'Set-OfficePowerPointSlideTitle', 'Set-OfficePowerPointSlideTransition', 'Set-OfficePowerPointTableCell', 'Set-OfficePowerPointThemeColor', 'Set-OfficePowerPointThemeFonts', 'Set-OfficePowerPointThemeName', 'Set-OfficeVisioShapeLayout', 'Set-OfficeWordBackground', 'Set-OfficeWordDocumentProperty', 'Set-OfficeWordImage', 'Set-OfficeWordPageSetup', 'Set-OfficeWordParagraphStyle', 'Set-OfficeWordShape', 'Set-OfficeWordTableCell', 'Set-OfficeWordTableOfContents', 'Set-OfficeWordTextStyle', 'Split-OfficePdf', 'Test-OfficeExcelAccessibility', 'Test-OfficeExcelTemplateBinding', 'Test-OfficeExcelWorkbook', 'Test-OfficePdfRewrite', 'Unprotect-OfficeExcelSheet', 'Unprotect-OfficeExcelWorkbook', 'Update-OfficeExcelComment', 'Update-OfficeExcelText', 'Update-OfficePowerPointText', 'Update-OfficeRtfText', 'Update-OfficeWordFields', 'Update-OfficeWordTableOfContents', 'Update-OfficeWordText')
     CompanyName            = 'Evotec'
     CompatiblePSEditions   = @('Desktop', 'Core')
     Copyright              = '(c) 2011 - 2026 Przemyslaw Klys @ Evotec. All rights reserved.'
diff --git a/README.MD b/README.MD
index 65d1ddd7..83ff92dd 100644
--- a/README.MD
+++ b/README.MD
@@ -132,6 +132,35 @@ Install-Module -Name PSWriteOffice -Scope CurrentUser
 Import-Module PSWriteOffice
 ```
 
+### Predictable paths and pipeline output
+
+The public commands use `-Path` for the primary file. Converters use
+`-OutputPath` when they also accept a source `-Path`; copy operations use
+`-DestinationPath`. More specific names such as `-TemplatePath`, `-SourcePath`,
+and `-SignaturePath` are reserved for files with a distinct role. Older
+`-FilePath` spellings remain aliases where they were previously public.
+
+Commands that create, save, or mutate a document are quiet by default. Use
+`-PassThru` only when the next pipeline step needs the result. Use `-NoSave`
+when you want a live OfficeIMO document for incremental composition, and
+`-Open` when the completed file should be opened after it is written.
+
+```powershell
+# One-shot DSL: save and finish without Out-Null.
+New-OfficeWord -Path .\Report.docx {
+    WordParagraph -Text 'Ready for review'
+}
+
+# Incremental composition: keep the live document until the explicit save.
+$document = New-OfficeWord -Path .\Report.docx -NoSave
+$document | Add-OfficeWordParagraph -Text 'Ready for review'
+$document | Save-OfficeWord
+$document | Close-OfficeWord
+
+# Capture a mutation result only when it is useful.
+$slide = Add-OfficePowerPointSlide -Presentation $presentation -PassThru
+```
+
 ### Word
 
 ```powershell
@@ -200,7 +229,7 @@ New-OfficePowerPoint -Path .\Deck.pptx {
 ```
 
 ```powershell
-$ppt = Get-OfficePowerPoint -FilePath .\Deck.pptx
+$ppt = Get-OfficePowerPoint -Path .\Deck.pptx
 Add-OfficePowerPointSection -Presentation $ppt -Name 'Intro' -StartSlideIndex 0
 Rename-OfficePowerPointSection -Presentation $ppt -Name 'Intro' -NewName 'Opening'
 Update-OfficePowerPointText -Presentation $ppt -OldValue 'FY24' -NewValue 'FY25' -IncludeNotes
@@ -208,12 +237,14 @@ Copy-OfficePowerPointSlide -Presentation $ppt -Index 0
 Get-OfficePowerPointSlide -Presentation $ppt -Index 0 | Set-OfficePowerPointSlideTransition -Transition Fade
 Set-OfficePowerPointSlideSize -Presentation $ppt -Preset Screen16x9
 Import-OfficePowerPointSlide -Presentation $ppt -SourcePath .\SourceDeck.pptx -SourceIndex 0
+$ppt | Save-OfficePowerPoint
+$ppt | Close-OfficePowerPoint
 ```
 
 ### PowerPoint theme and layout helpers
 
 ```powershell
-$ppt = Get-OfficePowerPoint -FilePath .\Deck.pptx
+$ppt = Get-OfficePowerPoint -Path .\Deck.pptx
 Set-OfficePowerPointThemeColor -Presentation $ppt -Colors @{ Accent1 = '#C00000'; Accent2 = '#00B0F0' } -AllMasters
 Set-OfficePowerPointThemeFonts -Presentation $ppt -MajorLatin 'Aptos' -MinorLatin 'Calibri' -AllMasters
 Set-OfficePowerPointThemeName -Presentation $ppt -Name 'Contoso Theme' -AllMasters
@@ -273,6 +304,17 @@ Split-OfficePdf -Path .\Report.pdf -OutputDirectory .\Pages
 Get-OfficePdfText -Path .\Report.pdf
 ```
 
+Export the same authored document to PDF explicitly instead of coupling PDF
+sidecars to each lifecycle command:
+
+```powershell
+Export-OfficeDocumentPdf -InputPath .\Report.docx -Path .\Report.pdf
+
+$document = Get-OfficeWord -Path .\Report.docx
+$document | Export-OfficeDocumentPdf -Path .\Report-Live.pdf
+$document | Close-OfficeWord
+```
+
 ### Excel chart finishing
 
 ```powershell
@@ -314,7 +356,7 @@ ExcelSheet 'Summary' {
 ### RTF
 
 ```powershell
-New-OfficeRtf -OutputPath .\Report.rtf -Text 'Summary', 'Ready for review'
+New-OfficeRtf -Path .\Report.rtf -Text 'Summary', 'Ready for review'
 Get-OfficeRtf -Path .\Report.rtf
 Update-OfficeRtfText -Path .\Report.rtf -OutputPath .\Report-Updated.rtf -OldText 'review' -NewText 'release'
 ConvertFrom-OfficeRtf -Path .\Report-Updated.rtf -As Pdf -OutputPath .\Report.pdf
@@ -478,12 +520,16 @@ ConvertFrom-OfficeRtf -Path .\Report.rtf -As Html -OutputPath .\Report.html -Inc
 ### Word charts with the current API
 
 ```powershell
-$doc = New-OfficeWord -Path .\Report.docx
-$chart = $doc.AddChart('Revenue Mix')
-$chart.AddPie('North America', 125000).
-    AddPie('EMEA', 98000).
-    AddPie('APAC', 143000) | Out-Null
-Close-OfficeWord -Document $doc -Save
+$doc = New-OfficeWord -Path .\Report.docx -NoSave
+$chartData = @(
+    [PSCustomObject]@{ Region = 'North America'; Revenue = 125000 }
+    [PSCustomObject]@{ Region = 'EMEA'; Revenue = 98000 }
+    [PSCustomObject]@{ Region = 'APAC'; Revenue = 143000 }
+)
+Add-OfficeWordChart -Document $doc -Type Pie -InputObject $chartData `
+    -CategoryProperty Region -SeriesProperty Revenue -Title 'Revenue Mix'
+$doc | Save-OfficeWord
+$doc | Close-OfficeWord
 ```
 
 ### Word tables with extra columns
@@ -500,7 +546,7 @@ New-OfficeWord -Path .\Report.docx {
 ### PowerPoint inspection
 
 ```powershell
-$ppt = Get-OfficePowerPoint -FilePath .\Deck.pptx
+$ppt = Get-OfficePowerPoint -Path .\Deck.pptx
 Get-OfficePowerPointSlide -Presentation $ppt
 Get-OfficePowerPointSlideSummary -Presentation $ppt
 Get-OfficePowerPointNotes -Presentation $ppt
diff --git a/Sources/PSWriteOffice/Cmdlets/Confluence/RemoveOfficeConfluencePageCommand.cs b/Sources/PSWriteOffice/Cmdlets/Confluence/RemoveOfficeConfluencePageCommand.cs
index 061d7079..e4b590ee 100644
--- a/Sources/PSWriteOffice/Cmdlets/Confluence/RemoveOfficeConfluencePageCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Confluence/RemoveOfficeConfluencePageCommand.cs
@@ -19,8 +19,7 @@ namespace PSWriteOffice.Cmdlets.Confluence;
 /// 
 [Cmdlet(VerbsCommon.Remove, "OfficeConfluencePage", SupportsShouldProcess = true)]
 [OutputType(typeof(ConfluencePageWritePlan))]
-public sealed class RemoveOfficeConfluencePageCommand : AsyncPSCmdlet
-{
+public sealed class RemoveOfficeConfluencePageCommand : AsyncPSCmdlet {
     /// Configured session required for a live delete operation.
     [Parameter]
     public ConfluenceSession? Session { get; set; }
@@ -42,27 +41,30 @@ public sealed class RemoveOfficeConfluencePageCommand : AsyncPSCmdlet
     [Parameter]
     public SwitchParameter PlanOnly { get; set; }
 
+    /// Return the completed delete plan after a live operation.
+    [Parameter]
+    public SwitchParameter PassThru { get; set; }
+
     /// 
-    protected override async Task ProcessRecordAsync()
-    {
+    protected override async Task ProcessRecordAsync() {
         ConfluencePageWritePlan plan = ConfluenceClient.PlanDeletePage(PageId, Purge.IsPresent, Draft.IsPresent);
-        if (PlanOnly.IsPresent)
-        {
+        if (PlanOnly.IsPresent) {
             WriteObject(plan);
             return;
         }
 
-        if (Session == null)
-        {
+        if (Session == null) {
             throw new PSInvalidOperationException("Provide -Session for a live operation, or use -PlanOnly.");
         }
 
-        if (!ShouldProcess(PageId, Purge.IsPresent ? "Permanently delete Confluence page" : "Delete Confluence page"))
-        {
+        if (!ShouldProcess(PageId, Purge.IsPresent ? "Permanently delete Confluence page" : "Delete Confluence page")) {
             return;
         }
 
         using var client = Session.CreateClient();
         await client.DeletePageAsync(PageId, Purge.IsPresent, Draft.IsPresent, CancelToken).ConfigureAwait(false);
+        if (PassThru.IsPresent) {
+            WriteObject(plan);
+        }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Email/SaveOfficeEmailCommand.cs b/Sources/PSWriteOffice/Cmdlets/Email/SaveOfficeEmailCommand.cs
index 59ad2ae8..bc3fd03a 100644
--- a/Sources/PSWriteOffice/Cmdlets/Email/SaveOfficeEmailCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Email/SaveOfficeEmailCommand.cs
@@ -8,8 +8,7 @@ namespace PSWriteOffice.Cmdlets.Email;
 /// Saves an email document as EML, EMLX, MSG, or TNEF with fidelity diagnostics.
 [Cmdlet(VerbsData.Save, "OfficeEmail", SupportsShouldProcess = true)]
 [OutputType(typeof(EmailWriteResult))]
-public sealed class SaveOfficeEmailCommand : PSCmdlet
-{
+public sealed class SaveOfficeEmailCommand : OfficeMutationCmdlet {
     /// Email document to save.
     [Parameter(Mandatory = true, ValueFromPipeline = true)]
     public EmailDocument Document { get; set; } = null!;
@@ -27,27 +26,25 @@ public sealed class SaveOfficeEmailCommand : PSCmdlet
     public EmailWriterOptions? Options { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var output = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
         if (!ShouldProcess(output, "Save email artifact")) return;
         Directory.CreateDirectory(System.IO.Path.GetDirectoryName(output) ?? SessionState.Path.CurrentFileSystemLocation.Path);
         if (Format == EmailFileFormat.Emlx ||
-            (!Format.HasValue && string.Equals(System.IO.Path.GetExtension(output), ".emlx", System.StringComparison.OrdinalIgnoreCase)))
-        {
+            (!Format.HasValue && string.Equals(System.IO.Path.GetExtension(output), ".emlx", System.StringComparison.OrdinalIgnoreCase))) {
             var writer = new EmailStoreEmlxWriter(new EmailStoreEmlxWriterOptions(Options));
             var result = writer.Write(Document, output);
-            if (result.HasErrors)
-            {
+            if (result.HasErrors) {
                 result.RequireNoLoss();
             }
 
-            WriteObject(result);
+            WritePassThru(result);
             return;
         }
 
-        WriteObject(Format.HasValue
+        var saveResult = Format.HasValue
             ? Document.Save(output, Format.Value, Options)
-            : Document.Save(output, Options));
+            : Document.Save(output, Options);
+        WritePassThru(saveResult);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Email/SaveOfficeEmailMailboxCommand.cs b/Sources/PSWriteOffice/Cmdlets/Email/SaveOfficeEmailMailboxCommand.cs
index 815b222c..87b486dc 100644
--- a/Sources/PSWriteOffice/Cmdlets/Email/SaveOfficeEmailMailboxCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Email/SaveOfficeEmailMailboxCommand.cs
@@ -7,8 +7,7 @@ namespace PSWriteOffice.Cmdlets.Email;
 /// Saves a native mbox mailbox with output diagnostics.
 [Cmdlet(VerbsData.Save, "OfficeEmailMailbox", SupportsShouldProcess = true)]
 [OutputType(typeof(EmailWriteResult))]
-public sealed class SaveOfficeEmailMailboxCommand : PSCmdlet
-{
+public sealed class SaveOfficeEmailMailboxCommand : OfficeMutationCmdlet {
     /// Mailbox to save.
     [Parameter(Mandatory = true, ValueFromPipeline = true)]
     public EmailMailbox Mailbox { get; set; } = null!;
@@ -22,11 +21,10 @@ public sealed class SaveOfficeEmailMailboxCommand : PSCmdlet
     public EmailMailboxWriterOptions? Options { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var output = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
         if (!ShouldProcess(output, "Save mbox mailbox")) return;
         Directory.CreateDirectory(System.IO.Path.GetDirectoryName(output) ?? SessionState.Path.CurrentFileSystemLocation.Path);
-        WriteObject(Mailbox.Save(output, Options));
+        WritePassThru(Mailbox.Save(output, Options));
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelAutoFilterCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelAutoFilterCommand.cs
index 7945170d..e522ddde 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelAutoFilterCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelAutoFilterCommand.cs
@@ -24,8 +24,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Add, "OfficeExcelAutoFilter", DefaultParameterSetName = ParameterSetContext)]
 [Alias("ExcelAutoFilter")]
-public sealed class AddOfficeExcelAutoFilterCommand : PSCmdlet
-{
+public sealed class AddOfficeExcelAutoFilterCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
 
@@ -50,19 +49,16 @@ public sealed class AddOfficeExcelAutoFilterCommand : PSCmdlet
     public Hashtable? Criteria { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var sheet = ResolveSheet();
         var criteria = ConvertCriteria(Criteria);
         sheet.AddAutoFilter(Range, criteria);
+        WritePassThru(sheet);
     }
 
-    private ExcelSheet ResolveSheet()
-    {
-        if (ParameterSetName == ParameterSetDocument)
-        {
-            if (Document == null)
-            {
+    private ExcelSheet ResolveSheet() {
+        if (ParameterSetName == ParameterSetDocument) {
+            if (Document == null) {
                 throw new PSArgumentException("Provide an Excel document.");
             }
 
@@ -73,29 +69,23 @@ private ExcelSheet ResolveSheet()
         return context.RequireSheet();
     }
 
-    private static Dictionary>? ConvertCriteria(Hashtable? criteria)
-    {
-        if (criteria == null || criteria.Count == 0)
-        {
+    private static Dictionary>? ConvertCriteria(Hashtable? criteria) {
+        if (criteria == null || criteria.Count == 0) {
             return null;
         }
 
         var converted = new Dictionary>();
-        foreach (DictionaryEntry entry in criteria)
-        {
-            if (entry.Key == null)
-            {
+        foreach (DictionaryEntry entry in criteria) {
+            if (entry.Key == null) {
                 continue;
             }
 
-            if (!TryGetColumnIndex(entry.Key, out uint index))
-            {
+            if (!TryGetColumnIndex(entry.Key, out uint index)) {
                 throw new PSArgumentException($"Invalid column index '{entry.Key}'. Use an integer index (0-based within the filter range).");
             }
 
             var values = NormalizeValues(entry.Value).ToArray();
-            if (values.Length == 0)
-            {
+            if (values.Length == 0) {
                 continue;
             }
 
@@ -105,11 +95,9 @@ private ExcelSheet ResolveSheet()
         return converted.Count == 0 ? null : converted;
     }
 
-    private static bool TryGetColumnIndex(object key, out uint index)
-    {
+    private static bool TryGetColumnIndex(object key, out uint index) {
         index = 0;
-        switch (key)
-        {
+        switch (key) {
             case byte b:
                 index = b;
                 return true;
@@ -141,30 +129,23 @@ private static bool TryGetColumnIndex(object key, out uint index)
         }
     }
 
-    private static IEnumerable NormalizeValues(object? value)
-    {
-        if (value == null)
-        {
+    private static IEnumerable NormalizeValues(object? value) {
+        if (value == null) {
             yield break;
         }
 
-        if (value is string text)
-        {
-            if (!string.IsNullOrWhiteSpace(text))
-            {
+        if (value is string text) {
+            if (!string.IsNullOrWhiteSpace(text)) {
                 yield return text;
             }
             yield break;
         }
 
-        if (value is IEnumerable enumerable)
-        {
-            foreach (var item in enumerable)
-            {
+        if (value is IEnumerable enumerable) {
+            foreach (var item in enumerable) {
                 if (item == null) continue;
                 var itemText = item.ToString();
-                if (!string.IsNullOrWhiteSpace(itemText))
-                {
+                if (!string.IsNullOrWhiteSpace(itemText)) {
                     yield return itemText!;
                 }
             }
@@ -172,9 +153,8 @@ private static IEnumerable NormalizeValues(object? value)
         }
 
         var single = value.ToString();
-        if (!string.IsNullOrWhiteSpace(single))
-        {
+        if (!string.IsNullOrWhiteSpace(single)) {
             yield return single!;
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelPackageMetadataCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelPackageMetadataCommand.cs
index 744e2b67..7a1327a1 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelPackageMetadataCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelPackageMetadataCommand.cs
@@ -16,16 +16,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Add, "OfficeExcelPackageMetadata", DefaultParameterSetName = ParameterSetContext, SupportsShouldProcess = true)]
 [Alias("ExcelPackageMetadata", "ExcelConnectionMetadata")]
 [OutputType(typeof(PSObject))]
-public sealed class AddOfficeExcelPackageMetadataCommand : PSCmdlet
-{
+public sealed class AddOfficeExcelPackageMetadataCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -50,11 +49,9 @@ public sealed class AddOfficeExcelPackageMetadataCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
-        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, InputPath, "Update Excel workbook"))
-        {
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
+        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, Path, "Update Excel workbook")) {
             return;
         }
 
@@ -62,21 +59,17 @@ protected override void ProcessRecord()
 
         string? sheetName = null;
         ExcelPackagePartInfo part;
-        if (string.Equals(Kind, "QueryTable", StringComparison.OrdinalIgnoreCase))
-        {
+        if (string.Equals(Kind, "QueryTable", StringComparison.OrdinalIgnoreCase)) {
             sheetName = ExcelWorkbookCommandService.ResolveSheetNameOrCurrent(this, document, ParameterSetName, WorksheetName);
             part = document.AddWorksheetQueryTableMetadata(sheetName, Xml);
-        }
-        else
-        {
+        } else {
             part = document.AddWorkbookConnectionMetadata(Xml);
         }
 
         string contentType = part.ContentType;
         workbook.SaveIfOwned();
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             var result = new PSObject();
             result.Properties.Add(new PSNoteProperty("Kind", Kind));
             result.Properties.Add(new PSNoteProperty("WorksheetName", sheetName));
@@ -84,4 +77,4 @@ protected override void ProcessRecord()
             WriteObject(result);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelPageBreakCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelPageBreakCommand.cs
index 03569e6a..d5d7ae2d 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelPageBreakCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelPageBreakCommand.cs
@@ -13,16 +13,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Add, "OfficeExcelPageBreak", DefaultParameterSetName = ParameterSetContext, SupportsShouldProcess = true)]
 [Alias("ExcelPageBreak")]
-public sealed class AddOfficeExcelPageBreakCommand : PSCmdlet
-{
+public sealed class AddOfficeExcelPageBreakCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -50,18 +49,14 @@ public sealed class AddOfficeExcelPageBreakCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (Row.Length == 0 && Column.Length == 0)
-        {
+    protected override void ProcessRecord() {
+        if (Row.Length == 0 && Column.Length == 0) {
             throw new PSArgumentException("Provide at least one row or column page break.");
         }
 
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
 
-        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, InputPath, "Update Excel workbook"))
-
-        {
+        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, Path, "Update Excel workbook")) {
 
             return;
 
@@ -69,41 +64,34 @@ protected override void ProcessRecord()
 
         var sheet = ExcelWorkbookCommandService.ResolveSheet(this, workbook.Document, ParameterSetName, Sheet, SheetIndex);
 
-        foreach (var row in Row)
-        {
+        foreach (var row in Row) {
             sheet.AddManualRowPageBreak(row, save: false);
         }
 
-        foreach (var column in Column)
-        {
+        foreach (var column in Column) {
             sheet.AddManualColumnPageBreak(column, save: false);
         }
 
         workbook.SaveIfOwned();
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WritePageBreaks(sheet);
         }
     }
 
-    private void WritePageBreaks(ExcelSheet sheet)
-    {
-        foreach (var row in sheet.GetManualRowPageBreaks())
-        {
+    private void WritePageBreaks(ExcelSheet sheet) {
+        foreach (var row in sheet.GetManualRowPageBreaks()) {
             WriteObject(ExcelPageBreakRecordService.Create("Row", row, sheet.Name, PathForRecord()));
         }
 
-        foreach (var column in sheet.GetManualColumnPageBreaks())
-        {
+        foreach (var column in sheet.GetManualColumnPageBreaks()) {
             WriteObject(ExcelPageBreakRecordService.Create("Column", column, sheet.Name, PathForRecord()));
         }
     }
 
-    private string? PathForRecord()
-    {
+    private string? PathForRecord() {
         return string.Equals(ParameterSetName, ParameterSetPath, System.StringComparison.OrdinalIgnoreCase)
-            ? InputPath
+            ? Path
             : null;
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelPowerQueryMetadataCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelPowerQueryMetadataCommand.cs
index 16effbc5..20b7699d 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelPowerQueryMetadataCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelPowerQueryMetadataCommand.cs
@@ -21,16 +21,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Add, "OfficeExcelPowerQueryMetadata", DefaultParameterSetName = ParameterSetContext, SupportsShouldProcess = true)]
 [Alias("ExcelPowerQueryMetadata", "ExcelQueryMetadata")]
 [OutputType(typeof(PSObject))]
-public sealed class AddOfficeExcelPowerQueryMetadataCommand : PSCmdlet
-{
+public sealed class AddOfficeExcelPowerQueryMetadataCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetContext = "Context";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook document to update.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -65,22 +64,18 @@ public sealed class AddOfficeExcelPowerQueryMetadataCommand : PSCmdlet
     [Parameter]
     public SwitchParameter PassThru { get; set; }
 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
-        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, InputPath, "Update Excel workbook"))
-        {
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
+        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, Path, "Update Excel workbook")) {
             return;
         }
 
         string? sheetName = WorksheetName;
-        if (string.IsNullOrWhiteSpace(sheetName) && string.Equals(ParameterSetName, ParameterSetContext, System.StringComparison.OrdinalIgnoreCase))
-        {
+        if (string.IsNullOrWhiteSpace(sheetName) && string.Equals(ParameterSetName, ParameterSetContext, System.StringComparison.OrdinalIgnoreCase)) {
             sheetName = ExcelDslContext.Require(this).RequireSheet().Name;
         }
 
-        var result = workbook.Document.AddPowerQueryMetadata(new ExcelPowerQueryMetadataOptions
-        {
+        var result = workbook.Document.AddPowerQueryMetadata(new ExcelPowerQueryMetadataOptions {
             Name = Name,
             WorksheetName = sheetName,
             QueryTableName = QueryTableName,
@@ -90,8 +85,7 @@ protected override void ProcessRecord()
         });
         workbook.SaveIfOwned();
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             var output = new PSObject();
             output.Properties.Add(new PSNoteProperty("Path", workbook.Document.FilePath));
             output.Properties.Add(new PSNoteProperty("ConnectionName", result.ConnectionName));
@@ -104,4 +98,4 @@ protected override void ProcessRecord()
         }
     }
 }
-#pragma warning restore CS1591
+#pragma warning restore CS1591
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelSlicerCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelSlicerCommand.cs
index 2bd25f71..252dd327 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelSlicerCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelSlicerCommand.cs
@@ -16,16 +16,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Add, "OfficeExcelSlicer", DefaultParameterSetName = ParameterSetContext, SupportsShouldProcess = true)]
 [Alias("ExcelSlicer")]
 [OutputType(typeof(PSObject))]
-public sealed class AddOfficeExcelSlicerCommand : PSCmdlet
-{
+public sealed class AddOfficeExcelSlicerCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -52,16 +51,13 @@ public sealed class AddOfficeExcelSlicerCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
-        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, InputPath, "Update Excel workbook"))
-        {
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
+        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, Path, "Update Excel workbook")) {
             return;
         }
 
-        ExcelPackagePartInfo part = workbook.Document.AddWorkbookSlicerCache(new ExcelSlicerCacheOptions
-        {
+        ExcelPackagePartInfo part = workbook.Document.AddWorkbookSlicerCache(new ExcelSlicerCacheOptions {
             Name = Name,
             SourceName = SourceName,
             PivotTableName = PivotTableName,
@@ -71,8 +67,7 @@ protected override void ProcessRecord()
         string contentType = part.ContentType;
         workbook.SaveIfOwned();
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             var result = new PSObject();
             result.Properties.Add(new PSNoteProperty("Name", Name));
             result.Properties.Add(new PSNoteProperty("Kind", "Slicer"));
@@ -80,4 +75,4 @@ protected override void ProcessRecord()
             WriteObject(result);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelTableOfContentsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelTableOfContentsCommand.cs
index 924dc335..8009a53a 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelTableOfContentsCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelTableOfContentsCommand.cs
@@ -21,16 +21,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Add, "OfficeExcelTableOfContents", DefaultParameterSetName = ParameterSetContext)]
 [Alias("ExcelTableOfContents")]
 [OutputType(typeof(ExcelDocument), typeof(FileInfo))]
-public sealed class AddOfficeExcelTableOfContentsCommand : PSCmdlet
-{
+public sealed class AddOfficeExcelTableOfContentsCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Path to the workbook to update in place.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -76,7 +75,7 @@ public sealed class AddOfficeExcelTableOfContentsCommand : PSCmdlet
     [Parameter]
     public string BackLinkText { get; set; } = "\u2190 TOC";
 
-    /// Open the workbook after saving when  is used.
+    /// Open the workbook after saving when  is used.
     [Parameter]
     public SwitchParameter Open { get; set; }
 
@@ -85,20 +84,16 @@ public sealed class AddOfficeExcelTableOfContentsCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (BackLinkRow < 1)
-        {
+    protected override void ProcessRecord() {
+        if (BackLinkRow < 1) {
             throw new PSArgumentOutOfRangeException(nameof(BackLinkRow));
         }
 
-        if (BackLinkColumn < 1)
-        {
+        if (BackLinkColumn < 1) {
             throw new PSArgumentOutOfRangeException(nameof(BackLinkColumn));
         }
 
-        if (ParameterSetName == ParameterSetPath)
-        {
+        if (ParameterSetName == ParameterSetPath) {
             ProcessPath();
             return;
         }
@@ -109,41 +104,33 @@ protected override void ProcessRecord()
 
         Apply(document);
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteObject(document);
         }
     }
 
-    private void ProcessPath()
-    {
-        var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
-        if (!File.Exists(resolvedPath))
-        {
+    private void ProcessPath() {
+        var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
+        if (!File.Exists(resolvedPath)) {
             throw new FileNotFoundException($"File '{resolvedPath}' was not found.", resolvedPath);
         }
 
         var fileInfo = new FileInfo(resolvedPath);
         var document = ExcelDocumentService.LoadDocument(resolvedPath, readOnly: false, autoSave: false);
-        try
-        {
+        try {
             Apply(document);
             ExcelDocumentService.SaveDocument(document, Open.IsPresent, resolvedPath);
-        }
-        catch
-        {
+        } catch {
             ExcelDocumentService.CloseDocument(document);
             throw;
         }
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteObject(fileInfo);
         }
     }
 
-    private void Apply(ExcelDocument document)
-    {
+    private void Apply(ExcelDocument document) {
         document.AddTableOfContents(
             sheetName: SheetName,
             placeFirst: !DoNotPlaceFirst.IsPresent,
@@ -152,20 +139,17 @@ private void Apply(ExcelDocument document)
             includeHiddenNamedRanges: IncludeHiddenNamedRanges.IsPresent,
             styled: !NoStyle.IsPresent);
 
-        if (AddBackLinks.IsPresent)
-        {
+        if (AddBackLinks.IsPresent) {
             AddBackLinksToSheets(document);
         }
     }
 
-    private void AddBackLinksToSheets(ExcelDocument document)
-    {
+    private void AddBackLinksToSheets(ExcelDocument document) {
         var useExplicitPlacement =
             MyInvocation.BoundParameters.ContainsKey(nameof(BackLinkRow)) ||
             MyInvocation.BoundParameters.ContainsKey(nameof(BackLinkColumn));
 
-        if (useExplicitPlacement)
-        {
+        if (useExplicitPlacement) {
             document.AddBackLinksToToc(
                 tocSheetName: SheetName,
                 row: BackLinkRow,
@@ -175,10 +159,8 @@ private void AddBackLinksToSheets(ExcelDocument document)
         }
 
         var tocSheet = document[SheetName];
-        foreach (var sheet in document.Sheets)
-        {
-            if (string.Equals(sheet.Name, tocSheet.Name, System.StringComparison.OrdinalIgnoreCase))
-            {
+        foreach (var sheet in document.Sheets) {
+            if (string.Equals(sheet.Name, tocSheet.Name, System.StringComparison.OrdinalIgnoreCase)) {
                 continue;
             }
 
@@ -188,4 +170,4 @@ private void AddBackLinksToSheets(ExcelDocument document)
             sheet.SetInternalLink(row, 1, tocSheet, "A1", BackLinkText);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelTableRowCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelTableRowCommand.cs
index 7cb187f9..bdc826fb 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelTableRowCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelTableRowCommand.cs
@@ -41,8 +41,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Add, "OfficeExcelTableRow", DefaultParameterSetName = ParameterSetPath, SupportsShouldProcess = true)]
 [OutputType(typeof(ExcelTable))]
-public sealed class AddOfficeExcelTableRowCommand : PSCmdlet
-{
+public sealed class AddOfficeExcelTableRowCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetTable = "Table";
@@ -51,8 +50,8 @@ public sealed class AddOfficeExcelTableRowCommand : PSCmdlet
 
     /// Workbook path to open, update, save, and close.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Open workbook to update. The caller remains responsible for saving and closing it.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -92,10 +91,8 @@ public sealed class AddOfficeExcelTableRowCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (string.Equals(ParameterSetName, ParameterSetPath, StringComparison.OrdinalIgnoreCase))
-        {
+    protected override void ProcessRecord() {
+        if (string.Equals(ParameterSetName, ParameterSetPath, StringComparison.OrdinalIgnoreCase)) {
             TableInputCollector.AddInput(_items, InputObject, preserveTabularInput: true);
             return;
         }
@@ -104,50 +101,39 @@ protected override void ProcessRecord()
     }
 
     /// 
-    protected override void EndProcessing()
-    {
-        if (!string.Equals(ParameterSetName, ParameterSetPath, StringComparison.OrdinalIgnoreCase))
-        {
+    protected override void EndProcessing() {
+        if (!string.Equals(ParameterSetName, ParameterSetPath, StringComparison.OrdinalIgnoreCase)) {
             return;
         }
 
         AppendRows(ExcelTabularInputService.ToDataTable(_items, TableName), saveOwnedWorkbook: true);
     }
 
-    private void AppendRows(System.Data.DataTable data, bool saveOwnedWorkbook)
-    {
+    private void AppendRows(System.Data.DataTable data, bool saveOwnedWorkbook) {
         ExcelTable table;
 
-        if (ParameterSetName == ParameterSetTable)
-        {
+        if (ParameterSetName == ParameterSetTable) {
             table = Table ?? throw new PSArgumentException("Provide an Excel table.", nameof(Table));
-            if (!ExcelShouldProcessService.ShouldProcessTarget(this, "Excel table", "Append Excel table rows"))
-            {
+            if (!ExcelShouldProcessService.ShouldProcessTarget(this, "Excel table", "Append Excel table rows")) {
                 return;
             }
 
             table.AppendDataTable(data);
-        }
-        else
-        {
-            using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
-            if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, InputPath, "Append Excel table rows"))
-            {
+        } else {
+            using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
+            if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, Path, "Append Excel table rows")) {
                 return;
             }
 
             table = ResolveTable(workbook.Document);
             table.AppendDataTable(data);
-            if (saveOwnedWorkbook)
-            {
+            if (saveOwnedWorkbook) {
                 workbook.SaveIfOwned();
             }
         }
 
-        if (PassThru.IsPresent)
-        {
-            if (string.Equals(ParameterSetName, ParameterSetPath, StringComparison.OrdinalIgnoreCase))
-            {
+        if (PassThru.IsPresent) {
+            if (string.Equals(ParameterSetName, ParameterSetPath, StringComparison.OrdinalIgnoreCase)) {
                 WriteWarning("Path-owned workbooks are saved and closed by Add-OfficeExcelTableRow; no live ExcelTable is emitted. Open the workbook with Get-OfficeExcel when chaining table edits.");
                 return;
             }
@@ -156,17 +142,14 @@ private void AppendRows(System.Data.DataTable data, bool saveOwnedWorkbook)
         }
     }
 
-    private System.Data.DataTable CreateDataTable(object? value)
-    {
+    private System.Data.DataTable CreateDataTable(object? value) {
         var items = new List();
         TableInputCollector.AddInput(items, value, preserveTabularInput: true);
         return ExcelTabularInputService.ToDataTable(items, TableName);
     }
 
-    private ExcelTable ResolveTable(ExcelDocument document)
-    {
-        if (!string.IsNullOrWhiteSpace(Sheet) || SheetIndex.HasValue)
-        {
+    private ExcelTable ResolveTable(ExcelDocument document) {
+        if (!string.IsNullOrWhiteSpace(Sheet) || SheetIndex.HasValue) {
             var sheet = ExcelWorkbookCommandService.ResolveSheet(this, document, ParameterSetName, Sheet, SheetIndex);
             return sheet.Table(TableName);
         }
@@ -175,13 +158,11 @@ private ExcelTable ResolveTable(ExcelDocument document)
             .Where(sheet => sheet.GetTableRange(TableName) != null)
             .ToArray();
 
-        if (matches.Length == 0)
-        {
+        if (matches.Length == 0) {
             throw new PSArgumentException($"Table '{TableName}' was not found in the workbook.", nameof(TableName));
         }
 
-        if (matches.Length > 1)
-        {
+        if (matches.Length > 1) {
             throw new PSArgumentException(
                 $"Table '{TableName}' exists on multiple worksheets. Specify -Sheet or -SheetIndex to select one.",
                 nameof(TableName));
@@ -189,4 +170,4 @@ private ExcelTable ResolveTable(ExcelDocument document)
 
         return matches[0].Table(TableName);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelThreadedCommentCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelThreadedCommentCommand.cs
index 356d8bff..df0c5dd2 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelThreadedCommentCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelThreadedCommentCommand.cs
@@ -19,16 +19,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Add, "OfficeExcelThreadedComment", DefaultParameterSetName = ParameterSetContext, SupportsShouldProcess = true)]
 [Alias("ExcelThreadedComment")]
 [OutputType(typeof(PSObject))]
-public sealed class AddOfficeExcelThreadedCommentCommand : PSCmdlet
-{
+public sealed class AddOfficeExcelThreadedCommentCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to operate on outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -80,19 +79,15 @@ public sealed class AddOfficeExcelThreadedCommentCommand : PSCmdlet
     [Parameter]
     public SwitchParameter PassThru { get; set; }
 
-    protected override void ProcessRecord()
-    {
-        if (ParameterSetName == ParameterSetPath)
-        {
-            using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, null!, readOnly: false);
-            if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, InputPath, "Update Excel workbook"))
-            {
+    protected override void ProcessRecord() {
+        if (ParameterSetName == ParameterSetPath) {
+            using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, null!, readOnly: false);
+            if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, Path, "Update Excel workbook")) {
                 return;
             }
 
             var result = AddComment(ExcelSheetResolver.Resolve(workbook.Document, Sheet, SheetIndex));
-            if (!NoSave.IsPresent)
-            {
+            if (!NoSave.IsPresent) {
                 workbook.SaveIfOwned();
             }
 
@@ -103,18 +98,15 @@ protected override void ProcessRecord()
         ExcelSheet sheet = ParameterSetName == ParameterSetDocument
             ? ExcelSheetResolver.Resolve(Document, Sheet, SheetIndex)
             : ExcelDslContext.Require(this).RequireSheet();
-        if (!ExcelShouldProcessService.ShouldProcessTarget(this, sheet.Name, "Add Excel threaded comment"))
-        {
+        if (!ExcelShouldProcessService.ShouldProcessTarget(this, sheet.Name, "Add Excel threaded comment")) {
             return;
         }
 
         WriteResult(AddComment(sheet));
     }
 
-    private ExcelThreadedCommentResult AddComment(ExcelSheet sheet)
-    {
-        return sheet.AddThreadedComment(new ExcelThreadedCommentOptions
-        {
+    private ExcelThreadedCommentResult AddComment(ExcelSheet sheet) {
+        return sheet.AddThreadedComment(new ExcelThreadedCommentOptions {
             Address = Address,
             Text = Text,
             Author = string.IsNullOrWhiteSpace(Author) ? Environment.UserName : Author!,
@@ -125,10 +117,8 @@ private ExcelThreadedCommentResult AddComment(ExcelSheet sheet)
         });
     }
 
-    private void WriteResult(ExcelThreadedCommentResult result)
-    {
-        if (!PassThru.IsPresent)
-        {
+    private void WriteResult(ExcelThreadedCommentResult result) {
+        if (!PassThru.IsPresent) {
             return;
         }
 
@@ -143,4 +133,4 @@ private void WriteResult(ExcelThreadedCommentResult result)
         WriteObject(output);
     }
 }
-#pragma warning restore CS1591
+#pragma warning restore CS1591
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelTimelineCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelTimelineCommand.cs
index 926d2d49..549bed44 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelTimelineCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelTimelineCommand.cs
@@ -16,16 +16,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Add, "OfficeExcelTimeline", DefaultParameterSetName = ParameterSetContext, SupportsShouldProcess = true)]
 [Alias("ExcelTimeline")]
 [OutputType(typeof(PSObject))]
-public sealed class AddOfficeExcelTimelineCommand : PSCmdlet
-{
+public sealed class AddOfficeExcelTimelineCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -52,16 +51,13 @@ public sealed class AddOfficeExcelTimelineCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
-        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, InputPath, "Update Excel workbook"))
-        {
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
+        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, Path, "Update Excel workbook")) {
             return;
         }
 
-        ExcelPackagePartInfo part = workbook.Document.AddWorkbookTimelineCache(new ExcelTimelineCacheOptions
-        {
+        ExcelPackagePartInfo part = workbook.Document.AddWorkbookTimelineCache(new ExcelTimelineCacheOptions {
             Name = Name,
             SourceName = SourceName,
             PivotTableName = PivotTableName,
@@ -71,8 +67,7 @@ protected override void ProcessRecord()
         string contentType = part.ContentType;
         workbook.SaveIfOwned();
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             var result = new PSObject();
             result.Properties.Add(new PSNoteProperty("Name", Name));
             result.Properties.Add(new PSNoteProperty("Kind", "Timeline"));
@@ -80,4 +75,4 @@ protected override void ProcessRecord()
             WriteObject(result);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelVisualCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelVisualCommand.cs
index 63d74d8e..03077ee1 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelVisualCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/AddOfficeExcelVisualCommand.cs
@@ -10,8 +10,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Add, "OfficeExcelVisual")]
 [Alias("ExcelVisual")]
 [OutputType(typeof(ExcelImage))]
-public sealed class AddOfficeExcelVisualCommand : OfficeVisualCommandBase
-{
+public sealed class AddOfficeExcelVisualCommand : OfficeVisualCommandBase {
     /// ChartForgeX VisualArtifact, OfficeVisualSource, OfficeVisualConversionResult, or SVG file path.
     [Parameter(Mandatory = true, Position = 0, ValueFromPipeline = true)]
     public object InputObject { get; set; } = null!;
@@ -41,11 +40,17 @@ public sealed class AddOfficeExcelVisualCommand : OfficeVisualCommandBase
     [Parameter]
     public int OffsetY { get; set; }
 
+    /// Emit the image added to the worksheet.
+    [Parameter]
+    public SwitchParameter PassThru { get; set; }
+
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         ExcelSheet worksheet = Worksheet ?? ExcelDslContext.Require(this).RequireSheet();
         (int row, int column) = ExcelHostExtensions.ResolveCellAddress(Row, Column, Address);
-        WriteObject(worksheet.AddVisualArtifact(row, column, ResolveVisual(InputObject), OffsetX, OffsetY));
+        var image = worksheet.AddVisualArtifact(row, column, ResolveVisual(InputObject), OffsetX, OffsetY);
+        if (PassThru.IsPresent) {
+            WriteObject(image);
+        }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelAutoFilterCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelAutoFilterCommand.cs
index ffb52f63..5b760a3b 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelAutoFilterCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelAutoFilterCommand.cs
@@ -13,8 +13,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Clear, "OfficeExcelAutoFilter", DefaultParameterSetName = ParameterSetContext)]
 [Alias("ExcelAutoFilterClear")]
-public sealed class ClearOfficeExcelAutoFilterCommand : PSCmdlet
-{
+public sealed class ClearOfficeExcelAutoFilterCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
 
@@ -31,18 +30,15 @@ public sealed class ClearOfficeExcelAutoFilterCommand : PSCmdlet
     public int? SheetIndex { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var sheet = ResolveSheet();
         sheet.AutoFilterClear();
+        WritePassThru(sheet);
     }
 
-    private ExcelSheet ResolveSheet()
-    {
-        if (ParameterSetName == ParameterSetDocument)
-        {
-            if (Document == null)
-            {
+    private ExcelSheet ResolveSheet() {
+        if (ParameterSetName == ParameterSetDocument) {
+            if (Document == null) {
                 throw new PSArgumentException("Provide an Excel document.");
             }
 
@@ -52,4 +48,4 @@ private ExcelSheet ResolveSheet()
         var context = ExcelDslContext.Require(this);
         return context.RequireSheet();
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelCommentCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelCommentCommand.cs
index 0ac4ac22..432b32ef 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelCommentCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelCommentCommand.cs
@@ -17,16 +17,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Clear, "OfficeExcelComment", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.Medium, DefaultParameterSetName = ParameterSetContext)]
 [Alias("ExcelCommentClear")]
 [OutputType(typeof(int))]
-public sealed class ClearOfficeExcelCommentCommand : PSCmdlet
-{
+public sealed class ClearOfficeExcelCommentCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -65,17 +64,14 @@ public sealed class ClearOfficeExcelCommentCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var filter = CreateRequiredFilter();
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
         var cleared = 0;
         var shouldSave = false;
 
-        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex))
-        {
-            if (!ShouldProcess(sheet.Name, "Clear Excel comments"))
-            {
+        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex)) {
+            if (!ShouldProcess(sheet.Name, "Clear Excel comments")) {
                 continue;
             }
 
@@ -83,21 +79,17 @@ protected override void ProcessRecord()
             cleared += sheet.ClearComments(filter);
         }
 
-        if (shouldSave)
-        {
+        if (shouldSave) {
             workbook.SaveIfOwned();
         }
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteObject(cleared);
         }
     }
 
-    private ExcelCommentFilter CreateRequiredFilter()
-    {
-        if (!string.IsNullOrWhiteSpace(Address) && !string.IsNullOrWhiteSpace(Range))
-        {
+    private ExcelCommentFilter CreateRequiredFilter() {
+        if (!string.IsNullOrWhiteSpace(Address) && !string.IsNullOrWhiteSpace(Range)) {
             throw new PSArgumentException("Specify either -Address or -Range, not both.");
         }
 
@@ -105,16 +97,14 @@ private ExcelCommentFilter CreateRequiredFilter()
             || !string.IsNullOrWhiteSpace(Range)
             || !string.IsNullOrWhiteSpace(Author)
             || !string.IsNullOrWhiteSpace(TextContains);
-        if (!hasFilter && !All.IsPresent)
-        {
+        if (!hasFilter && !All.IsPresent) {
             throw new PSArgumentException("Specify a comment filter or use -All.");
         }
 
-        return new ExcelCommentFilter
-        {
+        return new ExcelCommentFilter {
             A1Range = !string.IsNullOrWhiteSpace(Address) ? Address : Range,
             Author = Author,
             TextContains = TextContains
         };
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelConditionalFormattingCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelConditionalFormattingCommand.cs
index f739f404..fe56fb62 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelConditionalFormattingCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelConditionalFormattingCommand.cs
@@ -15,16 +15,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Clear, "OfficeExcelConditionalFormatting", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.Medium, DefaultParameterSetName = ParameterSetContext)]
 [Alias("ExcelConditionalFormattingClear")]
-public sealed class ClearOfficeExcelConditionalFormattingCommand : PSCmdlet
-{
+public sealed class ClearOfficeExcelConditionalFormattingCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -60,17 +59,14 @@ public sealed class ClearOfficeExcelConditionalFormattingCommand : PSCmdlet
     public SwitchParameter IncludeHeader { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
         var shouldSave = false;
 
-        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex))
-        {
+        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex)) {
             string? targetRange = ExcelTargetRangeResolver.ResolveOptional(sheet, Range, HeaderName, TableName, HeaderRow, IncludeHeader.IsPresent);
             var target = string.IsNullOrWhiteSpace(targetRange) ? sheet.Name : $"{sheet.Name}!{targetRange}";
-            if (!ShouldProcess(target, "Clear Excel conditional formatting"))
-            {
+            if (!ShouldProcess(target, "Clear Excel conditional formatting")) {
                 continue;
             }
 
@@ -78,9 +74,9 @@ protected override void ProcessRecord()
             sheet.ClearConditionalFormatting(targetRange);
         }
 
-        if (shouldSave)
-        {
+        if (shouldSave) {
             workbook.SaveIfOwned();
+            WritePassThru(workbook.Document, workbook.OwnsDocument, Path);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelDataValidationCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelDataValidationCommand.cs
index d738ace6..7e3d9081 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelDataValidationCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelDataValidationCommand.cs
@@ -15,16 +15,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Clear, "OfficeExcelDataValidation", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.Medium, DefaultParameterSetName = ParameterSetContext)]
 [Alias("ExcelDataValidationClear")]
-public sealed class ClearOfficeExcelDataValidationCommand : PSCmdlet
-{
+public sealed class ClearOfficeExcelDataValidationCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -60,17 +59,14 @@ public sealed class ClearOfficeExcelDataValidationCommand : PSCmdlet
     public SwitchParameter IncludeHeader { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
         var shouldSave = false;
 
-        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex))
-        {
+        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex)) {
             string? targetRange = ExcelTargetRangeResolver.ResolveOptional(sheet, Range, HeaderName, TableName, HeaderRow, IncludeHeader.IsPresent);
             var target = string.IsNullOrWhiteSpace(targetRange) ? sheet.Name : $"{sheet.Name}!{targetRange}";
-            if (!ShouldProcess(target, "Clear Excel data validations"))
-            {
+            if (!ShouldProcess(target, "Clear Excel data validations")) {
                 continue;
             }
 
@@ -78,9 +74,9 @@ protected override void ProcessRecord()
             sheet.RemoveDataValidations(targetRange);
         }
 
-        if (shouldSave)
-        {
+        if (shouldSave) {
             workbook.SaveIfOwned();
+            WritePassThru(workbook.Document, workbook.OwnsDocument, Path);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelPageBreakCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelPageBreakCommand.cs
index a30213ee..18f5bf7d 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelPageBreakCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelPageBreakCommand.cs
@@ -15,16 +15,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Clear, "OfficeExcelPageBreak", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.Medium, DefaultParameterSetName = ParameterSetContext)]
 [Alias("ExcelPageBreakClear")]
-public sealed class ClearOfficeExcelPageBreakCommand : PSCmdlet
-{
+public sealed class ClearOfficeExcelPageBreakCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -52,42 +51,35 @@ public sealed class ClearOfficeExcelPageBreakCommand : PSCmdlet
     public SwitchParameter All { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (!All.IsPresent && Row.Length == 0 && Column.Length == 0)
-        {
+    protected override void ProcessRecord() {
+        if (!All.IsPresent && Row.Length == 0 && Column.Length == 0) {
             throw new PSArgumentException("Provide row breaks, column breaks, or -All.");
         }
 
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
         var shouldSave = false;
-        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex))
-        {
-            if (!ShouldProcess(sheet.Name, "Clear Excel manual page breaks"))
-            {
+        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex)) {
+            if (!ShouldProcess(sheet.Name, "Clear Excel manual page breaks")) {
                 continue;
             }
 
-            if (All.IsPresent)
-            {
+            if (All.IsPresent) {
                 shouldSave |= sheet.ClearManualPageBreaks(save: false);
                 continue;
             }
 
-            foreach (var row in Row)
-            {
+            foreach (var row in Row) {
                 shouldSave |= sheet.RemoveManualRowPageBreak(row, save: false);
             }
 
-            foreach (var column in Column)
-            {
+            foreach (var column in Column) {
                 shouldSave |= sheet.RemoveManualColumnPageBreak(column, save: false);
             }
         }
 
-        if (shouldSave)
-        {
+        if (shouldSave) {
             workbook.SaveIfOwned();
+            WritePassThru(workbook.Document, workbook.OwnsDocument, Path);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelRangeCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelRangeCommand.cs
index 20ce4bdc..b879c9c8 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelRangeCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/ClearOfficeExcelRangeCommand.cs
@@ -15,16 +15,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Clear, "OfficeExcelRange", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.Medium, DefaultParameterSetName = ParameterSetContext)]
 [Alias("ExcelRangeClear")]
-public sealed class ClearOfficeExcelRangeCommand : PSCmdlet
-{
+public sealed class ClearOfficeExcelRangeCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -90,30 +89,26 @@ public sealed class ClearOfficeExcelRangeCommand : PSCmdlet
     public SwitchParameter All { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var options = ResolveOptions();
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
         var sheet = ExcelWorkbookCommandService.ResolveSheet(this, workbook.Document, ParameterSetName, Sheet, SheetIndex);
         var target = $"{sheet.Name}!{Range}";
 
-        if (ShouldProcess(target, $"Clear Excel range ({options})"))
-        {
+        if (ShouldProcess(target, $"Clear Excel range ({options})")) {
             sheet.ClearRange(Range, options);
             workbook.SaveIfOwned();
+            WritePassThru(workbook.Document, workbook.OwnsDocument, Path);
         }
     }
 
-    private ExcelClearOptions ResolveOptions()
-    {
-        if (All.IsPresent || !AnyOptionSwitchPresent())
-        {
+    private ExcelClearOptions ResolveOptions() {
+        if (All.IsPresent || !AnyOptionSwitchPresent()) {
             return ExcelClearOptions.All;
         }
 
         var options = ExcelClearOptions.None;
-        if (Contents.IsPresent)
-        {
+        if (Contents.IsPresent) {
             options |= ExcelClearOptions.Values | ExcelClearOptions.Formulas;
         }
 
@@ -129,8 +124,7 @@ private ExcelClearOptions ResolveOptions()
         return options;
     }
 
-    private bool AnyOptionSwitchPresent()
-    {
+    private bool AnyOptionSwitchPresent() {
         return Contents.IsPresent
             || Values.IsPresent
             || Formulas.IsPresent
@@ -142,4 +136,4 @@ private bool AnyOptionSwitchPresent()
             || Merges.IsPresent
             || Sparklines.IsPresent;
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/CloseOfficeExcelCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/CloseOfficeExcelCommand.cs
index ab451365..67cb51be 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/CloseOfficeExcelCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/CloseOfficeExcelCommand.cs
@@ -20,8 +20,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 ///   Saves pending changes through OfficeIMO's normal save path, validates the package, and releases the workbook.
 /// 
 [Cmdlet(VerbsCommon.Close, "OfficeExcel")]
-public sealed class CloseOfficeExcelCommand : PSCmdlet
-{
+public sealed class CloseOfficeExcelCommand : PSCmdlet {
     /// Workbook to close.
     [Parameter(Mandatory = true, ValueFromPipeline = true)]
     public ExcelDocument Document { get; set; } = null!;
@@ -36,7 +35,8 @@ public sealed class CloseOfficeExcelCommand : PSCmdlet
 
     /// Open the workbook in Excel after saving.
     [Parameter]
-    public SwitchParameter Show { get; set; }
+    [Alias("Show")]
+    public SwitchParameter Open { get; set; }
 
     /// Password used to save the workbook as an encrypted package.
     [Parameter]
@@ -80,15 +80,12 @@ public sealed class CloseOfficeExcelCommand : PSCmdlet
     public string? DateSystem { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (Document == null)
-        {
+    protected override void ProcessRecord() {
+        if (Document == null) {
             return;
         }
 
-        if (Save.IsPresent || !string.IsNullOrEmpty(Path))
-        {
+        if (Save.IsPresent || !string.IsNullOrEmpty(Path)) {
             ExcelDateSystemService.ApplyIfSpecified(Document, DateSystem, nameof(DateSystem));
             var resolvedPath = !string.IsNullOrWhiteSpace(Path)
                 ? SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path)
@@ -102,11 +99,9 @@ protected override void ProcessRecord()
                 ClearCachedFormulaResults.IsPresent,
                 MarkFormulasDirty.IsPresent,
                 ForceFullCalculationOnOpen.IsPresent);
-            ExcelDocumentService.SaveDocument(Document, Show.IsPresent, resolvedPath, Password, saveOptions);
-        }
-        else
-        {
+            ExcelDocumentService.SaveDocument(Document, Open.IsPresent, resolvedPath, Password, saveOptions);
+        } else {
             ExcelDocumentService.CloseDocument(Document);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/CompareOfficeExcelRangeCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/CompareOfficeExcelRangeCommand.cs
index 6d953af5..5a32e436 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/CompareOfficeExcelRangeCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/CompareOfficeExcelRangeCommand.cs
@@ -17,16 +17,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsData.Compare, "OfficeExcelRange", DefaultParameterSetName = ParameterSetPath)]
 [Alias("Compare-OfficeExcelSheet", "ExcelCompare")]
 [OutputType(typeof(ExcelRangeDifference))]
-public sealed class CompareOfficeExcelRangeCommand : PSCmdlet
-{
+public sealed class CompareOfficeExcelRangeCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Left workbook path.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath", "LeftPath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath", "LeftPath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Left workbook object.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -78,17 +77,15 @@ public sealed class CompareOfficeExcelRangeCommand : PSCmdlet
     public SwitchParameter StrictNullEmpty { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        using var leftWorkbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: true);
+    protected override void ProcessRecord() {
+        using var leftWorkbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: true);
         var leftDocument = leftWorkbook.Document;
         using var rightWorkbook = ResolveRightWorkbook(leftDocument);
         var rightDocument = rightWorkbook.Document;
         var leftSheet = ExcelWorkbookCommandService.ResolveSheet(this, leftDocument, ParameterSetName, LeftSheet, LeftSheetIndex);
         var rightSheet = ResolveRightSheet(rightDocument, leftSheet.Name);
 
-        var options = new ExcelRangeCompareOptions
-        {
+        var options = new ExcelRangeCompareOptions {
             TrimStrings = TrimStrings.IsPresent,
             IgnoreCase = IgnoreCase.IsPresent,
             TreatNullAndEmptyStringAsEqual = !StrictNullEmpty.IsPresent
@@ -104,23 +101,19 @@ protected override void ProcessRecord()
         WriteObject(differences, enumerateCollection: true);
     }
 
-    private ExcelWorkbookCommandScope ResolveRightWorkbook(ExcelDocument leftDocument)
-    {
-        if (ParameterSetName == ParameterSetPath && !string.IsNullOrWhiteSpace(RightPath))
-        {
+    private ExcelWorkbookCommandScope ResolveRightWorkbook(ExcelDocument leftDocument) {
+        if (ParameterSetName == ParameterSetPath && !string.IsNullOrWhiteSpace(RightPath)) {
             return ExcelWorkbookCommandService.OpenWorkbook(this, RightPath!, readOnly: true);
         }
 
         return new ExcelWorkbookCommandScope(RightDocument ?? leftDocument, ownsDocument: false);
     }
 
-    private ExcelSheet ResolveRightSheet(ExcelDocument document, string leftSheetName)
-    {
-        if (!string.IsNullOrWhiteSpace(RightSheet) || RightSheetIndex.HasValue)
-        {
+    private ExcelSheet ResolveRightSheet(ExcelDocument document, string leftSheetName) {
+        if (!string.IsNullOrWhiteSpace(RightSheet) || RightSheetIndex.HasValue) {
             return ExcelSheetResolver.Resolve(document, RightSheet, RightSheetIndex);
         }
 
         return document[leftSheetName];
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/CompareOfficeExcelWorkbookCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/CompareOfficeExcelWorkbookCommand.cs
index e7565a04..82b0b865 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/CompareOfficeExcelWorkbookCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/CompareOfficeExcelWorkbookCommand.cs
@@ -21,15 +21,14 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsData.Compare, "OfficeExcelWorkbook", DefaultParameterSetName = ParameterSetPath)]
 [Alias("ExcelWorkbookCompare")]
 [OutputType(typeof(PSObject))]
-public sealed class CompareOfficeExcelWorkbookCommand : PSCmdlet
-{
+public sealed class CompareOfficeExcelWorkbookCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Workbook path.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "ReferencePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "ReferencePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook path to compare against.
     [Parameter(Mandatory = true, Position = 1, ParameterSetName = ParameterSetPath)]
@@ -65,15 +64,13 @@ public sealed class CompareOfficeExcelWorkbookCommand : PSCmdlet
     [Parameter]
     public SwitchParameter SkipComments { get; set; }
 
-    protected override void ProcessRecord()
-    {
-        using var left = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: true);
+    protected override void ProcessRecord() {
+        using var left = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: true);
         using var right = ParameterSetName == ParameterSetPath
             ? ExcelWorkbookCommandService.OpenWorkbook(this, DifferencePath, readOnly: true)
             : new ExcelWorkbookCommandScope(DifferenceDocument, ownsDocument: false);
 
-        var report = left.Document.CompareWorkbook(right.Document, new ExcelWorkbookDiffOptions
-        {
+        var report = left.Document.CompareWorkbook(right.Document, new ExcelWorkbookDiffOptions {
             MaxDifferences = MaxDifferences,
             CompareCells = !SkipCells.IsPresent,
             CompareCellStyles = !SkipCellStyles.IsPresent,
@@ -89,8 +86,7 @@ protected override void ProcessRecord()
         WriteObject(output);
     }
 
-    private static PSObject CreateDifference(ExcelWorkbookDifference difference)
-    {
+    private static PSObject CreateDifference(ExcelWorkbookDifference difference) {
         var item = new PSObject();
         item.Properties.Add(new PSNoteProperty("Category", difference.Category));
         item.Properties.Add(new PSNoteProperty("Message", difference.Message));
@@ -101,4 +97,4 @@ private static PSObject CreateDifference(ExcelWorkbookDifference difference)
         return item;
     }
 }
-#pragma warning restore CS1591
+#pragma warning restore CS1591
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/CopyOfficeExcelSheetCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/CopyOfficeExcelSheetCommand.cs
index d7ff304b..91c1f980 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/CopyOfficeExcelSheetCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/CopyOfficeExcelSheetCommand.cs
@@ -27,16 +27,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Copy, "OfficeExcelSheet", DefaultParameterSetName = ParameterSetContext, SupportsShouldProcess = true)]
 [Alias("ExcelSheetCopy")]
 [OutputType(typeof(ExcelSheet))]
-public sealed class CopyOfficeExcelSheetCommand : PSCmdlet
-{
+public sealed class CopyOfficeExcelSheetCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Target workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Target workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -73,11 +72,9 @@ public sealed class CopyOfficeExcelSheetCommand : PSCmdlet
     public ExcelWorksheetCopyMode CopyMode { get; set; } = ExcelWorksheetCopyMode.Package;
 
     /// 
-    protected override void ProcessRecord()
-    {
-        using var targetWorkbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
-        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, targetWorkbook.Document, InputPath, "Update Excel workbook"))
-        {
+    protected override void ProcessRecord() {
+        using var targetWorkbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
+        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, targetWorkbook.Document, Path, "Update Excel workbook")) {
             return;
         }
 
@@ -95,6 +92,6 @@ protected override void ProcessRecord()
                 new ExcelWorksheetCopyOptions { CopyMode = CopyMode });
 
         targetWorkbook.SaveIfOwned();
-        WriteObject(copied);
+        WritePassThru(copied);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/CopyOfficeExcelWorkbookCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/CopyOfficeExcelWorkbookCommand.cs
index c8b378cc..b135b277 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/CopyOfficeExcelWorkbookCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/CopyOfficeExcelWorkbookCommand.cs
@@ -16,12 +16,11 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Copy, "OfficeExcelWorkbook", SupportsShouldProcess = true)]
 [Alias("ExcelWorkbookCopy", "ExcelPackageCopy")]
 [OutputType(typeof(FileInfo))]
-public sealed class CopyOfficeExcelWorkbookCommand : PSCmdlet
-{
+public sealed class CopyOfficeExcelWorkbookCommand : PSCmdlet {
     /// Source workbook or template package path.
     [Parameter(Mandatory = true, Position = 0)]
-    [Alias("Path", "InputPath", "SourcePath")]
-    public string FilePath { get; set; } = string.Empty;
+    [Alias("FilePath", "InputPath", "SourcePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Destination workbook path.
     [Parameter(Mandatory = true, Position = 1)]
@@ -37,21 +36,18 @@ public sealed class CopyOfficeExcelWorkbookCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        string sourcePath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(FilePath);
+    protected override void ProcessRecord() {
+        string sourcePath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
         string destinationPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(DestinationPath);
 
-        if (!ShouldProcess(destinationPath, $"Copy workbook package from '{sourcePath}'"))
-        {
+        if (!ShouldProcess(destinationPath, $"Copy workbook package from '{sourcePath}'")) {
             return;
         }
 
         ExcelDocumentService.CopyWorkbookPackage(sourcePath, destinationPath, Force.IsPresent);
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteObject(new FileInfo(destinationPath));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/EditOfficeExcelRowCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/EditOfficeExcelRowCommand.cs
index 572c5ef3..6eff2012 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/EditOfficeExcelRowCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/EditOfficeExcelRowCommand.cs
@@ -14,16 +14,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsData.Edit, "OfficeExcelRow", DefaultParameterSetName = ParameterSetPath, SupportsShouldProcess = true)]
 [Alias("Edit-ExcelRow", "ExcelRowEdit")]
 [OutputType(typeof(ExcelPowerShellRowEdit))]
-public sealed class EditOfficeExcelRowCommand : PSCmdlet
-{
+public sealed class EditOfficeExcelRowCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -55,11 +54,9 @@ public sealed class EditOfficeExcelRowCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
-        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, InputPath, "Update Excel workbook"))
-        {
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
+        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, Path, "Update Excel workbook")) {
             return;
         }
 
@@ -74,14 +71,12 @@ protected override void ProcessRecord()
 
         using var reader = document.CreateDataReader(options);
         var headers = new string[reader.FieldCount];
-        for (var columnIndex = 0; columnIndex < headers.Length; columnIndex++)
-        {
+        for (var columnIndex = 0; columnIndex < headers.Length; columnIndex++) {
             headers[columnIndex] = reader.GetName(columnIndex);
         }
 
         var dataRowIndex = 0;
-        while (reader.Read())
-        {
+        while (reader.Read()) {
             var values = new object[reader.FieldCount];
             reader.GetValues(values);
             var row = new ExcelPowerShellRowEdit(
@@ -92,8 +87,7 @@ protected override void ProcessRecord()
                 values,
                 options.Culture);
             ScriptBlock.Invoke(row);
-            if (PassThru.IsPresent)
-            {
+            if (PassThru.IsPresent) {
                 WriteObject(row);
             }
 
@@ -102,4 +96,4 @@ protected override void ProcessRecord()
 
         workbook.SaveIfOwned();
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/FindOfficeExcelCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/FindOfficeExcelCommand.cs
index f448a397..ff8d64f0 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/FindOfficeExcelCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/FindOfficeExcelCommand.cs
@@ -19,16 +19,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Find, "OfficeExcel", DefaultParameterSetName = ParameterSetPath)]
 [OutputType(typeof(PSObject))]
-public sealed class FindOfficeExcelCommand : PSCmdlet
-{
+public sealed class FindOfficeExcelCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to inspect.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to inspect outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -64,29 +63,23 @@ public sealed class FindOfficeExcelCommand : PSCmdlet
     public SwitchParameter Exact { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: true);
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: true);
         var document = workbook.Document;
-        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, document, ParameterSetName, Sheet, SheetIndex))
-        {
+        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, document, ParameterSetName, Sheet, SheetIndex)) {
             var range = string.IsNullOrWhiteSpace(Range) ? sheet.UsedRangeA1 : Range!;
-            foreach (var cell in sheet.EnumerateRange(range))
-            {
+            foreach (var cell in sheet.EnumerateRange(range)) {
                 var cellText = Convert.ToString(cell.Value, CultureInfo.InvariantCulture) ?? string.Empty;
-                if (IsMatch(cellText))
-                {
+                if (IsMatch(cellText)) {
                     WriteObject(CreateRecord(sheet.Name, cell.Row, cell.Column, cell.Value));
                 }
             }
         }
     }
 
-    private bool IsMatch(string value)
-    {
+    private bool IsMatch(string value) {
         var comparison = CaseSensitive.IsPresent ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase;
-        if (Regex.IsPresent)
-        {
+        if (Regex.IsPresent) {
             var options = CaseSensitive.IsPresent ? RegexOptions.None : RegexOptions.IgnoreCase;
             return System.Text.RegularExpressions.Regex.IsMatch(value, Text, options);
         }
@@ -96,8 +89,7 @@ private bool IsMatch(string value)
             : value.IndexOf(Text, comparison) >= 0;
     }
 
-    private static PSObject CreateRecord(string sheetName, int row, int column, object? value)
-    {
+    private static PSObject CreateRecord(string sheetName, int row, int column, object? value) {
         var record = new PSObject();
         record.Properties.Add(new PSNoteProperty("Sheet", sheetName));
         record.Properties.Add(new PSNoteProperty("Address", A1.CellReference(row, column)));
@@ -106,4 +98,4 @@ private static PSObject CreateRecord(string sheetName, int row, int column, obje
         record.Properties.Add(new PSNoteProperty("Value", value));
         return record;
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelCommand.cs
index 06885a84..71441ea6 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelCommand.cs
@@ -16,15 +16,14 @@ namespace PSWriteOffice.Cmdlets.Excel;
 ///   Loads report.xlsx for inspection without enabling writes.
 /// 
 [Cmdlet(VerbsCommon.Get, "OfficeExcel", DefaultParameterSetName = ParameterSetPath)]
-public sealed class GetOfficeExcelCommand : AsyncPSCmdlet
-{
+public sealed class GetOfficeExcelCommand : AsyncPSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetUri = "Uri";
 
     /// Path to the workbook to load.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Remote workbook URI to load.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetUri)]
@@ -48,17 +47,13 @@ public sealed class GetOfficeExcelCommand : AsyncPSCmdlet
     public string? Password { get; set; }
 
     /// 
-    protected override async Task ProcessRecordAsync()
-    {
-        if (ParameterSetName == ParameterSetUri)
-        {
-            if (AutoSave.IsPresent)
-            {
+    protected override async Task ProcessRecordAsync() {
+        if (ParameterSetName == ParameterSetUri) {
+            if (AutoSave.IsPresent) {
                 throw new PSArgumentException("Remote workbooks cannot be opened with AutoSave. Save to a local path explicitly after loading.");
             }
 
-            if (Uri == null)
-            {
+            if (Uri == null) {
                 throw new PSArgumentException("Workbook URI was not provided.", nameof(Uri));
             }
 
@@ -72,13 +67,12 @@ protected override async Task ProcessRecordAsync()
             return;
         }
 
-        var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
-        if (!File.Exists(resolvedPath))
-        {
+        var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
+        if (!File.Exists(resolvedPath)) {
             throw new FileNotFoundException($"File '{resolvedPath}' was not found.", resolvedPath);
         }
 
         ExcelDocument document = ExcelDocumentService.LoadDocument(resolvedPath, ReadOnly.IsPresent, AutoSave.IsPresent, Password);
         WriteObject(document);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelCommentAuditCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelCommentAuditCommand.cs
index d914493b..81588fd1 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelCommentAuditCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelCommentAuditCommand.cs
@@ -18,15 +18,14 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Get, "OfficeExcelCommentAudit", DefaultParameterSetName = ParameterSetPath)]
 [Alias("ExcelCommentAudit", "ExcelCommentsAudit")]
 [OutputType(typeof(PSObject))]
-public sealed class GetOfficeExcelCommentAuditCommand : PSCmdlet
-{
+public sealed class GetOfficeExcelCommentAuditCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Workbook path.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook document.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -36,9 +35,8 @@ public sealed class GetOfficeExcelCommentAuditCommand : PSCmdlet
     [Parameter]
     public SwitchParameter IncludeComments { get; set; }
 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: true);
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: true);
         var report = workbook.Document.InspectComments();
         var output = new PSObject();
         output.Properties.Add(new PSNoteProperty("Path", workbook.Document.FilePath));
@@ -47,8 +45,7 @@ protected override void ProcessRecord()
         output.Properties.Add(new PSNoteProperty("ThreadedCommentCount", report.ThreadedCommentCount));
         output.Properties.Add(new PSNoteProperty("IssueCount", report.Issues.Count));
         output.Properties.Add(new PSNoteProperty("Issues", report.Issues.Select(CreateIssue).ToArray()));
-        if (IncludeComments.IsPresent)
-        {
+        if (IncludeComments.IsPresent) {
             output.Properties.Add(new PSNoteProperty("Comments", report.Comments.Select(CreateComment).ToArray()));
             output.Properties.Add(new PSNoteProperty("ThreadedComments", report.ThreadedComments.Select(CreateThreadedComment).ToArray()));
         }
@@ -56,8 +53,7 @@ protected override void ProcessRecord()
         WriteObject(output);
     }
 
-    private static PSObject CreateIssue(ExcelWorkbookDiagnosticIssue issue)
-    {
+    private static PSObject CreateIssue(ExcelWorkbookDiagnosticIssue issue) {
         var item = new PSObject();
         item.Properties.Add(new PSNoteProperty("Category", issue.Category));
         item.Properties.Add(new PSNoteProperty("Severity", issue.Severity.ToString()));
@@ -67,8 +63,7 @@ private static PSObject CreateIssue(ExcelWorkbookDiagnosticIssue issue)
         return item;
     }
 
-    private static PSObject CreateComment(ExcelCommentRecord comment)
-    {
+    private static PSObject CreateComment(ExcelCommentRecord comment) {
         var item = new PSObject();
         item.Properties.Add(new PSNoteProperty("SheetName", comment.SheetName));
         item.Properties.Add(new PSNoteProperty("CellReference", comment.CellReference));
@@ -77,8 +72,7 @@ private static PSObject CreateComment(ExcelCommentRecord comment)
         return item;
     }
 
-    private static PSObject CreateThreadedComment(ExcelThreadedCommentSnapshot comment)
-    {
+    private static PSObject CreateThreadedComment(ExcelThreadedCommentSnapshot comment) {
         var item = new PSObject();
         item.Properties.Add(new PSNoteProperty("SheetName", comment.SheetName));
         item.Properties.Add(new PSNoteProperty("CellReference", comment.CellReference));
@@ -91,4 +85,4 @@ private static PSObject CreateThreadedComment(ExcelThreadedCommentSnapshot comme
         return item;
     }
 }
-#pragma warning restore CS1591
+#pragma warning restore CS1591
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelCommentCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelCommentCommand.cs
index e9a5ffeb..456dad1f 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelCommentCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelCommentCommand.cs
@@ -17,16 +17,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Get, "OfficeExcelComment", DefaultParameterSetName = ParameterSetContext)]
 [Alias("ExcelComments")]
 [OutputType(typeof(PSObject))]
-public sealed class GetOfficeExcelCommentCommand : PSCmdlet
-{
+public sealed class GetOfficeExcelCommentCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to inspect.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to inspect outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -57,40 +56,33 @@ public sealed class GetOfficeExcelCommentCommand : PSCmdlet
     public string? TextContains { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: true);
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: true);
         var path = string.Equals(ParameterSetName, ParameterSetPath, StringComparison.OrdinalIgnoreCase)
-            ? InputPath
+            ? Path
             : null;
         var filter = CreateFilter();
 
-        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex))
-        {
-            foreach (var comment in sheet.FindComments(filter))
-            {
+        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex)) {
+            foreach (var comment in sheet.FindComments(filter)) {
                 WriteObject(ExcelCommentRecordService.CreateRecord(comment, sheet.Name, path));
             }
         }
     }
 
-    private ExcelCommentFilter? CreateFilter()
-    {
-        if (!string.IsNullOrWhiteSpace(Address) && !string.IsNullOrWhiteSpace(Range))
-        {
+    private ExcelCommentFilter? CreateFilter() {
+        if (!string.IsNullOrWhiteSpace(Address) && !string.IsNullOrWhiteSpace(Range)) {
             throw new PSArgumentException("Specify either -Address or -Range, not both.");
         }
 
-        if (string.IsNullOrWhiteSpace(Address) && string.IsNullOrWhiteSpace(Range) && string.IsNullOrWhiteSpace(Author) && string.IsNullOrWhiteSpace(TextContains))
-        {
+        if (string.IsNullOrWhiteSpace(Address) && string.IsNullOrWhiteSpace(Range) && string.IsNullOrWhiteSpace(Author) && string.IsNullOrWhiteSpace(TextContains)) {
             return null;
         }
 
-        return new ExcelCommentFilter
-        {
+        return new ExcelCommentFilter {
             A1Range = !string.IsNullOrWhiteSpace(Address) ? Address : Range,
             Author = Author,
             TextContains = TextContains
         };
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelConditionalFormattingCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelConditionalFormattingCommand.cs
index 81d9cdc2..e6282b7f 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelConditionalFormattingCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelConditionalFormattingCommand.cs
@@ -15,16 +15,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Get, "OfficeExcelConditionalFormatting", DefaultParameterSetName = ParameterSetContext)]
 [Alias("ExcelConditionalFormatting")]
 [OutputType(typeof(PSObject))]
-public sealed class GetOfficeExcelConditionalFormattingCommand : PSCmdlet
-{
+public sealed class GetOfficeExcelConditionalFormattingCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to inspect.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to inspect outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -60,20 +59,17 @@ public sealed class GetOfficeExcelConditionalFormattingCommand : PSCmdlet
     public SwitchParameter IncludeHeader { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: true);
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: true);
         var path = string.Equals(ParameterSetName, ParameterSetPath, System.StringComparison.OrdinalIgnoreCase)
-            ? InputPath
+            ? Path
             : null;
 
-        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex))
-        {
+        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex)) {
             string? targetRange = ExcelTargetRangeResolver.ResolveOptional(sheet, Range, HeaderName, TableName, HeaderRow, IncludeHeader.IsPresent);
-            foreach (var rule in sheet.GetConditionalFormattingRules(targetRange))
-            {
+            foreach (var rule in sheet.GetConditionalFormattingRules(targetRange)) {
                 WriteObject(ExcelRuleRecordService.CreateConditionalFormattingRecord(rule, sheet.Name, path));
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelDataModelCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelDataModelCommand.cs
index 1846d0b7..7cd60b81 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelDataModelCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelDataModelCommand.cs
@@ -18,23 +18,21 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Get, "OfficeExcelDataModel", DefaultParameterSetName = ParameterSetPath)]
 [Alias("ExcelDataModel", "ExcelPowerQuery")]
 [OutputType(typeof(PSObject))]
-public sealed class GetOfficeExcelDataModelCommand : PSCmdlet
-{
+public sealed class GetOfficeExcelDataModelCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Workbook path.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook document.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
     public ExcelDocument Document { get; set; } = null!;
 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: true);
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: true);
         var report = workbook.Document.InspectDataModel();
         var output = new PSObject();
         output.Properties.Add(new PSNoteProperty("Path", workbook.Document.FilePath));
@@ -47,4 +45,4 @@ protected override void ProcessRecord()
         WriteObject(output);
     }
 }
-#pragma warning restore CS1591
+#pragma warning restore CS1591
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelDataValidationCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelDataValidationCommand.cs
index 244a9697..9babaef1 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelDataValidationCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelDataValidationCommand.cs
@@ -15,16 +15,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Get, "OfficeExcelDataValidation", DefaultParameterSetName = ParameterSetContext)]
 [Alias("ExcelDataValidation")]
 [OutputType(typeof(PSObject))]
-public sealed class GetOfficeExcelDataValidationCommand : PSCmdlet
-{
+public sealed class GetOfficeExcelDataValidationCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to inspect.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to inspect outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -60,20 +59,17 @@ public sealed class GetOfficeExcelDataValidationCommand : PSCmdlet
     public SwitchParameter IncludeHeader { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: true);
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: true);
         var path = string.Equals(ParameterSetName, ParameterSetPath, System.StringComparison.OrdinalIgnoreCase)
-            ? InputPath
+            ? Path
             : null;
 
-        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex))
-        {
+        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex)) {
             string? targetRange = ExcelTargetRangeResolver.ResolveOptional(sheet, Range, HeaderName, TableName, HeaderRow, IncludeHeader.IsPresent);
-            foreach (var validation in sheet.GetDataValidations(targetRange))
-            {
+            foreach (var validation in sheet.GetDataValidations(targetRange)) {
                 WriteObject(ExcelRuleRecordService.CreateDataValidationRecord(validation, sheet.Name, path));
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelDocumentPropertyCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelDocumentPropertyCommand.cs
index 3bb00826..c53a9426 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelDocumentPropertyCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelDocumentPropertyCommand.cs
@@ -20,15 +20,14 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Get, "OfficeExcelDocumentProperty", DefaultParameterSetName = ParameterSetPath)]
 [OutputType(typeof(ExcelDocumentPropertyInfo))]
-public sealed class GetOfficeExcelDocumentPropertyCommand : PSCmdlet
-{
+public sealed class GetOfficeExcelDocumentPropertyCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Path to the workbook.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to inspect.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -52,31 +51,24 @@ public sealed class GetOfficeExcelDocumentPropertyCommand : PSCmdlet
     public SwitchParameter Custom { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         ExcelDocument? document = null;
         var dispose = false;
 
-        try
-        {
-            if (ParameterSetName == ParameterSetPath)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
-                if (!File.Exists(resolvedPath))
-                {
+        try {
+            if (ParameterSetName == ParameterSetPath) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
+                if (!File.Exists(resolvedPath)) {
                     throw new FileNotFoundException($"File '{resolvedPath}' was not found.", resolvedPath);
                 }
 
                 document = ExcelDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                 dispose = true;
-            }
-            else
-            {
+            } else {
                 document = Document;
             }
 
-            if (document == null)
-            {
+            if (document == null) {
                 throw new InvalidOperationException("Excel workbook was not provided.");
             }
 
@@ -86,33 +78,26 @@ protected override void ProcessRecord()
 
             IEnumerable properties = ExcelDocumentPropertyService.GetProperties(document, includeBuiltIn, includeApplication, includeCustom);
             var patterns = BuildPatterns(Name);
-            if (patterns.Count > 0)
-            {
+            if (patterns.Count > 0) {
                 properties = properties.Where(property => patterns.Any(pattern => pattern.IsMatch(property.Name)));
             }
 
             WriteObject(properties, enumerateCollection: true);
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
 
-    private static List BuildPatterns(string[]? patterns)
-    {
+    private static List BuildPatterns(string[]? patterns) {
         var compiled = new List();
-        foreach (var pattern in patterns ?? Array.Empty())
-        {
-            if (!string.IsNullOrWhiteSpace(pattern))
-            {
+        foreach (var pattern in patterns ?? Array.Empty()) {
+            if (!string.IsNullOrWhiteSpace(pattern)) {
                 compiled.Add(new WildcardPattern(pattern, WildcardOptions.IgnoreCase));
             }
         }
 
         return compiled;
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelFormulaAnalysisCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelFormulaAnalysisCommand.cs
index 7cdaae9c..443d04b1 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelFormulaAnalysisCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelFormulaAnalysisCommand.cs
@@ -19,15 +19,14 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Get, "OfficeExcelFormulaAnalysis", DefaultParameterSetName = ParameterSetPath)]
 [Alias("ExcelFormulaAnalysis", "ExcelFormulaAudit")]
 [OutputType(typeof(PSObject))]
-public sealed class GetOfficeExcelFormulaAnalysisCommand : PSCmdlet
-{
+public sealed class GetOfficeExcelFormulaAnalysisCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Workbook path.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook document.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -37,25 +36,22 @@ public sealed class GetOfficeExcelFormulaAnalysisCommand : PSCmdlet
     [Parameter]
     public SwitchParameter IncludeFormulas { get; set; }
 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: true);
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: true);
         var report = workbook.Document.AnalyzeFormulas();
         var output = new PSObject();
         output.Properties.Add(new PSNoteProperty("Path", workbook.Document.FilePath));
         output.Properties.Add(new PSNoteProperty("FormulaCount", report.FormulaCount));
         output.Properties.Add(new PSNoteProperty("VolatileFormulaCount", report.VolatileFormulaCount));
         output.Properties.Add(new PSNoteProperty("ExternalReferenceCount", report.ExternalReferenceCount));
-        if (IncludeFormulas.IsPresent)
-        {
+        if (IncludeFormulas.IsPresent) {
             output.Properties.Add(new PSNoteProperty("Formulas", report.Formulas.Select(CreateFormula).ToArray()));
         }
 
         WriteObject(output);
     }
 
-    private static PSObject CreateFormula(ExcelFormulaInfo formula)
-    {
+    private static PSObject CreateFormula(ExcelFormulaInfo formula) {
         var item = new PSObject();
         item.Properties.Add(new PSNoteProperty("SheetName", formula.SheetName));
         item.Properties.Add(new PSNoteProperty("Address", formula.Address));
@@ -67,4 +63,4 @@ private static PSObject CreateFormula(ExcelFormulaInfo formula)
         return item;
     }
 }
-#pragma warning restore CS1591
+#pragma warning restore CS1591
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelNamedRangeCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelNamedRangeCommand.cs
index accbbcdd..467cce83 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelNamedRangeCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelNamedRangeCommand.cs
@@ -21,16 +21,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Get, "OfficeExcelNamedRange", DefaultParameterSetName = ParameterSetPath)]
 [OutputType(typeof(PSObject))]
-public sealed class GetOfficeExcelNamedRangeCommand : AsyncPSCmdlet
-{
+public sealed class GetOfficeExcelNamedRangeCommand : AsyncPSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetUri = "Uri";
     private const string ParameterSetDocument = "Document";
 
     /// Path to the workbook.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Remote workbook URI to inspect.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetUri)]
@@ -58,27 +57,20 @@ public sealed class GetOfficeExcelNamedRangeCommand : AsyncPSCmdlet
     public int? SheetIndex { get; set; }
 
     /// 
-    protected override async Task ProcessRecordAsync()
-    {
+    protected override async Task ProcessRecordAsync() {
         ExcelDocument? document = null;
         var dispose = false;
 
-        try
-        {
-            if (ParameterSetName == ParameterSetPath)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
-                if (!File.Exists(resolvedPath))
-                {
+        try {
+            if (ParameterSetName == ParameterSetPath) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
+                if (!File.Exists(resolvedPath)) {
                     throw new FileNotFoundException($"File '{resolvedPath}' was not found.", resolvedPath);
                 }
                 document = ExcelDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                 dispose = true;
-            }
-            else if (ParameterSetName == ParameterSetUri)
-            {
-                if (Uri == null)
-                {
+            } else if (ParameterSetName == ParameterSetUri) {
+                if (Uri == null) {
                     throw new PSArgumentException("Workbook URI was not provided.", nameof(Uri));
                 }
 
@@ -88,65 +80,52 @@ protected override async Task ProcessRecordAsync()
                     allowHttp: AllowHttp.IsPresent,
                     cancellationToken: CancelToken).ConfigureAwait(false);
                 dispose = true;
-            }
-            else
-            {
+            } else {
                 document = Document;
             }
 
-            if (document == null)
-            {
+            if (document == null) {
                 throw new InvalidOperationException("Excel workbook was not provided.");
             }
 
             var scope = ResolveSheet(document);
 
-            if (!string.IsNullOrWhiteSpace(Name))
-            {
+            if (!string.IsNullOrWhiteSpace(Name)) {
                 var range = document.GetNamedRange(Name!, scope);
-                if (range != null)
-                {
+                if (range != null) {
                     WriteObject(CreateRecord(
                         Name!,
                         range,
                         scope,
-                        ParameterSetName == ParameterSetPath ? InputPath : null,
+                        ParameterSetName == ParameterSetPath ? Path : null,
                         ParameterSetName == ParameterSetUri ? Uri : null));
                 }
                 return;
             }
 
             var ranges = document.GetAllNamedRanges(scope);
-            foreach (var entry in ranges)
-            {
+            foreach (var entry in ranges) {
                 WriteObject(CreateRecord(
                     entry.Key,
                     entry.Value,
                     scope,
-                    ParameterSetName == ParameterSetPath ? InputPath : null,
+                    ParameterSetName == ParameterSetPath ? Path : null,
                     ParameterSetName == ParameterSetUri ? Uri : null));
             }
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
 
-    private ExcelSheet? ResolveSheet(ExcelDocument document)
-    {
-        if (!string.IsNullOrWhiteSpace(Sheet))
-        {
+    private ExcelSheet? ResolveSheet(ExcelDocument document) {
+        if (!string.IsNullOrWhiteSpace(Sheet)) {
             return document[Sheet!];
         }
 
-        if (SheetIndex.HasValue)
-        {
-            if (SheetIndex.Value < 0 || SheetIndex.Value >= document.Sheets.Count)
-            {
+        if (SheetIndex.HasValue) {
+            if (SheetIndex.Value < 0 || SheetIndex.Value >= document.Sheets.Count) {
                 throw new ArgumentOutOfRangeException(nameof(SheetIndex), "SheetIndex is out of range.");
             }
             return document.Sheets[SheetIndex.Value];
@@ -155,40 +134,33 @@ protected override async Task ProcessRecordAsync()
         return null;
     }
 
-    private static PSObject CreateRecord(string name, string range, ExcelSheet? scope, string? path, Uri? uri)
-    {
+    private static PSObject CreateRecord(string name, string range, ExcelSheet? scope, string? path, Uri? uri) {
         var record = new PSObject();
         var sheetName = scope?.Name;
         record.Properties.Add(new PSNoteProperty("Name", name));
         record.Properties.Add(new PSNoteProperty("Range", NormalizeRange(range)));
         record.Properties.Add(new PSNoteProperty("Scope", sheetName ?? "Workbook"));
-        if (!string.IsNullOrWhiteSpace(sheetName))
-        {
+        if (!string.IsNullOrWhiteSpace(sheetName)) {
             record.Properties.Add(new PSNoteProperty("Sheet", sheetName));
             record.Properties.Add(new PSNoteProperty("WorksheetName", sheetName));
         }
-        if (!string.IsNullOrWhiteSpace(path))
-        {
+        if (!string.IsNullOrWhiteSpace(path)) {
+            record.Properties.Add(new PSNoteProperty("Path", path));
             record.Properties.Add(new PSNoteProperty("Path", path));
-            record.Properties.Add(new PSNoteProperty("InputPath", path));
         }
-        if (uri != null)
-        {
+        if (uri != null) {
             record.Properties.Add(new PSNoteProperty("Uri", uri));
         }
         return record;
     }
 
-    private static string NormalizeRange(string range)
-    {
-        if (string.IsNullOrWhiteSpace(range))
-        {
+    private static string NormalizeRange(string range) {
+        if (string.IsNullOrWhiteSpace(range)) {
             return range;
         }
 
         var separatorIndex = FindSheetSeparator(range);
-        if (separatorIndex >= 0)
-        {
+        if (separatorIndex >= 0) {
             var prefix = range.Substring(0, separatorIndex + 1);
             var reference = range.Substring(separatorIndex + 1);
             return prefix + NormalizeA1Reference(reference);
@@ -197,22 +169,17 @@ private static string NormalizeRange(string range)
         return NormalizeA1Reference(range);
     }
 
-    private static string NormalizeA1Reference(string reference)
-    {
+    private static string NormalizeA1Reference(string reference) {
         return Regex.IsMatch(reference, @"^\$?[A-Za-z]{1,3}\$?\d+(?::\$?[A-Za-z]{1,3}\$?\d+)?$")
             ? reference.Replace("$", string.Empty)
             : reference;
     }
 
-    private static int FindSheetSeparator(string range)
-    {
+    private static int FindSheetSeparator(string range) {
         var inQuotedSheetName = false;
-        for (var i = 0; i < range.Length; i++)
-        {
-            if (range[i] == '\'')
-            {
-                if (inQuotedSheetName && i + 1 < range.Length && range[i + 1] == '\'')
-                {
+        for (var i = 0; i < range.Length; i++) {
+            if (range[i] == '\'') {
+                if (inQuotedSheetName && i + 1 < range.Length && range[i + 1] == '\'') {
                     i++;
                     continue;
                 }
@@ -221,12 +188,11 @@ private static int FindSheetSeparator(string range)
                 continue;
             }
 
-            if (!inQuotedSheetName && range[i] == '!')
-            {
+            if (!inQuotedSheetName && range[i] == '!') {
                 return i;
             }
         }
 
         return -1;
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelPageBreakCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelPageBreakCommand.cs
index 5413fd98..5b27e302 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelPageBreakCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelPageBreakCommand.cs
@@ -16,16 +16,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Get, "OfficeExcelPageBreak", DefaultParameterSetName = ParameterSetContext)]
 [Alias("ExcelPageBreaks")]
 [OutputType(typeof(PSObject))]
-public sealed class GetOfficeExcelPageBreakCommand : PSCmdlet
-{
+public sealed class GetOfficeExcelPageBreakCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to inspect.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to inspect outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -49,32 +48,26 @@ public sealed class GetOfficeExcelPageBreakCommand : PSCmdlet
     public SwitchParameter Column { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: true);
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: true);
         var path = string.Equals(ParameterSetName, ParameterSetPath, System.StringComparison.OrdinalIgnoreCase)
-            ? InputPath
+            ? Path
             : null;
         bool includeRows = Row.IsPresent || !Column.IsPresent;
         bool includeColumns = Column.IsPresent || !Row.IsPresent;
 
-        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex))
-        {
-            if (includeRows)
-            {
-                foreach (var row in sheet.GetManualRowPageBreaks())
-                {
+        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex)) {
+            if (includeRows) {
+                foreach (var row in sheet.GetManualRowPageBreaks()) {
                     WriteObject(ExcelPageBreakRecordService.Create("Row", row, sheet.Name, path));
                 }
             }
 
-            if (includeColumns)
-            {
-                foreach (var column in sheet.GetManualColumnPageBreaks())
-                {
+            if (includeColumns) {
+                foreach (var column in sheet.GetManualColumnPageBreaks()) {
                     WriteObject(ExcelPageBreakRecordService.Create("Column", column, sheet.Name, path));
                 }
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelPivotTableCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelPivotTableCommand.cs
index c00e152e..50e942a6 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelPivotTableCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelPivotTableCommand.cs
@@ -21,15 +21,14 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Get, "OfficeExcelPivotTable", DefaultParameterSetName = ParameterSetPath)]
 [Alias("ExcelPivotTables")]
 [OutputType(typeof(PSObject))]
-public sealed class GetOfficeExcelPivotTableCommand : PSCmdlet
-{
+public sealed class GetOfficeExcelPivotTableCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Path to the workbook.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to inspect.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -48,73 +47,56 @@ public sealed class GetOfficeExcelPivotTableCommand : PSCmdlet
     public int? SheetIndex { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         ExcelDocument? document = null;
         var dispose = false;
 
-        try
-        {
-            if (ParameterSetName == ParameterSetPath)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
-                if (!File.Exists(resolvedPath))
-                {
+        try {
+            if (ParameterSetName == ParameterSetPath) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
+                if (!File.Exists(resolvedPath)) {
                     throw new FileNotFoundException($"File '{resolvedPath}' was not found.", resolvedPath);
                 }
                 document = ExcelDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                 dispose = true;
-            }
-            else
-            {
+            } else {
                 document = Document;
             }
 
-            if (document == null)
-            {
+            if (document == null) {
                 throw new InvalidOperationException("Excel workbook was not provided.");
             }
 
             var sheetFilter = ResolveSheetName(document);
             var pivots = document.GetPivotTables();
 
-            foreach (var pivot in pivots)
-            {
+            foreach (var pivot in pivots) {
                 if (!string.IsNullOrWhiteSpace(sheetFilter) &&
-                    !string.Equals(pivot.SheetName, sheetFilter, StringComparison.OrdinalIgnoreCase))
-                {
+                    !string.Equals(pivot.SheetName, sheetFilter, StringComparison.OrdinalIgnoreCase)) {
                     continue;
                 }
 
                 if (!string.IsNullOrWhiteSpace(Name) &&
-                    !string.Equals(pivot.Name, Name, StringComparison.OrdinalIgnoreCase))
-                {
+                    !string.Equals(pivot.Name, Name, StringComparison.OrdinalIgnoreCase)) {
                     continue;
                 }
 
                 WriteObject(CreateRecord(pivot));
             }
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
 
-    private string? ResolveSheetName(ExcelDocument document)
-    {
-        if (!string.IsNullOrWhiteSpace(Sheet))
-        {
+    private string? ResolveSheetName(ExcelDocument document) {
+        if (!string.IsNullOrWhiteSpace(Sheet)) {
             return Sheet;
         }
 
-        if (SheetIndex.HasValue)
-        {
-            if (SheetIndex.Value < 0 || SheetIndex.Value >= document.Sheets.Count)
-            {
+        if (SheetIndex.HasValue) {
+            if (SheetIndex.Value < 0 || SheetIndex.Value >= document.Sheets.Count) {
                 throw new ArgumentOutOfRangeException(nameof(SheetIndex), "SheetIndex is out of range.");
             }
             return document.Sheets[SheetIndex.Value].Name;
@@ -123,8 +105,7 @@ protected override void ProcessRecord()
         return null;
     }
 
-    private static PSObject CreateRecord(ExcelPivotTableInfo pivot)
-    {
+    private static PSObject CreateRecord(ExcelPivotTableInfo pivot) {
         var record = new PSObject();
         record.Properties.Add(new PSNoteProperty("Name", pivot.Name));
         record.Properties.Add(new PSNoteProperty("Sheet", pivot.SheetName));
@@ -151,11 +132,9 @@ private static PSObject CreateRecord(ExcelPivotTableInfo pivot)
         return record;
     }
 
-    private static PSObject[] CreateDataFieldRecords(IReadOnlyList dataFields)
-    {
+    private static PSObject[] CreateDataFieldRecords(IReadOnlyList dataFields) {
         var list = new List(dataFields.Count);
-        foreach (var field in dataFields)
-        {
+        foreach (var field in dataFields) {
             var record = new PSObject();
             record.Properties.Add(new PSNoteProperty("FieldName", field.FieldName));
             record.Properties.Add(new PSNoteProperty("Function", field.Function.ToString()));
@@ -164,4 +143,4 @@ private static PSObject[] CreateDataFieldRecords(IReadOnlyListPath to the workbook.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to inspect.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -53,30 +52,23 @@ public sealed class GetOfficeExcelPreflightCommand : PSCmdlet
     public SwitchParameter ThrowOnFailure { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: true);
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: true);
         var document = workbook.Document;
         var report = document.InspectFeatures();
         var capabilities = ResolveCapabilities();
 
-        if (ThrowOnFailure.IsPresent)
-        {
-            if (Capability != null && Capability.Length > 0)
-            {
-                foreach (var capability in capabilities)
-                {
+        if (ThrowOnFailure.IsPresent) {
+            if (Capability != null && Capability.Length > 0) {
+                foreach (var capability in capabilities) {
                     report.EnsureCan(capability);
                 }
-            }
-            else
-            {
+            } else {
                 report.EnsureNoAdvancedFeatures();
             }
         }
 
-        if (AsMarkdown.IsPresent)
-        {
+        if (AsMarkdown.IsPresent) {
             WriteObject(report.ToMarkdown());
             return;
         }
@@ -84,10 +76,8 @@ protected override void ProcessRecord()
         WriteObject(CreatePreflightObject(document, report, capabilities, IncludeFeatures.IsPresent, IncludeRepairHints.IsPresent));
     }
 
-    private ExcelPreflightCapability[] ResolveCapabilities()
-    {
-        if (Capability != null && Capability.Length > 0)
-        {
+    private ExcelPreflightCapability[] ResolveCapabilities() {
+        if (Capability != null && Capability.Length > 0) {
             return Capability;
         }
 
@@ -101,8 +91,7 @@ private static PSObject CreatePreflightObject(
         ExcelFeatureReport report,
         ExcelPreflightCapability[] capabilities,
         bool includeFeatures,
-        bool includeRepairHints)
-    {
+        bool includeRepairHints) {
         var result = new PSObject();
         result.Properties.Add(new PSNoteProperty("Path", document.FilePath));
         result.Properties.Add(new PSNoteProperty("HasAdvancedFeatures", report.HasAdvancedFeatures));
@@ -113,16 +102,14 @@ private static PSObject CreatePreflightObject(
         result.Properties.Add(new PSNoteProperty("UnsupportedFeatureCount", report.UnsupportedFeatures.Count));
         result.Properties.Add(new PSNoteProperty("Capabilities", capabilities.Select(capability => CreateCapabilityObject(report, capability, includeRepairHints)).ToArray()));
 
-        if (includeFeatures)
-        {
+        if (includeFeatures) {
             result.Properties.Add(new PSNoteProperty("Features", report.Features.Select(CreateFeatureObject).ToArray()));
         }
 
         return result;
     }
 
-    private static PSObject CreateCapabilityObject(ExcelFeatureReport report, ExcelPreflightCapability capability, bool includeRepairHints)
-    {
+    private static PSObject CreateCapabilityObject(ExcelFeatureReport report, ExcelPreflightCapability capability, bool includeRepairHints) {
         var diagnostics = report.GetCapabilityDiagnostics(capability).ToArray();
         var item = new PSObject();
         item.Properties.Add(new PSNoteProperty("Name", capability.ToString()));
@@ -130,16 +117,14 @@ private static PSObject CreateCapabilityObject(ExcelFeatureReport report, ExcelP
         item.Properties.Add(new PSNoteProperty("CanAttempt", report.Can(capability)));
         item.Properties.Add(new PSNoteProperty("Diagnostics", diagnostics));
         item.Properties.Add(new PSNoteProperty("DiagnosticText", diagnostics.Length == 0 ? string.Empty : string.Join("; ", diagnostics)));
-        if (includeRepairHints)
-        {
+        if (includeRepairHints) {
             item.Properties.Add(new PSNoteProperty("RepairHints", report.GetRepairHints(capability).Select(CreateRepairHintObject).ToArray()));
         }
 
         return item;
     }
 
-    private static PSObject CreateRepairHintObject(ExcelPreflightRepairHint hint)
-    {
+    private static PSObject CreateRepairHintObject(ExcelPreflightRepairHint hint) {
         var item = new PSObject();
         item.Properties.Add(new PSNoteProperty("Capability", hint.Capability.ToString()));
         item.Properties.Add(new PSNoteProperty("FeatureName", hint.FeatureName));
@@ -149,8 +134,7 @@ private static PSObject CreateRepairHintObject(ExcelPreflightRepairHint hint)
         return item;
     }
 
-    private static PSObject CreateFeatureObject(ExcelFeatureFinding feature)
-    {
+    private static PSObject CreateFeatureObject(ExcelFeatureFinding feature) {
         var item = new PSObject();
         item.Properties.Add(new PSNoteProperty("Category", feature.Category));
         item.Properties.Add(new PSNoteProperty("Name", feature.Name));
@@ -161,4 +145,4 @@ private static PSObject CreateFeatureObject(ExcelFeatureFinding feature)
         item.Properties.Add(new PSNoteProperty("Details", feature.Details.ToArray()));
         return item;
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelRangeCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelRangeCommand.cs
index 7c255b6c..f84dbcf8 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelRangeCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelRangeCommand.cs
@@ -21,16 +21,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Get, "OfficeExcelRange", DefaultParameterSetName = ParameterSetPath)]
 [OutputType(typeof(PSObject), typeof(System.Collections.Hashtable), typeof(DataTable))]
-public sealed class GetOfficeExcelRangeCommand : AsyncPSCmdlet
-{
+public sealed class GetOfficeExcelRangeCommand : AsyncPSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetUri = "Uri";
     private const string ParameterSetDocument = "Document";
 
     /// Path to the workbook.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Remote workbook URI to read.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetUri)]
@@ -74,8 +73,7 @@ public sealed class GetOfficeExcelRangeCommand : AsyncPSCmdlet
     public SwitchParameter AsDataTable { get; set; }
 
     /// 
-    protected override async Task ProcessRecordAsync()
-    {
+    protected override async Task ProcessRecordAsync() {
         var options = ExcelReadOutputService.CreateOptions(NumericAsDecimal.IsPresent);
         options.CancellationToken = CancelToken;
         ExcelReadOutputService.ConfigureSelection(options, Sheet, SheetIndex ?? (Sheet == null ? 0 : null), Range, HeadersInFirstRow);
@@ -85,17 +83,13 @@ protected override async Task ProcessRecordAsync()
         ExcelReadOutputService.WriteOutput(this, table, AsDataTable.IsPresent, AsHashtable.IsPresent);
     }
 
-    private async Task CreateDataReaderAsync(ExcelReadOptions options)
-    {
-        if (ParameterSetName == ParameterSetDocument)
-        {
+    private async Task CreateDataReaderAsync(ExcelReadOptions options) {
+        if (ParameterSetName == ParameterSetDocument) {
             return Document.CreateDataReader(options);
         }
 
-        if (ParameterSetName == ParameterSetUri)
-        {
-            if (Uri == null)
-            {
+        if (ParameterSetName == ParameterSetUri) {
+            if (Uri == null) {
                 throw new PSArgumentException("Workbook URI was not provided.", nameof(Uri));
             }
 
@@ -103,12 +97,11 @@ private async Task CreateDataReaderAsync(ExcelReadOptio
                 .ConfigureAwait(false);
         }
 
-        var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
-        if (!File.Exists(resolvedPath))
-        {
+        var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
+        if (!File.Exists(resolvedPath)) {
             throw new FileNotFoundException($"File '{resolvedPath}' was not found.", resolvedPath);
         }
 
         return ExcelDocument.OpenDataReader(resolvedPath, options);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelRichTextCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelRichTextCommand.cs
index f7684046..b7246d0b 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelRichTextCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelRichTextCommand.cs
@@ -16,16 +16,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Get, "OfficeExcelRichText", DefaultParameterSetName = ParameterSetContext)]
 [Alias("ExcelRichTextRuns")]
 [OutputType(typeof(PSObject))]
-public sealed class GetOfficeExcelRichTextCommand : PSCmdlet
-{
+public sealed class GetOfficeExcelRichTextCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to inspect.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to inspect outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -59,19 +58,17 @@ public sealed class GetOfficeExcelRichTextCommand : PSCmdlet
     public string? Address { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: true);
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: true);
         var sheet = ExcelWorkbookCommandService.ResolveSheet(this, workbook.Document, ParameterSetName, Sheet, SheetIndex);
         var (row, column) = ExcelHostExtensions.ResolveCellAddress(Row, Column, Address);
         var address = A1.CellReference(row, column);
         var path = string.Equals(ParameterSetName, ParameterSetPath, System.StringComparison.OrdinalIgnoreCase)
-            ? InputPath
+            ? Path
             : null;
         var runs = sheet.GetRichText(row, column);
-        for (var index = 0; index < runs.Count; index++)
-        {
+        for (var index = 0; index < runs.Count; index++) {
             WriteObject(ExcelRichTextRunService.CreateRecord(runs[index], index, address, row, column, sheet.Name, path));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelStreamingContractCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelStreamingContractCommand.cs
index 7e67a337..a0487fca 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelStreamingContractCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelStreamingContractCommand.cs
@@ -20,23 +20,21 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Get, "OfficeExcelStreamingContract", DefaultParameterSetName = ParameterSetPath)]
 [Alias("ExcelStreamingContract")]
 [OutputType(typeof(PSObject))]
-public sealed class GetOfficeExcelStreamingContractCommand : PSCmdlet
-{
+public sealed class GetOfficeExcelStreamingContractCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Workbook path.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook document.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
     public ExcelDocument Document { get; set; } = null!;
 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: true);
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: true);
         var report = workbook.Document.GetStreamingContract();
         var output = new PSObject();
         output.Properties.Add(new PSNoteProperty("Path", workbook.Document.FilePath));
@@ -48,4 +46,4 @@ protected override void ProcessRecord()
         WriteObject(output);
     }
 }
-#pragma warning restore CS1591
+#pragma warning restore CS1591
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelSummaryCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelSummaryCommand.cs
index 3036265c..808b2ae7 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelSummaryCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelSummaryCommand.cs
@@ -27,15 +27,14 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Get, "OfficeExcelSummary", DefaultParameterSetName = ParameterSetPath)]
 [Alias("ExcelSummary")]
 [OutputType(typeof(PSObject))]
-public sealed class GetOfficeExcelSummaryCommand : PSCmdlet
-{
+public sealed class GetOfficeExcelSummaryCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Path to the workbook.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to inspect.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -50,22 +49,18 @@ public sealed class GetOfficeExcelSummaryCommand : PSCmdlet
     public SwitchParameter IncludeSchema { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         ExcelDocument? loadedDocument = null;
         SpreadsheetDocument? spreadsheet = null;
         var dispose = false;
 
-        try
-        {
+        try {
             ExcelDocument currentDocument;
             string? path;
 
-            if (ParameterSetName == ParameterSetPath)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
-                if (!File.Exists(resolvedPath))
-                {
+            if (ParameterSetName == ParameterSetPath) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
+                if (!File.Exists(resolvedPath)) {
                     throw new FileNotFoundException($"File '{resolvedPath}' was not found.", resolvedPath);
                 }
 
@@ -74,11 +69,8 @@ protected override void ProcessRecord()
                 spreadsheet = currentDocument.OpenXmlDocument;
                 path = resolvedPath;
                 dispose = true;
-            }
-            else
-            {
-                if (Document == null)
-                {
+            } else {
+                if (Document == null) {
                     throw new InvalidOperationException("Excel workbook was not provided.");
                 }
 
@@ -88,18 +80,14 @@ protected override void ProcessRecord()
             }
 
             WriteObject(CreateSummary(spreadsheet, path, IncludeSheets.IsPresent, IncludeSchema.IsPresent, currentDocument));
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 loadedDocument?.Dispose();
             }
         }
     }
 
-    private static PSObject CreateSummary(SpreadsheetDocument spreadsheet, string? path, bool includeSheets, bool includeSchema, ExcelDocument? document)
-    {
+    private static PSObject CreateSummary(SpreadsheetDocument spreadsheet, string? path, bool includeSheets, bool includeSchema, ExcelDocument? document) {
         var workbookPart = spreadsheet.WorkbookPart ?? throw new InvalidOperationException("Workbook part was not found.");
         var workbook = workbookPart.Workbook ?? throw new InvalidOperationException("Workbook was not found.");
         var sheets = workbook.Sheets?.Elements().ToList() ?? new List();
@@ -132,21 +120,18 @@ private static PSObject CreateSummary(SpreadsheetDocument spreadsheet, string? p
         summary.Properties.Add(new PSNoteProperty("CommentCount", sheetSummaries.Sum(GetIntProperty("CommentCount"))));
         summary.Properties.Add(new PSNoteProperty("NamedRangeCount", namedRangeCount));
 
-        if (includeSheets)
-        {
+        if (includeSheets) {
             summary.Properties.Add(new PSNoteProperty("Sheets", sheetSummaries));
         }
 
-        if (includeSchema && document != null)
-        {
+        if (includeSchema && document != null) {
             summary.Properties.Add(new PSNoteProperty("Schema", CreateSchemaSummary(document.CreateInspectionSnapshot())));
         }
 
         return summary;
     }
 
-    private static PSObject CreateSchemaSummary(ExcelWorkbookSnapshot snapshot)
-    {
+    private static PSObject CreateSchemaSummary(ExcelWorkbookSnapshot snapshot) {
         var schema = new PSObject();
         schema.Properties.Add(new PSNoteProperty("ActiveWorksheetIndex", snapshot.ActiveWorksheetIndex));
         schema.Properties.Add(new PSNoteProperty("ActiveWorksheetName", snapshot.ActiveWorksheetName));
@@ -168,8 +153,7 @@ private static PSObject CreateSchemaSummary(ExcelWorkbookSnapshot snapshot)
         return schema;
     }
 
-    private static PSObject CreateSchemaWorksheet(ExcelWorksheetSnapshot worksheet)
-    {
+    private static PSObject CreateSchemaWorksheet(ExcelWorksheetSnapshot worksheet) {
         var record = new PSObject();
         record.Properties.Add(new PSNoteProperty("Name", worksheet.Name));
         record.Properties.Add(new PSNoteProperty("Index", worksheet.Index));
@@ -193,10 +177,8 @@ private static PSObject CreateSchemaWorksheet(ExcelWorksheetSnapshot worksheet)
         return record;
     }
 
-    private static IEnumerable CreateSchemaTables(ExcelWorksheetSnapshot worksheet)
-    {
-        foreach (var table in worksheet.Tables)
-        {
+    private static IEnumerable CreateSchemaTables(ExcelWorksheetSnapshot worksheet) {
+        foreach (var table in worksheet.Tables) {
             var record = new PSObject();
             record.Properties.Add(new PSNoteProperty("SheetName", worksheet.Name));
             record.Properties.Add(new PSNoteProperty("Name", table.Name));
@@ -209,8 +191,7 @@ private static IEnumerable CreateSchemaTables(ExcelWorksheetSnapshot w
         }
     }
 
-    private static PSObject CreateSchemaNamedRange(ExcelNamedRangeSnapshot namedRange)
-    {
+    private static PSObject CreateSchemaNamedRange(ExcelNamedRangeSnapshot namedRange) {
         var record = new PSObject();
         record.Properties.Add(new PSNoteProperty("Name", namedRange.Name));
         record.Properties.Add(new PSNoteProperty("SheetName", namedRange.SheetName));
@@ -219,10 +200,8 @@ private static PSObject CreateSchemaNamedRange(ExcelNamedRangeSnapshot namedRang
         return record;
     }
 
-    private static IEnumerable CreateSchemaFormulaCells(ExcelWorksheetSnapshot worksheet)
-    {
-        foreach (var cell in worksheet.Cells.Where(cell => !string.IsNullOrWhiteSpace(cell.Formula)))
-        {
+    private static IEnumerable CreateSchemaFormulaCells(ExcelWorksheetSnapshot worksheet) {
+        foreach (var cell in worksheet.Cells.Where(cell => !string.IsNullOrWhiteSpace(cell.Formula))) {
             var record = new PSObject();
             record.Properties.Add(new PSNoteProperty("SheetName", worksheet.Name));
             record.Properties.Add(new PSNoteProperty("Address", A1.CellReference(cell.Row, cell.Column)));
@@ -231,10 +210,8 @@ private static IEnumerable CreateSchemaFormulaCells(ExcelWorksheetSnap
         }
     }
 
-    private static IEnumerable CreateSchemaRows(ExcelWorksheetSnapshot worksheet)
-    {
-        foreach (var row in worksheet.Rows)
-        {
+    private static IEnumerable CreateSchemaRows(ExcelWorksheetSnapshot worksheet) {
+        foreach (var row in worksheet.Rows) {
             var record = new PSObject();
             record.Properties.Add(new PSNoteProperty("SheetName", worksheet.Name));
             record.Properties.Add(new PSNoteProperty("Index", row.Index));
@@ -247,10 +224,8 @@ private static IEnumerable CreateSchemaRows(ExcelWorksheetSnapshot wor
         }
     }
 
-    private static IEnumerable CreateSchemaColumns(ExcelWorksheetSnapshot worksheet)
-    {
-        foreach (var column in worksheet.Columns)
-        {
+    private static IEnumerable CreateSchemaColumns(ExcelWorksheetSnapshot worksheet) {
+        foreach (var column in worksheet.Columns) {
             var record = new PSObject();
             record.Properties.Add(new PSNoteProperty("SheetName", worksheet.Name));
             record.Properties.Add(new PSNoteProperty("StartIndex", column.StartIndex));
@@ -264,8 +239,7 @@ private static IEnumerable CreateSchemaColumns(ExcelWorksheetSnapshot
         }
     }
 
-    private static PSObject CreateSheetSummary(WorkbookPart workbookPart, Sheet sheet, int index, bool isActive)
-    {
+    private static PSObject CreateSheetSummary(WorkbookPart workbookPart, Sheet sheet, int index, bool isActive) {
         var state = NormalizeSheetState(sheet.State?.InnerText);
         var record = new PSObject();
         record.Properties.Add(new PSNoteProperty("Index", index));
@@ -273,21 +247,18 @@ private static PSObject CreateSheetSummary(WorkbookPart workbookPart, Sheet shee
         record.Properties.Add(new PSNoteProperty("State", state));
         record.Properties.Add(new PSNoteProperty("IsActive", isActive));
 
-        if (sheet.Id?.Value == null)
-        {
+        if (sheet.Id?.Value == null) {
             AddEmptySheetCounts(record);
             return record;
         }
 
         var sheetPart = workbookPart.GetPartById(sheet.Id.Value);
-        if (sheetPart is ChartsheetPart chartsheetPart)
-        {
+        if (sheetPart is ChartsheetPart chartsheetPart) {
             AddChartSheetCounts(record, chartsheetPart);
             return record;
         }
 
-        if (sheetPart is not WorksheetPart worksheetPart)
-        {
+        if (sheetPart is not WorksheetPart worksheetPart) {
             AddEmptySheetCounts(record);
             return record;
         }
@@ -311,10 +282,8 @@ private static PSObject CreateSheetSummary(WorkbookPart workbookPart, Sheet shee
         return record;
     }
 
-    private static int? GetActiveSheetIndex(Workbook workbook, int sheetCount)
-    {
-        if (sheetCount <= 0)
-        {
+    private static int? GetActiveSheetIndex(Workbook workbook, int sheetCount) {
+        if (sheetCount <= 0) {
             return null;
         }
 
@@ -323,8 +292,7 @@ private static PSObject CreateSheetSummary(WorkbookPart workbookPart, Sheet shee
             .FirstOrDefault()?
             .ActiveTab?.Value ?? 0U;
 
-        if (activeTab >= sheetCount)
-        {
+        if (activeTab >= sheetCount) {
             return sheetCount - 1;
         }
 
@@ -336,8 +304,7 @@ private static ExcelDateSystem GetWorkbookDateSystem(Workbook workbook)
             ? ExcelDateSystem.NineteenFour
             : ExcelDateSystem.NineteenHundred;
 
-    private static void AddChartSheetCounts(PSObject record, ChartsheetPart chartsheetPart)
-    {
+    private static void AddChartSheetCounts(PSObject record, ChartsheetPart chartsheetPart) {
         record.Properties.Add(new PSNoteProperty("UsedRange", null));
         record.Properties.Add(new PSNoteProperty("TableCount", 0));
         record.Properties.Add(new PSNoteProperty("ChartCount", CountChartParts(chartsheetPart)));
@@ -348,21 +315,17 @@ private static void AddChartSheetCounts(PSObject record, ChartsheetPart chartshe
         record.Properties.Add(new PSNoteProperty("Tables", Array.Empty()));
     }
 
-    private static int CountChartParts(OpenXmlPartContainer container)
-    {
+    private static int CountChartParts(OpenXmlPartContainer container) {
         return container.Parts.Sum(part =>
             (part.OpenXmlPart is ChartPart ? 1 : 0) + CountChartParts(part.OpenXmlPart));
     }
 
-    private static int CountPackagePartsByContentType(OpenXmlPartContainer container, string marker)
-    {
-        if (string.IsNullOrWhiteSpace(marker))
-        {
+    private static int CountPackagePartsByContentType(OpenXmlPartContainer container, string marker) {
+        if (string.IsNullOrWhiteSpace(marker)) {
             return 0;
         }
 
-        return container.Parts.Sum(part =>
-        {
+        return container.Parts.Sum(part => {
             var openXmlPart = part.OpenXmlPart;
             var count = openXmlPart.ContentType.IndexOf(marker, StringComparison.OrdinalIgnoreCase) >= 0 ? 1 : 0;
             return count + CountPackagePartsByContentType(openXmlPart, marker);
@@ -372,12 +335,10 @@ private static int CountPackagePartsByContentType(OpenXmlPartContainer container
     private static int CountPivotInteractionParts(
         WorkbookPart workbookPart,
         ExcelDocument? document,
-        ExcelPivotInteractionCacheKind kind)
-    {
+        ExcelPivotInteractionCacheKind kind) {
         string marker = kind == ExcelPivotInteractionCacheKind.Slicer ? "slicer" : "timeline";
         int nativeOrLegacyCount = CountPackagePartsByContentType(workbookPart, marker);
-        if (document == null)
-        {
+        if (document == null) {
             return nativeOrLegacyCount;
         }
 
@@ -387,8 +348,7 @@ private static int CountPivotInteractionParts(
         int combinedMetadataPartCount = caches
             .Select(cache => cache.RelationshipId)
             .Distinct(StringComparer.Ordinal)
-            .Count(relationshipId =>
-            {
+            .Count(relationshipId => {
                 OpenXmlPart part = workbookPart.GetPartById(relationshipId);
                 return part.ContentType.IndexOf(marker, StringComparison.OrdinalIgnoreCase) < 0;
             });
@@ -396,21 +356,17 @@ private static int CountPivotInteractionParts(
         return nativeOrLegacyCount + combinedMetadataPartCount;
     }
 
-    private static int CountComments(WorksheetPart worksheetPart)
-    {
+    private static int CountComments(WorksheetPart worksheetPart) {
         var legacyCount = worksheetPart.WorksheetCommentsPart?.Comments?.CommentList?.Elements().Count() ?? 0;
         var threadedCount = worksheetPart.WorksheetThreadedCommentsParts.Sum(part =>
             part.ThreadedComments?.Elements().Count() ?? 0);
         return legacyCount + threadedCount;
     }
 
-    private static IEnumerable GetTableRecords(WorksheetPart worksheetPart)
-    {
-        foreach (var tableDefinitionPart in worksheetPart.TableDefinitionParts)
-        {
+    private static IEnumerable GetTableRecords(WorksheetPart worksheetPart) {
+        foreach (var tableDefinitionPart in worksheetPart.TableDefinitionParts) {
             var table = tableDefinitionPart.Table;
-            if (table == null)
-            {
+            if (table == null) {
                 continue;
             }
 
@@ -422,8 +378,7 @@ private static IEnumerable GetTableRecords(WorksheetPart worksheetPart
         }
     }
 
-    private static void AddEmptySheetCounts(PSObject record)
-    {
+    private static void AddEmptySheetCounts(PSObject record) {
         record.Properties.Add(new PSNoteProperty("UsedRange", null));
         record.Properties.Add(new PSNoteProperty("TableCount", 0));
         record.Properties.Add(new PSNoteProperty("ChartCount", 0));
@@ -434,15 +389,12 @@ private static void AddEmptySheetCounts(PSObject record)
         record.Properties.Add(new PSNoteProperty("Tables", Array.Empty()));
     }
 
-    private static Func GetIntProperty(string name)
-    {
+    private static Func GetIntProperty(string name) {
         return record => record.Properties[name]?.Value is int value ? value : 0;
     }
 
-    private static string NormalizeSheetState(string? state)
-    {
-        if (string.IsNullOrWhiteSpace(state))
-        {
+    private static string NormalizeSheetState(string? state) {
+        if (string.IsNullOrWhiteSpace(state)) {
             return "Visible";
         }
 
@@ -453,18 +405,15 @@ private static string NormalizeSheetState(string? state)
                 : "Visible";
     }
 
-    private static bool IsVisibleSheet(PSObject record)
-    {
+    private static bool IsVisibleSheet(PSObject record) {
         return string.Equals(record.Properties["State"]?.Value as string, "Visible", StringComparison.OrdinalIgnoreCase);
     }
 
-    private static bool IsHiddenSheet(PSObject record)
-    {
+    private static bool IsHiddenSheet(PSObject record) {
         return string.Equals(record.Properties["State"]?.Value as string, "Hidden", StringComparison.OrdinalIgnoreCase);
     }
 
-    private static bool IsVeryHiddenSheet(PSObject record)
-    {
+    private static bool IsVeryHiddenSheet(PSObject record) {
         return string.Equals(record.Properties["State"]?.Value as string, "VeryHidden", StringComparison.OrdinalIgnoreCase);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelTableCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelTableCommand.cs
index 68481a91..5fad0dbc 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelTableCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelTableCommand.cs
@@ -19,16 +19,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Get, "OfficeExcelTable", DefaultParameterSetName = ParameterSetPath)]
 [OutputType(typeof(PSObject))]
-public sealed class GetOfficeExcelTableCommand : AsyncPSCmdlet
-{
+public sealed class GetOfficeExcelTableCommand : AsyncPSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetUri = "Uri";
     private const string ParameterSetDocument = "Document";
 
     /// Path to the workbook.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Remote workbook URI to inspect.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetUri)]
@@ -56,27 +55,20 @@ public sealed class GetOfficeExcelTableCommand : AsyncPSCmdlet
     public int? SheetIndex { get; set; }
 
     /// 
-    protected override async Task ProcessRecordAsync()
-    {
+    protected override async Task ProcessRecordAsync() {
         ExcelDocument? document = null;
         var dispose = false;
 
-        try
-        {
-            if (ParameterSetName == ParameterSetPath)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
-                if (!File.Exists(resolvedPath))
-                {
+        try {
+            if (ParameterSetName == ParameterSetPath) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
+                if (!File.Exists(resolvedPath)) {
                     throw new FileNotFoundException($"File '{resolvedPath}' was not found.", resolvedPath);
                 }
                 document = ExcelDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                 dispose = true;
-            }
-            else if (ParameterSetName == ParameterSetUri)
-            {
-                if (Uri == null)
-                {
+            } else if (ParameterSetName == ParameterSetUri) {
+                if (Uri == null) {
                     throw new PSArgumentException("Workbook URI was not provided.", nameof(Uri));
                 }
 
@@ -86,31 +78,25 @@ protected override async Task ProcessRecordAsync()
                     allowHttp: AllowHttp.IsPresent,
                     cancellationToken: CancelToken).ConfigureAwait(false);
                 dispose = true;
-            }
-            else
-            {
+            } else {
                 document = Document;
             }
 
-            if (document == null)
-            {
+            if (document == null) {
                 throw new InvalidOperationException("Excel workbook was not provided.");
             }
 
             var sheetFilter = ResolveSheetName(document);
             var tables = document.GetTables();
 
-            foreach (var table in tables)
-            {
+            foreach (var table in tables) {
                 if (!string.IsNullOrWhiteSpace(sheetFilter) &&
-                    !string.Equals(table.SheetName, sheetFilter, StringComparison.OrdinalIgnoreCase))
-                {
+                    !string.Equals(table.SheetName, sheetFilter, StringComparison.OrdinalIgnoreCase)) {
                     continue;
                 }
 
                 if (!string.IsNullOrWhiteSpace(Name) &&
-                    !string.Equals(table.Name, Name, StringComparison.OrdinalIgnoreCase))
-                {
+                    !string.Equals(table.Name, Name, StringComparison.OrdinalIgnoreCase)) {
                     continue;
                 }
 
@@ -118,30 +104,23 @@ protected override async Task ProcessRecordAsync()
                     table.Name,
                     table.Range,
                     table.SheetName,
-                    ParameterSetName == ParameterSetPath ? InputPath : null,
+                    ParameterSetName == ParameterSetPath ? Path : null,
                     ParameterSetName == ParameterSetUri ? Uri : null));
             }
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
 
-    private string? ResolveSheetName(ExcelDocument document)
-    {
-        if (!string.IsNullOrWhiteSpace(Sheet))
-        {
+    private string? ResolveSheetName(ExcelDocument document) {
+        if (!string.IsNullOrWhiteSpace(Sheet)) {
             return Sheet;
         }
 
-        if (SheetIndex.HasValue)
-        {
-            if (SheetIndex.Value < 0 || SheetIndex.Value >= document.Sheets.Count)
-            {
+        if (SheetIndex.HasValue) {
+            if (SheetIndex.Value < 0 || SheetIndex.Value >= document.Sheets.Count) {
                 throw new ArgumentOutOfRangeException(nameof(SheetIndex), "SheetIndex is out of range.");
             }
             return document.Sheets[SheetIndex.Value].Name;
@@ -150,22 +129,19 @@ protected override async Task ProcessRecordAsync()
         return null;
     }
 
-    private static PSObject CreateRecord(string name, string range, string sheet, string? path, Uri? uri)
-    {
+    private static PSObject CreateRecord(string name, string range, string sheet, string? path, Uri? uri) {
         var record = new PSObject();
         record.Properties.Add(new PSNoteProperty("Name", name));
         record.Properties.Add(new PSNoteProperty("Range", range));
         record.Properties.Add(new PSNoteProperty("Sheet", sheet));
         record.Properties.Add(new PSNoteProperty("WorksheetName", sheet));
-        if (!string.IsNullOrWhiteSpace(path))
-        {
+        if (!string.IsNullOrWhiteSpace(path)) {
+            record.Properties.Add(new PSNoteProperty("Path", path));
             record.Properties.Add(new PSNoteProperty("Path", path));
-            record.Properties.Add(new PSNoteProperty("InputPath", path));
         }
-        if (uri != null)
-        {
+        if (uri != null) {
             record.Properties.Add(new PSNoteProperty("Uri", uri));
         }
         return record;
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelTemplateMarkerCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelTemplateMarkerCommand.cs
index 38d144be..7239cc6b 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelTemplateMarkerCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelTemplateMarkerCommand.cs
@@ -16,16 +16,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Get, "OfficeExcelTemplateMarker", DefaultParameterSetName = ParameterSetContext)]
 [Alias("ExcelTemplateMarkers")]
 [OutputType(typeof(PSObject))]
-public sealed class GetOfficeExcelTemplateMarkerCommand : PSCmdlet
-{
+public sealed class GetOfficeExcelTemplateMarkerCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to inspect.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to inspect outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -49,26 +48,22 @@ public sealed class GetOfficeExcelTemplateMarkerCommand : PSCmdlet
     public SwitchParameter MissingOnly { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: true);
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: true);
         var path = string.Equals(ParameterSetName, ParameterSetPath, StringComparison.OrdinalIgnoreCase)
-            ? InputPath
+            ? Path
             : null;
         var values = Value == null
             ? null
             : ExcelTemplateValueService.ConvertValues(Value);
 
-        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex))
-        {
+        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex)) {
             var inspection = values == null
                 ? sheet.InspectTemplate()
                 : sheet.InspectTemplate(values);
 
-            foreach (var marker in inspection.Markers)
-            {
-                if (MissingOnly.IsPresent && marker.IsBound == true)
-                {
+            foreach (var marker in inspection.Markers) {
+                if (MissingOnly.IsPresent && marker.IsBound == true) {
                     continue;
                 }
 
@@ -76,4 +71,4 @@ protected override void ProcessRecord()
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelUsedRangeCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelUsedRangeCommand.cs
index d345a9da..b98b5c6c 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelUsedRangeCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelUsedRangeCommand.cs
@@ -21,16 +21,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Get, "OfficeExcelUsedRange", DefaultParameterSetName = ParameterSetPath)]
 [OutputType(typeof(PSObject), typeof(System.Collections.Hashtable), typeof(DataTable))]
-public sealed class GetOfficeExcelUsedRangeCommand : AsyncPSCmdlet
-{
+public sealed class GetOfficeExcelUsedRangeCommand : AsyncPSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetUri = "Uri";
     private const string ParameterSetDocument = "Document";
 
     /// Path to the workbook.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Remote workbook URI to read.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetUri)]
@@ -70,8 +69,7 @@ public sealed class GetOfficeExcelUsedRangeCommand : AsyncPSCmdlet
     public SwitchParameter AsDataTable { get; set; }
 
     /// 
-    protected override async Task ProcessRecordAsync()
-    {
+    protected override async Task ProcessRecordAsync() {
         var options = ExcelReadOutputService.CreateOptions(NumericAsDecimal.IsPresent);
         options.CancellationToken = CancelToken;
         ExcelReadOutputService.ConfigureSelection(options, Sheet, SheetIndex ?? (Sheet == null ? 0 : null), null, HeadersInFirstRow);
@@ -81,17 +79,13 @@ protected override async Task ProcessRecordAsync()
         ExcelReadOutputService.WriteOutput(this, table, AsDataTable.IsPresent, AsHashtable.IsPresent);
     }
 
-    private async Task CreateDataReaderAsync(ExcelReadOptions options)
-    {
-        if (ParameterSetName == ParameterSetDocument)
-        {
+    private async Task CreateDataReaderAsync(ExcelReadOptions options) {
+        if (ParameterSetName == ParameterSetDocument) {
             return Document.CreateDataReader(options);
         }
 
-        if (ParameterSetName == ParameterSetUri)
-        {
-            if (Uri == null)
-            {
+        if (ParameterSetName == ParameterSetUri) {
+            if (Uri == null) {
                 throw new PSArgumentException("Workbook URI was not provided.", nameof(Uri));
             }
 
@@ -99,12 +93,11 @@ private async Task CreateDataReaderAsync(ExcelReadOptio
                 .ConfigureAwait(false);
         }
 
-        var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
-        if (!File.Exists(resolvedPath))
-        {
+        var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
+        if (!File.Exists(resolvedPath)) {
             throw new FileNotFoundException($"File '{resolvedPath}' was not found.", resolvedPath);
         }
 
         return ExcelDocument.OpenDataReader(resolvedPath, options);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelWorksheetViewCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelWorksheetViewCommand.cs
index f2ad9c1d..ba156d67 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelWorksheetViewCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelWorksheetViewCommand.cs
@@ -17,16 +17,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Get, "OfficeExcelWorksheetView", DefaultParameterSetName = ParameterSetContext)]
 [Alias("ExcelWorksheetView")]
 [OutputType(typeof(PSObject))]
-public sealed class GetOfficeExcelWorksheetViewCommand : PSCmdlet
-{
+public sealed class GetOfficeExcelWorksheetViewCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to inspect.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to inspect outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -41,21 +40,18 @@ public sealed class GetOfficeExcelWorksheetViewCommand : PSCmdlet
     public int? SheetIndex { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: true);
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: true);
         var path = string.Equals(ParameterSetName, ParameterSetPath, StringComparison.OrdinalIgnoreCase)
-            ? InputPath
+            ? Path
             : null;
 
-        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex))
-        {
+        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex)) {
             WriteObject(CreateViewRecord(sheet, sheet.GetViewInfo(), path));
         }
     }
 
-    private static PSObject CreateViewRecord(ExcelSheet sheet, ExcelWorksheetViewInfo view, string? path)
-    {
+    private static PSObject CreateViewRecord(ExcelSheet sheet, ExcelWorksheetViewInfo view, string? path) {
         var record = new PSObject();
         record.Properties.Add(new PSNoteProperty("SheetName", sheet.Name));
         record.Properties.Add(new PSNoteProperty("Sheet", sheet.Name));
@@ -72,12 +68,11 @@ private static PSObject CreateViewRecord(ExcelSheet sheet, ExcelWorksheetViewInf
         record.Properties.Add(new PSNoteProperty("View", view.View));
         record.Properties.Add(new PSNoteProperty("ZoomScale", view.ZoomScale));
         record.Properties.Add(new PSNoteProperty("ZoomScaleNormal", view.ZoomScaleNormal));
-        if (!string.IsNullOrWhiteSpace(path))
-        {
+        if (!string.IsNullOrWhiteSpace(path)) {
+            record.Properties.Add(new PSNoteProperty("Path", path));
             record.Properties.Add(new PSNoteProperty("Path", path));
-            record.Properties.Add(new PSNoteProperty("InputPath", path));
         }
 
         return record;
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/ImportOfficeExcelDelimitedTextCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/ImportOfficeExcelDelimitedTextCommand.cs
index 23bce76e..b7055926 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/ImportOfficeExcelDelimitedTextCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/ImportOfficeExcelDelimitedTextCommand.cs
@@ -26,15 +26,14 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsData.Import, "OfficeExcelDelimitedText", DefaultParameterSetName = ParameterSetPath, SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.Medium)]
 [Alias("ExcelDelimitedImport", "ExcelCsvImport")]
 [OutputType(typeof(PSObject))]
-public sealed class ImportOfficeExcelDelimitedTextCommand : PSCmdlet
-{
+public sealed class ImportOfficeExcelDelimitedTextCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Workbook path.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook document.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -70,55 +69,46 @@ public sealed class ImportOfficeExcelDelimitedTextCommand : PSCmdlet
     [Parameter]
     public SwitchParameter PassThru { get; set; }
 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var source = SessionState.Path.GetUnresolvedProviderPathFromPSPath(SourcePath);
-        if (!File.Exists(source))
-        {
+        if (!File.Exists(source)) {
             throw new FileNotFoundException($"Delimited text file '{source}' was not found.", source);
         }
 
         var target = ResolveTargetPath();
-        if (!ShouldProcess(target ?? "Excel document", "Import delimited text into Excel workbook"))
-        {
+        if (!ShouldProcess(target ?? "Excel document", "Import delimited text into Excel workbook")) {
             return;
         }
 
         using var workbook = ResolveWorkbook(target);
         var culture = string.IsNullOrWhiteSpace(CultureName) ? CultureInfo.InvariantCulture : CultureInfo.GetCultureInfo(CultureName!);
-        var loadOptions = new CsvLoadOptions
-        {
+        var loadOptions = new CsvLoadOptions {
             DetectDelimiter = !Delimiter.HasValue,
             HasHeaderRow = !NoHeader.IsPresent,
             SkipInitialRecords = SkipRows,
             Culture = culture
         };
-        if (Delimiter.HasValue)
-        {
+        if (Delimiter.HasValue) {
             loadOptions.Delimiter = Delimiter.Value;
         }
 
-        var result = workbook.Document.ImportCsvFile(source, new ExcelCsvImportOptions
-        {
+        var result = workbook.Document.ImportCsvFile(source, new ExcelCsvImportOptions {
             SheetName = string.IsNullOrWhiteSpace(SheetName) ? "Import" : SheetName!,
             IncludeHeaders = !NoHeader.IsPresent,
             CreateTable = !NoTable.IsPresent,
             LoadOptions = loadOptions,
-            ReaderOptions = new CsvDataReaderOptions
-            {
+            ReaderOptions = new CsvDataReaderOptions {
                 InferSchema = !NoTypeConversion.IsPresent
             }
         });
 
         workbook.SaveIfOwned();
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             var output = new PSObject();
             output.Properties.Add(new PSNoteProperty("SheetName", result.SheetName));
             var rowCount = 0;
             var columnCount = 0;
-            if (!string.IsNullOrWhiteSpace(result.Range))
-            {
+            if (!string.IsNullOrWhiteSpace(result.Range)) {
                 var (firstRow, firstColumn, lastRow, lastColumn) = A1.ParseRange(result.Range);
                 rowCount = Math.Max(0, lastRow - firstRow + (NoHeader.IsPresent ? 1 : 0));
                 columnCount = lastColumn - firstColumn + 1;
@@ -133,32 +123,26 @@ protected override void ProcessRecord()
         }
     }
 
-    private string? ResolveTargetPath()
-    {
-        if (!string.Equals(ParameterSetName, ParameterSetPath, System.StringComparison.OrdinalIgnoreCase))
-        {
+    private string? ResolveTargetPath() {
+        if (!string.Equals(ParameterSetName, ParameterSetPath, System.StringComparison.OrdinalIgnoreCase)) {
             return Document.FilePath;
         }
 
-        return SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+        return SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
     }
 
-    private ExcelWorkbookCommandScope ResolveWorkbook(string? targetPath)
-    {
-        if (!string.Equals(ParameterSetName, ParameterSetPath, System.StringComparison.OrdinalIgnoreCase))
-        {
+    private ExcelWorkbookCommandScope ResolveWorkbook(string? targetPath) {
+        if (!string.Equals(ParameterSetName, ParameterSetPath, System.StringComparison.OrdinalIgnoreCase)) {
             return new ExcelWorkbookCommandScope(Document, ownsDocument: false);
         }
 
-        if (string.IsNullOrWhiteSpace(targetPath))
-        {
-            throw new PSArgumentException("Specify a workbook path.", nameof(InputPath));
+        if (string.IsNullOrWhiteSpace(targetPath)) {
+            throw new PSArgumentException("Specify a workbook path.", nameof(Path));
         }
 
         var resolvedPath = targetPath!;
-        var directory = Path.GetDirectoryName(resolvedPath);
-        if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory))
-        {
+        var directory = System.IO.Path.GetDirectoryName(resolvedPath);
+        if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory)) {
             Directory.CreateDirectory(directory);
         }
 
@@ -169,4 +153,4 @@ private ExcelWorkbookCommandScope ResolveWorkbook(string? targetPath)
         return new ExcelWorkbookCommandScope(document, ownsDocument: true);
     }
 }
-#pragma warning restore CS1591
+#pragma warning restore CS1591
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/InvokeOfficeExcelTemplateCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/InvokeOfficeExcelTemplateCommand.cs
index f5628743..522b6b41 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/InvokeOfficeExcelTemplateCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/InvokeOfficeExcelTemplateCommand.cs
@@ -15,16 +15,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsLifecycle.Invoke, "OfficeExcelTemplate", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.Low, DefaultParameterSetName = ParameterSetContext)]
 [Alias("ExcelTemplate", "ExcelTemplateApply")]
 [OutputType(typeof(int))]
-public sealed class InvokeOfficeExcelTemplateCommand : PSCmdlet
-{
+public sealed class InvokeOfficeExcelTemplateCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -60,18 +59,15 @@ public sealed class InvokeOfficeExcelTemplateCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var values = ExcelTemplateValueService.ConvertValues(Value);
         var options = ExcelTemplateValueService.CreateOptions(CultureName, MissingValueBehavior, ThrowOnMissing.IsPresent);
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
         var replacements = 0;
         var processedAnySheet = false;
 
-        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex))
-        {
-            if (!ShouldProcess(sheet.Name, "Apply Excel template markers"))
-            {
+        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex)) {
+            if (!ShouldProcess(sheet.Name, "Apply Excel template markers")) {
                 continue;
             }
 
@@ -79,13 +75,11 @@ protected override void ProcessRecord()
             processedAnySheet = true;
         }
 
-        if (processedAnySheet)
-        {
+        if (processedAnySheet) {
             workbook.SaveIfOwned();
         }
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteObject(replacements);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/InvokeOfficeExcelTemplateOptionalRowCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/InvokeOfficeExcelTemplateOptionalRowCommand.cs
index ac0ad1ec..35340849 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/InvokeOfficeExcelTemplateOptionalRowCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/InvokeOfficeExcelTemplateOptionalRowCommand.cs
@@ -16,16 +16,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsLifecycle.Invoke, "OfficeExcelTemplateOptionalRow", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.Low, DefaultParameterSetName = ParameterSetContext)]
 [Alias("ExcelTemplateOptionalRow", "ExcelTemplateOptionalRows")]
 [OutputType(typeof(int))]
-public sealed class InvokeOfficeExcelTemplateOptionalRowCommand : PSCmdlet
-{
+public sealed class InvokeOfficeExcelTemplateOptionalRowCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ParameterSetName = ParameterSetDocument)]
@@ -73,10 +72,8 @@ public sealed class InvokeOfficeExcelTemplateOptionalRowCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (FirstRow < 1)
-        {
+    protected override void ProcessRecord() {
+        if (FirstRow < 1) {
             ThrowTerminatingError(new ErrorRecord(
                 new PSArgumentOutOfRangeException(nameof(FirstRow)),
                 "InvalidFirstRow",
@@ -84,8 +81,7 @@ protected override void ProcessRecord()
                 FirstRow));
         }
 
-        if (RowCount < 1)
-        {
+        if (RowCount < 1) {
             ThrowTerminatingError(new ErrorRecord(
                 new PSArgumentOutOfRangeException(nameof(RowCount)),
                 "InvalidRowCount",
@@ -93,14 +89,13 @@ protected override void ProcessRecord()
                 RowCount));
         }
 
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
         var sheet = ExcelWorkbookCommandService.ResolveSheet(this, workbook.Document, ParameterSetName, Sheet, SheetIndex);
         var lastRow = FirstRow + RowCount - 1;
         var action = Remove.IsPresent
             ? "Remove Excel template optional rows"
             : "Apply Excel template optional rows";
-        if (!ShouldProcess($"{sheet.Name}!{FirstRow}:{lastRow}", action))
-        {
+        if (!ShouldProcess($"{sheet.Name}!{FirstRow}:{lastRow}", action)) {
             return;
         }
 
@@ -114,9 +109,8 @@ protected override void ProcessRecord()
                 ExcelTemplateValueService.CreateOptions(CultureName, MissingValueBehavior, ThrowOnMissing.IsPresent));
 
         workbook.SaveIfOwned();
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteObject(replacements);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/InvokeOfficeExcelTemplateRowCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/InvokeOfficeExcelTemplateRowCommand.cs
index a5863927..8e5cd0d7 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/InvokeOfficeExcelTemplateRowCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/InvokeOfficeExcelTemplateRowCommand.cs
@@ -16,8 +16,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsLifecycle.Invoke, "OfficeExcelTemplateRow", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.Low, DefaultParameterSetName = ParameterSetContext)]
 [Alias("ExcelTemplateRow", "ExcelTemplateRows")]
 [OutputType(typeof(int))]
-public sealed class InvokeOfficeExcelTemplateRowCommand : PSCmdlet
-{
+public sealed class InvokeOfficeExcelTemplateRowCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
@@ -25,8 +24,8 @@ public sealed class InvokeOfficeExcelTemplateRowCommand : PSCmdlet
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -66,16 +65,13 @@ public sealed class InvokeOfficeExcelTemplateRowCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         TableInputCollector.AddInput(_rows, InputObject);
     }
 
     /// 
-    protected override void EndProcessing()
-    {
-        if (TemplateRow < 1)
-        {
+    protected override void EndProcessing() {
+        if (TemplateRow < 1) {
             ThrowTerminatingError(new ErrorRecord(
                 new PSArgumentOutOfRangeException(nameof(TemplateRow)),
                 "InvalidTemplateRow",
@@ -83,25 +79,22 @@ protected override void EndProcessing()
                 TemplateRow));
         }
 
-        if (_rows.Count == 0)
-        {
+        if (_rows.Count == 0) {
             return;
         }
 
         var rows = ExcelTemplateValueService.ConvertRows(_rows);
         var options = ExcelTemplateValueService.CreateOptions(CultureName, MissingValueBehavior, ThrowOnMissing.IsPresent);
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
         var sheet = ExcelWorkbookCommandService.ResolveSheet(this, workbook.Document, ParameterSetName, Sheet, SheetIndex);
-        if (!ShouldProcess($"{sheet.Name}!{TemplateRow}", "Apply Excel template rows"))
-        {
+        if (!ShouldProcess($"{sheet.Name}!{TemplateRow}", "Apply Excel template rows")) {
             return;
         }
 
         var replacements = sheet.ApplyTemplateRows(TemplateRow, rows, options);
         workbook.SaveIfOwned();
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteObject(replacements);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/InvokeOfficeExcelTemplateSheetCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/InvokeOfficeExcelTemplateSheetCommand.cs
index 234caf1b..567b65ba 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/InvokeOfficeExcelTemplateSheetCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/InvokeOfficeExcelTemplateSheetCommand.cs
@@ -17,8 +17,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsLifecycle.Invoke, "OfficeExcelTemplateSheet", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.Low, DefaultParameterSetName = ParameterSetContext)]
 [Alias("ExcelTemplateSheet", "ExcelTemplateSheets")]
 [OutputType(typeof(int))]
-public sealed class InvokeOfficeExcelTemplateSheetCommand : PSCmdlet
-{
+public sealed class InvokeOfficeExcelTemplateSheetCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
@@ -26,8 +25,8 @@ public sealed class InvokeOfficeExcelTemplateSheetCommand : PSCmdlet
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ParameterSetName = ParameterSetDocument)]
@@ -65,39 +64,33 @@ public sealed class InvokeOfficeExcelTemplateSheetCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         TableInputCollector.AddInput(_items, Item);
     }
 
     /// 
-    protected override void EndProcessing()
-    {
-        if (_items.Count == 0)
-        {
+    protected override void EndProcessing() {
+        if (_items.Count == 0) {
             return;
         }
 
         var items = ExcelTemplateValueService.ConvertRows(_items);
         Func, int, string>? sheetNameSelector = null;
-        if (!string.IsNullOrWhiteSpace(SheetNameProperty))
-        {
+        if (!string.IsNullOrWhiteSpace(SheetNameProperty)) {
             sheetNameSelector = (values, _) => ExcelTemplateValueService.GetStringValue(values, SheetNameProperty) ?? string.Empty;
         }
 
         var options = ExcelTemplateValueService.CreateOptions(CultureName, MissingValueBehavior, ThrowOnMissing.IsPresent);
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
         var templateSheetName = ExcelWorkbookCommandService.ResolveSheetNameOrCurrent(this, workbook.Document, ParameterSetName, TemplateSheet);
-        if (!ShouldProcess(templateSheetName, "Apply Excel template sheets"))
-        {
+        if (!ShouldProcess(templateSheetName, "Apply Excel template sheets")) {
             return;
         }
 
         var replacements = workbook.Document.ApplyTemplateSheets(templateSheetName, items, sheetNameSelector, options);
         workbook.SaveIfOwned();
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteObject(replacements);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/JoinOfficeExcelSheetCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/JoinOfficeExcelSheetCommand.cs
index 856f30e5..9566414c 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/JoinOfficeExcelSheetCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/JoinOfficeExcelSheetCommand.cs
@@ -16,16 +16,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Join, "OfficeExcelSheet", DefaultParameterSetName = ParameterSetContext, SupportsShouldProcess = true)]
 [Alias("Merge-OfficeExcelSheet", "ExcelSheetJoin", "ExcelSheetMerge")]
 [OutputType(typeof(ExcelWorksheetMergeResult))]
-public sealed class JoinOfficeExcelSheetCommand : PSCmdlet
-{
+public sealed class JoinOfficeExcelSheetCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Target workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Target workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -88,11 +87,9 @@ public sealed class JoinOfficeExcelSheetCommand : PSCmdlet
     public SwitchParameter OverwriteExistingCells { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        using var targetWorkbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
-        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, targetWorkbook.Document, InputPath, "Update Excel workbook"))
-        {
+    protected override void ProcessRecord() {
+        using var targetWorkbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
+        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, targetWorkbook.Document, Path, "Update Excel workbook")) {
             return;
         }
 
@@ -106,10 +103,8 @@ protected override void ProcessRecord()
         WriteObject(result);
     }
 
-    private ExcelWorksheetMergeOptions BuildOptions()
-    {
-        return new ExcelWorksheetMergeOptions
-        {
+    private ExcelWorksheetMergeOptions BuildOptions() {
+        return new ExcelWorksheetMergeOptions {
             SourceRange = SourceRange,
             TargetStartRow = TargetStartRow,
             TargetStartColumn = TargetStartColumn,
@@ -122,4 +117,4 @@ private ExcelWorksheetMergeOptions BuildOptions()
         };
     }
 
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/JoinOfficeExcelWorkbookCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/JoinOfficeExcelWorkbookCommand.cs
index 73168554..96307307 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/JoinOfficeExcelWorkbookCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/JoinOfficeExcelWorkbookCommand.cs
@@ -26,16 +26,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Join, "OfficeExcelWorkbook", DefaultParameterSetName = ParameterSetPath, SupportsShouldProcess = true)]
 [Alias("Merge-OfficeExcelWorkbook", "ExcelWorkbookJoin", "ExcelWorkbookMerge")]
 [OutputType(typeof(ExcelWorkbookMergeResult))]
-public sealed class JoinOfficeExcelWorkbookCommand : PSCmdlet
-{
+public sealed class JoinOfficeExcelWorkbookCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Target workbook path to create or update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath", "OutputPath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath", "OutputPath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Target workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -68,49 +67,38 @@ public sealed class JoinOfficeExcelWorkbookCommand : PSCmdlet
     public ExcelWorksheetCopyMode CopyMode { get; set; } = ExcelWorksheetCopyMode.Package;
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (SourceDocument != null && SourcePath is { Length: > 0 })
-        {
+    protected override void ProcessRecord() {
+        if (SourceDocument != null && SourcePath is { Length: > 0 }) {
             throw new PSArgumentException("Specify either -SourceDocument or -SourcePath, not both.");
         }
 
-        if (SourceDocument == null && (SourcePath == null || SourcePath.Length == 0))
-        {
+        if (SourceDocument == null && (SourcePath == null || SourcePath.Length == 0)) {
             throw new PSArgumentException("Provide SourceDocument or SourcePath.");
         }
 
-        if (string.Equals(ParameterSetName, ParameterSetPath, System.StringComparison.OrdinalIgnoreCase))
-        {
-            var resolvedTargetPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+        if (string.Equals(ParameterSetName, ParameterSetPath, System.StringComparison.OrdinalIgnoreCase)) {
+            var resolvedTargetPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
             var action = File.Exists(resolvedTargetPath)
                 ? "Update Excel workbook with merged sheets"
                 : "Write Excel workbook with merged sheets";
-            if (!ShouldProcess(resolvedTargetPath, action))
-            {
+            if (!ShouldProcess(resolvedTargetPath, action)) {
                 return;
             }
         }
 
         using var targetWorkbook = ResolveTargetWorkbook();
         if (!string.Equals(ParameterSetName, ParameterSetPath, System.StringComparison.OrdinalIgnoreCase) &&
-            !ExcelShouldProcessService.ShouldProcessWorkbook(this, targetWorkbook.Document, InputPath, "Merge Excel workbook sheets"))
-        {
+            !ExcelShouldProcessService.ShouldProcessWorkbook(this, targetWorkbook.Document, Path, "Merge Excel workbook sheets")) {
             return;
         }
 
         var results = new List();
 
-        if (SourceDocument != null)
-        {
+        if (SourceDocument != null) {
             results.Add(MergeSourceWorkbook(targetWorkbook.Document, SourceDocument));
-        }
-        else
-        {
-            foreach (var sourcePath in SourcePath!)
-            {
-                if (string.IsNullOrWhiteSpace(sourcePath))
-                {
+        } else {
+            foreach (var sourcePath in SourcePath!) {
+                if (string.IsNullOrWhiteSpace(sourcePath)) {
                     continue;
                 }
 
@@ -121,44 +109,37 @@ protected override void ProcessRecord()
         }
 
         targetWorkbook.SaveIfOwned();
-        foreach (var result in results)
-        {
+        foreach (var result in results) {
             WriteObject(result);
         }
     }
 
-    private ExcelWorkbookCommandScope ResolveTargetWorkbook()
-    {
-        if (!string.Equals(ParameterSetName, ParameterSetPath, System.StringComparison.OrdinalIgnoreCase))
-        {
-            return ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
+    private ExcelWorkbookCommandScope ResolveTargetWorkbook() {
+        if (!string.Equals(ParameterSetName, ParameterSetPath, System.StringComparison.OrdinalIgnoreCase)) {
+            return ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
         }
 
-        var resolvedTargetPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
-        var targetDirectory = Path.GetDirectoryName(resolvedTargetPath);
-        if (!string.IsNullOrWhiteSpace(targetDirectory))
-        {
+        var resolvedTargetPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
+        var targetDirectory = System.IO.Path.GetDirectoryName(resolvedTargetPath);
+        if (!string.IsNullOrWhiteSpace(targetDirectory)) {
             Directory.CreateDirectory(targetDirectory);
         }
 
         var document = File.Exists(resolvedTargetPath)
             ? ExcelDocumentService.LoadDocument(resolvedTargetPath, readOnly: false, autoSave: false)
-            : ExcelDocument.Create(resolvedTargetPath, new ExcelCreateOptions
-            {
+            : ExcelDocument.Create(resolvedTargetPath, new ExcelCreateOptions {
                 PersistenceMode = DocumentPersistenceMode.Explicit
             });
 
         return new ExcelWorkbookCommandScope(document, ownsDocument: true);
     }
 
-    private ExcelWorkbookMergeResult MergeSourceWorkbook(ExcelDocument targetDocument, ExcelDocument sourceDocument)
-    {
-        return targetDocument.MergeWorkbookFrom(sourceDocument, new ExcelWorkbookMergeOptions
-        {
+    private ExcelWorkbookMergeResult MergeSourceWorkbook(ExcelDocument targetDocument, ExcelDocument sourceDocument) {
+        return targetDocument.MergeWorkbookFrom(sourceDocument, new ExcelWorkbookMergeOptions {
             SheetNames = SourceSheet,
             SheetNamePrefix = SheetNamePrefix,
             SheetNameValidationMode = ValidationMode,
             CopyMode = CopyMode
         });
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/MoveOfficeExcelSheetCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/MoveOfficeExcelSheetCommand.cs
index 0dffff7a..5cec0a95 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/MoveOfficeExcelSheetCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/MoveOfficeExcelSheetCommand.cs
@@ -19,16 +19,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Move, "OfficeExcelSheet", DefaultParameterSetName = ParameterSetContext, SupportsShouldProcess = true)]
 [Alias("Set-OfficeExcelSheetOrder", "ExcelSheetOrder")]
-public sealed class MoveOfficeExcelSheetCommand : PSCmdlet
-{
+public sealed class MoveOfficeExcelSheetCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -53,11 +52,9 @@ public sealed class MoveOfficeExcelSheetCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
-        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, InputPath, "Update Excel workbook"))
-        {
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
+        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, Path, "Update Excel workbook")) {
             return;
         }
 
@@ -66,9 +63,8 @@ protected override void ProcessRecord()
         document.ReorderWorksheet(sheet, Index);
         workbook.SaveIfOwned();
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteObject(sheet);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelCommand.cs
index 075a5a1b..6af20fea 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelCommand.cs
@@ -2,7 +2,6 @@
 using System.IO;
 using System.Management.Automation;
 using OfficeIMO.Excel;
-using OfficeIMO.Excel.Pdf;
 using PSWriteOffice.Services.Excel;
 using PSWriteOffice.Services.Pdf;
 
@@ -28,12 +27,11 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.New, "OfficeExcel", SupportsShouldProcess = true)]
 [Alias("ExcelNew")]
-public sealed class NewOfficeExcelCommand : PSCmdlet
-{
+public sealed class NewOfficeExcelCommand : PSCmdlet {
     /// Destination path for the workbook.
     [Parameter(Mandatory = true, Position = 0)]
-    [Alias("Path")]
-    public string FilePath { get; set; } = string.Empty;
+    [Alias("FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// DSL scriptblock describing workbook content.
     [Parameter(Position = 1)]
@@ -44,10 +42,6 @@ public sealed class NewOfficeExcelCommand : PSCmdlet
     [Alias("Template")]
     public string? TemplatePath { get; set; }
 
-    /// Opt into OfficeIMO automatic saves during operations.
-    [Parameter]
-    public SwitchParameter AutoSave { get; set; }
-
     /// Skip saving the workbook after running the DSL.
     [Parameter]
     public SwitchParameter NoSave { get; set; }
@@ -97,10 +91,6 @@ public sealed class NewOfficeExcelCommand : PSCmdlet
     [ValidateSet("1900", "1904", "NineteenHundred", "NineteenFour")]
     public string? DateSystem { get; set; }
 
-    /// Optional PDF path to create from the same workbook before closing it.
-    [Parameter]
-    public string? PdfPath { get; set; }
-
     /// Emit a  for convenience.
     [Parameter]
     public SwitchParameter PassThru { get; set; }
@@ -146,29 +136,20 @@ public sealed class NewOfficeExcelCommand : PSCmdlet
     public string? LastModifiedBy { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (!NoSave.IsPresent && AutoSave.IsPresent && !string.IsNullOrEmpty(Password))
-        {
-            throw new PSArgumentException("Encrypted Excel workbooks require explicit Save-OfficeExcel -Password or Close-OfficeExcel -Save -Password. -AutoSave cannot be used with -Password.");
-        }
-
-        var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(FilePath);
+    protected override void ProcessRecord() {
+        var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
         var action = NoSave.IsPresent
             ? string.IsNullOrWhiteSpace(TemplatePath)
                 ? "Create in-memory Excel workbook"
                 : "Create Excel workbook from template"
             : "Write new Excel workbook";
-        if (!PdfCommandUtilities.ShouldWrite(this, resolvedPath, action))
-        {
+        if (!PdfCommandUtilities.ShouldWrite(this, resolvedPath, action)) {
             return;
         }
 
-        if (!NoSave.IsPresent || !string.IsNullOrWhiteSpace(TemplatePath))
-        {
-            var directory = Path.GetDirectoryName(resolvedPath);
-            if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory))
-            {
+        if (!NoSave.IsPresent || !string.IsNullOrWhiteSpace(TemplatePath)) {
+            var directory = System.IO.Path.GetDirectoryName(resolvedPath);
+            if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory)) {
                 Directory.CreateDirectory(directory);
             }
         }
@@ -176,15 +157,14 @@ protected override void ProcessRecord()
         var document = string.IsNullOrWhiteSpace(TemplatePath)
             ? NoSave.IsPresent
                 ? ExcelDocumentService.CreateInMemoryDocument()
-                : ExcelDocumentService.CreateDocument(resolvedPath, AutoSave.IsPresent)
+                : ExcelDocumentService.CreateDocument(resolvedPath, autoSave: false)
             : ExcelDocumentService.CreateDocumentFromTemplate(
                 SessionState.Path.GetUnresolvedProviderPathFromPSPath(TemplatePath!),
                 resolvedPath,
-                AutoSave.IsPresent);
-        try
-        {
-            if (NoSave.IsPresent)
-            {
+                autoSave: false);
+        var closed = false;
+        try {
+            if (NoSave.IsPresent) {
                 ExcelDocumentService.UpdateSaveAssociation(document, resolvedPath, encrypted: false);
             }
 
@@ -202,15 +182,12 @@ protected override void ProcessRecord()
                 ApplicationName,
                 LastModifiedBy);
 
-            using (ExcelDslContext.Enter(document))
-            {
+            using (ExcelDslContext.Enter(document)) {
                 Content?.InvokeReturnAsIs();
             }
 
-            if (!NoSave.IsPresent)
-            {
-                if (document.Sheets.Count == 0)
-                {
+            if (!NoSave.IsPresent) {
+                if (document.Sheets.Count == 0) {
                     document.AddWorksheet(string.Empty, ExcelSheetNameValidationMode.Sanitize);
                 }
                 var saveOptions = ExcelDocumentService.CreateSaveOptions(
@@ -222,41 +199,23 @@ protected override void ProcessRecord()
                     ClearCachedFormulaResults.IsPresent,
                     MarkFormulasDirty.IsPresent,
                     ForceFullCalculationOnOpen.IsPresent);
-                SavePdfIfRequested(document);
                 ExcelDocumentService.SaveDocument(document, Open.IsPresent, resolvedPath, Password, saveOptions);
-            }
-            else
-            {
+                ExcelDocumentService.CloseDocument(document);
+                closed = true;
+            } else {
                 WriteObject(document);
                 return;
             }
-        }
-        catch
-        {
-            ExcelDocumentService.CloseDocument(document);
+        } catch {
+            if (!closed) {
+                ExcelDocumentService.CloseDocument(document);
+            }
             throw;
         }
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteObject(new FileInfo(resolvedPath));
         }
     }
 
-    private void SavePdfIfRequested(ExcelDocument document)
-    {
-        if (string.IsNullOrWhiteSpace(PdfPath))
-        {
-            return;
-        }
-
-        var pdfPath = PdfCommandUtilities.ResolvePath(this, PdfPath!);
-        if (!PdfCommandUtilities.ShouldWrite(this, pdfPath, "Write Excel PDF"))
-        {
-            return;
-        }
-
-        PdfCommandUtilities.EnsureDirectory(pdfPath);
-        document.SaveAsPdf(pdfPath).RequireSuccess();
-    }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelDashboardCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelDashboardCommand.cs
index e7c872e2..97117db2 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelDashboardCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelDashboardCommand.cs
@@ -18,8 +18,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.New, "OfficeExcelDashboard", DefaultParameterSetName = ParameterSetContext, SupportsShouldProcess = true)]
 [Alias("ExcelDashboard")]
 [OutputType(typeof(PSObject))]
-public sealed class NewOfficeExcelDashboardCommand : PSCmdlet
-{
+public sealed class NewOfficeExcelDashboardCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
@@ -28,8 +27,8 @@ public sealed class NewOfficeExcelDashboardCommand : PSCmdlet
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ParameterSetName = ParameterSetDocument)]
@@ -108,34 +107,28 @@ public sealed class NewOfficeExcelDashboardCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         TableInputCollector.AddInput(_items, InputObject, preserveTabularInput: true);
     }
 
     /// 
-    protected override void EndProcessing()
-    {
+    protected override void EndProcessing() {
         var rows = TableInputCollector.RequireRows(_items, nameof(InputObject));
         var table = ExcelTabularInputService.ToDataTable(rows, TableName);
-        if (!Enum.TryParse(TableStyle, ignoreCase: true, out ExcelTableStyle style))
-        {
+        if (!Enum.TryParse(TableStyle, ignoreCase: true, out ExcelTableStyle style)) {
             throw new PSArgumentException($"Unknown table style '{TableStyle}'.", nameof(TableStyle));
         }
 
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
 
-        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, InputPath, "Update Excel workbook"))
-
-        {
+        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, Path, "Update Excel workbook")) {
 
             return;
 
         }
 
         ExcelSheet sheet = ExcelWorkbookCommandService.ResolveSheet(this, workbook.Document, ParameterSetName, Sheet, SheetIndex);
-        ExcelDashboardResult result = sheet.AddDashboard(table, new ExcelDashboardOptions
-        {
+        ExcelDashboardResult result = sheet.AddDashboard(table, new ExcelDashboardOptions {
             Title = Title,
             Subtitle = Subtitle,
             TableRow = TableRow,
@@ -152,8 +145,7 @@ protected override void EndProcessing()
         });
         workbook.SaveIfOwned();
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             var output = new PSObject();
             output.Properties.Add(new PSNoteProperty("TableRange", result.TableRange));
             output.Properties.Add(new PSNoteProperty("TableName", result.TableName));
@@ -162,4 +154,4 @@ protected override void EndProcessing()
             WriteObject(output);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/OfficeExcelReportBlockCommands.cs b/Sources/PSWriteOffice/Cmdlets/Excel/OfficeExcelReportBlockCommands.cs
index 84837269..6bd95316 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/OfficeExcelReportBlockCommands.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/OfficeExcelReportBlockCommands.cs
@@ -25,8 +25,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Add, "OfficeExcelReportTitle")]
 [Alias("ExcelReportTitle")]
-public sealed class AddOfficeExcelReportTitleCommand : PSCmdlet
-{
+public sealed class AddOfficeExcelReportTitleCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Title text.
     [Parameter(Mandatory = true, Position = 0)]
     public string Title { get; set; } = string.Empty;
@@ -36,9 +35,10 @@ public sealed class AddOfficeExcelReportTitleCommand : PSCmdlet
     public string? Subtitle { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        ExcelDslContext.Require(this).RequireComposer().Title(Title, Subtitle);
+    protected override void ProcessRecord() {
+        var context = ExcelDslContext.Require(this);
+        context.RequireComposer().Title(Title, Subtitle);
+        WritePassThru(context.RequireSheet());
     }
 }
 
@@ -56,16 +56,16 @@ protected override void ProcessRecord()
 /// 
 [Cmdlet(VerbsCommon.Add, "OfficeExcelReportSection")]
 [Alias("ExcelReportSection")]
-public sealed class AddOfficeExcelReportSectionCommand : PSCmdlet
-{
+public sealed class AddOfficeExcelReportSectionCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Section heading text.
     [Parameter(Mandatory = true, Position = 0)]
     public string Text { get; set; } = string.Empty;
 
     /// 
-    protected override void ProcessRecord()
-    {
-        ExcelDslContext.Require(this).RequireComposer().Section(Text);
+    protected override void ProcessRecord() {
+        var context = ExcelDslContext.Require(this);
+        context.RequireComposer().Section(Text);
+        WritePassThru(context.RequireSheet());
     }
 }
 
@@ -83,16 +83,16 @@ protected override void ProcessRecord()
 /// 
 [Cmdlet(VerbsCommon.Add, "OfficeExcelReportParagraph")]
 [Alias("ExcelReportParagraph")]
-public sealed class AddOfficeExcelReportParagraphCommand : PSCmdlet
-{
+public sealed class AddOfficeExcelReportParagraphCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Paragraph text.
     [Parameter(Mandatory = true, Position = 0)]
     public string Text { get; set; } = string.Empty;
 
     /// 
-    protected override void ProcessRecord()
-    {
-        ExcelDslContext.Require(this).RequireComposer().Paragraph(Text);
+    protected override void ProcessRecord() {
+        var context = ExcelDslContext.Require(this);
+        context.RequireComposer().Paragraph(Text);
+        WritePassThru(context.RequireSheet());
     }
 }
 
@@ -111,16 +111,16 @@ protected override void ProcessRecord()
 /// 
 [Cmdlet(VerbsCommon.Add, "OfficeExcelReportSpacer")]
 [Alias("ExcelReportSpacer")]
-public sealed class AddOfficeExcelReportSpacerCommand : PSCmdlet
-{
+public sealed class AddOfficeExcelReportSpacerCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Rows to advance. Defaults to the composer theme spacing.
     [Parameter(Position = 0)]
     public int Rows { get; set; } = -1;
 
     /// 
-    protected override void ProcessRecord()
-    {
-        ExcelDslContext.Require(this).RequireComposer().Spacer(Rows);
+    protected override void ProcessRecord() {
+        var context = ExcelDslContext.Require(this);
+        context.RequireComposer().Spacer(Rows);
+        WritePassThru(context.RequireSheet());
     }
 }
 
@@ -137,8 +137,7 @@ protected override void ProcessRecord()
 /// 
 [Cmdlet(VerbsCommon.Add, "OfficeExcelReportCallout")]
 [Alias("ExcelReportCallout")]
-public sealed class AddOfficeExcelReportCalloutCommand : PSCmdlet
-{
+public sealed class AddOfficeExcelReportCalloutCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Callout kind. Supported values include info, success, warning, error, and critical.
     [Parameter(Position = 0)]
     [ValidateSet("Info", "Success", "Warning", "Error", "Critical")]
@@ -157,9 +156,10 @@ public sealed class AddOfficeExcelReportCalloutCommand : PSCmdlet
     public int WidthColumns { get; set; } = 8;
 
     /// 
-    protected override void ProcessRecord()
-    {
-        ExcelDslContext.Require(this).RequireComposer().Callout(Kind, Title, Body, WidthColumns);
+    protected override void ProcessRecord() {
+        var context = ExcelDslContext.Require(this);
+        context.RequireComposer().Callout(Kind, Title, Body, WidthColumns);
+        WritePassThru(context.RequireSheet());
     }
 }
 
@@ -176,8 +176,7 @@ protected override void ProcessRecord()
 /// 
 [Cmdlet(VerbsCommon.Add, "OfficeExcelReportKpiRow")]
 [Alias("ExcelReportKpiRow")]
-public sealed class AddOfficeExcelReportKpiRowCommand : PSCmdlet
-{
+public sealed class AddOfficeExcelReportKpiRowCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Hashtable or objects with Label/Value, Key/Value, Name/Value, or Title/Value properties.
     [Parameter(Mandatory = true, Position = 0)]
     [Alias("Data")]
@@ -192,9 +191,10 @@ public sealed class AddOfficeExcelReportKpiRowCommand : PSCmdlet
     public string? LabelFillColor { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        ExcelDslContext.Require(this).RequireComposer().KpiRow(ReportBlockInput.ToPairs(InputObject), PerRow, LabelFillColor);
+    protected override void ProcessRecord() {
+        var context = ExcelDslContext.Require(this);
+        context.RequireComposer().KpiRow(ReportBlockInput.ToPairs(InputObject), PerRow, LabelFillColor);
+        WritePassThru(context.RequireSheet());
     }
 }
 
@@ -215,8 +215,7 @@ protected override void ProcessRecord()
 /// 
 [Cmdlet(VerbsCommon.Add, "OfficeExcelReportLegend")]
 [Alias("ExcelReportLegend")]
-public sealed class AddOfficeExcelReportLegendCommand : PSCmdlet
-{
+public sealed class AddOfficeExcelReportLegendCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Optional legend title.
     [Parameter(Position = 0)]
     public string? Title { get; set; }
@@ -244,14 +243,15 @@ public sealed class AddOfficeExcelReportLegendCommand : PSCmdlet
     public SwitchParameter CaseSensitive { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        ExcelDslContext.Require(this).RequireComposer().SectionLegend(
+    protected override void ProcessRecord() {
+        var context = ExcelDslContext.Require(this);
+        context.RequireComposer().SectionLegend(
             Title,
             Header,
             InputObject.Select(row => ReportBlockInput.ToRow(row, Header)),
             ReportBlockInput.ToStringMap(FirstColumnFillByValue, CaseSensitive.IsPresent),
             HeaderFillColor);
+        WritePassThru(context.RequireSheet());
     }
 }
 
@@ -272,8 +272,7 @@ protected override void ProcessRecord()
 /// 
 [Cmdlet(VerbsCommon.Add, "OfficeExcelReportTable")]
 [Alias("ExcelReportTable")]
-public sealed class AddOfficeExcelReportTableCommand : PSCmdlet
-{
+public sealed class AddOfficeExcelReportTableCommand : PSCmdlet {
     private readonly List _items = new();
 
     /// Objects to flatten and render as a table.
@@ -355,14 +354,12 @@ public sealed class AddOfficeExcelReportTableCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         TableInputCollector.AddInput(_items, InputObject, preserveTabularInput: true);
     }
 
     /// 
-    protected override void EndProcessing()
-    {
+    protected override void EndProcessing() {
         var inputRows = TableInputCollector.RequireRows(_items, nameof(InputObject));
         var normalizerOptions = PowerShellObjectNormalizerOptions.ForTable(
             CollectionSeparator,
@@ -381,8 +378,7 @@ protected override void EndProcessing()
         var requestedColumns = NormalizePropertyList(Property) ?? sourceColumns;
         var excludedProperties = NormalizePropertyList(ExcludeProperty) ?? Array.Empty();
 
-        if (!Enum.TryParse(TableStyle, ignoreCase: true, out ExcelTableStyle style))
-        {
+        if (!Enum.TryParse(TableStyle, ignoreCase: true, out ExcelTableStyle style)) {
             throw new PSArgumentException($"Unknown table style '{TableStyle}'.", nameof(TableStyle));
         }
 
@@ -390,16 +386,14 @@ protected override void EndProcessing()
         var range = composer.TableFrom(
             table,
             Title,
-            configure: options =>
-            {
+            configure: options => {
                 options.Columns = requestedColumns;
                 options.ExcludeProperties = excludedProperties;
             },
             style: style,
             autoFilter: !NoAutoFilter.IsPresent,
             freezeHeaderRow: !NoFreezeHeaderRow.IsPresent,
-            visuals: options =>
-            {
+            visuals: options => {
                 options.AutoFormatDynamicCollections = !NoAutoFormatDynamicCollections.IsPresent;
                 options.ShowFirstColumn = ExcelTableStyleOptionService.IsSwitchPresent(this, nameof(ShowFirstColumn), ShowFirstColumn);
                 options.ShowLastColumn = ExcelTableStyleOptionService.IsSwitchPresent(this, nameof(ShowLastColumn), ShowLastColumn);
@@ -407,16 +401,13 @@ protected override void EndProcessing()
                 options.ShowColumnStripes = ExcelTableStyleOptionService.IsSwitchPresent(this, nameof(ShowColumnStripes), ShowColumnStripes);
             });
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteObject(range);
         }
     }
 
-    private static string[]? NormalizePropertyList(string[]? properties)
-    {
-        if (properties == null || properties.Length == 0)
-        {
+    private static string[]? NormalizePropertyList(string[]? properties) {
+        if (properties == null || properties.Length == 0) {
             return null;
         }
 
@@ -430,15 +421,11 @@ protected override void EndProcessing()
     }
 }
 
-internal static class ReportBlockInput
-{
-    public static IReadOnlyList<(string Label, object? Value)> ToPairs(object input)
-    {
-        if (input is IDictionary dictionary)
-        {
+internal static class ReportBlockInput {
+    public static IReadOnlyList<(string Label, object? Value)> ToPairs(object input) {
+        if (input is IDictionary dictionary) {
             var pairs = new List<(string Label, object? Value)>();
-            foreach (DictionaryEntry entry in dictionary)
-            {
+            foreach (DictionaryEntry entry in dictionary) {
                 pairs.Add((Convert.ToString(entry.Key, CultureInfo.InvariantCulture) ?? string.Empty, entry.Value));
             }
 
@@ -449,8 +436,7 @@ internal static class ReportBlockInput
             ? enumerable.Cast().Where(item => item != null).ToArray()
             : new[] { input };
 
-        return rows.Select(item =>
-        {
+        return rows.Select(item => {
             var psObject = PSObject.AsPSObject(item);
             var label = GetProperty(psObject, "Label")
                 ?? GetProperty(psObject, "Key")
@@ -463,16 +449,11 @@ internal static class ReportBlockInput
         }).ToArray();
     }
 
-    public static IReadOnlyList ToRow(object input, IReadOnlyList headers)
-    {
-        if (input is IDictionary dictionary)
-        {
-            return headers.Select(header =>
-            {
-                foreach (DictionaryEntry entry in dictionary)
-                {
-                    if (string.Equals(Convert.ToString(entry.Key, CultureInfo.InvariantCulture), header, StringComparison.OrdinalIgnoreCase))
-                    {
+    public static IReadOnlyList ToRow(object input, IReadOnlyList headers) {
+        if (input is IDictionary dictionary) {
+            return headers.Select(header => {
+                foreach (DictionaryEntry entry in dictionary) {
+                    if (string.Equals(Convert.ToString(entry.Key, CultureInfo.InvariantCulture), header, StringComparison.OrdinalIgnoreCase)) {
                         return Convert.ToString(entry.Value, CultureInfo.InvariantCulture) ?? string.Empty;
                     }
                 }
@@ -481,8 +462,7 @@ public static IReadOnlyList ToRow(object input, IReadOnlyList he
             }).ToArray();
         }
 
-        if (input is IEnumerable enumerable and not string)
-        {
+        if (input is IEnumerable enumerable and not string) {
             return enumerable.Cast()
                 .Select(value => Convert.ToString(value, CultureInfo.InvariantCulture) ?? string.Empty)
                 .ToArray();
@@ -492,21 +472,17 @@ public static IReadOnlyList ToRow(object input, IReadOnlyList he
         return headers.Select(header => Convert.ToString(GetPropertyValue(psObject, header), CultureInfo.InvariantCulture) ?? string.Empty).ToArray();
     }
 
-    public static Dictionary? ToStringMap(Hashtable? table, bool caseSensitive = false)
-    {
-        if (table == null || table.Count == 0)
-        {
+    public static Dictionary? ToStringMap(Hashtable? table, bool caseSensitive = false) {
+        if (table == null || table.Count == 0) {
             return null;
         }
 
         var comparer = caseSensitive ? StringComparer.Ordinal : StringComparer.OrdinalIgnoreCase;
         var result = new Dictionary(comparer);
-        foreach (DictionaryEntry entry in table)
-        {
+        foreach (DictionaryEntry entry in table) {
             var key = Convert.ToString(entry.Key, CultureInfo.InvariantCulture);
             var value = Convert.ToString(entry.Value, CultureInfo.InvariantCulture);
-            if (!string.IsNullOrEmpty(key) && !string.IsNullOrEmpty(value))
-            {
+            if (!string.IsNullOrEmpty(key) && !string.IsNullOrEmpty(value)) {
                 result[key] = value;
             }
         }
@@ -514,13 +490,11 @@ public static IReadOnlyList ToRow(object input, IReadOnlyList he
         return result;
     }
 
-    private static string? GetProperty(PSObject psObject, string name)
-    {
+    private static string? GetProperty(PSObject psObject, string name) {
         return Convert.ToString(GetPropertyValue(psObject, name), CultureInfo.InvariantCulture);
     }
 
-    private static object? GetPropertyValue(PSObject psObject, string name)
-    {
+    private static object? GetPropertyValue(PSObject psObject, string name) {
         return psObject.Properties[name]?.Value;
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/ProtectOfficeExcelWorkbookCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/ProtectOfficeExcelWorkbookCommand.cs
index f0fe4d0f..136fceee 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/ProtectOfficeExcelWorkbookCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/ProtectOfficeExcelWorkbookCommand.cs
@@ -17,16 +17,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsSecurity.Protect, "OfficeExcelWorkbook", DefaultParameterSetName = ParameterSetContext, SupportsShouldProcess = true)]
 [Alias("ExcelWorkbookProtect")]
 [OutputType(typeof(ExcelDocument), typeof(FileInfo))]
-public sealed class ProtectOfficeExcelWorkbookCommand : PSCmdlet
-{
+public sealed class ProtectOfficeExcelWorkbookCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -53,32 +52,27 @@ public sealed class ProtectOfficeExcelWorkbookCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var protectStructure = !NoStructure.IsPresent;
-        if (!protectStructure && !ProtectWindows.IsPresent)
-        {
+        if (!protectStructure && !ProtectWindows.IsPresent) {
             throw new PSArgumentException("Use -ProtectWindows when -NoStructure is specified.");
         }
 
         var pathPassThru = string.Equals(ParameterSetName, ParameterSetPath, System.StringComparison.OrdinalIgnoreCase);
         string? resolvedPath = pathPassThru
-            ? SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath)
+            ? SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path)
             : null;
 
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
 
-        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, InputPath, "Update Excel workbook"))
-
-        {
+        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, Path, "Update Excel workbook")) {
 
             return;
 
         }
 
         var document = workbook.Document;
-        document.ProtectWorkbook(new ExcelWorkbookProtectionOptions
-        {
+        document.ProtectWorkbook(new ExcelWorkbookProtectionOptions {
             ProtectStructure = protectStructure,
             ProtectWindows = ProtectWindows.IsPresent,
             Password = Password,
@@ -87,9 +81,8 @@ protected override void ProcessRecord()
 
         workbook.SaveIfOwned();
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteObject(pathPassThru ? new FileInfo(resolvedPath!) : document);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/RepairOfficeExcelWorkbookCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/RepairOfficeExcelWorkbookCommand.cs
index 96f6bbe8..57596d48 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/RepairOfficeExcelWorkbookCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/RepairOfficeExcelWorkbookCommand.cs
@@ -20,15 +20,14 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsDiagnostic.Repair, "OfficeExcelWorkbook", DefaultParameterSetName = ParameterSetPath, SupportsShouldProcess = true)]
 [Alias("ExcelWorkbookRepair", "ExcelRepair")]
 [OutputType(typeof(PSObject))]
-public sealed class RepairOfficeExcelWorkbookCommand : PSCmdlet
-{
+public sealed class RepairOfficeExcelWorkbookCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Workbook path to repair.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Open workbook document to repair.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -66,29 +65,24 @@ public sealed class RepairOfficeExcelWorkbookCommand : PSCmdlet
     [Parameter]
     public SwitchParameter PassThru { get; set; }
 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var shouldProcessChecked = false;
-        if (ParameterSetName == ParameterSetPath)
-        {
-            var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
-            if (!ShouldProcess(resolvedPath, "Repair Excel workbook"))
-            {
+        if (ParameterSetName == ParameterSetPath) {
+            var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
+            if (!ShouldProcess(resolvedPath, "Repair Excel workbook")) {
                 return;
             }
 
             shouldProcessChecked = true;
         }
 
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
         if (!shouldProcessChecked &&
-            !ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, InputPath, "Repair Excel workbook"))
-        {
+            !ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, Path, "Repair Excel workbook")) {
             return;
         }
 
-        var report = workbook.Document.RepairWorkbook(new ExcelWorkbookRepairOptions
-        {
+        var report = workbook.Document.RepairWorkbook(new ExcelWorkbookRepairOptions {
             DefinedNames = !SkipDefinedNames.IsPresent,
             Tables = !SkipTables.IsPresent,
             SheetViews = !SkipSheetViews.IsPresent,
@@ -98,13 +92,11 @@ protected override void ProcessRecord()
             Save = !NoSave.IsPresent
         });
 
-        if (!NoSave.IsPresent)
-        {
+        if (!NoSave.IsPresent) {
             workbook.SaveIfOwned();
         }
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             var output = new PSObject();
             output.Properties.Add(new PSNoteProperty("Path", workbook.Document.FilePath));
             output.Properties.Add(new PSNoteProperty("ActionCount", report.ActionCount));
@@ -115,8 +107,7 @@ protected override void ProcessRecord()
         }
     }
 
-    private static PSObject CreateAction(ExcelWorkbookRepairAction action)
-    {
+    private static PSObject CreateAction(ExcelWorkbookRepairAction action) {
         var item = new PSObject();
         item.Properties.Add(new PSNoteProperty("Category", action.Category));
         item.Properties.Add(new PSNoteProperty("SheetName", action.SheetName));
@@ -124,4 +115,4 @@ private static PSObject CreateAction(ExcelWorkbookRepairAction action)
         return item;
     }
 }
-#pragma warning restore CS1591
+#pragma warning restore CS1591
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SaveOfficeExcelCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SaveOfficeExcelCommand.cs
index 6710c6af..27246b34 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SaveOfficeExcelCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SaveOfficeExcelCommand.cs
@@ -1,7 +1,6 @@
 using System;
 using System.Management.Automation;
 using OfficeIMO.Excel;
-using OfficeIMO.Excel.Pdf;
 using PSWriteOffice.Services;
 using PSWriteOffice.Services.Excel;
 using PSWriteOffice.Services.Pdf;
@@ -17,8 +16,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsData.Save, "OfficeExcel", SupportsShouldProcess = true)]
 [OutputType(typeof(ExcelDocument))]
-public sealed class SaveOfficeExcelCommand : PSCmdlet
-{
+public sealed class SaveOfficeExcelCommand : PSCmdlet {
     /// Workbook to save.
     [Parameter(Mandatory = true, ValueFromPipeline = true, Position = 0)]
     public ExcelDocument Document { get; set; } = null!;
@@ -29,7 +27,8 @@ public sealed class SaveOfficeExcelCommand : PSCmdlet
 
     /// Open the workbook after saving.
     [Parameter]
-    public SwitchParameter Show { get; set; }
+    [Alias("Show")]
+    public SwitchParameter Open { get; set; }
 
     /// Password used to save the workbook as an encrypted package.
     [Parameter]
@@ -67,10 +66,6 @@ public sealed class SaveOfficeExcelCommand : PSCmdlet
     [Parameter]
     public SwitchParameter ForceFullCalculationOnOpen { get; set; }
 
-    /// Optional PDF path to create from the same workbook.
-    [Parameter]
-    public string? PdfPath { get; set; }
-
     /// Workbook date system for Excel date serials.
     [Parameter]
     [ValidateSet("1900", "1904", "NineteenHundred", "NineteenFour")]
@@ -81,16 +76,13 @@ public sealed class SaveOfficeExcelCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (Document == null)
-        {
+    protected override void ProcessRecord() {
+        if (Document == null) {
             return;
         }
 
         var associatedPath = ExcelDocumentService.GetAssociatedPath(Document);
-        if (string.IsNullOrWhiteSpace(Path) && string.IsNullOrWhiteSpace(associatedPath))
-        {
+        if (string.IsNullOrWhiteSpace(Path) && string.IsNullOrWhiteSpace(associatedPath)) {
             throw new PSInvalidOperationException("No file path provided. Use -Path or open the workbook from disk.");
         }
 
@@ -105,48 +97,35 @@ protected override void ProcessRecord()
             ForceFullCalculationOnOpen.IsPresent);
 
         string savedPath;
-        if (!string.IsNullOrWhiteSpace(Path))
-        {
+        if (!string.IsNullOrWhiteSpace(Path)) {
             var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
-            if (!PdfCommandUtilities.ShouldWrite(this, resolvedPath, "Save Excel workbook"))
-            {
+            if (!PdfCommandUtilities.ShouldWrite(this, resolvedPath, "Save Excel workbook")) {
                 return;
             }
 
             if (string.IsNullOrEmpty(Password) &&
                 ExcelDocumentService.IsEncryptedSource(Document) &&
-                string.Equals(System.IO.Path.GetFullPath(resolvedPath), System.IO.Path.GetFullPath(associatedPath!), StringComparison.OrdinalIgnoreCase))
-            {
+                string.Equals(System.IO.Path.GetFullPath(resolvedPath), System.IO.Path.GetFullPath(associatedPath!), StringComparison.OrdinalIgnoreCase)) {
                 throw new PSInvalidOperationException("Provide -Password when saving a workbook loaded from an encrypted package.");
             }
 
             ExcelDateSystemService.ApplyIfSpecified(Document, DateSystem, nameof(DateSystem));
-            if (!string.IsNullOrEmpty(Password))
-            {
+            if (!string.IsNullOrEmpty(Password)) {
                 OfficeEncryptedPackageService.SaveExcel(Document, resolvedPath, Password!, false, saveOptions);
-            }
-            else
-            {
+            } else {
                 Document.Save(resolvedPath, saveOptions);
             }
             savedPath = resolvedPath;
-        }
-        else
-        {
-            if (!PdfCommandUtilities.ShouldWrite(this, associatedPath!, "Save Excel workbook"))
-            {
+        } else {
+            if (!PdfCommandUtilities.ShouldWrite(this, associatedPath!, "Save Excel workbook")) {
                 return;
             }
 
             ExcelDateSystemService.ApplyIfSpecified(Document, DateSystem, nameof(DateSystem));
-            if (!string.IsNullOrEmpty(Password))
-            {
+            if (!string.IsNullOrEmpty(Password)) {
                 OfficeEncryptedPackageService.SaveExcel(Document, associatedPath!, Password!, false, saveOptions);
-            }
-            else
-            {
-                if (ExcelDocumentService.IsEncryptedSource(Document))
-                {
+            } else {
+                if (ExcelDocumentService.IsEncryptedSource(Document)) {
                     throw new PSInvalidOperationException("Provide -Password when saving a workbook loaded from an encrypted package.");
                 }
 
@@ -156,33 +135,13 @@ protected override void ProcessRecord()
         }
 
         ExcelDocumentService.UpdateSaveAssociation(Document, savedPath, !string.IsNullOrEmpty(Password));
-        if (Show.IsPresent)
-        {
+        if (Open.IsPresent) {
             FileOpenService.Open(savedPath);
         }
 
-        SavePdfIfRequested();
-
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteObject(Document);
         }
     }
 
-    private void SavePdfIfRequested()
-    {
-        if (string.IsNullOrWhiteSpace(PdfPath))
-        {
-            return;
-        }
-
-        var pdfPath = PdfCommandUtilities.ResolvePath(this, PdfPath!);
-        if (!PdfCommandUtilities.ShouldWrite(this, pdfPath, "Write Excel PDF"))
-        {
-            return;
-        }
-
-        PdfCommandUtilities.EnsureDirectory(pdfPath);
-        Document.SaveAsPdf(pdfPath).RequireSuccess();
-    }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelActiveSheetCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelActiveSheetCommand.cs
index f137523b..48183bdd 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelActiveSheetCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelActiveSheetCommand.cs
@@ -17,16 +17,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Set, "OfficeExcelActiveSheet", DefaultParameterSetName = ParameterSetContext, SupportsShouldProcess = true)]
 [Alias("ExcelActiveSheet")]
 [OutputType(typeof(ExcelSheet), typeof(PSObject))]
-public sealed class SetOfficeExcelActiveSheetCommand : PSCmdlet
-{
+public sealed class SetOfficeExcelActiveSheetCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to operate on outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -48,18 +47,14 @@ public sealed class SetOfficeExcelActiveSheetCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (!string.IsNullOrWhiteSpace(Sheet) && SheetIndex.HasValue)
-        {
+    protected override void ProcessRecord() {
+        if (!string.IsNullOrWhiteSpace(Sheet) && SheetIndex.HasValue) {
             throw new PSArgumentException("Specify either -Sheet or -SheetIndex, not both.");
         }
 
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
 
-        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, InputPath, "Update Excel workbook"))
-
-        {
+        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, Path, "Update Excel workbook")) {
 
             return;
 
@@ -69,30 +64,25 @@ protected override void ProcessRecord()
         workbook.Document.SetActiveWorksheet(sheet);
         workbook.SaveIfOwned();
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteObject(string.Equals(ParameterSetName, ParameterSetPath, StringComparison.OrdinalIgnoreCase)
                 ? CreatePathRecord(workbook.Document, sheet)
                 : sheet);
         }
     }
 
-    private PSObject CreatePathRecord(ExcelDocument document, ExcelSheet sheet)
-    {
+    private PSObject CreatePathRecord(ExcelDocument document, ExcelSheet sheet) {
         var item = new PSObject();
-        item.Properties.Add(new PSNoteProperty("Path", document.FilePath ?? SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath)));
+        item.Properties.Add(new PSNoteProperty("Path", document.FilePath ?? SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path)));
         item.Properties.Add(new PSNoteProperty("Name", sheet.Name));
         item.Properties.Add(new PSNoteProperty("SheetName", sheet.Name));
         item.Properties.Add(new PSNoteProperty("SheetIndex", ResolveSheetIndex(document, sheet)));
         return item;
     }
 
-    private static int ResolveSheetIndex(ExcelDocument document, ExcelSheet sheet)
-    {
-        for (int i = 0; i < document.Sheets.Count; i++)
-        {
-            if (string.Equals(document.Sheets[i].Name, sheet.Name, StringComparison.OrdinalIgnoreCase))
-            {
+    private static int ResolveSheetIndex(ExcelDocument document, ExcelSheet sheet) {
+        for (int i = 0; i < document.Sheets.Count; i++) {
+            if (string.Equals(document.Sheets[i].Name, sheet.Name, StringComparison.OrdinalIgnoreCase)) {
                 return i;
             }
         }
@@ -100,24 +90,20 @@ private static int ResolveSheetIndex(ExcelDocument document, ExcelSheet sheet)
         return -1;
     }
 
-    private ExcelSheet ResolveTargetSheet(ExcelDocument document)
-    {
-        if (ParameterSetName == ParameterSetContext)
-        {
+    private ExcelSheet ResolveTargetSheet(ExcelDocument document) {
+        if (ParameterSetName == ParameterSetContext) {
             var context = ExcelDslContext.Require(this);
             return context.RequireSheet();
         }
 
-        if (!string.IsNullOrWhiteSpace(Sheet))
-        {
+        if (!string.IsNullOrWhiteSpace(Sheet)) {
             return ExcelSheetResolver.Resolve(document, Sheet, null);
         }
 
-        if (SheetIndex.HasValue)
-        {
+        if (SheetIndex.HasValue) {
             return ExcelSheetResolver.Resolve(document, null, SheetIndex);
         }
 
         throw new PSArgumentException("Specify -Sheet or -SheetIndex.");
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelCellCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelCellCommand.cs
index 2ef21f96..b0cd1838 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelCellCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelCellCommand.cs
@@ -20,8 +20,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Set, "OfficeExcelCell")]
 [Alias("ExcelCell")]
-public sealed class SetOfficeExcelCellCommand : PSCmdlet
-{
+public sealed class SetOfficeExcelCellCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Worksheet to modify outside a DSL context.
     [Parameter(ValueFromPipeline = true)]
     [Alias("SheetObject")]
@@ -80,8 +79,7 @@ public sealed class SetOfficeExcelCellCommand : PSCmdlet
     public double GradientDegree { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var sheet = ResolveSheet();
         var (row, column) = ExcelHostExtensions.ResolveCellAddress(Row, Column, Address);
         var hasValueChange = Value != null || Formula != null || NumberFormat != null;
@@ -89,49 +87,41 @@ protected override void ProcessRecord()
             || !string.IsNullOrWhiteSpace(GradientFrom)
             || !string.IsNullOrWhiteSpace(GradientTo);
 
-        if (!hasValueChange && !hasStyleChange)
-        {
+        if (!hasValueChange && !hasStyleChange) {
             throw new PSArgumentException("Provide -Value, -Formula, -NumberFormat, -BackgroundColor, or -GradientFrom/-GradientTo to modify the cell.");
         }
 
-        if (!string.IsNullOrWhiteSpace(GradientFrom) ^ !string.IsNullOrWhiteSpace(GradientTo))
-        {
+        if (!string.IsNullOrWhiteSpace(GradientFrom) ^ !string.IsNullOrWhiteSpace(GradientTo)) {
             throw new PSArgumentException("Specify both -GradientFrom and -GradientTo for a gradient fill.");
         }
 
-        if (hasValueChange)
-        {
+        if (hasValueChange) {
             sheet.Cell(row, column, Value, Formula, NumberFormat);
         }
 
-        if (!string.IsNullOrWhiteSpace(BackgroundColor))
-        {
+        if (!string.IsNullOrWhiteSpace(BackgroundColor)) {
             sheet.CellBackground(row, column, BackgroundColor!);
         }
 
-        if (!string.IsNullOrWhiteSpace(GradientFrom) && !string.IsNullOrWhiteSpace(GradientTo))
-        {
+        if (!string.IsNullOrWhiteSpace(GradientFrom) && !string.IsNullOrWhiteSpace(GradientTo)) {
             sheet.CellGradientBackground(row, column, GradientFrom!, GradientTo!, GradientDegree);
         }
+        WritePassThru(sheet);
     }
 
-    private ExcelSheet ResolveSheet()
-    {
-        if (Worksheet != null && Document != null)
-        {
+    private ExcelSheet ResolveSheet() {
+        if (Worksheet != null && Document != null) {
             throw new PSArgumentException("Use either -Worksheet or -Document, not both.");
         }
 
-        if (Worksheet != null)
-        {
+        if (Worksheet != null) {
             return Worksheet;
         }
 
-        if (Document != null)
-        {
+        if (Document != null) {
             return ExcelSheetResolver.Resolve(Document, Sheet, SheetIndex);
         }
 
         return ExcelDslContext.Require(this).RequireSheet();
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartAxisCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartAxisCommand.cs
index 2ca86097..fff58cd8 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartAxisCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartAxisCommand.cs
@@ -23,8 +23,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Set, "OfficeExcelChartAxis")]
 [Alias("ExcelChartAxis")]
 [OutputType(typeof(ExcelChart))]
-public sealed class SetOfficeExcelChartAxisCommand : PSCmdlet
-{
+public sealed class SetOfficeExcelChartAxisCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Chart to update.
     [Parameter(Mandatory = true, ValueFromPipeline = true)]
     public ExcelChart Chart { get; set; } = null!;
@@ -114,41 +113,33 @@ public sealed class SetOfficeExcelChartAxisCommand : PSCmdlet
     public double? GridlineWidthPoints { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
+    protected override void ProcessRecord() {
+        try {
             var categoryTitle = CategoryTitle;
-            if (!string.IsNullOrWhiteSpace(categoryTitle))
-            {
+            if (!string.IsNullOrWhiteSpace(categoryTitle)) {
                 Chart.SetCategoryAxisTitle(categoryTitle!, AxisGroup);
             }
 
             var valueTitle = ValueTitle;
-            if (!string.IsNullOrWhiteSpace(valueTitle))
-            {
+            if (!string.IsNullOrWhiteSpace(valueTitle)) {
                 Chart.SetValueAxisTitle(valueTitle!, AxisGroup);
             }
 
             var categoryNumberFormat = CategoryNumberFormat;
-            if (!string.IsNullOrWhiteSpace(categoryNumberFormat))
-            {
+            if (!string.IsNullOrWhiteSpace(categoryNumberFormat)) {
                 Chart.SetCategoryAxisNumberFormat(categoryNumberFormat!, SourceLinked, AxisGroup);
             }
 
             var valueNumberFormat = ValueNumberFormat;
-            if (!string.IsNullOrWhiteSpace(valueNumberFormat))
-            {
+            if (!string.IsNullOrWhiteSpace(valueNumberFormat)) {
                 Chart.SetValueAxisNumberFormat(valueNumberFormat!, SourceLinked, AxisGroup);
             }
 
-            if (ValueMinimum.HasValue || ValueMaximum.HasValue || ValueMajorUnit.HasValue || ValueMinorUnit.HasValue)
-            {
+            if (ValueMinimum.HasValue || ValueMaximum.HasValue || ValueMajorUnit.HasValue || ValueMinorUnit.HasValue) {
                 Chart.SetValueAxisScale(ValueMinimum, ValueMaximum, ValueMajorUnit, ValueMinorUnit, axisGroup: AxisGroup);
             }
 
-            if (CategoryMinimum.HasValue || CategoryMaximum.HasValue || CategoryMajorUnit.HasValue || CategoryMinorUnit.HasValue)
-            {
+            if (CategoryMinimum.HasValue || CategoryMaximum.HasValue || CategoryMajorUnit.HasValue || CategoryMinorUnit.HasValue) {
                 Chart.SetCategoryAxisScale(CategoryMinimum, CategoryMaximum, CategoryMajorUnit, CategoryMinorUnit, axisGroup: AxisGroup);
             }
 
@@ -165,8 +156,7 @@ protected override void ProcessRecord()
 
             bool categoryStyleRequested = !string.IsNullOrWhiteSpace(categoryGridlineColor) ||
                 (GridlineWidthPoints.HasValue && (categoryGridlinesRequested || widthOnlyRequest));
-            if (categoryGridlinesRequested || widthOnlyRequest)
-            {
+            if (categoryGridlinesRequested || widthOnlyRequest) {
                 bool showMajor = ShowCategoryMajorGridlines.IsPresent || ShowCategoryMinorGridlines.IsPresent || categoryStyleRequested;
                 Chart.SetCategoryAxisGridlines(showMajor,
                     ShowCategoryMinorGridlines.IsPresent, categoryGridlineColor, GridlineWidthPoints, AxisGroup);
@@ -174,18 +164,15 @@ protected override void ProcessRecord()
 
             bool valueStyleRequested = !string.IsNullOrWhiteSpace(valueGridlineColor) ||
                 (GridlineWidthPoints.HasValue && (valueGridlinesRequested || widthOnlyRequest));
-            if (valueGridlinesRequested || widthOnlyRequest)
-            {
+            if (valueGridlinesRequested || widthOnlyRequest) {
                 bool showMajor = ShowValueMajorGridlines.IsPresent || ShowValueMinorGridlines.IsPresent || valueStyleRequested;
                 Chart.SetValueAxisGridlines(showMajor,
                     ShowValueMinorGridlines.IsPresent, valueGridlineColor, GridlineWidthPoints, AxisGroup);
             }
 
-            WriteObject(Chart);
-        }
-        catch (Exception ex)
-        {
+            WritePassThru(Chart);
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "ExcelChartAxisFailed", ErrorCategory.InvalidOperation, Chart));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartDataLabelsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartDataLabelsCommand.cs
index 5bf4d8c4..9bcec32d 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartDataLabelsCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartDataLabelsCommand.cs
@@ -15,8 +15,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Set, "OfficeExcelChartDataLabels")]
 [OutputType(typeof(ExcelChart))]
-public sealed class SetOfficeExcelChartDataLabelsCommand : PSCmdlet
-{
+public sealed class SetOfficeExcelChartDataLabelsCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Chart to update.
     [Parameter(Mandatory = true, ValueFromPipeline = true)]
     public ExcelChart Chart { get; set; } = null!;
@@ -95,36 +94,28 @@ public sealed class SetOfficeExcelChartDataLabelsCommand : PSCmdlet
     public SwitchParameter NoLine { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
+    protected override void ProcessRecord() {
+        try {
             Chart.SetDataLabels(ShowValue, ShowCategoryName, ShowSeriesName, ShowLegendKey, ShowPercent, ResolveDataLabelPosition(Position), NumberFormat, SourceLinked);
 
             if (FontSizePoints.HasValue || Bold.HasValue || Italic.HasValue ||
-                !string.IsNullOrWhiteSpace(Color) || !string.IsNullOrWhiteSpace(FontName))
-            {
+                !string.IsNullOrWhiteSpace(Color) || !string.IsNullOrWhiteSpace(FontName)) {
                 Chart.SetDataLabelTextStyle(FontSizePoints, Bold, Italic, Color, FontName);
             }
 
             if (!string.IsNullOrWhiteSpace(FillColor) || !string.IsNullOrWhiteSpace(LineColor) ||
-                LineWidthPoints.HasValue || NoFill.IsPresent || NoLine.IsPresent)
-            {
+                LineWidthPoints.HasValue || NoFill.IsPresent || NoLine.IsPresent) {
                 Chart.SetDataLabelShapeStyle(FillColor, LineColor, LineWidthPoints, NoFill.IsPresent, NoLine.IsPresent);
             }
 
-            WriteObject(Chart);
-        }
-        catch (Exception ex)
-        {
+            WritePassThru(Chart);
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "ExcelChartDataLabelsFailed", ErrorCategory.InvalidOperation, Chart));
         }
     }
 
-    private static OfficeChartDataLabelPosition? ResolveDataLabelPosition(string? value)
-    {
-        return value switch
-        {
+    private static OfficeChartDataLabelPosition? ResolveDataLabelPosition(string? value) {
+        return value switch {
             null => null,
             "BestFit" => OfficeChartDataLabelPosition.BestFit,
             "Bottom" => OfficeChartDataLabelPosition.Bottom,
@@ -138,4 +129,4 @@ protected override void ProcessRecord()
             _ => throw new PSArgumentException($"Unsupported data label position '{value}'.")
         };
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartLegendCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartLegendCommand.cs
index 4e6d006c..1ee9a2d4 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartLegendCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartLegendCommand.cs
@@ -15,8 +15,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Set, "OfficeExcelChartLegend")]
 [OutputType(typeof(ExcelChart))]
-public sealed class SetOfficeExcelChartLegendCommand : PSCmdlet
-{
+public sealed class SetOfficeExcelChartLegendCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Chart to update.
     [Parameter(Mandatory = true, ValueFromPipeline = true)]
     public ExcelChart Chart { get; set; } = null!;
@@ -55,37 +54,27 @@ public sealed class SetOfficeExcelChartLegendCommand : PSCmdlet
     public string? FontName { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
-            if (Hide.IsPresent)
-            {
+    protected override void ProcessRecord() {
+        try {
+            if (Hide.IsPresent) {
                 Chart.HideLegend();
-            }
-            else
-            {
+            } else {
                 Chart.SetLegend(ResolveLegendPosition(Position), Overlay);
             }
 
             if (FontSizePoints.HasValue || Bold.HasValue || Italic.HasValue ||
-                !string.IsNullOrWhiteSpace(Color) || !string.IsNullOrWhiteSpace(FontName))
-            {
+                !string.IsNullOrWhiteSpace(Color) || !string.IsNullOrWhiteSpace(FontName)) {
                 Chart.SetLegendTextStyle(FontSizePoints, Bold, Italic, Color, FontName);
             }
 
-            WriteObject(Chart);
-        }
-        catch (Exception ex)
-        {
+            WritePassThru(Chart);
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "ExcelChartLegendFailed", ErrorCategory.InvalidOperation, Chart));
         }
     }
 
-    private static OfficeChartLegendPosition ResolveLegendPosition(string value)
-    {
-        return value switch
-        {
+    private static OfficeChartLegendPosition ResolveLegendPosition(string value) {
+        return value switch {
             "Bottom" => OfficeChartLegendPosition.Bottom,
             "Left" => OfficeChartLegendPosition.Left,
             "Right" => OfficeChartLegendPosition.Right,
@@ -94,4 +83,4 @@ private static OfficeChartLegendPosition ResolveLegendPosition(string value)
             _ => throw new PSArgumentException($"Unsupported legend position '{value}'.")
         };
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartPointCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartPointCommand.cs
index 7ecf9d5b..20dcbe83 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartPointCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartPointCommand.cs
@@ -14,8 +14,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Set, "OfficeExcelChartPoint", DefaultParameterSetName = ParameterSetIndex)]
 [Alias("ExcelChartPoint")]
 [OutputType(typeof(ExcelChart))]
-public sealed class SetOfficeExcelChartPointCommand : PSCmdlet
-{
+public sealed class SetOfficeExcelChartPointCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetIndex = "Index";
     private const string ParameterSetSeriesName = "Name";
 
@@ -52,35 +51,26 @@ public sealed class SetOfficeExcelChartPointCommand : PSCmdlet
     public double? LineWidthPoints { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
+    protected override void ProcessRecord() {
+        try {
             bool hasFill = !string.IsNullOrWhiteSpace(FillColor);
             bool hasLine = !string.IsNullOrWhiteSpace(LineColor);
-            if (!hasFill && !hasLine && !LineWidthPoints.HasValue)
-            {
+            if (!hasFill && !hasLine && !LineWidthPoints.HasValue) {
                 throw new PSArgumentException("Specify FillColor, LineColor, or LineWidthPoints to style the chart point.");
             }
-            if (LineWidthPoints.HasValue && !hasLine)
-            {
+            if (LineWidthPoints.HasValue && !hasLine) {
                 throw new PSArgumentException("LineColor is required when LineWidthPoints is used.");
             }
 
-            if (ParameterSetName == ParameterSetSeriesName)
-            {
+            if (ParameterSetName == ParameterSetSeriesName) {
                 Chart.SetDataPointColor(SeriesName, PointIndex, FillColor, LineColor, LineWidthPoints, IgnoreCase);
-            }
-            else
-            {
+            } else {
                 Chart.SetDataPointColor(SeriesIndex, PointIndex, FillColor, LineColor, LineWidthPoints);
             }
 
-            WriteObject(Chart);
-        }
-        catch (Exception ex)
-        {
+            WritePassThru(Chart);
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "ExcelChartPointFailed", ErrorCategory.InvalidOperation, Chart));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartSeriesCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartSeriesCommand.cs
index 6ee342a1..911d44d2 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartSeriesCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartSeriesCommand.cs
@@ -17,8 +17,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Set, "OfficeExcelChartSeries", DefaultParameterSetName = ParameterSetIndex)]
 [Alias("ExcelChartSeries")]
 [OutputType(typeof(ExcelChart))]
-public sealed class SetOfficeExcelChartSeriesCommand : PSCmdlet
-{
+public sealed class SetOfficeExcelChartSeriesCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetIndex = "Index";
     private const string ParameterSetSeriesName = "Name";
 
@@ -71,37 +70,26 @@ public sealed class SetOfficeExcelChartSeriesCommand : PSCmdlet
     public double? MarkerLineWidthPoints { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
+    protected override void ProcessRecord() {
+        try {
             var fillColor = FillColor;
-            if (!string.IsNullOrWhiteSpace(fillColor))
-            {
-                if (ParameterSetName == ParameterSetSeriesName)
-                {
+            if (!string.IsNullOrWhiteSpace(fillColor)) {
+                if (ParameterSetName == ParameterSetSeriesName) {
                     Chart.SetSeriesFillColor(SeriesName, fillColor!, IgnoreCase);
-                }
-                else
-                {
+                } else {
                     Chart.SetSeriesFillColor(SeriesIndex, fillColor!);
                 }
             }
 
             var lineColor = LineColor;
-            if (!string.IsNullOrWhiteSpace(lineColor) || LineWidthPoints.HasValue)
-            {
-                if (string.IsNullOrWhiteSpace(lineColor))
-                {
+            if (!string.IsNullOrWhiteSpace(lineColor) || LineWidthPoints.HasValue) {
+                if (string.IsNullOrWhiteSpace(lineColor)) {
                     throw new PSArgumentException("LineColor is required when LineWidthPoints is used because the current OfficeIMO chart API applies series line width together with a line color.");
                 }
 
-                if (ParameterSetName == ParameterSetSeriesName)
-                {
+                if (ParameterSetName == ParameterSetSeriesName) {
                     Chart.SetSeriesLineColor(SeriesName, lineColor!, LineWidthPoints, IgnoreCase);
-                }
-                else
-                {
+                } else {
                     Chart.SetSeriesLineColor(SeriesIndex, lineColor!, LineWidthPoints);
                 }
             }
@@ -109,28 +97,21 @@ protected override void ProcessRecord()
             var markerStyleName = string.IsNullOrWhiteSpace(MarkerStyle) ? "Circle" : MarkerStyle!;
             bool markerRequested = !string.IsNullOrWhiteSpace(MarkerStyle) || MarkerSize.HasValue ||
                 !string.IsNullOrWhiteSpace(MarkerFillColor) || !string.IsNullOrWhiteSpace(MarkerLineColor) || MarkerLineWidthPoints.HasValue;
-            if (markerRequested)
-            {
-                if (!OpenXmlValueParser.TryParse(markerStyleName, out OfficeChartMarkerShape markerStyle))
-                {
+            if (markerRequested) {
+                if (!OpenXmlValueParser.TryParse(markerStyleName, out OfficeChartMarkerShape markerStyle)) {
                     throw new PSArgumentException($"Unknown MarkerStyle '{MarkerStyle}'.");
                 }
 
-                if (ParameterSetName == ParameterSetSeriesName)
-                {
+                if (ParameterSetName == ParameterSetSeriesName) {
                     Chart.SetSeriesMarker(SeriesName, markerStyle, MarkerSize, MarkerFillColor, MarkerLineColor, MarkerLineWidthPoints, IgnoreCase);
-                }
-                else
-                {
+                } else {
                     Chart.SetSeriesMarker(SeriesIndex, markerStyle, MarkerSize, MarkerFillColor, MarkerLineColor, MarkerLineWidthPoints);
                 }
             }
 
-            WriteObject(Chart);
-        }
-        catch (Exception ex)
-        {
+            WritePassThru(Chart);
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "ExcelChartSeriesFailed", ErrorCategory.InvalidOperation, Chart));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartStyleCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartStyleCommand.cs
index 2eb88fb9..fc423aee 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartStyleCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartStyleCommand.cs
@@ -13,8 +13,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Set, "OfficeExcelChartStyle")]
 [OutputType(typeof(ExcelChart))]
-public sealed class SetOfficeExcelChartStyleCommand : PSCmdlet
-{
+public sealed class SetOfficeExcelChartStyleCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Chart to update.
     [Parameter(Mandatory = true, ValueFromPipeline = true)]
     public ExcelChart Chart { get; set; } = null!;
@@ -28,16 +27,12 @@ public sealed class SetOfficeExcelChartStyleCommand : PSCmdlet
     public int ColorStyleId { get; set; } = 10;
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
+    protected override void ProcessRecord() {
+        try {
             Chart.ApplyStylePreset(StyleId, ColorStyleId);
-            WriteObject(Chart);
-        }
-        catch (Exception ex)
-        {
+            WritePassThru(Chart);
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "ExcelChartStyleFailed", ErrorCategory.InvalidOperation, Chart));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartTrendlineCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartTrendlineCommand.cs
index f4e6f840..2c38713e 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartTrendlineCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelChartTrendlineCommand.cs
@@ -17,8 +17,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Set, "OfficeExcelChartTrendline", DefaultParameterSetName = ParameterSetIndex)]
 [Alias("ExcelChartTrendline")]
 [OutputType(typeof(ExcelChart))]
-public sealed class SetOfficeExcelChartTrendlineCommand : PSCmdlet
-{
+public sealed class SetOfficeExcelChartTrendlineCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetIndex = "Index";
     private const string ParameterSetSeriesName = "Name";
 
@@ -79,29 +78,21 @@ public sealed class SetOfficeExcelChartTrendlineCommand : PSCmdlet
     public double? LineWidthPoints { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
-            if (!OpenXmlValueParser.TryParse(Type, out OfficeChartTrendlineType trendlineType))
-            {
+    protected override void ProcessRecord() {
+        try {
+            if (!OpenXmlValueParser.TryParse(Type, out OfficeChartTrendlineType trendlineType)) {
                 throw new PSArgumentException($"Unknown trendline type '{Type}'.");
             }
 
-            if (ParameterSetName == ParameterSetSeriesName)
-            {
+            if (ParameterSetName == ParameterSetSeriesName) {
                 Chart.SetSeriesTrendline(SeriesName, trendlineType, Order, Period, Forward, Backward, Intercept, DisplayEquation.IsPresent, DisplayRSquared.IsPresent, LineColor, LineWidthPoints, IgnoreCase);
-            }
-            else
-            {
+            } else {
                 Chart.SetSeriesTrendline(SeriesIndex, trendlineType, Order, Period, Forward, Backward, Intercept, DisplayEquation.IsPresent, DisplayRSquared.IsPresent, LineColor, LineWidthPoints);
             }
 
-            WriteObject(Chart);
-        }
-        catch (Exception ex)
-        {
+            WritePassThru(Chart);
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "ExcelChartTrendlineFailed", ErrorCategory.InvalidOperation, Chart));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelColumnCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelColumnCommand.cs
index 63862e06..f53b0b7d 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelColumnCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelColumnCommand.cs
@@ -15,8 +15,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Set, "OfficeExcelColumn")]
 [Alias("ExcelColumn")]
-public sealed class SetOfficeExcelColumnCommand : PSCmdlet
-{
+public sealed class SetOfficeExcelColumnCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// 1-based column index.
     [Parameter(Position = 0)]
     public int? Column { get; set; }
@@ -47,29 +46,24 @@ public sealed class SetOfficeExcelColumnCommand : PSCmdlet
     public SwitchParameter AutoFit { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var context = ExcelDslContext.Require(this);
         var sheet = context.RequireSheet();
 
         var columnIndex = ExcelHostExtensions.ResolveColumnIndex(Column, ColumnName);
-        if (columnIndex < 1)
-        {
+        if (columnIndex < 1) {
             throw new ArgumentOutOfRangeException(nameof(Column), "Column index must be 1 or greater.");
         }
 
         var hasAction = false;
 
-        if (Values != null && Values.Length > 0)
-        {
-            if (StartRow < 1)
-            {
+        if (Values != null && Values.Length > 0) {
+            if (StartRow < 1) {
                 throw new ArgumentOutOfRangeException(nameof(StartRow), "StartRow must be 1 or greater.");
             }
 
             var cells = new List<(int Row, int Column, object Value)>(Values.Length);
-            for (int i = 0; i < Values.Length; i++)
-            {
+            for (int i = 0; i < Values.Length; i++) {
                 var value = Values[i] ?? string.Empty;
                 cells.Add((StartRow + i, columnIndex, value));
             }
@@ -77,27 +71,24 @@ protected override void ProcessRecord()
             hasAction = true;
         }
 
-        if (Width.HasValue)
-        {
+        if (Width.HasValue) {
             sheet.SetColumnWidth(columnIndex, Width.Value);
             hasAction = true;
         }
 
-        if (Hidden.HasValue)
-        {
+        if (Hidden.HasValue) {
             sheet.SetColumnHidden(columnIndex, Hidden.Value);
             hasAction = true;
         }
 
-        if (AutoFit.IsPresent)
-        {
+        if (AutoFit.IsPresent) {
             sheet.AutoFitColumn(columnIndex);
             hasAction = true;
         }
 
-        if (!hasAction)
-        {
+        if (!hasAction) {
             throw new PSArgumentException("Provide -Values, -Width, -Hidden, or -AutoFit to update the column.");
         }
+        WritePassThru(sheet);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelColumnGroupCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelColumnGroupCommand.cs
index aa1f5223..e257534c 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelColumnGroupCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelColumnGroupCommand.cs
@@ -15,8 +15,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Set, "OfficeExcelColumnGroup")]
 [Alias("ExcelColumnGroup")]
-public sealed class SetOfficeExcelColumnGroupCommand : PSCmdlet
-{
+public sealed class SetOfficeExcelColumnGroupCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// First 1-based column in the group.
     [Parameter(Position = 0)]
     [Alias("Column")]
@@ -61,8 +60,7 @@ public sealed class SetOfficeExcelColumnGroupCommand : PSCmdlet
     public bool? SummaryRight { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var context = ExcelDslContext.Require(this);
         var sheet = context.RequireSheet();
 
@@ -71,58 +69,45 @@ protected override void ProcessRecord()
             ? ResolveColumn(EndColumn, EndColumnName, nameof(EndColumn))
             : startColumn;
 
-        if (OutlineLevel < 1 || OutlineLevel > 7)
-        {
+        if (OutlineLevel < 1 || OutlineLevel > 7) {
             throw new PSArgumentOutOfRangeException(nameof(OutlineLevel), OutlineLevel, "Excel outline level must be between 1 and 7.");
         }
 
-        if (SummaryRight.HasValue)
-        {
+        if (SummaryRight.HasValue) {
             sheet.SetOutlineSummary(summaryRight: SummaryRight.Value);
         }
 
-        if (Clear.IsPresent)
-        {
+        if (Clear.IsPresent) {
             sheet.ClearColumnGroup(startColumn, endColumn, unhide: !KeepHidden.IsPresent);
+            WritePassThru(sheet);
             return;
         }
 
         sheet.GroupColumns(startColumn, endColumn, (byte)OutlineLevel, Collapsed.IsPresent, Hidden.IsPresent);
+        WritePassThru(sheet);
     }
 
-    private static int ResolveColumn(object? indexOrName, string? name, string parameterName)
-    {
+    private static int ResolveColumn(object? indexOrName, string? name, string parameterName) {
         int? index = null;
         string? columnName = name;
 
-        if (indexOrName is int intValue)
-        {
+        if (indexOrName is int intValue) {
             index = intValue;
-        }
-        else if (indexOrName is long longValue)
-        {
+        } else if (indexOrName is long longValue) {
             index = checked((int)longValue);
-        }
-        else if (indexOrName != null)
-        {
+        } else if (indexOrName != null) {
             var text = Convert.ToString(indexOrName, CultureInfo.InvariantCulture);
-            if (int.TryParse(text, NumberStyles.Integer, CultureInfo.InvariantCulture, out int parsed))
-            {
+            if (int.TryParse(text, NumberStyles.Integer, CultureInfo.InvariantCulture, out int parsed)) {
                 index = parsed;
-            }
-            else
-            {
+            } else {
                 columnName = text;
             }
         }
 
-        try
-        {
+        try {
             return ExcelHostExtensions.ResolveColumnIndex(index, columnName);
-        }
-        catch (Exception exception) when (exception is ArgumentException or FormatException)
-        {
+        } catch (Exception exception) when (exception is ArgumentException or FormatException) {
             throw new PSArgumentException(exception.Message, parameterName);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelColumnStyleByHeaderCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelColumnStyleByHeaderCommand.cs
index 542687a8..578dff77 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelColumnStyleByHeaderCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelColumnStyleByHeaderCommand.cs
@@ -21,8 +21,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Set, "OfficeExcelColumnStyleByHeader", DefaultParameterSetName = ParameterSetContext)]
 [Alias("ExcelColumnStyleByHeader", "ExcelColumnStyle")]
-public sealed class SetOfficeExcelColumnStyleByHeaderCommand : PSCmdlet
-{
+public sealed class SetOfficeExcelColumnStyleByHeaderCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
 
@@ -113,15 +112,12 @@ public sealed class SetOfficeExcelColumnStyleByHeaderCommand : PSCmdlet
     public SwitchParameter IgnoreMissing { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (string.IsNullOrWhiteSpace(Header))
-        {
+    protected override void ProcessRecord() {
+        if (string.IsNullOrWhiteSpace(Header)) {
             throw new PSArgumentException("Header cannot be empty.", nameof(Header));
         }
 
-        if (Decimals < 0)
-        {
+        if (Decimals < 0) {
             throw new ArgumentOutOfRangeException(nameof(Decimals), "Decimals must be zero or greater.");
         }
 
@@ -139,10 +135,8 @@ protected override void ProcessRecord()
             IncludeHeader.IsPresent,
             out var builder,
             out var columnIndex,
-            preferDirectTabularMetadata: !requiresCellMaterialization))
-        {
-            if (IgnoreMissing.IsPresent)
-            {
+            preferDirectTabularMetadata: !requiresCellMaterialization)) {
+            if (IgnoreMissing.IsPresent) {
                 return;
             }
 
@@ -151,39 +145,31 @@ protected override void ProcessRecord()
 
         var hasAction = false;
 
-        if (!string.IsNullOrWhiteSpace(Style))
-        {
+        if (!string.IsNullOrWhiteSpace(Style)) {
             ApplyPreset(builder, Style!);
             hasAction = true;
-        }
-        else if (!string.IsNullOrWhiteSpace(NumberFormat))
-        {
+        } else if (!string.IsNullOrWhiteSpace(NumberFormat)) {
             builder.NumberFormat(NumberFormat!);
             hasAction = true;
         }
 
-        if (Bold.IsPresent)
-        {
+        if (Bold.IsPresent) {
             builder.Bold();
             hasAction = true;
         }
 
-        if (!string.IsNullOrWhiteSpace(BackgroundColor))
-        {
+        if (!string.IsNullOrWhiteSpace(BackgroundColor)) {
             builder.Background(BackgroundColor!);
             hasAction = true;
         }
 
-        if (!string.IsNullOrWhiteSpace(FontColor))
-        {
+        if (!string.IsNullOrWhiteSpace(FontColor)) {
             builder.FontColor(FontColor!);
             hasAction = true;
         }
 
-        if (!string.IsNullOrWhiteSpace(Alignment))
-        {
-            switch (Alignment)
-            {
+        if (!string.IsNullOrWhiteSpace(Alignment)) {
+            switch (Alignment) {
                 case "Left":
                     builder.AlignLeft();
                     break;
@@ -197,49 +183,41 @@ protected override void ProcessRecord()
             hasAction = true;
         }
 
-        if (BackgroundByText != null && BackgroundByText.Count > 0)
-        {
+        if (BackgroundByText != null && BackgroundByText.Count > 0) {
             builder.BackgroundByTextMap(ToStringMap(BackgroundByText, CaseSensitive.IsPresent), !CaseSensitive.IsPresent);
             hasAction = true;
         }
 
-        if (FontColorByText != null && FontColorByText.Count > 0)
-        {
+        if (FontColorByText != null && FontColorByText.Count > 0) {
             builder.FontColorByTextMap(ToStringMap(FontColorByText, CaseSensitive.IsPresent), !CaseSensitive.IsPresent);
             hasAction = true;
         }
 
-        if (BoldByText != null && BoldByText.Length > 0)
-        {
+        if (BoldByText != null && BoldByText.Length > 0) {
             var comparer = CaseSensitive.IsPresent ? StringComparer.Ordinal : StringComparer.OrdinalIgnoreCase;
             builder.BoldByTextSet(new HashSet(BoldByText, comparer), !CaseSensitive.IsPresent);
             hasAction = true;
         }
 
-        if (Width.HasValue)
-        {
+        if (Width.HasValue) {
             sheet.SetColumnWidth(columnIndex, Width.Value);
             hasAction = true;
         }
 
-        if (AutoFit.IsPresent)
-        {
+        if (AutoFit.IsPresent) {
             sheet.AutoFitColumn(columnIndex);
             hasAction = true;
         }
 
-        if (!hasAction)
-        {
+        if (!hasAction) {
             throw new PSArgumentException("Provide a style, color, width, AutoFit, or text map option to update the column.");
         }
+        WritePassThru(sheet);
     }
 
-    private ExcelSheet ResolveSheet()
-    {
-        if (ParameterSetName == ParameterSetDocument)
-        {
-            if (Document == null)
-            {
+    private ExcelSheet ResolveSheet() {
+        if (ParameterSetName == ParameterSetDocument) {
+            if (Document == null) {
                 throw new PSArgumentException("Provide an Excel document.");
             }
 
@@ -249,10 +227,8 @@ private ExcelSheet ResolveSheet()
         return ExcelDslContext.Require(this).RequireSheet();
     }
 
-    private void ApplyPreset(ExcelColumnStyleByHeaderBuilder builder, string style)
-    {
-        switch (style)
-        {
+    private void ApplyPreset(ExcelColumnStyleByHeaderBuilder builder, string style) {
+        switch (style) {
             case "Number":
                 builder.Number(Decimals);
                 break;
@@ -281,8 +257,7 @@ private void ApplyPreset(ExcelColumnStyleByHeaderBuilder builder, string style)
                 builder.Text();
                 break;
             case "NumberFormat":
-                if (string.IsNullOrWhiteSpace(NumberFormat))
-                {
+                if (string.IsNullOrWhiteSpace(NumberFormat)) {
                     throw new PSArgumentException("Provide -NumberFormat when -Style NumberFormat is used.", nameof(NumberFormat));
                 }
                 builder.NumberFormat(NumberFormat!);
@@ -290,30 +265,25 @@ private void ApplyPreset(ExcelColumnStyleByHeaderBuilder builder, string style)
         }
     }
 
-    private CultureInfo? ResolveCulture()
-    {
-        if (string.IsNullOrWhiteSpace(CultureName))
-        {
+    private CultureInfo? ResolveCulture() {
+        if (string.IsNullOrWhiteSpace(CultureName)) {
             return null;
         }
 
         return CultureInfo.GetCultureInfo(CultureName!);
     }
 
-    private static Dictionary ToStringMap(Hashtable table, bool caseSensitive)
-    {
+    private static Dictionary ToStringMap(Hashtable table, bool caseSensitive) {
         var comparer = caseSensitive ? StringComparer.Ordinal : StringComparer.OrdinalIgnoreCase;
         var result = new Dictionary(comparer);
-        foreach (DictionaryEntry entry in table)
-        {
+        foreach (DictionaryEntry entry in table) {
             var key = Convert.ToString(entry.Key, CultureInfo.InvariantCulture);
             var value = Convert.ToString(entry.Value, CultureInfo.InvariantCulture);
-            if (!string.IsNullOrEmpty(key) && !string.IsNullOrEmpty(value))
-            {
+            if (!string.IsNullOrEmpty(key) && !string.IsNullOrEmpty(value)) {
                 result[key] = value;
             }
         }
 
         return result;
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelDataValidationMessageCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelDataValidationMessageCommand.cs
index d6d31307..10e1de49 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelDataValidationMessageCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelDataValidationMessageCommand.cs
@@ -19,16 +19,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Set, "OfficeExcelDataValidationMessage", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.Low, DefaultParameterSetName = ParameterSetContext)]
 [Alias("ExcelDataValidationMessage")]
 [OutputType(typeof(PSObject))]
-public sealed class SetOfficeExcelDataValidationMessageCommand : PSCmdlet
-{
+public sealed class SetOfficeExcelDataValidationMessageCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -93,19 +92,16 @@ public sealed class SetOfficeExcelDataValidationMessageCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (!HasMessageOption())
-        {
+    protected override void ProcessRecord() {
+        if (!HasMessageOption()) {
             throw new PSArgumentException("Specify at least one prompt, error, or display option.");
         }
 
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
         var sheet = ExcelWorkbookCommandService.ResolveSheet(this, workbook.Document, ParameterSetName, Sheet, SheetIndex);
         string targetRange = ExcelTargetRangeResolver.Resolve(sheet, Range, HeaderName, TableName, HeaderRow, IncludeHeader.IsPresent);
         var target = $"{sheet.Name}!{targetRange}";
-        if (!ShouldProcess(target, "Set Excel data validation messages"))
-        {
+        if (!ShouldProcess(target, "Set Excel data validation messages")) {
             return;
         }
 
@@ -119,8 +115,7 @@ protected override void ProcessRecord()
         bool? boundShowErrorMessage = ResolveBoundDisplayFlag(nameof(ShowErrorMessage), ShowErrorMessage);
         bool showInputMessage = boundShowInputMessage ?? HasMessageText(promptTitle, prompt);
         bool showErrorMessage = boundShowErrorMessage ?? HasMessageText(errorTitle, errorMessage);
-        SetDataValidationMessages(sheet, targetRange, new ExcelDataValidationMessageOptions
-        {
+        SetDataValidationMessages(sheet, targetRange, new ExcelDataValidationMessageOptions {
             PromptTitle = promptTitle,
             Prompt = prompt,
             ErrorTitle = errorTitle,
@@ -144,20 +139,17 @@ protected override void ProcessRecord()
 
         workbook.SaveIfOwned();
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             var path = string.Equals(ParameterSetName, ParameterSetPath, StringComparison.OrdinalIgnoreCase)
-                ? InputPath
+                ? Path
                 : null;
-            foreach (var validation in GetDataValidations(sheet, targetRange).Select(validation => ExcelRuleRecordService.CreateDataValidationRecord(validation, sheet.Name, path)))
-            {
+            foreach (var validation in GetDataValidations(sheet, targetRange).Select(validation => ExcelRuleRecordService.CreateDataValidationRecord(validation, sheet.Name, path))) {
                 WriteObject(validation);
             }
         }
     }
 
-    private bool HasMessageOption()
-    {
+    private bool HasMessageOption() {
         return MyInvocation.BoundParameters.ContainsKey(nameof(PromptTitle))
             || MyInvocation.BoundParameters.ContainsKey(nameof(Prompt))
             || MyInvocation.BoundParameters.ContainsKey(nameof(ErrorTitle))
@@ -166,13 +158,11 @@ private bool HasMessageOption()
             || MyInvocation.BoundParameters.ContainsKey(nameof(ShowErrorMessage));
     }
 
-    private string? ResolveMessageValue(string parameterName, string? value, string? existing)
-    {
+    private string? ResolveMessageValue(string parameterName, string? value, string? existing) {
         return MyInvocation.BoundParameters.ContainsKey(parameterName) ? value : existing;
     }
 
-    private bool? ResolveBoundDisplayFlag(string parameterName, SwitchParameter value)
-    {
+    private bool? ResolveBoundDisplayFlag(string parameterName, SwitchParameter value) {
         return MyInvocation.BoundParameters.ContainsKey(parameterName)
             ? value.IsPresent
             : null;
@@ -184,18 +174,13 @@ private static bool HasMessageText(string? title, string? message)
     private static ExcelDataValidationInfo? GetFirstDataValidation(ExcelSheet sheet, string targetRange)
         => GetDataValidations(sheet, targetRange).FirstOrDefault();
 
-    private static IReadOnlyList GetDataValidations(ExcelSheet sheet, string targetRange)
-    {
-        try
-        {
+    private static IReadOnlyList GetDataValidations(ExcelSheet sheet, string targetRange) {
+        try {
             var filtered = sheet.GetDataValidations(targetRange);
-            if (filtered.Count > 0)
-            {
+            if (filtered.Count > 0) {
                 return filtered;
             }
-        }
-        catch (ArgumentException)
-        {
+        } catch (ArgumentException) {
         }
 
         return sheet.GetDataValidations()
@@ -203,18 +188,13 @@ private static IReadOnlyList GetDataValidations(ExcelSh
             .ToArray();
     }
 
-    private static void SetDataValidationMessages(ExcelSheet sheet, string targetRange, ExcelDataValidationMessageOptions options)
-    {
-        try
-        {
+    private static void SetDataValidationMessages(ExcelSheet sheet, string targetRange, ExcelDataValidationMessageOptions options) {
+        try {
             sheet.SetDataValidationMessages(targetRange, options);
-        }
-        catch (ArgumentException)
-        {
-            if (!GetDataValidations(sheet, targetRange).Any())
-            {
+        } catch (ArgumentException) {
+            if (!GetDataValidations(sheet, targetRange).Any()) {
                 throw;
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelFormulaCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelFormulaCommand.cs
index 9cac4203..b99907de 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelFormulaCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelFormulaCommand.cs
@@ -14,8 +14,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Set, "OfficeExcelFormula")]
 [Alias("ExcelFormula")]
-public sealed class SetOfficeExcelFormulaCommand : PSCmdlet
-{
+public sealed class SetOfficeExcelFormulaCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// 1-based row index.
     [Parameter(ParameterSetName = "Coordinates")]
     public int? Row { get; set; }
@@ -33,11 +32,11 @@ public sealed class SetOfficeExcelFormulaCommand : PSCmdlet
     public string Formula { get; set; } = string.Empty;
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var context = ExcelDslContext.Require(this);
         var sheet = context.RequireSheet();
         var (row, column) = ExcelHostExtensions.ResolveCellAddress(Row, Column, Address);
         sheet.Cell(row, column, value: null, formula: Formula, numberFormat: null);
+        WritePassThru(sheet);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelFreezeCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelFreezeCommand.cs
index 5b9b4fa8..4ad27057 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelFreezeCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelFreezeCommand.cs
@@ -19,8 +19,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Set, "OfficeExcelFreeze", DefaultParameterSetName = ParameterSetContext)]
 [Alias("ExcelFreeze")]
-public sealed class SetOfficeExcelFreezeCommand : PSCmdlet
-{
+public sealed class SetOfficeExcelFreezeCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
 
@@ -44,28 +43,23 @@ public sealed class SetOfficeExcelFreezeCommand : PSCmdlet
     public int LeftColumns { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (TopRows < 0 || LeftColumns < 0)
-        {
+    protected override void ProcessRecord() {
+        if (TopRows < 0 || LeftColumns < 0) {
             throw new PSArgumentException("TopRows and LeftColumns must be zero or greater.");
         }
 
-        if (TopRows == 0 && LeftColumns == 0)
-        {
+        if (TopRows == 0 && LeftColumns == 0) {
             throw new PSArgumentException("Specify TopRows and/or LeftColumns to freeze.");
         }
 
         var sheet = ResolveSheet();
         sheet.Freeze(TopRows, LeftColumns);
+        WritePassThru(sheet);
     }
 
-    private ExcelSheet ResolveSheet()
-    {
-        if (ParameterSetName == ParameterSetDocument)
-        {
-            if (Document == null)
-            {
+    private ExcelSheet ResolveSheet() {
+        if (ParameterSetName == ParameterSetDocument) {
+            if (Document == null) {
                 throw new PSArgumentException("Provide an Excel document.");
             }
 
@@ -75,4 +69,4 @@ private ExcelSheet ResolveSheet()
         var context = ExcelDslContext.Require(this);
         return context.RequireSheet();
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelPrintAreaCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelPrintAreaCommand.cs
index a8a35d4b..dc0cc5bc 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelPrintAreaCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelPrintAreaCommand.cs
@@ -17,16 +17,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Set, "OfficeExcelPrintArea", DefaultParameterSetName = ParameterSetContext, SupportsShouldProcess = true)]
 [Alias("ExcelPrintArea")]
-public sealed class SetOfficeExcelPrintAreaCommand : PSCmdlet
-{
+public sealed class SetOfficeExcelPrintAreaCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -50,11 +49,9 @@ public sealed class SetOfficeExcelPrintAreaCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
-        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, InputPath, "Update Excel workbook"))
-        {
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
+        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, Path, "Update Excel workbook")) {
             return;
         }
 
@@ -63,9 +60,8 @@ protected override void ProcessRecord()
         document.SetPrintArea(sheet, Range, save: false);
         workbook.SaveIfOwned();
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteObject(sheet);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelPrintLayoutCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelPrintLayoutCommand.cs
index 43c57f65..0e107bba 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelPrintLayoutCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelPrintLayoutCommand.cs
@@ -16,16 +16,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Set, "OfficeExcelPrintLayout", DefaultParameterSetName = ParameterSetContext, SupportsShouldProcess = true)]
 [Alias("ExcelPrintLayout")]
 [OutputType(typeof(ExcelSheet), typeof(PSObject))]
-public sealed class SetOfficeExcelPrintLayoutCommand : PSCmdlet
-{
+public sealed class SetOfficeExcelPrintLayoutCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -97,18 +96,15 @@ public sealed class SetOfficeExcelPrintLayoutCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
-        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, InputPath, "Update Excel workbook"))
-        {
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
+        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, Path, "Update Excel workbook")) {
             return;
         }
 
         var document = workbook.Document;
         var sheet = ExcelWorkbookCommandService.ResolveSheet(this, document, ParameterSetName, Sheet, SheetIndex);
-        sheet.ApplyPrintLayout(new ExcelPrintLayoutOptions
-        {
+        sheet.ApplyPrintLayout(new ExcelPrintLayoutOptions {
             Preset = Preset,
             PrintArea = PrintArea,
             Orientation = Orientation,
@@ -126,18 +122,16 @@ protected override void ProcessRecord()
 
         workbook.SaveIfOwned();
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteObject(string.Equals(ParameterSetName, ParameterSetPath, StringComparison.OrdinalIgnoreCase)
                 ? CreatePathRecord(document, sheet)
                 : sheet);
         }
     }
 
-    private PSObject CreatePathRecord(ExcelDocument document, ExcelSheet sheet)
-    {
+    private PSObject CreatePathRecord(ExcelDocument document, ExcelSheet sheet) {
         var item = new PSObject();
-        item.Properties.Add(new PSNoteProperty("Path", document.FilePath ?? SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath)));
+        item.Properties.Add(new PSNoteProperty("Path", document.FilePath ?? SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path)));
         item.Properties.Add(new PSNoteProperty("Name", sheet.Name));
         item.Properties.Add(new PSNoteProperty("SheetName", sheet.Name));
         item.Properties.Add(new PSNoteProperty("SheetIndex", ResolveSheetIndex(document, sheet)));
@@ -145,16 +139,13 @@ private PSObject CreatePathRecord(ExcelDocument document, ExcelSheet sheet)
         return item;
     }
 
-    private static int ResolveSheetIndex(ExcelDocument document, ExcelSheet sheet)
-    {
-        for (int i = 0; i < document.Sheets.Count; i++)
-        {
-            if (string.Equals(document.Sheets[i].Name, sheet.Name, StringComparison.OrdinalIgnoreCase))
-            {
+    private static int ResolveSheetIndex(ExcelDocument document, ExcelSheet sheet) {
+        for (int i = 0; i < document.Sheets.Count; i++) {
+            if (string.Equals(document.Sheets[i].Name, sheet.Name, StringComparison.OrdinalIgnoreCase)) {
                 return i;
             }
         }
 
         return -1;
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelPrintTitlesCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelPrintTitlesCommand.cs
index 0758a685..a5439716 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelPrintTitlesCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelPrintTitlesCommand.cs
@@ -18,16 +18,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Set, "OfficeExcelPrintTitles", DefaultParameterSetName = ParameterSetContext, SupportsShouldProcess = true)]
 [Alias("ExcelPrintTitles")]
-public sealed class SetOfficeExcelPrintTitlesCommand : PSCmdlet
-{
+public sealed class SetOfficeExcelPrintTitlesCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -67,18 +66,14 @@ public sealed class SetOfficeExcelPrintTitlesCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (!Clear.IsPresent && !HasRows() && !HasColumns())
-        {
+    protected override void ProcessRecord() {
+        if (!Clear.IsPresent && !HasRows() && !HasColumns()) {
             throw new PSArgumentException("Provide row titles, column titles, or -Clear.");
         }
 
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
 
-        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, InputPath, "Update Excel workbook"))
-
-        {
+        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, Path, "Update Excel workbook")) {
 
             return;
 
@@ -95,20 +90,17 @@ protected override void ProcessRecord()
             save: false);
         workbook.SaveIfOwned();
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteObject(sheet);
         }
     }
 
-    private bool HasRows()
-    {
+    private bool HasRows() {
         return FirstRow.HasValue && LastRow.HasValue;
     }
 
-    private bool HasColumns()
-    {
+    private bool HasColumns() {
         return FirstColumn.HasValue && LastColumn.HasValue;
     }
 
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelRefreshOnOpenCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelRefreshOnOpenCommand.cs
index aa887297..ae1df329 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelRefreshOnOpenCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelRefreshOnOpenCommand.cs
@@ -16,16 +16,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Set, "OfficeExcelRefreshOnOpen", DefaultParameterSetName = ParameterSetContext, SupportsShouldProcess = true)]
 [Alias("ExcelRefreshOnOpen")]
 [OutputType(typeof(PSObject))]
-public sealed class SetOfficeExcelRefreshOnOpenCommand : PSCmdlet
-{
+public sealed class SetOfficeExcelRefreshOnOpenCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -56,11 +55,9 @@ public sealed class SetOfficeExcelRefreshOnOpenCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
-        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, InputPath, "Update Excel workbook"))
-        {
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
+        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, Path, "Update Excel workbook")) {
             return;
         }
 
@@ -76,8 +73,7 @@ protected override void ProcessRecord()
 
         workbook.SaveIfOwned();
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             var output = new PSObject();
             output.Properties.Add(new PSNoteProperty("Enabled", result.Enabled));
             output.Properties.Add(new PSNoteProperty("PivotCacheCount", result.PivotCacheCount));
@@ -86,23 +82,19 @@ protected override void ProcessRecord()
         }
     }
 
-    private bool? ResolveSavePivotSourceData()
-    {
-        if (SavePivotSourceData.IsPresent && NoSavePivotSourceData.IsPresent)
-        {
+    private bool? ResolveSavePivotSourceData() {
+        if (SavePivotSourceData.IsPresent && NoSavePivotSourceData.IsPresent) {
             throw new PSArgumentException("Specify either SavePivotSourceData or NoSavePivotSourceData, not both.");
         }
 
-        if (SavePivotSourceData.IsPresent)
-        {
+        if (SavePivotSourceData.IsPresent) {
             return true;
         }
 
-        if (NoSavePivotSourceData.IsPresent)
-        {
+        if (NoSavePivotSourceData.IsPresent) {
             return false;
         }
 
         return null;
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelRichTextCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelRichTextCommand.cs
index 769efbcc..3bd5bb73 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelRichTextCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelRichTextCommand.cs
@@ -15,16 +15,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Set, "OfficeExcelRichText", DefaultParameterSetName = ParameterSetContext, SupportsShouldProcess = true)]
 [Alias("ExcelRichText")]
-public sealed class SetOfficeExcelRichTextCommand : PSCmdlet
-{
+public sealed class SetOfficeExcelRichTextCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -67,12 +66,10 @@ public sealed class SetOfficeExcelRichTextCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var runs = ExcelRichTextRunService.ToRuns(Run);
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
-        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, InputPath, "Update Excel workbook"))
-        {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
+        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, Path, "Update Excel workbook")) {
             return;
         }
 
@@ -81,22 +78,19 @@ protected override void ProcessRecord()
         sheet.SetRichText(row, column, runs);
         workbook.SaveIfOwned();
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteRuns(sheet, row, column);
         }
     }
 
-    private void WriteRuns(ExcelSheet sheet, int row, int column)
-    {
+    private void WriteRuns(ExcelSheet sheet, int row, int column) {
         var address = A1.CellReference(row, column);
         var path = string.Equals(ParameterSetName, ParameterSetPath, System.StringComparison.OrdinalIgnoreCase)
-            ? InputPath
+            ? Path
             : null;
         var runs = sheet.GetRichText(row, column);
-        for (var index = 0; index < runs.Count; index++)
-        {
+        for (var index = 0; index < runs.Count; index++) {
             WriteObject(ExcelRichTextRunService.CreateRecord(runs[index], index, address, row, column, sheet.Name, path));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelRowCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelRowCommand.cs
index 22dd5aeb..0827dbed 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelRowCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelRowCommand.cs
@@ -15,8 +15,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Set, "OfficeExcelRow")]
 [Alias("ExcelRow")]
-public sealed class SetOfficeExcelRowCommand : PSCmdlet
-{
+public sealed class SetOfficeExcelRowCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// 1-based row index.
     [Parameter(Mandatory = true, Position = 0)]
     public int Row { get; set; }
@@ -78,33 +77,27 @@ public sealed class SetOfficeExcelRowCommand : PSCmdlet
     public int? LastColumn { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var context = ExcelDslContext.Require(this);
         var sheet = context.RequireSheet();
 
-        if (Row < 1)
-        {
+        if (Row < 1) {
             throw new ArgumentOutOfRangeException(nameof(Row), "Row index must be 1 or greater.");
         }
 
-        if (StartColumn < 1)
-        {
+        if (StartColumn < 1) {
             throw new ArgumentOutOfRangeException(nameof(StartColumn), "StartColumn must be 1 or greater.");
         }
 
         var values = Values ?? Array.Empty();
         var hasLayout = HasLayoutOptions();
-        if (values.Length == 0 && !hasLayout)
-        {
+        if (values.Length == 0 && !hasLayout) {
             throw new PSArgumentException("Provide row values or at least one layout/style option.", nameof(Values));
         }
 
-        if (values.Length > 0)
-        {
+        if (values.Length > 0) {
             var cells = new List<(int Row, int Column, object Value)>(values.Length);
-            for (int i = 0; i < values.Length; i++)
-            {
+            for (int i = 0; i < values.Length; i++) {
                 var value = values[i] ?? string.Empty;
                 cells.Add((Row, StartColumn + i, value));
             }
@@ -112,8 +105,7 @@ protected override void ProcessRecord()
             sheet.CellValues(cells);
         }
 
-        if (hasLayout)
-        {
+        if (hasLayout) {
             sheet.SetRowLayout(Row, new ExcelRowLayoutOptions {
                 Height = Height,
                 ClearHeight = ClearHeight.IsPresent,
@@ -129,10 +121,10 @@ protected override void ProcessRecord()
                 LastColumn = LastColumn ?? (values.Length > 0 ? StartColumn + values.Length - 1 : null)
             });
         }
+        WritePassThru(sheet);
     }
 
-    private bool HasLayoutOptions()
-    {
+    private bool HasLayoutOptions() {
         return Height.HasValue ||
             ClearHeight.IsPresent ||
             AutoFit.IsPresent ||
@@ -146,4 +138,4 @@ private bool HasLayoutOptions()
             FirstColumn.HasValue ||
             LastColumn.HasValue;
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelRowGroupCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelRowGroupCommand.cs
index 445dcb6a..730c901e 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelRowGroupCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelRowGroupCommand.cs
@@ -14,8 +14,7 @@ namespace PSWriteOffice.Cmdlets.Excel;
 /// 
 [Cmdlet(VerbsCommon.Set, "OfficeExcelRowGroup")]
 [Alias("ExcelRowGroup")]
-public sealed class SetOfficeExcelRowGroupCommand : PSCmdlet
-{
+public sealed class SetOfficeExcelRowGroupCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// First 1-based row in the group.
     [Parameter(Mandatory = true, Position = 0)]
     public int StartRow { get; set; }
@@ -49,28 +48,26 @@ public sealed class SetOfficeExcelRowGroupCommand : PSCmdlet
     public bool? SummaryBelow { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var context = ExcelDslContext.Require(this);
         var sheet = context.RequireSheet();
         var lastRow = EndRow ?? StartRow;
 
-        if (OutlineLevel < 1 || OutlineLevel > 7)
-        {
+        if (OutlineLevel < 1 || OutlineLevel > 7) {
             throw new PSArgumentOutOfRangeException(nameof(OutlineLevel), OutlineLevel, "Excel outline level must be between 1 and 7.");
         }
 
-        if (SummaryBelow.HasValue)
-        {
+        if (SummaryBelow.HasValue) {
             sheet.SetOutlineSummary(summaryBelow: SummaryBelow.Value);
         }
 
-        if (Clear.IsPresent)
-        {
+        if (Clear.IsPresent) {
             sheet.ClearRowGroup(StartRow, lastRow, unhide: !KeepHidden.IsPresent);
+            WritePassThru(sheet);
             return;
         }
 
         sheet.GroupRows(StartRow, lastRow, (byte)OutlineLevel, Collapsed.IsPresent, Hidden.IsPresent);
+        WritePassThru(sheet);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelThemeCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelThemeCommand.cs
index 069de7ff..6f69c7a5 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelThemeCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelThemeCommand.cs
@@ -17,16 +17,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsCommon.Set, "OfficeExcelTheme", DefaultParameterSetName = ParameterSetContext, SupportsShouldProcess = true)]
 [Alias("ExcelTheme")]
 [OutputType(typeof(PSObject))]
-public sealed class SetOfficeExcelThemeCommand : PSCmdlet
-{
+public sealed class SetOfficeExcelThemeCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -53,42 +52,31 @@ public sealed class SetOfficeExcelThemeCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
-        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, InputPath, "Update Excel workbook"))
-        {
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
+        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, Path, "Update Excel workbook")) {
             return;
         }
 
 
         string? xml = ResolveThemeXml();
-        if (Default.IsPresent)
-        {
+        if (Default.IsPresent) {
             workbook.Document.ResetWorkbookTheme(Name);
-        }
-        else if (xml != null)
-        {
+        } else if (xml != null) {
             workbook.Document.SetWorkbookThemeXml(xml);
-            if (!string.IsNullOrWhiteSpace(Name))
-            {
+            if (!string.IsNullOrWhiteSpace(Name)) {
                 workbook.Document.SetWorkbookThemeName(Name!);
             }
-        }
-        else if (!string.IsNullOrWhiteSpace(Name))
-        {
+        } else if (!string.IsNullOrWhiteSpace(Name)) {
             workbook.Document.SetWorkbookThemeName(Name!);
-        }
-        else
-        {
+        } else {
             throw new PSArgumentException("Specify -Default, -Xml, -XmlPath, or -Name.");
         }
 
         ExcelWorkbookThemeInfo info = workbook.Document.GetWorkbookTheme(includeXml: false);
         workbook.SaveIfOwned();
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             var result = new PSObject();
             result.Properties.Add(new PSNoteProperty("HasTheme", info.HasTheme));
             result.Properties.Add(new PSNoteProperty("Name", info.Name));
@@ -96,24 +84,20 @@ protected override void ProcessRecord()
         }
     }
 
-    private string? ResolveThemeXml()
-    {
-        if (!string.IsNullOrWhiteSpace(Xml) && !string.IsNullOrWhiteSpace(XmlPath))
-        {
+    private string? ResolveThemeXml() {
+        if (!string.IsNullOrWhiteSpace(Xml) && !string.IsNullOrWhiteSpace(XmlPath)) {
             throw new PSArgumentException("Specify either Xml or XmlPath, not both.");
         }
 
-        if (!string.IsNullOrWhiteSpace(Xml))
-        {
+        if (!string.IsNullOrWhiteSpace(Xml)) {
             return Xml;
         }
 
-        if (string.IsNullOrWhiteSpace(XmlPath))
-        {
+        if (string.IsNullOrWhiteSpace(XmlPath)) {
             return null;
         }
 
         string resolved = SessionState.Path.GetUnresolvedProviderPathFromPSPath(XmlPath!);
         return File.ReadAllText(resolved);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/TestOfficeExcelAccessibilityCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/TestOfficeExcelAccessibilityCommand.cs
index 3b3d82a9..788a2667 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/TestOfficeExcelAccessibilityCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/TestOfficeExcelAccessibilityCommand.cs
@@ -19,15 +19,14 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsDiagnostic.Test, "OfficeExcelAccessibility", DefaultParameterSetName = ParameterSetPath)]
 [Alias("ExcelAccessibility")]
 [OutputType(typeof(PSObject))]
-public sealed class TestOfficeExcelAccessibilityCommand : PSCmdlet
-{
+public sealed class TestOfficeExcelAccessibilityCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Workbook path.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook document.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -37,12 +36,10 @@ public sealed class TestOfficeExcelAccessibilityCommand : PSCmdlet
     [Parameter]
     public SwitchParameter Quiet { get; set; }
 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: true);
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: true);
         var report = workbook.Document.AnalyzeAccessibility();
-        if (Quiet.IsPresent)
-        {
+        if (Quiet.IsPresent) {
             WriteObject(!report.HasWarnings);
             return;
         }
@@ -55,8 +52,7 @@ protected override void ProcessRecord()
         WriteObject(output);
     }
 
-    private static PSObject CreateFinding(ExcelAccessibilityFinding finding)
-    {
+    private static PSObject CreateFinding(ExcelAccessibilityFinding finding) {
         var item = new PSObject();
         item.Properties.Add(new PSNoteProperty("Category", finding.Category));
         item.Properties.Add(new PSNoteProperty("Severity", finding.Severity.ToString()));
@@ -66,4 +62,4 @@ private static PSObject CreateFinding(ExcelAccessibilityFinding finding)
         return item;
     }
 }
-#pragma warning restore CS1591
+#pragma warning restore CS1591
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/TestOfficeExcelTemplateBindingCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/TestOfficeExcelTemplateBindingCommand.cs
index fe9708e5..6967abf6 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/TestOfficeExcelTemplateBindingCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/TestOfficeExcelTemplateBindingCommand.cs
@@ -23,15 +23,14 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsDiagnostic.Test, "OfficeExcelTemplateBinding", DefaultParameterSetName = ParameterSetPath)]
 [Alias("ExcelTemplateBinding", "ExcelTemplateValidate")]
 [OutputType(typeof(PSObject), typeof(string), typeof(bool))]
-public sealed class TestOfficeExcelTemplateBindingCommand : PSCmdlet
-{
+public sealed class TestOfficeExcelTemplateBindingCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Workbook path.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook document.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -53,22 +52,18 @@ public sealed class TestOfficeExcelTemplateBindingCommand : PSCmdlet
     [Parameter]
     public SwitchParameter ThrowOnMissing { get; set; }
 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: true);
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: true);
         var bindings = Binding.Cast().ToDictionary(entry => entry.Key.ToString() ?? string.Empty, entry => entry.Value, System.StringComparer.OrdinalIgnoreCase);
         var report = workbook.Document.ValidateTemplateBindings(bindings);
-        if (ThrowOnMissing.IsPresent)
-        {
+        if (ThrowOnMissing.IsPresent) {
             report.Inspection.EnsureAllMarkersBound();
         }
-        if (Quiet.IsPresent)
-        {
+        if (Quiet.IsPresent) {
             WriteObject(report.Passed);
             return;
         }
-        if (AsMarkdown.IsPresent)
-        {
+        if (AsMarkdown.IsPresent) {
             WriteObject(report.Markdown);
             return;
         }
@@ -82,4 +77,4 @@ protected override void ProcessRecord()
         WriteObject(output);
     }
 }
-#pragma warning restore CS1591
+#pragma warning restore CS1591
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/TestOfficeExcelWorkbookCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/TestOfficeExcelWorkbookCommand.cs
index d396399b..7ca2c738 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/TestOfficeExcelWorkbookCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/TestOfficeExcelWorkbookCommand.cs
@@ -22,15 +22,14 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsDiagnostic.Test, "OfficeExcelWorkbook", DefaultParameterSetName = ParameterSetPath, SupportsShouldProcess = true)]
 [Alias("ExcelWorkbookDoctor", "ExcelDoctor")]
 [OutputType(typeof(PSObject))]
-public sealed class TestOfficeExcelWorkbookCommand : PSCmdlet
-{
+public sealed class TestOfficeExcelWorkbookCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Workbook path.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook document.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -46,28 +45,23 @@ public sealed class TestOfficeExcelWorkbookCommand : PSCmdlet
     [Parameter]
     public SwitchParameter Quiet { get; set; }
 
-    protected override void ProcessRecord()
-    {
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: !RepairDefinedNames.IsPresent);
+    protected override void ProcessRecord() {
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: !RepairDefinedNames.IsPresent);
         if (RepairDefinedNames.IsPresent &&
-            !ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, InputPath, "Repair Excel workbook diagnostics"))
-        {
+            !ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, Path, "Repair Excel workbook diagnostics")) {
             return;
         }
 
-        var report = workbook.Document.RunWorkbookDoctor(new ExcelWorkbookDoctorOptions
-        {
+        var report = workbook.Document.RunWorkbookDoctor(new ExcelWorkbookDoctorOptions {
             ValidateOpenXml = !SkipOpenXmlValidation.IsPresent,
             RepairDefinedNames = RepairDefinedNames.IsPresent
         });
 
-        if (RepairDefinedNames.IsPresent)
-        {
+        if (RepairDefinedNames.IsPresent) {
             workbook.SaveIfOwned();
         }
 
-        if (Quiet.IsPresent)
-        {
+        if (Quiet.IsPresent) {
             WriteObject(!report.HasErrors);
             return;
         }
@@ -82,8 +76,7 @@ protected override void ProcessRecord()
         WriteObject(output);
     }
 
-    private static PSObject CreateIssue(ExcelWorkbookDiagnosticIssue issue)
-    {
+    private static PSObject CreateIssue(ExcelWorkbookDiagnosticIssue issue) {
         var item = new PSObject();
         item.Properties.Add(new PSNoteProperty("Category", issue.Category));
         item.Properties.Add(new PSNoteProperty("Severity", issue.Severity.ToString()));
@@ -94,4 +87,4 @@ private static PSObject CreateIssue(ExcelWorkbookDiagnosticIssue issue)
         return item;
     }
 }
-#pragma warning restore CS1591
+#pragma warning restore CS1591
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/UnprotectOfficeExcelWorkbookCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/UnprotectOfficeExcelWorkbookCommand.cs
index dd264afe..a7b43ef4 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/UnprotectOfficeExcelWorkbookCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/UnprotectOfficeExcelWorkbookCommand.cs
@@ -17,16 +17,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsSecurity.Unprotect, "OfficeExcelWorkbook", DefaultParameterSetName = ParameterSetContext, SupportsShouldProcess = true)]
 [Alias("ExcelWorkbookUnprotect")]
 [OutputType(typeof(ExcelDocument), typeof(FileInfo))]
-public sealed class UnprotectOfficeExcelWorkbookCommand : PSCmdlet
-{
+public sealed class UnprotectOfficeExcelWorkbookCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -37,18 +36,15 @@ public sealed class UnprotectOfficeExcelWorkbookCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var pathPassThru = string.Equals(ParameterSetName, ParameterSetPath, System.StringComparison.OrdinalIgnoreCase);
         string? resolvedPath = pathPassThru
-            ? SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath)
+            ? SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path)
             : null;
 
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
 
-        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, InputPath, "Update Excel workbook"))
-
-        {
+        if (!ExcelShouldProcessService.ShouldProcessWorkbook(this, workbook.Document, Path, "Update Excel workbook")) {
 
             return;
 
@@ -58,9 +54,8 @@ protected override void ProcessRecord()
         document.UnprotectWorkbook();
         workbook.SaveIfOwned();
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteObject(pathPassThru ? new FileInfo(resolvedPath!) : document);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/UpdateOfficeExcelCommentCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/UpdateOfficeExcelCommentCommand.cs
index a143b453..d5da4c6e 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/UpdateOfficeExcelCommentCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/UpdateOfficeExcelCommentCommand.cs
@@ -17,16 +17,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsData.Update, "OfficeExcelComment", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.Medium, DefaultParameterSetName = ParameterSetContext)]
 [Alias("ExcelCommentUpdate")]
 [OutputType(typeof(int))]
-public sealed class UpdateOfficeExcelCommentCommand : PSCmdlet
-{
+public sealed class UpdateOfficeExcelCommentCommand : PSCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -82,20 +81,16 @@ public sealed class UpdateOfficeExcelCommentCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var filter = CreateRequiredFilter();
-        if (string.IsNullOrWhiteSpace(Text) == (Run == null || Run.Length == 0))
-        {
+        if (string.IsNullOrWhiteSpace(Text) == (Run == null || Run.Length == 0)) {
             throw new PSArgumentException("Specify exactly one of -Text or -Run.");
         }
 
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
         var updated = 0;
-        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex))
-        {
-            if (!ShouldProcess(sheet.Name, "Update Excel comments"))
-            {
+        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, workbook.Document, ParameterSetName, Sheet, SheetIndex)) {
+            if (!ShouldProcess(sheet.Name, "Update Excel comments")) {
                 continue;
             }
 
@@ -104,21 +99,17 @@ protected override void ProcessRecord()
                 : sheet.UpdateCommentsRichText(filter, ExcelRichTextRunService.ToRuns(Run), Author, Initials);
         }
 
-        if (updated > 0)
-        {
+        if (updated > 0) {
             workbook.SaveIfOwned();
         }
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteObject(updated);
         }
     }
 
-    private ExcelCommentFilter CreateRequiredFilter()
-    {
-        if (!string.IsNullOrWhiteSpace(Address) && !string.IsNullOrWhiteSpace(Range))
-        {
+    private ExcelCommentFilter CreateRequiredFilter() {
+        if (!string.IsNullOrWhiteSpace(Address) && !string.IsNullOrWhiteSpace(Range)) {
             throw new PSArgumentException("Specify either -Address or -Range, not both.");
         }
 
@@ -126,16 +117,14 @@ private ExcelCommentFilter CreateRequiredFilter()
             || !string.IsNullOrWhiteSpace(Range)
             || !string.IsNullOrWhiteSpace(MatchAuthor)
             || !string.IsNullOrWhiteSpace(TextContains);
-        if (!hasFilter && !All.IsPresent)
-        {
+        if (!hasFilter && !All.IsPresent) {
             throw new PSArgumentException("Specify a comment filter or use -All.");
         }
 
-        return new ExcelCommentFilter
-        {
+        return new ExcelCommentFilter {
             A1Range = !string.IsNullOrWhiteSpace(Address) ? Address : Range,
             Author = MatchAuthor,
             TextContains = TextContains
         };
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/UpdateOfficeExcelTextCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/UpdateOfficeExcelTextCommand.cs
index a0ec6fba..c6bfe475 100644
--- a/Sources/PSWriteOffice/Cmdlets/Excel/UpdateOfficeExcelTextCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Excel/UpdateOfficeExcelTextCommand.cs
@@ -21,16 +21,15 @@ namespace PSWriteOffice.Cmdlets.Excel;
 [Cmdlet(VerbsData.Update, "OfficeExcelText", DefaultParameterSetName = ParameterSetPath, SupportsShouldProcess = true)]
 [Alias("Replace-OfficeExcelText")]
 [OutputType(typeof(int))]
-public sealed class UpdateOfficeExcelTextCommand : PSCmdlet
-{
+public sealed class UpdateOfficeExcelTextCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetContext = "Context";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
 
     /// Workbook path to update.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "FilePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Workbook to update outside the DSL context.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -65,64 +64,55 @@ public sealed class UpdateOfficeExcelTextCommand : PSCmdlet
     [Parameter]
     public SwitchParameter Regex { get; set; }
 
-    /// Open the file after saving when using -Path.
+    /// Open the file after saving when using -System.IO.Path.
     [Parameter(ParameterSetName = ParameterSetPath)]
-    public SwitchParameter Show { get; set; }
+    [Alias("Show")]
+    public SwitchParameter Open { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (ParameterSetName == ParameterSetPath)
-        {
-            var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
-            if (!ShouldProcess(resolvedPath, "Update Excel workbook text"))
-            {
+    protected override void ProcessRecord() {
+        if (ParameterSetName == ParameterSetPath) {
+            var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
+            if (!ShouldProcess(resolvedPath, "Update Excel workbook text")) {
                 return;
             }
         }
 
         var replacements = 0;
-        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, InputPath, Document, readOnly: false);
+        using var workbook = ExcelWorkbookCommandService.ResolveWorkbook(this, ParameterSetName, Path, Document, readOnly: false);
         var document = workbook.Document;
         if (ParameterSetName != ParameterSetPath &&
-            !ExcelShouldProcessService.ShouldProcessWorkbook(this, document, null, "Update Excel workbook text"))
-        {
+            !ExcelShouldProcessService.ShouldProcessWorkbook(this, document, null, "Update Excel workbook text")) {
             return;
         }
 
-        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, document, ParameterSetName, Sheet, SheetIndex))
-        {
+        foreach (var sheet in ExcelWorkbookCommandService.ResolveSheets(this, document, ParameterSetName, Sheet, SheetIndex)) {
             replacements += ReplaceInSheet(sheet);
         }
 
         workbook.SaveIfOwned();
-        var openPath = workbook.OwnsDocument && Show.IsPresent
-            ? document.FilePath ?? InputPath
+        var openPath = workbook.OwnsDocument && Open.IsPresent
+            ? document.FilePath ?? Path
             : null;
 
-        if (!string.IsNullOrWhiteSpace(openPath))
-        {
+        if (!string.IsNullOrWhiteSpace(openPath)) {
             workbook.Dispose();
             FileOpenService.Open(openPath!);
         }
 
-        WriteObject(replacements);
+        WritePassThru(replacements);
     }
 
-    private int ReplaceInSheet(ExcelSheet sheet)
-    {
+    private int ReplaceInSheet(ExcelSheet sheet) {
         var count = 0;
         var range = string.IsNullOrWhiteSpace(Range) ? sheet.UsedRangeA1 : Range!;
-        foreach (var cell in sheet.EnumerateRange(range))
-        {
-            if (cell.Value is not string text)
-            {
+        foreach (var cell in sheet.EnumerateRange(range)) {
+            if (cell.Value is not string text) {
                 continue;
             }
 
             var updated = ReplaceString(text, out var cellReplacements);
-            if (cellReplacements == 0)
-            {
+            if (cellReplacements == 0) {
                 continue;
             }
 
@@ -133,18 +123,15 @@ private int ReplaceInSheet(ExcelSheet sheet)
         return count;
     }
 
-    private string ReplaceString(string value, out int replacements)
-    {
+    private string ReplaceString(string value, out int replacements) {
         replacements = 0;
-        if (Regex.IsPresent)
-        {
+        if (Regex.IsPresent) {
             var options = CaseSensitive.IsPresent ? RegexOptions.None : RegexOptions.IgnoreCase;
             var count = 0;
             var updated = System.Text.RegularExpressions.Regex.Replace(
                 value,
                 OldValue,
-                match =>
-                {
+                match => {
                     count++;
                     return NewValue;
                 },
@@ -155,14 +142,12 @@ private string ReplaceString(string value, out int replacements)
 
         var comparison = CaseSensitive.IsPresent ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase;
         var index = value.IndexOf(OldValue, comparison);
-        if (index < 0)
-        {
+        if (index < 0) {
             return value;
         }
 
         var result = value;
-        while (index >= 0)
-        {
+        while (index >= 0) {
             result = result.Substring(0, index) + NewValue + result.Substring(index + OldValue.Length);
             replacements++;
             index = result.IndexOf(OldValue, index + NewValue.Length, comparison);
@@ -171,4 +156,4 @@ private string ReplaceString(string value, out int replacements)
         return result;
     }
 
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Markdown/ConvertFromOfficeMarkdownHtmlCommand.cs b/Sources/PSWriteOffice/Cmdlets/Markdown/ConvertFromOfficeMarkdownHtmlCommand.cs
index 3384074d..01d5eb1d 100644
--- a/Sources/PSWriteOffice/Cmdlets/Markdown/ConvertFromOfficeMarkdownHtmlCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Markdown/ConvertFromOfficeMarkdownHtmlCommand.cs
@@ -27,8 +27,7 @@ namespace PSWriteOffice.Cmdlets.Markdown;
 [Alias("ConvertFrom-MarkdownHtml")]
 [OutputType(typeof(string), typeof(FileInfo), typeof(MarkdownDoc))]
 public sealed class ConvertFromOfficeMarkdownHtmlCommand : PSCmdlet
-    , IMarkdownWriteOptionSource
-{
+    , IMarkdownWriteOptionSource {
     private const string ParameterSetHtml = "Html";
     private const string ParameterSetPath = "Path";
 
@@ -38,8 +37,8 @@ public sealed class ConvertFromOfficeMarkdownHtmlCommand : PSCmdlet
 
     /// Path to an HTML file.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Optional output path for the Markdown file.
     [Parameter]
@@ -123,36 +122,29 @@ public sealed class ConvertFromOfficeMarkdownHtmlCommand : PSCmdlet
     public string? UnorderedListMarker { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
-            if (Options != null && Portable.IsPresent)
-            {
+    protected override void ProcessRecord() {
+        try {
+            if (Options != null && Portable.IsPresent) {
                 throw new PSArgumentException("Specify either -Options or -Portable, not both.");
             }
 
-            if (AsDocument.IsPresent && !string.IsNullOrWhiteSpace(OutputPath))
-            {
+            if (AsDocument.IsPresent && !string.IsNullOrWhiteSpace(OutputPath)) {
                 throw new PSArgumentException("Specify either -AsDocument or -OutputPath, not both.");
             }
 
             var html = Html;
             string? htmlFileDirectory = null;
-            if (ParameterSetName == ParameterSetPath)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
-                if (!File.Exists(resolvedPath))
-                {
+            if (ParameterSetName == ParameterSetPath) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
+                if (!File.Exists(resolvedPath)) {
                     throw new FileNotFoundException($"File '{resolvedPath}' was not found.", resolvedPath);
                 }
 
                 html = File.ReadAllText(resolvedPath);
-                htmlFileDirectory = Path.GetDirectoryName(resolvedPath);
+                htmlFileDirectory = System.IO.Path.GetDirectoryName(resolvedPath);
             }
 
-            if (string.IsNullOrWhiteSpace(html))
-            {
+            if (string.IsNullOrWhiteSpace(html)) {
                 ThrowTerminatingError(new ErrorRecord(
                     new ArgumentException("HTML content cannot be empty."),
                     "HtmlEmpty",
@@ -164,53 +156,42 @@ protected override void ProcessRecord()
             var options = BuildOptions(htmlFileDirectory);
             if (string.IsNullOrWhiteSpace(OutputPath) &&
                 RequiresImageExtraction(options) &&
-                !ShouldProcess(options.Base64ImageOutputDirectory, "Extract Markdown images from HTML"))
-            {
+                !ShouldProcess(options.Base64ImageOutputDirectory, "Extract Markdown images from HTML")) {
                 return;
             }
 
-            if (AsDocument.IsPresent)
-            {
+            if (AsDocument.IsPresent) {
                 WriteObject(HtmlConversionDocument.Parse(html).ToMarkdownDocument(options));
                 return;
             }
 
-            if (!string.IsNullOrWhiteSpace(OutputPath))
-            {
+            if (!string.IsNullOrWhiteSpace(OutputPath)) {
                 var resolvedOutput = SessionState.Path.GetUnresolvedProviderPathFromPSPath(OutputPath);
-                if (!ShouldProcess(resolvedOutput, "Write Markdown converted from HTML"))
-                {
+                if (!ShouldProcess(resolvedOutput, "Write Markdown converted from HTML")) {
                     return;
                 }
 
                 var markdown = HtmlConversionDocument.Parse(html).ToMarkdown(options);
-                var directory = Path.GetDirectoryName(resolvedOutput);
-                if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory))
-                {
+                var directory = System.IO.Path.GetDirectoryName(resolvedOutput);
+                if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory)) {
                     Directory.CreateDirectory(directory);
                 }
 
                 File.WriteAllText(resolvedOutput, markdown, new UTF8Encoding(encoderShouldEmitUTF8Identifier: false));
-                if (PassThru.IsPresent)
-                {
+                if (PassThru.IsPresent) {
                     WriteObject(new FileInfo(resolvedOutput));
                 }
-            }
-            else
-            {
+            } else {
                 var markdown = HtmlConversionDocument.Parse(html).ToMarkdown(options);
                 WriteObject(markdown);
             }
-        }
-        catch (Exception ex)
-        {
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "HtmlToMarkdownFailed", ErrorCategory.InvalidOperation,
-                ParameterSetName == ParameterSetPath ? InputPath : Html));
+                ParameterSetName == ParameterSetPath ? Path : Html));
         }
     }
 
-    private HtmlToMarkdownOptions BuildOptions(string? htmlFileDirectory)
-    {
+    private HtmlToMarkdownOptions BuildOptions(string? htmlFileDirectory) {
         var options = Options?.Clone()
             ?? (Portable.IsPresent
                 ? HtmlToMarkdownOptions.CreatePortableProfile()
@@ -221,44 +202,35 @@ private HtmlToMarkdownOptions BuildOptions(string? htmlFileDirectory)
         options.PreserveUnsupportedBlocks = !DropUnsupportedBlocks.IsPresent;
         options.PreserveUnsupportedInlineHtml = !DropUnsupportedInlineHtml.IsPresent;
 
-        if (MaxInputCharacters.HasValue)
-        {
+        if (MaxInputCharacters.HasValue) {
             options.MaxInputCharacters = MaxInputCharacters.Value;
         }
 
-        if (Base64ImageHandling.HasValue)
-        {
+        if (Base64ImageHandling.HasValue) {
             options.Base64Images = Base64ImageHandling.Value;
         }
 
-        if (!string.IsNullOrWhiteSpace(Base64ImageOutputDirectory))
-        {
+        if (!string.IsNullOrWhiteSpace(Base64ImageOutputDirectory)) {
             options.Base64ImageOutputDirectory = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Base64ImageOutputDirectory);
         }
 
-        if (ListingCardMetadataMode.HasValue)
-        {
+        if (ListingCardMetadataMode.HasValue) {
             options.ListingCardMetadataMode = ListingCardMetadataMode.Value;
         }
 
-        if (MaxTableExpandedColumns.HasValue)
-        {
+        if (MaxTableExpandedColumns.HasValue) {
             options.MaxTableExpandedColumns = MaxTableExpandedColumns.Value;
         }
 
         var writeOptions = MarkdownOptionUtilities.BuildWriteOptions(this);
-        if (writeOptions != null)
-        {
+        if (writeOptions != null) {
             options.MarkdownWriteOptions = writeOptions;
         }
 
-        if (!string.IsNullOrWhiteSpace(BaseUri))
-        {
+        if (!string.IsNullOrWhiteSpace(BaseUri)) {
             options.BaseUri = new Uri(BaseUri, UriKind.Absolute);
-        }
-        else if (!string.IsNullOrWhiteSpace(htmlFileDirectory))
-        {
-            options.BaseUri = new Uri(Path.GetFullPath(htmlFileDirectory!) + Path.DirectorySeparatorChar);
+        } else if (!string.IsNullOrWhiteSpace(htmlFileDirectory)) {
+            options.BaseUri = new Uri(System.IO.Path.GetFullPath(htmlFileDirectory!) + System.IO.Path.DirectorySeparatorChar);
         }
 
         return options;
@@ -267,4 +239,4 @@ private HtmlToMarkdownOptions BuildOptions(string? htmlFileDirectory)
     private static bool RequiresImageExtraction(HtmlToMarkdownOptions options)
         => options.Base64Images == HtmlBase64ImageHandling.SaveToFile &&
            !string.IsNullOrWhiteSpace(options.Base64ImageOutputDirectory);
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Markdown/ConvertToOfficeMarkdownHtmlCommand.cs b/Sources/PSWriteOffice/Cmdlets/Markdown/ConvertToOfficeMarkdownHtmlCommand.cs
index 3975efd8..6a35e14d 100644
--- a/Sources/PSWriteOffice/Cmdlets/Markdown/ConvertToOfficeMarkdownHtmlCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Markdown/ConvertToOfficeMarkdownHtmlCommand.cs
@@ -25,16 +25,15 @@ namespace PSWriteOffice.Cmdlets.Markdown;
 [Alias("ConvertTo-MarkdownHtml")]
 [OutputType(typeof(string), typeof(FileInfo))]
 public sealed class ConvertToOfficeMarkdownHtmlCommand : PSCmdlet
-    , IMarkdownReaderOptionSource
-{
+    , IMarkdownReaderOptionSource {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetText = "Text";
     private const string ParameterSetDocument = "Document";
 
     /// Path to the Markdown file.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Markdown text to convert.
     [Parameter(Mandatory = true, ParameterSetName = ParameterSetText)]
@@ -182,31 +181,23 @@ public sealed class ConvertToOfficeMarkdownHtmlCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var readerOptions = MarkdownOptionUtilities.BuildReaderOptions(this);
 
         MarkdownDoc document;
-        if (ParameterSetName == ParameterSetDocument)
-        {
+        if (ParameterSetName == ParameterSetDocument) {
             document = Document ?? throw new InvalidOperationException("Markdown document was not provided.");
-        }
-        else if (ParameterSetName == ParameterSetPath)
-        {
-            var resolved = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
-            if (!File.Exists(resolved))
-            {
+        } else if (ParameterSetName == ParameterSetPath) {
+            var resolved = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
+            if (!File.Exists(resolved)) {
                 throw new FileNotFoundException($"File '{resolved}' was not found.", resolved);
             }
             document = MarkdownDoc.Load(resolved, readerOptions);
-        }
-        else
-        {
+        } else {
             document = MarkdownReader.Parse(Text ?? string.Empty, readerOptions);
         }
 
-        var options = new HtmlOptions
-        {
+        var options = new HtmlOptions {
             Kind = DocumentMode.IsPresent ? HtmlKind.Document : HtmlKind.Fragment,
             Style = Style,
             CssDelivery = CssDelivery,
@@ -215,48 +206,38 @@ protected override void ProcessRecord()
 
         ApplyHtmlOptions(options);
 
-        if (!string.IsNullOrWhiteSpace(Title))
-        {
+        if (!string.IsNullOrWhiteSpace(Title)) {
             options.Title = Title!;
         }
 
-        if (!string.IsNullOrWhiteSpace(OutputPath))
-        {
+        if (!string.IsNullOrWhiteSpace(OutputPath)) {
             var resolvedOutput = SessionState.Path.GetUnresolvedProviderPathFromPSPath(OutputPath);
-            if (!ShouldProcess(resolvedOutput, "Write HTML converted from Markdown"))
-            {
+            if (!ShouldProcess(resolvedOutput, "Write HTML converted from Markdown")) {
                 return;
             }
 
-            var directory = Path.GetDirectoryName(resolvedOutput);
-            if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory))
-            {
+            var directory = System.IO.Path.GetDirectoryName(resolvedOutput);
+            if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory)) {
                 Directory.CreateDirectory(directory);
             }
 
             document.SaveAsHtml(resolvedOutput, options);
-            if (PassThru.IsPresent)
-            {
+            if (PassThru.IsPresent) {
                 WriteObject(new FileInfo(resolvedOutput));
             }
-        }
-        else
-        {
+        } else {
             WriteObject(options.Kind == HtmlKind.Document
                 ? document.ToHtmlDocument(options)
                 : document.ToHtmlFragment(options));
         }
     }
 
-    private void ApplyHtmlOptions(HtmlOptions options)
-    {
-        if (Theme.HasValue)
-        {
+    private void ApplyHtmlOptions(HtmlOptions options) {
+        if (Theme.HasValue) {
             options.Theme = MarkdownOptionUtilities.CreateTheme(Theme.Value);
         }
 
-        if (RawHtmlHandling.HasValue)
-        {
+        if (RawHtmlHandling.HasValue) {
             options.RawHtmlHandling = RawHtmlHandling.Value;
         }
 
@@ -270,23 +251,19 @@ private void ApplyHtmlOptions(HtmlOptions options)
         options.ImagesLoadingLazy = ImagesLoadingLazy.IsPresent;
         options.ImagesDecodingAsync = ImagesDecodingAsync.IsPresent;
 
-        if (!string.IsNullOrWhiteSpace(BaseUri) && Uri.TryCreate(BaseUri, UriKind.Absolute, out var baseUri))
-        {
+        if (!string.IsNullOrWhiteSpace(BaseUri) && Uri.TryCreate(BaseUri, UriKind.Absolute, out var baseUri)) {
             options.BaseUri = baseUri;
         }
 
-        if (!string.IsNullOrWhiteSpace(ExternalLinksRel))
-        {
+        if (!string.IsNullOrWhiteSpace(ExternalLinksRel)) {
             options.ExternalLinksRel = ExternalLinksRel!;
         }
 
-        if (!string.IsNullOrWhiteSpace(ExternalLinksReferrerPolicy))
-        {
+        if (!string.IsNullOrWhiteSpace(ExternalLinksReferrerPolicy)) {
             options.ExternalLinksReferrerPolicy = ExternalLinksReferrerPolicy!;
         }
 
-        if (!string.IsNullOrWhiteSpace(ImagesReferrerPolicy))
-        {
+        if (!string.IsNullOrWhiteSpace(ImagesReferrerPolicy)) {
             options.ImagesReferrerPolicy = ImagesReferrerPolicy!;
         }
 
@@ -294,19 +271,15 @@ private void ApplyHtmlOptions(HtmlOptions options)
         AddRange(options.AllowedHttpImageHosts, AllowedHttpImageHost);
     }
 
-    private static void AddRange(System.Collections.Generic.ICollection target, string[]? values)
-    {
-        if (values == null)
-        {
+    private static void AddRange(System.Collections.Generic.ICollection target, string[]? values) {
+        if (values == null) {
             return;
         }
 
-        foreach (var value in values)
-        {
-            if (!string.IsNullOrWhiteSpace(value))
-            {
+        foreach (var value in values) {
+            if (!string.IsNullOrWhiteSpace(value)) {
                 target.Add(value);
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Markdown/GetOfficeMarkdownCommand.cs b/Sources/PSWriteOffice/Cmdlets/Markdown/GetOfficeMarkdownCommand.cs
index 0ef641e1..d69fefe5 100644
--- a/Sources/PSWriteOffice/Cmdlets/Markdown/GetOfficeMarkdownCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Markdown/GetOfficeMarkdownCommand.cs
@@ -22,15 +22,14 @@ namespace PSWriteOffice.Cmdlets.Markdown;
 [Cmdlet(VerbsCommon.Get, "OfficeMarkdown", DefaultParameterSetName = ParameterSetPath)]
 [OutputType(typeof(MarkdownDoc))]
 public sealed class GetOfficeMarkdownCommand : PSCmdlet
-    , IMarkdownReaderOptionSource
-{
+    , IMarkdownReaderOptionSource {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetText = "Text";
 
     /// Path to the Markdown file.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Markdown text to parse.
     [Parameter(Mandatory = true, ParameterSetName = ParameterSetText)]
@@ -84,26 +83,21 @@ public sealed class GetOfficeMarkdownCommand : PSCmdlet
     MarkdownReaderOptions? IMarkdownReaderOptionSource.ReaderOptions => Options;
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var options = MarkdownOptionUtilities.BuildReaderOptions(this);
 
         MarkdownDoc document;
-        if (ParameterSetName == ParameterSetPath)
-        {
-            var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
-            if (!File.Exists(resolvedPath))
-            {
+        if (ParameterSetName == ParameterSetPath) {
+            var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
+            if (!File.Exists(resolvedPath)) {
                 throw new FileNotFoundException($"File '{resolvedPath}' was not found.", resolvedPath);
             }
 
             document = MarkdownDoc.Load(resolvedPath, options);
-        }
-        else
-        {
+        } else {
             document = MarkdownReader.Parse(Text ?? string.Empty, options);
         }
 
         WriteObject(document);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Markdown/GetOfficeMarkdownFrontMatterCommand.cs b/Sources/PSWriteOffice/Cmdlets/Markdown/GetOfficeMarkdownFrontMatterCommand.cs
index 91181c4f..316fab61 100644
--- a/Sources/PSWriteOffice/Cmdlets/Markdown/GetOfficeMarkdownFrontMatterCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Markdown/GetOfficeMarkdownFrontMatterCommand.cs
@@ -25,8 +25,7 @@ namespace PSWriteOffice.Cmdlets.Markdown;
 [Cmdlet(VerbsCommon.Get, "OfficeMarkdownFrontMatter", DefaultParameterSetName = ParameterSetPath)]
 [OutputType(typeof(FrontMatterBlock.Entry))]
 public sealed class GetOfficeMarkdownFrontMatterCommand : PSCmdlet
-    , IMarkdownReaderOptionSource
-{
+    , IMarkdownReaderOptionSource {
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
     private const string ParameterSetText = "Text";
@@ -37,8 +36,8 @@ public sealed class GetOfficeMarkdownFrontMatterCommand : PSCmdlet
 
     /// Path to the Markdown file.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Markdown text to parse.
     [Parameter(Mandatory = true, ParameterSetName = ParameterSetText)]
@@ -100,14 +99,13 @@ public sealed class GetOfficeMarkdownFrontMatterCommand : PSCmdlet
     public SwitchParameter CaseSensitive { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var document = MarkdownDocumentResolver.Resolve(
             this,
             ParameterSetName,
             ParameterSetDocument,
             Document,
-            InputPath,
+            Path,
             Text,
             this);
 
@@ -118,14 +116,12 @@ protected override void ProcessRecord()
             ? null
             : new WildcardPattern(Key, wildcardOptions);
 
-        foreach (var entry in document.FrontMatterEntries)
-        {
-            if (keyPattern != null && !keyPattern.IsMatch(entry.Key))
-            {
+        foreach (var entry in document.FrontMatterEntries) {
+            if (keyPattern != null && !keyPattern.IsMatch(entry.Key)) {
                 continue;
             }
 
             WriteObject(entry);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Markdown/GetOfficeMarkdownHeadingCommand.cs b/Sources/PSWriteOffice/Cmdlets/Markdown/GetOfficeMarkdownHeadingCommand.cs
index dd81d523..a8c3062e 100644
--- a/Sources/PSWriteOffice/Cmdlets/Markdown/GetOfficeMarkdownHeadingCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Markdown/GetOfficeMarkdownHeadingCommand.cs
@@ -21,8 +21,7 @@ namespace PSWriteOffice.Cmdlets.Markdown;
 [Cmdlet(VerbsCommon.Get, "OfficeMarkdownHeading", DefaultParameterSetName = ParameterSetPath)]
 [OutputType(typeof(MarkdownDoc.HeadingInfo))]
 public sealed class GetOfficeMarkdownHeadingCommand : PSCmdlet
-    , IMarkdownReaderOptionSource
-{
+    , IMarkdownReaderOptionSource {
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
     private const string ParameterSetText = "Text";
@@ -33,8 +32,8 @@ public sealed class GetOfficeMarkdownHeadingCommand : PSCmdlet
 
     /// Path to the Markdown file.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Markdown text to parse.
     [Parameter(Mandatory = true, ParameterSetName = ParameterSetText)]
@@ -110,10 +109,8 @@ public sealed class GetOfficeMarkdownHeadingCommand : PSCmdlet
     public SwitchParameter CaseSensitive { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (MinLevel > MaxLevel)
-        {
+    protected override void ProcessRecord() {
+        if (MinLevel > MaxLevel) {
             throw new PSArgumentException("-MinLevel cannot be greater than -MaxLevel.");
         }
 
@@ -122,7 +119,7 @@ protected override void ProcessRecord()
             ParameterSetName,
             ParameterSetDocument,
             Document,
-            InputPath,
+            Path,
             Text,
             this);
 
@@ -136,24 +133,20 @@ protected override void ProcessRecord()
             ? null
             : new WildcardPattern(Anchor!.TrimStart('#'), wildcardOptions);
 
-        foreach (var heading in document.GetHeadingInfos())
-        {
-            if (heading.Level < MinLevel || heading.Level > MaxLevel)
-            {
+        foreach (var heading in document.GetHeadingInfos()) {
+            if (heading.Level < MinLevel || heading.Level > MaxLevel) {
                 continue;
             }
 
-            if (textPattern != null && !textPattern.IsMatch(heading.Text))
-            {
+            if (textPattern != null && !textPattern.IsMatch(heading.Text)) {
                 continue;
             }
 
-            if (anchorPattern != null && !anchorPattern.IsMatch(heading.Anchor))
-            {
+            if (anchorPattern != null && !anchorPattern.IsMatch(heading.Anchor)) {
                 continue;
             }
 
             WriteObject(heading);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Markdown/GetOfficeMarkdownNodeCommand.cs b/Sources/PSWriteOffice/Cmdlets/Markdown/GetOfficeMarkdownNodeCommand.cs
index 52290bbb..8c629cee 100644
--- a/Sources/PSWriteOffice/Cmdlets/Markdown/GetOfficeMarkdownNodeCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Markdown/GetOfficeMarkdownNodeCommand.cs
@@ -24,8 +24,7 @@ namespace PSWriteOffice.Cmdlets.Markdown;
 [Cmdlet(VerbsCommon.Get, "OfficeMarkdownNode", DefaultParameterSetName = ParameterSetPath)]
 [OutputType(typeof(PSObject), typeof(MarkdownObject))]
 public sealed class GetOfficeMarkdownNodeCommand : PSCmdlet
-    , IMarkdownReaderOptionSource
-{
+    , IMarkdownReaderOptionSource {
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
     private const string ParameterSetText = "Text";
@@ -36,8 +35,8 @@ public sealed class GetOfficeMarkdownNodeCommand : PSCmdlet
 
     /// Path to the Markdown file.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Markdown text to parse.
     [Parameter(Mandatory = true, ParameterSetName = ParameterSetText)]
@@ -108,8 +107,7 @@ public sealed class GetOfficeMarkdownNodeCommand : PSCmdlet
     public SwitchParameter Raw { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var document = ResolveDocument();
         var wildcardOptions = CaseSensitive
             ? WildcardOptions.None
@@ -121,63 +119,51 @@ protected override void ProcessRecord()
         WriteNode(document, depth: 0, path: "Document", nodeTypePattern);
     }
 
-    private MarkdownDoc ResolveDocument()
-    {
-        if (ParameterSetName == ParameterSetDocument)
-        {
+    private MarkdownDoc ResolveDocument() {
+        if (ParameterSetName == ParameterSetDocument) {
             return Document ?? throw new PSArgumentException("Provide a Markdown document.");
         }
 
         var options = MarkdownOptionUtilities.BuildReaderOptions(this);
 
         string markdown;
-        if (ParameterSetName == ParameterSetPath)
-        {
-            var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
-            if (!File.Exists(resolvedPath))
-            {
+        if (ParameterSetName == ParameterSetPath) {
+            var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
+            if (!File.Exists(resolvedPath)) {
                 throw new FileNotFoundException($"File '{resolvedPath}' was not found.", resolvedPath);
             }
 
             markdown = File.ReadAllText(resolvedPath, Encoding.UTF8);
-        }
-        else
-        {
+        } else {
             markdown = Text ?? string.Empty;
         }
 
         return MarkdownReader.ParseWithSyntaxTree(markdown, options).Document;
     }
 
-    private void WriteNode(MarkdownObject node, int depth, string path, WildcardPattern? nodeTypePattern)
-    {
-        if (depth > MaxDepth)
-        {
+    private void WriteNode(MarkdownObject node, int depth, string path, WildcardPattern? nodeTypePattern) {
+        if (depth > MaxDepth) {
             return;
         }
 
         var typeName = node.GetType().Name;
-        if (nodeTypePattern == null || nodeTypePattern.IsMatch(typeName))
-        {
+        if (nodeTypePattern == null || nodeTypePattern.IsMatch(typeName)) {
             WriteObject(Raw ? node : CreateNodeRecord(node, depth, path, typeName));
         }
 
-        if (depth == MaxDepth)
-        {
+        if (depth == MaxDepth) {
             return;
         }
 
         var children = node.ChildObjects;
-        for (var i = 0; i < children.Count; i++)
-        {
+        for (var i = 0; i < children.Count; i++) {
             var child = children[i];
             var childPath = path + "/" + child.GetType().Name + "[" + i.ToString(System.Globalization.CultureInfo.InvariantCulture) + "]";
             WriteNode(child, depth + 1, childPath, nodeTypePattern);
         }
     }
 
-    private static PSObject CreateNodeRecord(MarkdownObject node, int depth, string path, string typeName)
-    {
+    private static PSObject CreateNodeRecord(MarkdownObject node, int depth, string path, string typeName) {
         var record = new PSObject();
         var span = node.SourceSpan;
 
@@ -197,10 +183,8 @@ private static PSObject CreateNodeRecord(MarkdownObject node, int depth, string
         return record;
     }
 
-    private static string? GetText(MarkdownObject node)
-    {
-        return node switch
-        {
+    private static string? GetText(MarkdownObject node) {
+        return node switch {
             HeadingBlock heading => heading.Text,
             CodeBlock code => code.Content,
             ImageBlock image => image.Alt,
@@ -208,16 +192,13 @@ private static PSObject CreateNodeRecord(MarkdownObject node, int depth, string
         };
     }
 
-    private static string? GetMarkdownPreview(MarkdownObject node)
-    {
-        if (node is not IMarkdownBlock block)
-        {
+    private static string? GetMarkdownPreview(MarkdownObject node) {
+        if (node is not IMarkdownBlock block) {
             return null;
         }
 
         var markdown = block.RenderMarkdown();
-        if (string.IsNullOrWhiteSpace(markdown))
-        {
+        if (string.IsNullOrWhiteSpace(markdown)) {
             return null;
         }
 
@@ -227,4 +208,4 @@ private static PSObject CreateNodeRecord(MarkdownObject node, int depth, string
             ? markdown
             : markdown.Substring(0, maxLength) + "...";
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Markdown/GetOfficeMarkdownTableCommand.cs b/Sources/PSWriteOffice/Cmdlets/Markdown/GetOfficeMarkdownTableCommand.cs
index d5c6c1e6..393cb05d 100644
--- a/Sources/PSWriteOffice/Cmdlets/Markdown/GetOfficeMarkdownTableCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Markdown/GetOfficeMarkdownTableCommand.cs
@@ -16,8 +16,7 @@ namespace PSWriteOffice.Cmdlets.Markdown;
 [Cmdlet(VerbsCommon.Get, "OfficeMarkdownTable", DefaultParameterSetName = ParameterSetPath)]
 [OutputType(typeof(TableBlock), typeof(PSObject))]
 public sealed class GetOfficeMarkdownTableCommand : PSCmdlet
-    , IMarkdownReaderOptionSource
-{
+    , IMarkdownReaderOptionSource {
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
     private const string ParameterSetText = "Text";
@@ -28,8 +27,8 @@ public sealed class GetOfficeMarkdownTableCommand : PSCmdlet
 
     /// Path to the Markdown file.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Markdown text to parse.
     [Parameter(Mandatory = true, ParameterSetName = ParameterSetText)]
@@ -87,41 +86,34 @@ public sealed class GetOfficeMarkdownTableCommand : PSCmdlet
     MarkdownReaderOptions? IMarkdownReaderOptionSource.ReaderOptions => Options;
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var document = MarkdownDocumentResolver.Resolve(
             this,
             ParameterSetName,
             ParameterSetDocument,
             Document,
-            InputPath,
+            Path,
             Text,
             this);
 
-        foreach (var table in document.DescendantTables())
-        {
-            if (!AsObject)
-            {
+        foreach (var table in document.DescendantTables()) {
+            if (!AsObject) {
                 WriteObject(table);
                 continue;
             }
 
-            foreach (var row in ConvertTableRows(table))
-            {
+            foreach (var row in ConvertTableRows(table)) {
                 WriteObject(row);
             }
         }
     }
 
-    private static IEnumerable ConvertTableRows(TableBlock table)
-    {
+    private static IEnumerable ConvertTableRows(TableBlock table) {
         var columnNames = GetColumnNames(table);
 
-        foreach (var row in table.Rows)
-        {
+        foreach (var row in table.Rows) {
             var item = new PSObject();
-            for (var i = 0; i < columnNames.Count; i++)
-            {
+            for (var i = 0; i < columnNames.Count; i++) {
                 var value = i < row.Count ? row[i] : string.Empty;
                 item.Properties.Add(new PSNoteProperty(columnNames[i], value));
             }
@@ -130,36 +122,28 @@ private static IEnumerable ConvertTableRows(TableBlock table)
         }
     }
 
-    private static IReadOnlyList GetColumnNames(TableBlock table)
-    {
+    private static IReadOnlyList GetColumnNames(TableBlock table) {
         var columnCount = table.Headers.Count;
-        foreach (var row in table.Rows)
-        {
-            if (row.Count > columnCount)
-            {
+        foreach (var row in table.Rows) {
+            if (row.Count > columnCount) {
                 columnCount = row.Count;
             }
         }
 
         var names = new List(columnCount);
         var seen = new Dictionary(StringComparer.OrdinalIgnoreCase);
-        for (var i = 0; i < columnCount; i++)
-        {
+        for (var i = 0; i < columnCount; i++) {
             var name = i < table.Headers.Count ? table.Headers[i] : null;
-            if (string.IsNullOrWhiteSpace(name))
-            {
+            if (string.IsNullOrWhiteSpace(name)) {
                 name = "Column" + (i + 1).ToString(System.Globalization.CultureInfo.InvariantCulture);
             }
 
             var baseName = name!.Trim();
-            if (seen.TryGetValue(baseName, out var duplicateCount))
-            {
+            if (seen.TryGetValue(baseName, out var duplicateCount)) {
                 duplicateCount++;
                 seen[baseName] = duplicateCount;
                 baseName += duplicateCount.ToString(System.Globalization.CultureInfo.InvariantCulture);
-            }
-            else
-            {
+            } else {
                 seen[baseName] = 1;
             }
 
@@ -168,4 +152,4 @@ private static IReadOnlyList GetColumnNames(TableBlock table)
 
         return names;
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Markdown/NewOfficeMarkdownCommand.cs b/Sources/PSWriteOffice/Cmdlets/Markdown/NewOfficeMarkdownCommand.cs
index 449be781..9d6b881e 100644
--- a/Sources/PSWriteOffice/Cmdlets/Markdown/NewOfficeMarkdownCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Markdown/NewOfficeMarkdownCommand.cs
@@ -2,9 +2,7 @@
 using System.IO;
 using System.Management.Automation;
 using System.Text;
-using OfficeIMO.Drawing;
 using OfficeIMO.Markdown;
-using OfficeIMO.Markdown.Pdf;
 using PSWriteOffice.Services.Markdown;
 using PSWriteOffice.Services.Pdf;
 
@@ -33,13 +31,11 @@ namespace PSWriteOffice.Cmdlets.Markdown;
 [Alias("MarkdownNew")]
 [OutputType(typeof(FileInfo), typeof(MarkdownDoc))]
 public sealed class NewOfficeMarkdownCommand : PSCmdlet
-    , IMarkdownWriteOptionSource
-    , IMarkdownPdfOptionSource
-{
+    , IMarkdownWriteOptionSource {
     /// Destination path for the Markdown file.
     [Parameter(Mandatory = true, Position = 0)]
-    [Alias("FilePath", "Path")]
-    public string OutputPath { get; set; } = string.Empty;
+    [Alias("FilePath", "OutputPath")]
+    public string Path { get; set; } = string.Empty;
 
     /// DSL scriptblock describing Markdown content.
     [Parameter(Position = 1)]
@@ -53,10 +49,6 @@ public sealed class NewOfficeMarkdownCommand : PSCmdlet
     [Parameter]
     public SwitchParameter NoSave { get; set; }
 
-    /// Optional PDF path to create from the same Markdown document.
-    [Parameter]
-    public string? PdfPath { get; set; }
-
     /// Optional Markdown writer options.
     [Parameter]
     public MarkdownWriteOptions? WriteOptions { get; set; }
@@ -77,162 +69,41 @@ public sealed class NewOfficeMarkdownCommand : PSCmdlet
     [Parameter]
     public string? UnorderedListMarker { get; set; }
 
-    /// Advanced Markdown PDF options. Friendly PDF parameters override matching values.
-    [Parameter]
-    public MarkdownPdfSaveOptions? MarkdownPdfOptions { get; set; }
-
-    /// Underlying OfficeIMO.Pdf options used by Markdown PDF export.
-    [Parameter]
-    public OfficeIMO.Pdf.PdfOptions? PdfOptions { get; set; }
-
-    /// Built-in Markdown PDF visual theme.
-    [Parameter]
-    public OfficeVisualThemeKind? PdfTheme { get; set; }
-
-    /// Default font family used by Markdown PDF export.
-    [Parameter]
-    public string? PdfFontFamily { get; set; }
-
-    /// PDF title metadata.
-    [Parameter]
-    public string? PdfTitle { get; set; }
-
-    /// PDF author metadata.
-    [Parameter]
-    public string? PdfAuthor { get; set; }
-
-    /// PDF subject metadata.
-    [Parameter]
-    public string? PdfSubject { get; set; }
-
-    /// PDF keywords metadata.
-    [Parameter]
-    public string? PdfKeywords { get; set; }
-
-    /// Base directory used to resolve local Markdown images during PDF export.
-    [Parameter]
-    public string? PdfBaseDirectory { get; set; }
-
-    /// Apply the built-in Word-like Markdown PDF baseline theme.
-    [Parameter]
-    public bool? PdfApplyWordLikeTheme { get; set; }
-
-    /// Embed supported local image files in Markdown PDF output.
-    [Parameter]
-    public bool? PdfIncludeLocalImages { get; set; }
-
-    /// Embed supported data URI images in Markdown PDF output.
-    [Parameter]
-    public bool? PdfIncludeDataUriImages { get; set; }
-
-    /// Require local images to resolve under the base directory.
-    [Parameter]
-    public bool? PdfRestrictLocalImagesToBaseDirectory { get; set; }
-
-    /// Maximum decoded bytes for one data URI image in Markdown PDF output.
-    [Parameter]
-    public int? PdfMaximumDataUriImageBytes { get; set; }
-
-    /// Fallback PDF image width in points.
-    [Parameter]
-    public double? PdfDefaultImageWidth { get; set; }
-
-    /// Fallback PDF image height in points.
-    [Parameter]
-    public double? PdfDefaultImageHeight { get; set; }
-
-    /// Controls how YAML front matter appears in the PDF body.
-    [Parameter]
-    public MarkdownPdfFrontMatterRenderMode? PdfFrontMatterRenderMode { get; set; }
-
-    /// Use front matter values to select a visual theme.
-    [Parameter]
-    public bool? PdfUseFrontMatterVisualTheme { get; set; }
-
-    /// Use front matter values as PDF metadata.
-    [Parameter]
-    public bool? PdfUseFrontMatterMetadata { get; set; }
-
-    /// Use the first Markdown heading as the PDF title when no title is supplied.
-    [Parameter]
-    public bool? PdfUseFirstHeadingAsTitle { get; set; }
-
-    /// Create PDF outlines from Markdown headings.
-    [Parameter]
-    public bool? PdfCreateOutlineFromHeadings { get; set; }
-
-    /// Variable name that receives Markdown PDF export warnings.
-    [Parameter]
-    public string? PdfWarningVariable { get; set; }
-
-    /// Variable name that receives the Markdown PDF conversion report.
-    [Parameter]
-    public string? PdfConversionReportVariable { get; set; }
-
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var fullPath = GetResolvedPath();
-        if (!NoSave.IsPresent && !PdfCommandUtilities.ShouldWrite(this, fullPath, "Write new Markdown document"))
-        {
+        if (!NoSave.IsPresent && !PdfCommandUtilities.ShouldWrite(this, fullPath, "Write new Markdown document")) {
             return;
         }
 
         var document = MarkdownDoc.Create();
-        if (Content != null)
-        {
-            using (MarkdownDslContext.Enter(document))
-            {
+        if (Content != null) {
+            using (MarkdownDslContext.Enter(document)) {
                 Content.InvokeReturnAsIs();
             }
         }
 
-        if (NoSave.IsPresent)
-        {
+        if (NoSave.IsPresent) {
             WriteObject(document);
             return;
         }
 
-        var directory = Path.GetDirectoryName(fullPath);
-        if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory))
-        {
+        var directory = System.IO.Path.GetDirectoryName(fullPath);
+        if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory)) {
             Directory.CreateDirectory(directory);
         }
 
         File.WriteAllText(fullPath, document.ToMarkdown(MarkdownOptionUtilities.BuildWriteOptions(this)), new UTF8Encoding(encoderShouldEmitUTF8Identifier: false));
-        SavePdfIfRequested(document, Path.GetDirectoryName(fullPath));
-
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteObject(new FileInfo(fullPath));
         }
     }
 
-    private string GetResolvedPath()
-    {
-        var providerPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(OutputPath);
-        return Path.IsPathRooted(providerPath)
+    private string GetResolvedPath() {
+        var providerPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
+        return System.IO.Path.IsPathRooted(providerPath)
             ? providerPath
-            : Path.Combine(SessionState.Path.CurrentFileSystemLocation.Path, providerPath);
+            : System.IO.Path.Combine(SessionState.Path.CurrentFileSystemLocation.Path, providerPath);
     }
 
-    private void SavePdfIfRequested(MarkdownDoc document, string? fallbackBaseDirectory)
-    {
-        if (string.IsNullOrWhiteSpace(PdfPath))
-        {
-            return;
-        }
-
-        var pdfPath = PdfCommandUtilities.ResolvePath(this, PdfPath!);
-        if (!PdfCommandUtilities.ShouldWrite(this, pdfPath, "Write Markdown PDF"))
-        {
-            return;
-        }
-
-        PdfCommandUtilities.EnsureDirectory(pdfPath);
-        var options = MarkdownOptionUtilities.BuildPdfOptions(this, this, fallbackBaseDirectory);
-        var result = document.SaveAsPdf(pdfPath, options);
-        MarkdownOptionUtilities.SetPdfResultVariables(this, this, result);
-        result.RequireSuccess();
-    }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Markdown/SaveOfficeMarkdownCommand.cs b/Sources/PSWriteOffice/Cmdlets/Markdown/SaveOfficeMarkdownCommand.cs
index 20e72d1e..8d52b4de 100644
--- a/Sources/PSWriteOffice/Cmdlets/Markdown/SaveOfficeMarkdownCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Markdown/SaveOfficeMarkdownCommand.cs
@@ -1,39 +1,31 @@
 using System.IO;
 using System.Management.Automation;
 using System.Text;
-using OfficeIMO.Drawing;
 using OfficeIMO.Markdown;
-using OfficeIMO.Markdown.Pdf;
 using PSWriteOffice.Services.Markdown;
 using PSWriteOffice.Services.Pdf;
 
 namespace PSWriteOffice.Cmdlets.Markdown;
 
-/// Saves a Markdown document and optionally creates a PDF sidecar.
+/// Saves a Markdown document without changing its lifetime.
 /// 
-///   Save Markdown and PDF outputs.
+///   Save a Markdown document.
 ///   PS> 
-///   $doc | Save-OfficeMarkdown -Path .\Report.md -PdfPath .\Report.pdf
-///   Writes both artifacts from the same Markdown document model.
+///   $doc | Save-OfficeMarkdown -Path .\Report.md
+///   Writes the Markdown artifact and keeps the document available for further changes.
 /// 
 [Cmdlet(VerbsData.Save, "OfficeMarkdown", SupportsShouldProcess = true)]
-[OutputType(typeof(MarkdownDoc), typeof(FileInfo))]
+[OutputType(typeof(MarkdownDoc))]
 public sealed class SaveOfficeMarkdownCommand : PSCmdlet
-    , IMarkdownWriteOptionSource
-    , IMarkdownPdfOptionSource
-{
+    , IMarkdownWriteOptionSource {
     /// Markdown document to save.
     [Parameter(Mandatory = true, ValueFromPipeline = true, Position = 0)]
     public MarkdownDoc Document { get; set; } = null!;
 
     /// Destination Markdown path.
-    [Parameter(Position = 1)]
+    [Parameter(Mandatory = true, Position = 1)]
     [Alias("FilePath")]
-    public string? Path { get; set; }
-
-    /// Optional PDF path to create from the same Markdown document.
-    [Parameter]
-    public string? PdfPath { get; set; }
+    public string Path { get; set; } = string.Empty;
 
     /// Optional Markdown writer options.
     [Parameter]
@@ -55,155 +47,23 @@ public sealed class SaveOfficeMarkdownCommand : PSCmdlet
     [Parameter]
     public string? UnorderedListMarker { get; set; }
 
-    /// Advanced Markdown PDF options. Friendly PDF parameters override matching values.
-    [Parameter]
-    public MarkdownPdfSaveOptions? MarkdownPdfOptions { get; set; }
-
-    /// Underlying OfficeIMO.Pdf options used by Markdown PDF export.
-    [Parameter]
-    public OfficeIMO.Pdf.PdfOptions? PdfOptions { get; set; }
-
-    /// Built-in Markdown PDF visual theme.
-    [Parameter]
-    public OfficeVisualThemeKind? PdfTheme { get; set; }
-
-    /// Default font family used by Markdown PDF export.
-    [Parameter]
-    public string? PdfFontFamily { get; set; }
-
-    /// PDF title metadata.
-    [Parameter]
-    public string? PdfTitle { get; set; }
-
-    /// PDF author metadata.
-    [Parameter]
-    public string? PdfAuthor { get; set; }
-
-    /// PDF subject metadata.
-    [Parameter]
-    public string? PdfSubject { get; set; }
-
-    /// PDF keywords metadata.
-    [Parameter]
-    public string? PdfKeywords { get; set; }
-
-    /// Base directory used to resolve local Markdown images during PDF export.
-    [Parameter]
-    public string? PdfBaseDirectory { get; set; }
-
-    /// Apply the built-in Word-like Markdown PDF baseline theme.
-    [Parameter]
-    public bool? PdfApplyWordLikeTheme { get; set; }
-
-    /// Embed supported local image files in Markdown PDF output.
-    [Parameter]
-    public bool? PdfIncludeLocalImages { get; set; }
-
-    /// Embed supported data URI images in Markdown PDF output.
-    [Parameter]
-    public bool? PdfIncludeDataUriImages { get; set; }
-
-    /// Require local images to resolve under the base directory.
-    [Parameter]
-    public bool? PdfRestrictLocalImagesToBaseDirectory { get; set; }
-
-    /// Maximum decoded bytes for one data URI image in Markdown PDF output.
-    [Parameter]
-    public int? PdfMaximumDataUriImageBytes { get; set; }
-
-    /// Fallback PDF image width in points.
-    [Parameter]
-    public double? PdfDefaultImageWidth { get; set; }
-
-    /// Fallback PDF image height in points.
-    [Parameter]
-    public double? PdfDefaultImageHeight { get; set; }
-
-    /// Controls how YAML front matter appears in the PDF body.
-    [Parameter]
-    public MarkdownPdfFrontMatterRenderMode? PdfFrontMatterRenderMode { get; set; }
-
-    /// Use front matter values to select a visual theme.
-    [Parameter]
-    public bool? PdfUseFrontMatterVisualTheme { get; set; }
-
-    /// Use front matter values as PDF metadata.
-    [Parameter]
-    public bool? PdfUseFrontMatterMetadata { get; set; }
-
-    /// Use the first Markdown heading as the PDF title when no title is supplied.
-    [Parameter]
-    public bool? PdfUseFirstHeadingAsTitle { get; set; }
-
-    /// Create PDF outlines from Markdown headings.
-    [Parameter]
-    public bool? PdfCreateOutlineFromHeadings { get; set; }
-
-    /// Variable name that receives Markdown PDF export warnings.
-    [Parameter]
-    public string? PdfWarningVariable { get; set; }
-
-    /// Variable name that receives the Markdown PDF conversion report.
-    [Parameter]
-    public string? PdfConversionReportVariable { get; set; }
-
     /// Emit the Markdown document rather than the saved file.
     [Parameter]
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (string.IsNullOrWhiteSpace(Path) && string.IsNullOrWhiteSpace(PdfPath) && !PassThru.IsPresent)
-        {
-            throw new PSInvalidOperationException("Use -Path, -PdfPath, or -PassThru when saving a Markdown document.");
-        }
-
-        FileInfo? savedFile = null;
-        if (!string.IsNullOrWhiteSpace(Path))
-        {
-            var fullPath = PdfCommandUtilities.ResolvePath(this, Path!);
-            if (!PdfCommandUtilities.ShouldWrite(this, fullPath, "Save Markdown document"))
-            {
-                return;
-            }
-
-            PdfCommandUtilities.EnsureDirectory(fullPath);
-            File.WriteAllText(fullPath, Document.ToMarkdown(MarkdownOptionUtilities.BuildWriteOptions(this)), new UTF8Encoding(encoderShouldEmitUTF8Identifier: false));
-            savedFile = new FileInfo(fullPath);
+    protected override void ProcessRecord() {
+        var fullPath = PdfCommandUtilities.ResolvePath(this, Path);
+        if (!PdfCommandUtilities.ShouldWrite(this, fullPath, "Save Markdown document")) {
+            return;
         }
 
-        if (!string.IsNullOrWhiteSpace(PdfPath))
-        {
-            var pdfPath = PdfCommandUtilities.ResolvePath(this, PdfPath!);
-            if (!PdfCommandUtilities.ShouldWrite(this, pdfPath, "Write Markdown PDF"))
-            {
-                return;
-            }
+        PdfCommandUtilities.EnsureDirectory(fullPath);
+        File.WriteAllText(fullPath, Document.ToMarkdown(MarkdownOptionUtilities.BuildWriteOptions(this)), new UTF8Encoding(encoderShouldEmitUTF8Identifier: false));
 
-            PdfCommandUtilities.EnsureDirectory(pdfPath);
-            var options = MarkdownOptionUtilities.BuildPdfOptions(this, this, ResolvePdfBaseDirectory(savedFile));
-            var result = Document.SaveAsPdf(pdfPath, options);
-            MarkdownOptionUtilities.SetPdfResultVariables(this, this, result);
-            result.RequireSuccess();
+        if (PassThru.IsPresent) {
+            WriteObject(Document);
         }
-
-        WriteObject(PassThru.IsPresent ? Document : savedFile ?? (object)Document);
     }
 
-    private string? ResolvePdfBaseDirectory(FileInfo? savedFile)
-    {
-        if (savedFile?.DirectoryName != null)
-        {
-            return savedFile.DirectoryName;
-        }
-
-        if (!string.IsNullOrWhiteSpace(PdfPath))
-        {
-            var pdfPath = PdfCommandUtilities.ResolvePath(this, PdfPath!);
-            return System.IO.Path.GetDirectoryName(pdfPath);
-        }
-
-        return null;
-    }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/OfficeMutationCmdlet.cs b/Sources/PSWriteOffice/Cmdlets/OfficeMutationCmdlet.cs
new file mode 100644
index 00000000..56775c13
--- /dev/null
+++ b/Sources/PSWriteOffice/Cmdlets/OfficeMutationCmdlet.cs
@@ -0,0 +1,37 @@
+using System.IO;
+using System.Management.Automation;
+
+namespace PSWriteOffice.Cmdlets;
+
+/// Base class for mutating commands that are quiet unless -PassThru is requested.
+public abstract class OfficeMutationCmdlet : PSCmdlet {
+    /// Emit the object created or changed by the command.
+    [Parameter]
+    public SwitchParameter PassThru { get; set; }
+
+    /// Writes the mutated object only when  is present.
+    /// Object created or changed by the command.
+    protected void WritePassThru(object? value) {
+        if (PassThru.IsPresent && value != null) {
+            WriteObject(value);
+        }
+    }
+
+    /// Emits a saved file for an owned path-based document, or the still-live document otherwise.
+    /// Document changed by the command.
+    /// Whether the command opened and will dispose the document.
+    /// Path used to open an owned document.
+    protected void WritePassThru(object document, bool ownsDocument, string? inputPath) {
+        if (!PassThru.IsPresent) {
+            return;
+        }
+
+        if (!ownsDocument) {
+            WriteObject(document);
+            return;
+        }
+
+        var path = SessionState.Path.GetUnresolvedProviderPathFromPSPath(inputPath ?? string.Empty);
+        WriteObject(new FileInfo(path));
+    }
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficeOpenDocumentCommand.cs b/Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficeOpenDocumentCommand.cs
index b417c2f1..fba0602e 100644
--- a/Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficeOpenDocumentCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficeOpenDocumentCommand.cs
@@ -6,9 +6,8 @@ namespace PSWriteOffice.Cmdlets.OpenDocument;
 
 /// Creates a native ODT, ODS, or ODP document.
 [Cmdlet(VerbsCommon.New, "OfficeOpenDocument", SupportsShouldProcess = true)]
-[OutputType(typeof(OdfDocument))]
-public sealed class NewOfficeOpenDocumentCommand : PSCmdlet
-{
+[OutputType(typeof(OdfDocument), typeof(FileInfo))]
+public sealed class NewOfficeOpenDocumentCommand : PSCmdlet {
     /// OpenDocument text, spreadsheet, or presentation kind.
     [Parameter(Mandatory = true, Position = 0)]
     public OdfDocumentKind Kind { get; set; }
@@ -17,28 +16,31 @@ public sealed class NewOfficeOpenDocumentCommand : PSCmdlet
     [Parameter(Position = 1)]
     public string? Path { get; set; }
 
+    /// Emit the saved file when a destination path is supplied.
+    [Parameter]
+    public SwitchParameter PassThru { get; set; }
+
     /// 
-    protected override void ProcessRecord()
-    {
-        OdfDocument document = Kind switch
-        {
+    protected override void ProcessRecord() {
+        OdfDocument document = Kind switch {
             OdfDocumentKind.Text => OdtDocument.Create(),
             OdfDocumentKind.Spreadsheet => OdsDocument.Create(),
             OdfDocumentKind.Presentation => OdpPresentation.Create(),
             _ => throw new PSArgumentOutOfRangeException(nameof(Kind), Kind, "Use Text, Spreadsheet, or Presentation.")
         };
-        if (!string.IsNullOrWhiteSpace(Path))
-        {
+        if (!string.IsNullOrWhiteSpace(Path)) {
             var path = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path!);
             OpenDocumentCommandUtilities.ValidateOpenDocumentExtension(path, Kind, nameof(Path));
-            if (!ShouldProcess(path, "Create OpenDocument package"))
-            {
-                WriteObject(document);
+            if (!ShouldProcess(path, "Create OpenDocument package")) {
                 return;
             }
             Directory.CreateDirectory(System.IO.Path.GetDirectoryName(path) ?? SessionState.Path.CurrentFileSystemLocation.Path);
             document.Save(path);
+            if (PassThru.IsPresent) {
+                WriteObject(new FileInfo(path));
+            }
+            return;
         }
         WriteObject(document);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/OpenDocument/SaveOfficeOpenDocumentCommand.cs b/Sources/PSWriteOffice/Cmdlets/OpenDocument/SaveOfficeOpenDocumentCommand.cs
index f2ea02ce..5741a3a8 100644
--- a/Sources/PSWriteOffice/Cmdlets/OpenDocument/SaveOfficeOpenDocumentCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/OpenDocument/SaveOfficeOpenDocumentCommand.cs
@@ -7,8 +7,7 @@ namespace PSWriteOffice.Cmdlets.OpenDocument;
 /// Saves a native OpenDocument model with entry-level preservation diagnostics.
 [Cmdlet(VerbsData.Save, "OfficeOpenDocument", SupportsShouldProcess = true)]
 [OutputType(typeof(OdfSaveResult))]
-public sealed class SaveOfficeOpenDocumentCommand : PSCmdlet
-{
+public sealed class SaveOfficeOpenDocumentCommand : PSCmdlet {
     /// OpenDocument model to save.
     [Parameter(Mandatory = true, ValueFromPipeline = true)]
     public OdfDocument Document { get; set; } = null!;
@@ -25,18 +24,22 @@ public sealed class SaveOfficeOpenDocumentCommand : PSCmdlet
     [Parameter]
     public SwitchParameter FailOnLoss { get; set; }
 
+    /// Emit the save result, including preservation diagnostics.
+    [Parameter]
+    public SwitchParameter PassThru { get; set; }
+
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var output = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
         OpenDocumentCommandUtilities.ValidateOpenDocumentExtension(output, Document.Kind, nameof(Path));
         if (!ShouldProcess(output, "Save OpenDocument package")) return;
-        if (FailOnLoss.IsPresent)
-        {
+        if (FailOnLoss.IsPresent) {
             Document.Serialize(Options).RequireNoLoss();
         }
         Directory.CreateDirectory(System.IO.Path.GetDirectoryName(output) ?? SessionState.Path.CurrentFileSystemLocation.Path);
         var result = Document.Save(output, Options);
-        WriteObject(result);
+        if (PassThru.IsPresent) {
+            WriteObject(result);
+        }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/AddOfficePdfCanvasCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/AddOfficePdfCanvasCommand.cs
index d41337ca..98f21908 100644
--- a/Sources/PSWriteOffice/Cmdlets/Pdf/AddOfficePdfCanvasCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Pdf/AddOfficePdfCanvasCommand.cs
@@ -23,8 +23,7 @@ namespace PSWriteOffice.Cmdlets.Pdf;
 [Cmdlet(VerbsCommon.Add, "OfficePdfCanvas", SupportsShouldProcess = true)]
 [Alias("PdfCanvasStamp")]
 [OutputType(typeof(FileInfo))]
-public sealed class AddOfficePdfCanvasCommand : PSCmdlet
-{
+public sealed class AddOfficePdfCanvasCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Input PDF path.
     [Parameter(Mandatory = true)]
     [Alias("FilePath")]
@@ -68,39 +67,32 @@ public sealed class AddOfficePdfCanvasCommand : PSCmdlet
     public SwitchParameter IgnorePermissionRestrictions { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var outputPath = PdfCommandUtilities.ResolvePath(this, OutputPath);
-        if (!PdfCommandUtilities.ShouldWrite(this, outputPath, "Write canvas-stamped PDF"))
-        {
+        if (!PdfCommandUtilities.ShouldWrite(this, outputPath, "Write canvas-stamped PDF")) {
             return;
         }
 
         var readOptions = PdfCommandUtilities.CreateReadOptions(Password, IgnorePermissionRestrictions.IsPresent);
         var document = PdfDocument.Open(PdfCommandUtilities.ResolvePath(this, Path), readOptions);
         PdfOptions? renderingOptions = null;
-        if (ConfigureRendering is not null)
-        {
+        if (ConfigureRendering is not null) {
             renderingOptions = new PdfOptions();
             _ = ConfigureRendering.Invoke(renderingOptions);
         }
 
-        var options = new PdfCanvasStampOptions
-        {
+        var options = new PdfCanvasStampOptions {
             BehindContent = BehindContent.IsPresent,
             Opacity = Opacity,
             RenderingOptions = renderingOptions
         };
-        if (!string.IsNullOrWhiteSpace(PageRange))
-        {
+        if (!string.IsNullOrWhiteSpace(PageRange)) {
             options.UseTargetPages(PageRange!);
         }
 
         var result = document.Stamp.Content(
-            (canvas, page) =>
-            {
-                using (PdfCanvasDslContext.Enter(canvas, page))
-                {
+            (canvas, page) => {
+                using (PdfCanvasDslContext.Enter(canvas, page)) {
                     _ = Content.Invoke(canvas, page);
                 }
             },
@@ -108,6 +100,6 @@ protected override void ProcessRecord()
             readOptions);
         PdfCommandUtilities.EnsureDirectory(outputPath);
         result.Save(outputPath).RequireSuccess();
-        WriteObject(new FileInfo(outputPath));
+        WritePassThru(new FileInfo(outputPath));
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/AddOfficePdfCanvasTextCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/AddOfficePdfCanvasTextCommand.cs
index 16f53ed1..4dea2b90 100644
--- a/Sources/PSWriteOffice/Cmdlets/Pdf/AddOfficePdfCanvasTextCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Pdf/AddOfficePdfCanvasTextCommand.cs
@@ -27,8 +27,7 @@ namespace PSWriteOffice.Cmdlets.Pdf;
 /// 
 [Cmdlet(VerbsCommon.Add, "OfficePdfCanvasText", DefaultParameterSetName = ParameterSetText)]
 [Alias("PdfCanvasText")]
-public sealed class AddOfficePdfCanvasTextCommand : PSCmdlet
-{
+public sealed class AddOfficePdfCanvasTextCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetText = "Text";
     private const string ParameterSetRun = "Run";
 
@@ -104,13 +103,11 @@ public sealed class AddOfficePdfCanvasTextCommand : PSCmdlet
     public PdfTextBaseline Baseline { get; set; } = PdfTextBaseline.Normal;
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var context = PdfCanvasDslContext.Require(this);
         var width = Width ?? context.Page.Width - X;
         var height = Height ?? context.Page.Height - Y;
-        if (width <= 0 || height <= 0)
-        {
+        if (width <= 0 || height <= 0) {
             throw new PSArgumentException(
                 "The text area must remain inside the page. Adjust -X/-Y or provide positive -Width/-Height values.");
         }
@@ -129,12 +126,11 @@ protected override void ProcessRecord()
             Align,
             FontSize,
             LineHeight);
+        WritePassThru(context.Page);
     }
 
-    private PdfTextRun[] CreatePlainTextRuns()
-    {
-        if (Text.Length == 0)
-        {
+    private PdfTextRun[] CreatePlainTextRuns() {
+        if (Text.Length == 0) {
             throw new PSArgumentException("Provide at least one text value.");
         }
 
@@ -153,4 +149,4 @@ private PdfTextRun[] CreatePlainTextRuns()
             }
         });
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/AddOfficePdfPageOverlayCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/AddOfficePdfPageOverlayCommand.cs
index 80d545c2..62401694 100644
--- a/Sources/PSWriteOffice/Cmdlets/Pdf/AddOfficePdfPageOverlayCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Pdf/AddOfficePdfPageOverlayCommand.cs
@@ -16,8 +16,7 @@ namespace PSWriteOffice.Cmdlets.Pdf;
 [Cmdlet(VerbsCommon.Add, "OfficePdfPageOverlay", SupportsShouldProcess = true)]
 [Alias("PdfPageOverlay")]
 [OutputType(typeof(FileInfo))]
-public sealed class AddOfficePdfPageOverlayCommand : PSCmdlet
-{
+public sealed class AddOfficePdfPageOverlayCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Target PDF path.
     [Parameter(Mandatory = true)]
     [Alias("FilePath")]
@@ -102,11 +101,9 @@ public sealed class AddOfficePdfPageOverlayCommand : PSCmdlet
     public PdfReadOptions? SourceReadOptions { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var outputPath = PdfCommandUtilities.ResolvePath(this, OutputPath);
-        if (!PdfCommandUtilities.ShouldWrite(this, outputPath, "Write PDF page overlay"))
-        {
+        if (!PdfCommandUtilities.ShouldWrite(this, outputPath, "Write PDF page overlay")) {
             return;
         }
 
@@ -118,8 +115,7 @@ protected override void ProcessRecord()
             SourceReadOptions,
             SourcePassword,
             IgnoreSourcePermissionRestrictions.IsPresent);
-        var options = new PdfPageOverlayOptions
-        {
+        var options = new PdfPageOverlayOptions {
             SourcePageNumber = SourcePageNumber,
             Fit = Fit,
             HorizontalAlignment = HorizontalAlign,
@@ -131,8 +127,7 @@ protected override void ProcessRecord()
             Opacity = Opacity,
             SourceReadOptions = sourceReadOptions
         };
-        if (!string.IsNullOrWhiteSpace(PageRange))
-        {
+        if (!string.IsNullOrWhiteSpace(PageRange)) {
             options.UseTargetPages(PageRange!);
         }
 
@@ -147,6 +142,6 @@ protected override void ProcessRecord()
 
         PdfCommandUtilities.EnsureDirectory(outputPath);
         result.Save(outputPath).RequireSuccess();
-        WriteObject(new FileInfo(outputPath));
+        WritePassThru(new FileInfo(outputPath));
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/AddOfficePdfStampCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/AddOfficePdfStampCommand.cs
index ff8ddffa..c86c4dbb 100644
--- a/Sources/PSWriteOffice/Cmdlets/Pdf/AddOfficePdfStampCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Pdf/AddOfficePdfStampCommand.cs
@@ -30,8 +30,7 @@ namespace PSWriteOffice.Cmdlets.Pdf;
 [Cmdlet(VerbsCommon.Add, "OfficePdfStamp", DefaultParameterSetName = ParameterSetText, SupportsShouldProcess = true)]
 [Alias("PdfStamp")]
 [OutputType(typeof(FileInfo))]
-public sealed class AddOfficePdfStampCommand : PSCmdlet
-{
+public sealed class AddOfficePdfStampCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetText = "Text";
     private const string ParameterSetImage = "Image";
 
@@ -101,11 +100,9 @@ public sealed class AddOfficePdfStampCommand : PSCmdlet
     public SwitchParameter Watermark { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var outputPath = PdfCommandUtilities.ResolvePath(this, OutputPath);
-        if (!PdfCommandUtilities.ShouldWrite(this, outputPath, "Write stamped PDF"))
-        {
+        if (!PdfCommandUtilities.ShouldWrite(this, outputPath, "Write stamped PDF")) {
             return;
         }
 
@@ -117,13 +114,11 @@ protected override void ProcessRecord()
 
         PdfCommandUtilities.EnsureDirectory(outputPath);
         result.Save(outputPath).RequireSuccess();
-        WriteObject(new FileInfo(outputPath));
+        WritePassThru(new FileInfo(outputPath));
     }
 
-    private PdfDocument StampText(PdfDocument document)
-    {
-        var options = new PdfTextStampOptions
-        {
+    private PdfDocument StampText(PdfDocument document) {
+        var options = new PdfTextStampOptions {
             X = X,
             Y = Y,
             FontSize = FontSize,
@@ -131,8 +126,7 @@ private PdfDocument StampText(PdfDocument document)
             BehindContent = Watermark.IsPresent
         };
         var color = PdfCommandUtilities.ParseColor(Color);
-        if (color.HasValue)
-        {
+        if (color.HasValue) {
             options.Color = color.Value;
         }
 
@@ -142,10 +136,8 @@ private PdfDocument StampText(PdfDocument document)
             : document.Stamp.Text(Text!, options);
     }
 
-    private PdfDocument StampImage(PdfDocument document)
-    {
-        var options = new PdfImageStampOptions
-        {
+    private PdfDocument StampImage(PdfDocument document) {
+        var options = new PdfImageStampOptions {
             X = X,
             Y = Y,
             Width = Width,
@@ -159,4 +151,4 @@ private PdfDocument StampImage(PdfDocument document)
             ? document.Stamp.ImageWatermark(imageBytes, options)
             : document.Stamp.Image(imageBytes, options);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/ConvertFromOfficePdfHtmlCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/ConvertFromOfficePdfHtmlCommand.cs
index 9bd40457..7b28fcb2 100644
--- a/Sources/PSWriteOffice/Cmdlets/Pdf/ConvertFromOfficePdfHtmlCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Pdf/ConvertFromOfficePdfHtmlCommand.cs
@@ -20,8 +20,7 @@ namespace PSWriteOffice.Cmdlets.Pdf;
 [Cmdlet(VerbsData.ConvertFrom, "OfficePdfHtml", DefaultParameterSetName = ParameterSetHtml, SupportsShouldProcess = true)]
 [Alias("ConvertFrom-PdfHtml")]
 [OutputType(typeof(byte[]), typeof(FileInfo))]
-public sealed class ConvertFromOfficePdfHtmlCommand : PSCmdlet
-{
+public sealed class ConvertFromOfficePdfHtmlCommand : PSCmdlet {
     private const string ParameterSetHtml = "Html";
     private const string ParameterSetPath = "Path";
     private readonly StringBuilder _pipelineHtml = new();
@@ -33,8 +32,8 @@ public sealed class ConvertFromOfficePdfHtmlCommand : PSCmdlet
 
     /// Path to an HTML file.
     [Parameter(Mandatory = true, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Optional output path for the PDF file. When omitted, PDF bytes are written to the pipeline.
     [Parameter]
@@ -74,14 +73,10 @@ public sealed class ConvertFromOfficePdfHtmlCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
-            if (ParameterSetName == ParameterSetHtml)
-            {
-                if (_receivedHtml)
-                {
+    protected override void ProcessRecord() {
+        try {
+            if (ParameterSetName == ParameterSetHtml) {
+                if (_receivedHtml) {
                     _pipelineHtml.AppendLine();
                 }
 
@@ -90,43 +85,33 @@ protected override void ProcessRecord()
                 return;
             }
 
-            string resolvedPath = PdfCommandUtilities.ResolvePath(this, InputPath);
-            if (!File.Exists(resolvedPath))
-            {
+            string resolvedPath = PdfCommandUtilities.ResolvePath(this, Path);
+            if (!File.Exists(resolvedPath)) {
                 throw new FileNotFoundException($"File '{resolvedPath}' was not found.", resolvedPath);
             }
 
-            ConvertHtml(File.ReadAllText(resolvedPath), Path.GetDirectoryName(resolvedPath));
-        }
-        catch (Exception ex)
-        {
+            ConvertHtml(File.ReadAllText(resolvedPath), System.IO.Path.GetDirectoryName(resolvedPath));
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "HtmlToPdfFailed", ErrorCategory.InvalidOperation,
-                ParameterSetName == ParameterSetPath ? InputPath : Html));
+                ParameterSetName == ParameterSetPath ? Path : Html));
         }
     }
 
     /// 
-    protected override void EndProcessing()
-    {
-        if (ParameterSetName != ParameterSetHtml || !_receivedHtml)
-        {
+    protected override void EndProcessing() {
+        if (ParameterSetName != ParameterSetHtml || !_receivedHtml) {
             return;
         }
 
-        try
-        {
+        try {
             ConvertHtml(_pipelineHtml.ToString(), htmlFileDirectory: null);
-        }
-        catch (Exception ex)
-        {
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "HtmlToPdfFailed", ErrorCategory.InvalidOperation, Html));
         }
     }
 
-    private void ConvertHtml(string html, string? htmlFileDirectory)
-    {
-        if (string.IsNullOrWhiteSpace(html))
-        {
+    private void ConvertHtml(string html, string? htmlFileDirectory) {
+        if (string.IsNullOrWhiteSpace(html)) {
             ThrowTerminatingError(new ErrorRecord(
                 new ArgumentException("HTML content cannot be empty."),
                 "HtmlEmpty",
@@ -137,29 +122,24 @@ private void ConvertHtml(string html, string? htmlFileDirectory)
 
         string preparedHtml = ApplyStylesheets(html);
         HtmlPdfSaveOptions options = BuildOptions(htmlFileDirectory);
-        HtmlConversionDocument document = HtmlConversionDocument.Parse(preparedHtml, new HtmlConversionDocumentOptions
-        {
+        HtmlConversionDocument document = HtmlConversionDocument.Parse(preparedHtml, new HtmlConversionDocumentOptions {
             Profile = Profile,
             Trust = TrustedDocumentProfile.IsPresent ? HtmlInputTrust.Trusted : HtmlInputTrust.Untrusted,
             BaseUri = options.BaseUri
         });
-        if (!string.IsNullOrWhiteSpace(OutputPath))
-        {
+        if (!string.IsNullOrWhiteSpace(OutputPath)) {
             string outputPath = PdfCommandUtilities.ResolvePath(this, OutputPath!);
-            if (!PdfCommandUtilities.ShouldWrite(this, outputPath, "Write PDF from HTML"))
-            {
+            if (!PdfCommandUtilities.ShouldWrite(this, outputPath, "Write PDF from HTML")) {
                 return;
             }
 
             PdfCommandUtilities.EnsureDirectory(outputPath);
             document.SaveAsPdf(outputPath, options).RequireSuccess();
-            if (Open.IsPresent)
-            {
+            if (Open.IsPresent) {
                 FileOpenService.Open(outputPath);
             }
 
-            if (PassThru.IsPresent)
-            {
+            if (PassThru.IsPresent) {
                 WriteObject(new FileInfo(outputPath));
             }
 
@@ -169,45 +149,34 @@ private void ConvertHtml(string html, string? htmlFileDirectory)
         WriteObject(document.ToPdf(options), enumerateCollection: false);
     }
 
-    private HtmlPdfSaveOptions BuildOptions(string? htmlFileDirectory)
-    {
+    private HtmlPdfSaveOptions BuildOptions(string? htmlFileDirectory) {
         HtmlPdfSaveOptions options = Options?.ClonePdf() ?? new HtmlPdfSaveOptions();
 
         ApplyResourceOptions(options, htmlFileDirectory);
         return options;
     }
 
-    private void ApplyResourceOptions(HtmlPdfSaveOptions options, string? htmlFileDirectory)
-    {
+    private void ApplyResourceOptions(HtmlPdfSaveOptions options, string? htmlFileDirectory) {
         string? resolvedBasePath = null;
-        if (!string.IsNullOrWhiteSpace(BasePath))
-        {
+        if (!string.IsNullOrWhiteSpace(BasePath)) {
             resolvedBasePath = PdfCommandUtilities.ResolvePath(this, BasePath!);
-        }
-        else if (!string.IsNullOrWhiteSpace(htmlFileDirectory))
-        {
+        } else if (!string.IsNullOrWhiteSpace(htmlFileDirectory)) {
             resolvedBasePath = htmlFileDirectory;
         }
 
-        if (!string.IsNullOrWhiteSpace(resolvedBasePath))
-        {
-            options.BaseUri = new Uri(Path.GetFullPath(resolvedBasePath!) + Path.DirectorySeparatorChar);
+        if (!string.IsNullOrWhiteSpace(resolvedBasePath)) {
+            options.BaseUri = new Uri(System.IO.Path.GetFullPath(resolvedBasePath!) + System.IO.Path.DirectorySeparatorChar);
         }
     }
 
-    private string ApplyStylesheets(string html)
-    {
+    private string ApplyStylesheets(string html) {
         var styles = new StringBuilder();
 
-        if (StylesheetPath != null)
-        {
-            foreach (string path in StylesheetPath)
-            {
-                if (!string.IsNullOrWhiteSpace(path))
-                {
+        if (StylesheetPath != null) {
+            foreach (string path in StylesheetPath) {
+                if (!string.IsNullOrWhiteSpace(path)) {
                     string resolvedPath = PdfCommandUtilities.ResolvePath(this, path);
-                    if (!File.Exists(resolvedPath))
-                    {
+                    if (!File.Exists(resolvedPath)) {
                         throw new FileNotFoundException($"Stylesheet file '{resolvedPath}' was not found.", resolvedPath);
                     }
 
@@ -216,12 +185,9 @@ private string ApplyStylesheets(string html)
             }
         }
 
-        if (StylesheetContent != null)
-        {
-            foreach (string content in StylesheetContent)
-            {
-                if (!string.IsNullOrWhiteSpace(content))
-                {
+        if (StylesheetContent != null) {
+            foreach (string content in StylesheetContent) {
+                if (!string.IsNullOrWhiteSpace(content)) {
                     styles.AppendLine(content);
                 }
             }
@@ -231,4 +197,4 @@ private string ApplyStylesheets(string html)
             ? html
             : "" + Environment.NewLine + html;
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/CopyOfficePdfPageCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/CopyOfficePdfPageCommand.cs
index f762ffc6..6c728c1c 100644
--- a/Sources/PSWriteOffice/Cmdlets/Pdf/CopyOfficePdfPageCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Pdf/CopyOfficePdfPageCommand.cs
@@ -18,8 +18,7 @@ namespace PSWriteOffice.Cmdlets.Pdf;
 /// 
 [Cmdlet(VerbsCommon.Copy, "OfficePdfPage", SupportsShouldProcess = true)]
 [OutputType(typeof(FileInfo))]
-public sealed class CopyOfficePdfPageCommand : PSCmdlet
-{
+public sealed class CopyOfficePdfPageCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Input PDF path.
     [Parameter(Mandatory = true)]
     [Alias("FilePath")]
@@ -42,11 +41,9 @@ public sealed class CopyOfficePdfPageCommand : PSCmdlet
     public SwitchParameter IgnorePermissionRestrictions { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var outputPath = PdfCommandUtilities.ResolvePath(this, OutputPath);
-        if (!PdfCommandUtilities.ShouldWrite(this, outputPath, "Write copied PDF pages"))
-        {
+        if (!PdfCommandUtilities.ShouldWrite(this, outputPath, "Write copied PDF pages")) {
             return;
         }
 
@@ -55,6 +52,6 @@ protected override void ProcessRecord()
                 PdfCommandUtilities.ResolvePath(this, Path),
                 PdfCommandUtilities.CreateReadOptions(Password, IgnorePermissionRestrictions.IsPresent))
             .Pages.Extract(PageRange).Save(outputPath).RequireSuccess();
-        WriteObject(new FileInfo(outputPath));
+        WritePassThru(new FileInfo(outputPath));
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs
new file mode 100644
index 00000000..615b1faa
--- /dev/null
+++ b/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs
@@ -0,0 +1,178 @@
+using System;
+using System.IO;
+using System.Management.Automation;
+using OfficeIMO.Excel;
+using OfficeIMO.Excel.Pdf;
+using OfficeIMO.Markdown;
+using OfficeIMO.Markdown.Pdf;
+using OfficeIMO.PowerPoint;
+using OfficeIMO.PowerPoint.Pdf;
+using OfficeIMO.Rtf;
+using OfficeIMO.Rtf.Pdf;
+using OfficeIMO.Word;
+using OfficeIMO.Word.Pdf;
+using PSWriteOffice.Services;
+using PSWriteOffice.Services.Excel;
+using PSWriteOffice.Services.Pdf;
+using PSWriteOffice.Services.PowerPoint;
+using PSWriteOffice.Services.Word;
+
+namespace PSWriteOffice.Cmdlets.Pdf;
+
+/// Exports a Word, Excel, PowerPoint, Markdown, or RTF document to PDF.
+/// Accepts either a live OfficeIMO document from the pipeline or a supported source file.
+/// 
+///   Export a live Word document.
+///   PS> 
+///   $document | Export-OfficeDocumentPdf -Path .\Report.pdf
+/// 
+/// 
+///   Export a supported file without opening it explicitly.
+///   PS> 
+///   Export-OfficeDocumentPdf -InputPath .\Report.docx -Path .\Report.pdf -PassThru
+/// 
+[Cmdlet(VerbsData.Export, "OfficeDocumentPdf", DefaultParameterSetName = ParameterSetDocument, SupportsShouldProcess = true)]
+[OutputType(typeof(FileInfo))]
+public sealed class ExportOfficeDocumentPdfCommand : PSCmdlet {
+    private const string ParameterSetDocument = "Document";
+    private const string ParameterSetPath = "Path";
+
+    /// Live Word, Excel, PowerPoint, Markdown, or RTF document to export.
+    [Parameter(Mandatory = true, ValueFromPipeline = true, Position = 0, ParameterSetName = ParameterSetDocument)]
+    public object Document { get; set; } = null!;
+
+    /// Source .docx, .xlsx, .pptx, .md, .markdown, or .rtf file.
+    [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
+    [Alias("SourcePath")]
+    public string InputPath { get; set; } = string.Empty;
+
+    /// Destination PDF path.
+    [Parameter(Mandatory = true, Position = 1)]
+    [Alias("OutputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
+
+    /// Password used to open an encrypted Word, Excel, or PowerPoint source file.
+    [Parameter(ParameterSetName = ParameterSetPath)]
+    public string? Password { get; set; }
+
+    /// Word-specific PDF options.
+    [Parameter]
+    public WordPdfSaveOptions? WordOptions { get; set; }
+
+    /// Excel-specific PDF options.
+    [Parameter]
+    public ExcelPdfSaveOptions? ExcelOptions { get; set; }
+
+    /// PowerPoint-specific PDF options.
+    [Parameter]
+    public PowerPointPdfSaveOptions? PowerPointOptions { get; set; }
+
+    /// Markdown-specific PDF options.
+    [Parameter]
+    public MarkdownPdfSaveOptions? MarkdownOptions { get; set; }
+
+    /// RTF-specific PDF options.
+    [Parameter]
+    public RtfPdfSaveOptions? RtfOptions { get; set; }
+
+    /// Open the PDF after exporting it.
+    [Parameter]
+    [Alias("Show")]
+    public SwitchParameter Open { get; set; }
+
+    /// Emit the saved PDF file.
+    [Parameter]
+    public SwitchParameter PassThru { get; set; }
+
+    /// 
+    protected override void ProcessRecord() {
+        var outputPath = PdfCommandUtilities.ResolvePath(this, Path);
+        if (!PdfCommandUtilities.ShouldWrite(this, outputPath, "Export document to PDF")) {
+            return;
+        }
+
+        PdfCommandUtilities.EnsureDirectory(outputPath);
+        object document = UnwrapDocument(Document);
+        IDisposable? ownedDocument = null;
+
+        try {
+            if (ParameterSetName == ParameterSetPath) {
+                document = LoadDocument(out ownedDocument);
+            }
+
+            SaveDocument(document, outputPath);
+        } finally {
+            ownedDocument?.Dispose();
+        }
+
+        if (Open.IsPresent) {
+            FileOpenService.Open(outputPath);
+        }
+
+        if (PassThru.IsPresent) {
+            WriteObject(new FileInfo(outputPath));
+        }
+    }
+
+    private object LoadDocument(out IDisposable? ownedDocument) {
+        var sourcePath = PdfCommandUtilities.ResolveExistingFilePath(this, InputPath);
+        switch (System.IO.Path.GetExtension(sourcePath).ToLowerInvariant()) {
+            case ".docx": {
+                    var document = WordDocumentService.LoadDocument(sourcePath, readOnly: true, autoSave: false, Password);
+                    ownedDocument = document;
+                    return document;
+                }
+            case ".xlsx": {
+                    var document = ExcelDocumentService.LoadDocument(sourcePath, readOnly: true, autoSave: false, Password);
+                    ownedDocument = document;
+                    return document;
+                }
+            case ".pptx": {
+                    var document = PowerPointDocumentService.LoadPresentation(sourcePath, Password, readOnly: true);
+                    ownedDocument = document;
+                    return document;
+                }
+            case ".md":
+            case ".markdown":
+                ownedDocument = null;
+                return MarkdownDoc.Load(sourcePath);
+            case ".rtf":
+                ownedDocument = null;
+                return RtfDocument.Load(sourcePath);
+            default:
+                throw new PSArgumentException("Supported PDF source extensions are .docx, .xlsx, .pptx, .md, .markdown, and .rtf.", nameof(InputPath));
+        }
+    }
+
+    private void SaveDocument(object document, string outputPath) {
+        switch (document) {
+            case WordDocument word:
+                word.SaveAsPdf(outputPath, WordOptions ?? new WordPdfSaveOptions()).RequireSuccess();
+                return;
+            case ExcelDocument excel:
+                excel.SaveAsPdf(outputPath, ExcelOptions ?? new ExcelPdfSaveOptions()).RequireSuccess();
+                return;
+            case PowerPointPresentation powerPoint:
+                powerPoint.SaveAsPdf(outputPath, PowerPointOptions ?? new PowerPointPdfSaveOptions()).RequireSuccess();
+                return;
+            case MarkdownDoc markdown:
+                markdown.SaveAsPdf(outputPath, MarkdownOptions ?? new MarkdownPdfSaveOptions()).RequireSuccess();
+                return;
+            case RtfDocument rtf:
+                rtf.SaveAsPdf(outputPath, RtfOptions ?? new RtfPdfSaveOptions()).RequireSuccess();
+                return;
+            default:
+                throw new PSArgumentException(
+                    $"Document type '{document?.GetType().FullName ?? ""}' cannot be exported to PDF. Use a WordDocument, ExcelDocument, PowerPointPresentation, MarkdownDoc, or RtfDocument.",
+                    nameof(Document));
+        }
+    }
+
+    private static object UnwrapDocument(object document) {
+        while (document is PSObject psObject && psObject.BaseObject != document) {
+            document = psObject.BaseObject;
+        }
+
+        return document;
+    }
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/MoveOfficePdfPageCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/MoveOfficePdfPageCommand.cs
index a11e6366..c0f0fb14 100644
--- a/Sources/PSWriteOffice/Cmdlets/Pdf/MoveOfficePdfPageCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Pdf/MoveOfficePdfPageCommand.cs
@@ -18,8 +18,7 @@ namespace PSWriteOffice.Cmdlets.Pdf;
 /// 
 [Cmdlet(VerbsCommon.Move, "OfficePdfPage", SupportsShouldProcess = true)]
 [OutputType(typeof(FileInfo))]
-public sealed class MoveOfficePdfPageCommand : PSCmdlet
-{
+public sealed class MoveOfficePdfPageCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Input PDF path.
     [Parameter(Mandatory = true)]
     [Alias("FilePath")]
@@ -46,11 +45,9 @@ public sealed class MoveOfficePdfPageCommand : PSCmdlet
     public SwitchParameter IgnorePermissionRestrictions { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var outputPath = PdfCommandUtilities.ResolvePath(this, OutputPath);
-        if (!PdfCommandUtilities.ShouldWrite(this, outputPath, "Write reordered PDF pages"))
-        {
+        if (!PdfCommandUtilities.ShouldWrite(this, outputPath, "Write reordered PDF pages")) {
             return;
         }
 
@@ -59,6 +56,6 @@ protected override void ProcessRecord()
                 PdfCommandUtilities.ResolvePath(this, Path),
                 PdfCommandUtilities.CreateReadOptions(Password, IgnorePermissionRestrictions.IsPresent))
             .Pages.Move(BeforePage, PageRange).Save(outputPath).RequireSuccess();
-        WriteObject(new FileInfo(outputPath));
+        WritePassThru(new FileInfo(outputPath));
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/NewOfficePdfCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/NewOfficePdfCommand.cs
index 520ad3c7..9e0f77b7 100644
--- a/Sources/PSWriteOffice/Cmdlets/Pdf/NewOfficePdfCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Pdf/NewOfficePdfCommand.cs
@@ -16,7 +16,7 @@ namespace PSWriteOffice.Cmdlets.Pdf;
 /// 
 ///   Create a PDF report.
 ///   PS> 
-///   New-OfficePdf -Path .\Report.pdf { PdfHeading 'Report'; PdfParagraph 'Generated by PSWriteOffice' } -Show
+///   New-OfficePdf -Path .\Report.pdf { PdfHeading 'Report'; PdfParagraph 'Generated by PSWriteOffice' } -Open
 ///   Builds a PDF and opens it after saving.
 /// 
 /// 
@@ -44,8 +44,7 @@ namespace PSWriteOffice.Cmdlets.Pdf;
 [Cmdlet(VerbsCommon.New, "OfficePdf", DefaultParameterSetName = ParameterSetPath, SupportsShouldProcess = true)]
 [Alias("PdfNew")]
 [OutputType(typeof(PdfDocument), typeof(FileInfo))]
-public sealed class NewOfficePdfCommand : PSCmdlet
-{
+public sealed class NewOfficePdfCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetContent = "Content";
 
@@ -69,7 +68,8 @@ public sealed class NewOfficePdfCommand : PSCmdlet
 
     /// Open the PDF after saving.
     [Parameter]
-    public SwitchParameter Show { get; set; }
+    [Alias("Show")]
+    public SwitchParameter Open { get; set; }
 
     /// Default standard PDF font for generated text.
     [Parameter]
@@ -187,33 +187,26 @@ public sealed class NewOfficePdfCommand : PSCmdlet
     public int? Permission { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var savePath = string.IsNullOrWhiteSpace(Path) || NoSave.IsPresent
             ? null
             : PdfCommandUtilities.ResolvePath(this, Path!);
-        if (savePath != null && !PdfCommandUtilities.ShouldWrite(this, savePath, "Write new PDF"))
-        {
+        if (savePath != null && !PdfCommandUtilities.ShouldWrite(this, savePath, "Write new PDF")) {
             return;
         }
 
         var options = CreateOptions();
         PdfDocument document;
-        if (Content != null)
-        {
-            using (var context = PdfDslContext.Enter(options))
-            {
+        if (Content != null) {
+            using (var context = PdfDslContext.Enter(options)) {
                 Content.InvokeReturnAsIs();
                 document = context.Build();
             }
-        }
-        else
-        {
+        } else {
             document = PdfDocument.Create(_ => { }, options);
         }
 
-        if (string.IsNullOrWhiteSpace(Path) || NoSave.IsPresent)
-        {
+        if (string.IsNullOrWhiteSpace(Path) || NoSave.IsPresent) {
             WriteObject(document);
             return;
         }
@@ -221,80 +214,65 @@ protected override void ProcessRecord()
         PdfCommandUtilities.EnsureDirectory(savePath!);
         document.Save(savePath!).RequireSuccess();
 
-        if (Show.IsPresent)
-        {
+        if (Open.IsPresent) {
             FileOpenService.Open(savePath!);
         }
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteObject(new FileInfo(savePath!));
         }
     }
 
-    private PdfOptions CreateOptions()
-    {
+    private PdfOptions CreateOptions() {
         var options = new PdfOptions();
-        if (DefaultFont.HasValue)
-        {
+        if (DefaultFont.HasValue) {
             options.DefaultFont = DefaultFont.Value;
         }
 
-        if (DefaultFontSize.HasValue)
-        {
+        if (DefaultFontSize.HasValue) {
             options.DefaultFontSize = DefaultFontSize.Value;
         }
 
-        if (Theme.HasValue)
-        {
+        if (Theme.HasValue) {
             options.ApplyTheme(PdfThemeUtilities.ResolveTheme(Theme.Value));
         }
 
-        if (FileVersion.HasValue)
-        {
+        if (FileVersion.HasValue) {
             options.FileVersion = FileVersion.Value;
         }
 
-        if (CreateOutlineFromHeadings.IsPresent)
-        {
+        if (CreateOutlineFromHeadings.IsPresent) {
             options.CreateOutlineFromHeadings = true;
         }
 
-        if (OutlineExpansionLevel.HasValue)
-        {
+        if (OutlineExpansionLevel.HasValue) {
             options.OutlineExpansionLevel = OutlineExpansionLevel.Value;
         }
 
-        if (PageMode.HasValue || PageLayout.HasValue)
-        {
+        if (PageMode.HasValue || PageLayout.HasValue) {
             options.SetCatalogView(PageMode, PageLayout);
         }
 
-        if (IncludePageLabels.IsPresent || !string.IsNullOrWhiteSpace(PageLabelPrefix))
-        {
+        if (IncludePageLabels.IsPresent || !string.IsNullOrWhiteSpace(PageLabelPrefix)) {
             options.SetPageLabels(true, PageLabelPrefix);
         }
 
-        if (OpenActionPage.HasValue || OpenActionMode.HasValue || OpenActionTop.HasValue)
-        {
+        if (OpenActionPage.HasValue || OpenActionMode.HasValue || OpenActionTop.HasValue) {
             options.SetOpenAction(
                 OpenActionPage ?? 1,
                 OpenActionTop,
                 OpenActionMode ?? PdfOpenActionDestinationMode.Xyz);
         }
 
-        if (FlattenVisualAnnotations.IsPresent)
-        {
+        if (FlattenVisualAnnotations.IsPresent) {
             options.SetFlattenVisualAnnotations();
         }
 
         ConfigureViewerPreferences(options);
         PdfCommandUtilities.ApplyEncryption(options, Password, OwnerPassword, Permission);
 
-        if (!string.IsNullOrWhiteSpace(FontFamily))
-        {
-            if (string.IsNullOrWhiteSpace(RegularFontPath))
-            {
+        if (!string.IsNullOrWhiteSpace(FontFamily)) {
+            if (string.IsNullOrWhiteSpace(RegularFontPath)) {
                 throw new PSArgumentException("-FontFamily requires -RegularFontPath.", nameof(RegularFontPath));
             }
 
@@ -309,56 +287,46 @@ private PdfOptions CreateOptions()
         return options;
     }
 
-    private void ConfigureViewerPreferences(PdfOptions options)
-    {
+    private void ConfigureViewerPreferences(PdfOptions options) {
         if (!DisplayDocTitle.IsPresent &&
             !FitWindow.IsPresent &&
             !CenterWindow.IsPresent &&
             !HideToolbar.IsPresent &&
             !HideMenubar.IsPresent &&
-            !HideWindowUI.IsPresent)
-        {
+            !HideWindowUI.IsPresent) {
             return;
         }
 
-        options.ConfigureViewerPreferences(preferences =>
-        {
-            if (DisplayDocTitle.IsPresent)
-            {
+        options.ConfigureViewerPreferences(preferences => {
+            if (DisplayDocTitle.IsPresent) {
                 preferences.DisplayDocTitle = true;
             }
 
-            if (FitWindow.IsPresent)
-            {
+            if (FitWindow.IsPresent) {
                 preferences.FitWindow = true;
             }
 
-            if (CenterWindow.IsPresent)
-            {
+            if (CenterWindow.IsPresent) {
                 preferences.CenterWindow = true;
             }
 
-            if (HideToolbar.IsPresent)
-            {
+            if (HideToolbar.IsPresent) {
                 preferences.HideToolbar = true;
             }
 
-            if (HideMenubar.IsPresent)
-            {
+            if (HideMenubar.IsPresent) {
                 preferences.HideMenubar = true;
             }
 
-            if (HideWindowUI.IsPresent)
-            {
+            if (HideWindowUI.IsPresent) {
                 preferences.HideWindowUI = true;
             }
         });
     }
 
-    private string? ResolveOptionalFontPath(string? path)
-    {
+    private string? ResolveOptionalFontPath(string? path) {
         return string.IsNullOrWhiteSpace(path)
             ? null
             : PdfCommandUtilities.ResolvePath(this, path!);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/RemoveOfficePdfAnnotationCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/RemoveOfficePdfAnnotationCommand.cs
index 79a9d70c..d164ae23 100644
--- a/Sources/PSWriteOffice/Cmdlets/Pdf/RemoveOfficePdfAnnotationCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Pdf/RemoveOfficePdfAnnotationCommand.cs
@@ -9,8 +9,7 @@ namespace PSWriteOffice.Cmdlets.Pdf;
 [Cmdlet(VerbsCommon.Remove, "OfficePdfAnnotation", SupportsShouldProcess = true)]
 [OutputType(typeof(FileInfo))]
 [OutputType(typeof(PdfAnnotationEditResult))]
-public sealed class RemoveOfficePdfAnnotationCommand : PSCmdlet
-{
+public sealed class RemoveOfficePdfAnnotationCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Input PDF path.
     [Parameter(Mandatory = true, Position = 0, ValueFromPipeline = true)]
     [Alias("FilePath")]
@@ -49,17 +48,14 @@ public sealed class RemoveOfficePdfAnnotationCommand : PSCmdlet
     public SwitchParameter PassThruReport { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         string inputPath = PdfCommandUtilities.ResolvePath(this, Path);
         string outputPath = PdfCommandUtilities.ResolvePath(this, OutputPath);
-        if (!ShouldProcess(outputPath, "Remove PDF annotations"))
-        {
+        if (!ShouldProcess(outputPath, "Remove PDF annotations")) {
             return;
         }
 
-        var options = new PdfAnnotationRemovalOptions
-        {
+        var options = new PdfAnnotationRemovalOptions {
             ObjectNumber = ObjectNumber,
             PageNumber = PageNumber,
             Subtype = Subtype,
@@ -71,6 +67,11 @@ protected override void ProcessRecord()
             .Open(inputPath, PdfCommandUtilities.CreateReadOptions(Password, IgnorePermissionRestrictions.IsPresent))
             .Annotations.Remove(options);
         result.ToDocument().Save(outputPath).RequireSuccess();
-        WriteObject(PassThruReport.IsPresent ? result : new FileInfo(outputPath));
+        if (PassThruReport.IsPresent) {
+            WriteObject(result);
+            return;
+        }
+
+        WritePassThru(new FileInfo(outputPath));
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/RemoveOfficePdfPageCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/RemoveOfficePdfPageCommand.cs
index a0020cc2..f0e6a253 100644
--- a/Sources/PSWriteOffice/Cmdlets/Pdf/RemoveOfficePdfPageCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Pdf/RemoveOfficePdfPageCommand.cs
@@ -18,8 +18,7 @@ namespace PSWriteOffice.Cmdlets.Pdf;
 /// 
 [Cmdlet(VerbsCommon.Remove, "OfficePdfPage", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.Medium)]
 [OutputType(typeof(FileInfo))]
-public sealed class RemoveOfficePdfPageCommand : PSCmdlet
-{
+public sealed class RemoveOfficePdfPageCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Input PDF path.
     [Parameter(Mandatory = true)]
     [Alias("FilePath")]
@@ -42,11 +41,9 @@ public sealed class RemoveOfficePdfPageCommand : PSCmdlet
     public SwitchParameter IgnorePermissionRestrictions { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var outputPath = PdfCommandUtilities.ResolvePath(this, OutputPath);
-        if (!PdfCommandUtilities.ShouldWrite(this, outputPath, "Write PDF without selected pages"))
-        {
+        if (!PdfCommandUtilities.ShouldWrite(this, outputPath, "Write PDF without selected pages")) {
             return;
         }
 
@@ -55,6 +52,6 @@ protected override void ProcessRecord()
                 PdfCommandUtilities.ResolvePath(this, Path),
                 PdfCommandUtilities.CreateReadOptions(Password, IgnorePermissionRestrictions.IsPresent))
             .Pages.Delete(PageRange).Save(outputPath).RequireSuccess();
-        WriteObject(new FileInfo(outputPath));
+        WritePassThru(new FileInfo(outputPath));
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/SaveOfficePdfCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/SaveOfficePdfCommand.cs
index a7acb7d7..93316c61 100644
--- a/Sources/PSWriteOffice/Cmdlets/Pdf/SaveOfficePdfCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Pdf/SaveOfficePdfCommand.cs
@@ -19,9 +19,8 @@ namespace PSWriteOffice.Cmdlets.Pdf;
 ///   Creates a PDF document object first, then saves it to disk.
 /// 
 [Cmdlet(VerbsData.Save, "OfficePdf", SupportsShouldProcess = true)]
-[OutputType(typeof(PdfDocument), typeof(FileInfo))]
-public sealed class SaveOfficePdfCommand : PSCmdlet
-{
+[OutputType(typeof(PdfDocument))]
+public sealed class SaveOfficePdfCommand : PSCmdlet {
     /// PDF document to save.
     [Parameter(Mandatory = true, ValueFromPipeline = true, Position = 0)]
     public PdfDocument Document { get; set; } = null!;
@@ -33,9 +32,10 @@ public sealed class SaveOfficePdfCommand : PSCmdlet
 
     /// Open the PDF after saving.
     [Parameter]
-    public SwitchParameter Show { get; set; }
+    [Alias("Show")]
+    public SwitchParameter Open { get; set; }
 
-    /// Emit the document instead of the saved file.
+    /// Emit the document for further processing.
     [Parameter]
     public SwitchParameter PassThru { get; set; }
 
@@ -54,11 +54,9 @@ public sealed class SaveOfficePdfCommand : PSCmdlet
     public int? Permission { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var fullPath = PdfCommandUtilities.ResolvePath(this, Path);
-        if (!PdfCommandUtilities.ShouldWrite(this, fullPath, "Save PDF"))
-        {
+        if (!PdfCommandUtilities.ShouldWrite(this, fullPath, "Save PDF")) {
             return;
         }
 
@@ -66,11 +64,12 @@ protected override void ProcessRecord()
         var document = PdfCommandUtilities.ApplyEncryption(Document, Password, OwnerPassword, Permission);
         document.Save(fullPath).RequireSuccess();
 
-        if (Show.IsPresent)
-        {
+        if (Open.IsPresent) {
             FileOpenService.Open(fullPath);
         }
 
-        WriteObject(PassThru.IsPresent ? document : new FileInfo(fullPath));
+        if (PassThru.IsPresent) {
+            WriteObject(document);
+        }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/SetOfficePdfAnnotationCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/SetOfficePdfAnnotationCommand.cs
index f2a8b32f..1a833404 100644
--- a/Sources/PSWriteOffice/Cmdlets/Pdf/SetOfficePdfAnnotationCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Pdf/SetOfficePdfAnnotationCommand.cs
@@ -9,8 +9,7 @@ namespace PSWriteOffice.Cmdlets.Pdf;
 [Cmdlet(VerbsCommon.Set, "OfficePdfAnnotation", SupportsShouldProcess = true)]
 [OutputType(typeof(FileInfo))]
 [OutputType(typeof(PdfAnnotationEditResult))]
-public sealed class SetOfficePdfAnnotationCommand : PSCmdlet
-{
+public sealed class SetOfficePdfAnnotationCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Input PDF path.
     [Parameter(Mandatory = true, Position = 0, ValueFromPipeline = true)]
     [Alias("FilePath")]
@@ -61,18 +60,15 @@ public sealed class SetOfficePdfAnnotationCommand : PSCmdlet
     public SwitchParameter PassThruReport { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         string inputPath = PdfCommandUtilities.ResolvePath(this, Path);
         string outputPath = PdfCommandUtilities.ResolvePath(this, OutputPath);
-        if (!ShouldProcess(outputPath, "Update PDF annotation"))
-        {
+        if (!ShouldProcess(outputPath, "Update PDF annotation")) {
             return;
         }
 
         PdfColor? color = PdfCommandUtilities.ParseColor(Color);
-        var options = new PdfAnnotationUpdateOptions
-        {
+        var options = new PdfAnnotationUpdateOptions {
             Contents = Contents,
             Title = Title,
             Name = Name,
@@ -86,6 +82,11 @@ protected override void ProcessRecord()
             .Open(inputPath, PdfCommandUtilities.CreateReadOptions(Password, IgnorePermissionRestrictions.IsPresent))
             .Annotations.Update(ObjectNumber, options);
         result.ToDocument().Save(outputPath).RequireSuccess();
-        WriteObject(PassThruReport.IsPresent ? result : new FileInfo(outputPath));
+        if (PassThruReport.IsPresent) {
+            WriteObject(result);
+            return;
+        }
+
+        WritePassThru(new FileInfo(outputPath));
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/SetOfficePdfFormCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/SetOfficePdfFormCommand.cs
index 46e28cee..d4b743bc 100644
--- a/Sources/PSWriteOffice/Cmdlets/Pdf/SetOfficePdfFormCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Pdf/SetOfficePdfFormCommand.cs
@@ -20,8 +20,7 @@ namespace PSWriteOffice.Cmdlets.Pdf;
 /// 
 [Cmdlet(VerbsCommon.Set, "OfficePdfForm", SupportsShouldProcess = true)]
 [OutputType(typeof(FileInfo))]
-public sealed class SetOfficePdfFormCommand : PSCmdlet
-{
+public sealed class SetOfficePdfFormCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Input PDF path.
     [Parameter(Mandatory = true)]
     [Alias("FilePath")]
@@ -64,35 +63,28 @@ public sealed class SetOfficePdfFormCommand : PSCmdlet
     public string? AppearanceFontFamilyName { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var inputPath = PdfCommandUtilities.ResolvePath(this, Path);
         var outputPath = PdfCommandUtilities.ResolvePath(this, OutputPath);
-        if (Incremental.IsPresent)
-        {
-            if (Flatten.IsPresent)
-            {
+        if (Incremental.IsPresent) {
+            if (Flatten.IsPresent) {
                 throw new PSArgumentException("-Incremental cannot be combined with -Flatten because flattening requires a full rewrite.");
             }
 
-            if (!string.IsNullOrWhiteSpace(AppearanceFontPath))
-            {
+            if (!string.IsNullOrWhiteSpace(AppearanceFontPath)) {
                 throw new PSArgumentException("-Incremental uses built-in Helvetica appearance streams; use -KeepNeedAppearances or a full rewrite when custom appearance fonts are required.");
             }
 
-            if (Field == null || Field.Count == 0)
-            {
+            if (Field == null || Field.Count == 0) {
                 throw new PSArgumentException("Provide -Field values when using -Incremental.", nameof(Field));
             }
 
-            if (!PdfCommandUtilities.ShouldWrite(this, outputPath, "Write incrementally updated PDF form"))
-            {
+            if (!PdfCommandUtilities.ShouldWrite(this, outputPath, "Write incrementally updated PDF form")) {
                 return;
             }
 
             PdfCommandUtilities.EnsureDirectory(outputPath);
-            var options = new PdfIncrementalFormFieldUpdateOptions
-            {
+            var options = new PdfIncrementalFormFieldUpdateOptions {
                 KeepNeedAppearances = KeepNeedAppearances.IsPresent,
                 GenerateAppearanceStreams = !KeepNeedAppearances.IsPresent
             };
@@ -101,7 +93,7 @@ protected override void ProcessRecord()
                 .Forms.AppendRevision(PdfCommandUtilities.ConvertFieldValues(Field), options)
                 .Save(outputPath)
                 .RequireSuccess();
-            WriteObject(new FileInfo(outputPath));
+            WritePassThru(new FileInfo(outputPath));
             return;
         }
 
@@ -110,41 +102,33 @@ protected override void ProcessRecord()
             PdfCommandUtilities.CreateReadOptions(Password, IgnorePermissionRestrictions.IsPresent));
         var formOptions = PdfCommandUtilities.CreateFormFillerOptions(this, AppearanceFontPath, AppearanceFontFamilyName, KeepNeedAppearances.IsPresent);
         PdfDocument result;
-        if (Field == null || Field.Count == 0)
-        {
-            if (!Flatten.IsPresent)
-            {
+        if (Field == null || Field.Count == 0) {
+            if (!Flatten.IsPresent) {
                 throw new PSArgumentException("Provide -Field values or use -Flatten.", nameof(Field));
             }
 
             result = formOptions == null
                 ? document.Forms.Flatten()
                 : document.Forms.Flatten(formOptions);
-        }
-        else
-        {
+        } else {
             var values = PdfCommandUtilities.ConvertFieldValues(Field);
-            if (Flatten.IsPresent)
-            {
+            if (Flatten.IsPresent) {
                 result = formOptions == null
                     ? document.Forms.FillAndFlatten(values)
                     : document.Forms.FillAndFlatten(values, formOptions);
-            }
-            else
-            {
+            } else {
                 result = formOptions == null
                     ? document.Forms.Fill(values)
                     : document.Forms.Fill(values, formOptions);
             }
         }
 
-        if (!PdfCommandUtilities.ShouldWrite(this, outputPath, "Write updated PDF form"))
-        {
+        if (!PdfCommandUtilities.ShouldWrite(this, outputPath, "Write updated PDF form")) {
             return;
         }
 
         PdfCommandUtilities.EnsureDirectory(outputPath);
         result.Save(outputPath).RequireSuccess();
-        WriteObject(new FileInfo(outputPath));
+        WritePassThru(new FileInfo(outputPath));
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/SetOfficePdfPageCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/SetOfficePdfPageCommand.cs
index 29706299..70ffa7f3 100644
--- a/Sources/PSWriteOffice/Cmdlets/Pdf/SetOfficePdfPageCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Pdf/SetOfficePdfPageCommand.cs
@@ -20,8 +20,7 @@ namespace PSWriteOffice.Cmdlets.Pdf;
 /// 
 [Cmdlet(VerbsCommon.Set, "OfficePdfPage", SupportsShouldProcess = true)]
 [OutputType(typeof(FileInfo))]
-public sealed class SetOfficePdfPageCommand : PSCmdlet
-{
+public sealed class SetOfficePdfPageCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Input PDF path.
     [Parameter(Mandatory = true)]
     [Alias("FilePath")]
@@ -94,11 +93,9 @@ public sealed class SetOfficePdfPageCommand : PSCmdlet
     public SwitchParameter IgnorePermissionRestrictions { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var outputPath = PdfCommandUtilities.ResolvePath(this, OutputPath);
-        if (!PdfCommandUtilities.ShouldWrite(this, outputPath, "Write updated PDF pages"))
-        {
+        if (!PdfCommandUtilities.ShouldWrite(this, outputPath, "Write updated PDF pages")) {
             return;
         }
 
@@ -122,29 +119,25 @@ protected override void ProcessRecord()
             MyInvocation.BoundParameters.ContainsKey(nameof(ResizeMode)) ||
             ResizeMargin.HasValue);
 
-        if (resizeOptions != null)
-        {
-            if (!string.IsNullOrWhiteSpace(BoxName) || MyInvocation.BoundParameters.ContainsKey(nameof(Rotation)))
-            {
+        if (resizeOptions != null) {
+            if (!string.IsNullOrWhiteSpace(BoxName) || MyInvocation.BoundParameters.ContainsKey(nameof(Rotation))) {
                 throw new PSArgumentException("Use page resize, rotation, or box editing as separate Set-OfficePdfPage operations.");
             }
 
             PdfDocument.Open(inputPath, readOptions).Pages.Resize(resizeOptions, pages).Save(outputPath).RequireSuccess();
-            WriteObject(new FileInfo(outputPath));
+            WritePassThru(new FileInfo(outputPath));
             return;
         }
 
-        if (!string.IsNullOrWhiteSpace(BoxName))
-        {
-            if (!Left.HasValue || !Bottom.HasValue || !Right.HasValue || !Top.HasValue)
-            {
+        if (!string.IsNullOrWhiteSpace(BoxName)) {
+            if (!Left.HasValue || !Bottom.HasValue || !Right.HasValue || !Top.HasValue) {
                 throw new PSArgumentException("-BoxName requires -Left, -Bottom, -Right, and -Top.");
             }
 
             PdfDocument
                 .Open(inputPath, readOptions)
                 .Pages.SetPageBox(
-                    (PdfPageBoundaryBox) Enum.Parse(typeof(PdfPageBoundaryBox), BoxName!, ignoreCase: true),
+                    (PdfPageBoundaryBox)Enum.Parse(typeof(PdfPageBoundaryBox), BoxName!, ignoreCase: true),
                     Left.Value,
                     Bottom.Value,
                     Right.Value,
@@ -152,12 +145,11 @@ protected override void ProcessRecord()
                     pages)
                 .Save(outputPath)
                 .RequireSuccess();
-            WriteObject(new FileInfo(outputPath));
+            WritePassThru(new FileInfo(outputPath));
             return;
         }
 
-        if (!MyInvocation.BoundParameters.ContainsKey(nameof(Rotation)))
-        {
+        if (!MyInvocation.BoundParameters.ContainsKey(nameof(Rotation))) {
             throw new PSArgumentException("Provide -Rotation, -BoxName with coordinates, or page resize options.");
         }
 
@@ -166,11 +158,10 @@ protected override void ProcessRecord()
             ? document.Pages.Rotate(Rotation)
             : document.Pages.Rotate(Rotation, PageRange!);
         result.Save(outputPath).RequireSuccess();
-        WriteObject(new FileInfo(outputPath));
+        WritePassThru(new FileInfo(outputPath));
     }
 
-    private static int[] ExpandPageRange(PdfPageRange range)
-    {
+    private static int[] ExpandPageRange(PdfPageRange range) {
         return Enumerable.Range(range.FirstPage, range.PageCount).ToArray();
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/SetOfficePdfSignatureCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/SetOfficePdfSignatureCommand.cs
index fb48712d..a5d2f588 100644
--- a/Sources/PSWriteOffice/Cmdlets/Pdf/SetOfficePdfSignatureCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Pdf/SetOfficePdfSignatureCommand.cs
@@ -15,8 +15,7 @@ namespace PSWriteOffice.Cmdlets.Pdf;
 /// 
 [Cmdlet(VerbsCommon.Set, "OfficePdfSignature", SupportsShouldProcess = true)]
 [OutputType(typeof(FileInfo), typeof(PdfSignatureValidationReport))]
-public sealed class SetOfficePdfSignatureCommand : PSCmdlet
-{
+public sealed class SetOfficePdfSignatureCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Prepared PDF path.
     [Parameter(Mandatory = true, Position = 0, ValueFromPipeline = true)]
     [Alias("FilePath")]
@@ -43,13 +42,11 @@ public sealed class SetOfficePdfSignatureCommand : PSCmdlet
     public SwitchParameter PassThruReport { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var inputPath = PdfCommandUtilities.ResolvePath(this, Path);
         var signaturePath = PdfCommandUtilities.ResolvePath(this, SignaturePath);
         var outputPath = PdfCommandUtilities.ResolvePath(this, OutputPath);
-        if (!PdfCommandUtilities.ShouldWrite(this, outputPath, "Write signed PDF"))
-        {
+        if (!PdfCommandUtilities.ShouldWrite(this, outputPath, "Write signed PDF")) {
             return;
         }
 
@@ -59,8 +56,11 @@ protected override void ProcessRecord()
             .Open(inputPath, PdfCommandUtilities.CreateReadOptions(Password, IgnorePermissionRestrictions.IsPresent))
             .Security.CompleteExternalSignature(File.ReadAllBytes(signaturePath));
         document.Save(outputPath).RequireSuccess();
-        WriteObject(PassThruReport.IsPresent
-            ? document.Security.ValidateSignatures()
-            : new FileInfo(outputPath));
+        if (PassThruReport.IsPresent) {
+            WriteObject(document.Security.ValidateSignatures());
+            return;
+        }
+
+        WritePassThru(new FileInfo(outputPath));
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointBulletsCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointBulletsCommand.cs
index 6e8dc783..e9bfea2d 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointBulletsCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointBulletsCommand.cs
@@ -22,8 +22,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 [Cmdlet(VerbsCommon.Add, "OfficePowerPointBullets")]
 [Alias("PptBullets")]
 [OutputType(typeof(PowerPointTextBox))]
-public sealed class AddOfficePowerPointBulletsCommand : PSCmdlet
-{
+public sealed class AddOfficePowerPointBulletsCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Target slide that will receive the bullet list (optional inside DSL).
     [Parameter(ValueFromPipeline = true)]
     public PowerPointSlide? Slide { get; set; }
@@ -57,17 +56,13 @@ public sealed class AddOfficePowerPointBulletsCommand : PSCmdlet
     public string? BulletChar { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
-            if (Width <= 0)
-            {
+    protected override void ProcessRecord() {
+        try {
+            if (Width <= 0) {
                 throw new ArgumentOutOfRangeException(nameof(Width), "Width must be greater than 0.");
             }
 
-            if (Height <= 0)
-            {
+            if (Height <= 0) {
                 throw new ArgumentOutOfRangeException(nameof(Height), "Height must be greater than 0.");
             }
 
@@ -75,18 +70,14 @@ protected override void ProcessRecord()
             var items = NormalizeItems(Bullets);
             var textBox = slide.AddTextBoxPoints(string.Empty, X, Y, Width, Height);
             textBox.SetBullets(items, Level, ResolveBulletChar());
-            WriteObject(textBox);
-        }
-        catch (Exception ex)
-        {
+            WritePassThru(textBox);
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "PowerPointAddBulletsFailed", ErrorCategory.InvalidOperation, Slide));
         }
     }
 
-    private static List NormalizeItems(string[]? items)
-    {
-        if (items == null || items.Length == 0)
-        {
+    private static List NormalizeItems(string[]? items) {
+        if (items == null || items.Length == 0) {
             throw new PSArgumentException("Bullets cannot be empty.", nameof(Bullets));
         }
 
@@ -96,21 +87,18 @@ private static List NormalizeItems(string[]? items)
             .Cast()
             .ToList();
 
-        if (list.Count == 0)
-        {
+        if (list.Count == 0) {
             throw new PSArgumentException("Bullets cannot be empty.", nameof(Bullets));
         }
 
         return list;
     }
 
-    private char ResolveBulletChar()
-    {
-        if (string.IsNullOrWhiteSpace(BulletChar))
-        {
+    private char ResolveBulletChar() {
+        if (string.IsNullOrWhiteSpace(BulletChar)) {
             return '\u2022';
         }
 
         return BulletChar!.Trim()[0];
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointChartCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointChartCommand.cs
index 5edf6c0a..abd673f3 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointChartCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointChartCommand.cs
@@ -11,8 +11,7 @@
 namespace PSWriteOffice.Cmdlets.PowerPoint;
 
 /// Chart types supported by Add-OfficePowerPointChart.
-public enum PowerPointChartType
-{
+public enum PowerPointChartType {
     /// Clustered column chart.
     ClusteredColumn,
     /// Line chart.
@@ -56,8 +55,7 @@ public enum PowerPointChartType
 [Cmdlet(VerbsCommon.Add, "OfficePowerPointChart", DefaultParameterSetName = ParameterSetDefault)]
 [Alias("PptChart")]
 [OutputType(typeof(PowerPointChart))]
-public sealed class AddOfficePowerPointChartCommand : PSCmdlet
-{
+public sealed class AddOfficePowerPointChartCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetDefault = "Default";
     private const string ParameterSetCategorical = "Categorical";
     private const string ParameterSetScatter = "Scatter";
@@ -113,43 +111,34 @@ public sealed class AddOfficePowerPointChartCommand : PSCmdlet
     public string? Title { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
-            if (Width <= 0)
-            {
+    protected override void ProcessRecord() {
+        try {
+            if (Width <= 0) {
                 throw new ArgumentOutOfRangeException(nameof(Width), "Width must be greater than 0.");
             }
 
-            if (Height <= 0)
-            {
+            if (Height <= 0) {
                 throw new ArgumentOutOfRangeException(nameof(Height), "Height must be greater than 0.");
             }
 
             var slide = Slide ?? PowerPointDslContext.Require(this).RequireSlide();
-            var chart = ParameterSetName switch
-            {
+            var chart = ParameterSetName switch {
                 ParameterSetCategorical => AddCategoricalChart(slide),
                 ParameterSetScatter => AddScatterChart(slide),
                 _ => AddDefaultChart(slide)
             };
 
-            if (!string.IsNullOrWhiteSpace(Title))
-            {
+            if (!string.IsNullOrWhiteSpace(Title)) {
                 chart.SetTitle(Title!);
             }
 
-            WriteObject(chart);
-        }
-        catch (Exception ex)
-        {
+            WritePassThru(chart);
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "PowerPointAddChartFailed", ErrorCategory.InvalidOperation, Slide));
         }
     }
 
-    private PowerPointChart AddDefaultChart(PowerPointSlide slide)
-    {
+    private PowerPointChart AddDefaultChart(PowerPointSlide slide) {
         OfficeChartKind kind = GetOfficeChartKind(Type);
         OfficeChartData data = kind == OfficeChartKind.Scatter
             ? new OfficeChartData(
@@ -162,43 +151,35 @@ private PowerPointChart AddDefaultChart(PowerPointSlide slide)
         return slide.AddChartPoints(kind, data, X, Y, Width, Height);
     }
 
-    private PowerPointChart AddCategoricalChart(PowerPointSlide slide)
-    {
-        if (Type == PowerPointChartType.Scatter)
-        {
+    private PowerPointChart AddCategoricalChart(PowerPointSlide slide) {
+        if (Type == PowerPointChartType.Scatter) {
             throw new PSArgumentException("Use -XProperty and -YProperty when -Type Scatter is selected.", nameof(Type));
         }
 
-        if (SeriesProperty == null || SeriesProperty.Length == 0)
-        {
+        if (SeriesProperty == null || SeriesProperty.Length == 0) {
             throw new PSArgumentException("Provide at least one -SeriesProperty.", nameof(SeriesProperty));
         }
 
-        if ((Type == PowerPointChartType.Pie || Type == PowerPointChartType.Doughnut) && SeriesProperty.Length > 1)
-        {
+        if ((Type == PowerPointChartType.Pie || Type == PowerPointChartType.Doughnut) && SeriesProperty.Length > 1) {
             throw new PSArgumentException("Pie and Doughnut charts support only one series property.", nameof(SeriesProperty));
         }
 
         return slide.AddChartPoints(GetOfficeChartKind(Type), BuildChartData(), X, Y, Width, Height);
     }
 
-    private PowerPointChart AddScatterChart(PowerPointSlide slide)
-    {
-        if (Type != PowerPointChartType.Scatter)
-        {
+    private PowerPointChart AddScatterChart(PowerPointSlide slide) {
+        if (Type != PowerPointChartType.Scatter) {
             throw new PSArgumentException("Use -CategoryProperty/-SeriesProperty for non-scatter charts.", nameof(Type));
         }
 
-        if (YProperty == null || YProperty.Length == 0)
-        {
+        if (YProperty == null || YProperty.Length == 0) {
             throw new PSArgumentException("Provide at least one -YProperty.", nameof(YProperty));
         }
 
         return slide.AddChartPoints(OfficeChartKind.Scatter, BuildScatterChartData(), X, Y, Width, Height);
     }
 
-    private OfficeChartData BuildChartData()
-    {
+    private OfficeChartData BuildChartData() {
         var items = EnsureData();
         var categories = items.Select(item => ConvertToString(GetPropertyValue(item, CategoryProperty), CategoryProperty)).ToArray();
         var series = SeriesProperty.Select(property =>
@@ -208,8 +189,7 @@ private OfficeChartData BuildChartData()
         return new OfficeChartData(categories, series);
     }
 
-    private OfficeChartData BuildScatterChartData()
-    {
+    private OfficeChartData BuildScatterChartData() {
         var items = EnsureData();
         var xValues = items.Select(item => ConvertToDouble(GetPropertyValue(item, XProperty), XProperty)).ToArray();
         var series = YProperty.Select(property =>
@@ -224,8 +204,7 @@ private OfficeChartData BuildScatterChartData()
             series);
     }
 
-    private static OfficeChartKind GetOfficeChartKind(PowerPointChartType type) => type switch
-    {
+    private static OfficeChartKind GetOfficeChartKind(PowerPointChartType type) => type switch {
         PowerPointChartType.Line => OfficeChartKind.Line,
         PowerPointChartType.Pie => OfficeChartKind.Pie,
         PowerPointChartType.Doughnut => OfficeChartKind.Doughnut,
@@ -233,78 +212,61 @@ private OfficeChartData BuildScatterChartData()
         _ => OfficeChartKind.ColumnClustered
     };
 
-    private object[] EnsureData()
-    {
-        if (InputObject == null || InputObject.Length == 0)
-        {
+    private object[] EnsureData() {
+        if (InputObject == null || InputObject.Length == 0) {
             throw new PSArgumentException("Provide at least one data item.", nameof(InputObject));
         }
 
         return InputObject;
     }
 
-    private static object? GetPropertyValue(object item, string propertyName)
-    {
-        if (item == null)
-        {
+    private static object? GetPropertyValue(object item, string propertyName) {
+        if (item == null) {
             throw new PSArgumentException("Chart data items cannot be null.");
         }
 
-        if (string.IsNullOrWhiteSpace(propertyName))
-        {
+        if (string.IsNullOrWhiteSpace(propertyName)) {
             throw new PSArgumentException("Property name cannot be empty.", nameof(propertyName));
         }
 
-        if (item is IDictionary dictionary)
-        {
-            foreach (DictionaryEntry entry in dictionary)
-            {
-                if (entry.Key is string key && string.Equals(key, propertyName, StringComparison.OrdinalIgnoreCase))
-                {
+        if (item is IDictionary dictionary) {
+            foreach (DictionaryEntry entry in dictionary) {
+                if (entry.Key is string key && string.Equals(key, propertyName, StringComparison.OrdinalIgnoreCase)) {
                     return entry.Value;
                 }
             }
         }
 
         var property = PSObject.AsPSObject(item).Properties[propertyName];
-        if (property == null)
-        {
+        if (property == null) {
             throw new PSArgumentException($"Property '{propertyName}' was not found on chart data item.");
         }
 
         return property.Value;
     }
 
-    private static string ConvertToString(object? value, string propertyName)
-    {
-        if (value == null)
-        {
+    private static string ConvertToString(object? value, string propertyName) {
+        if (value == null) {
             throw new PSArgumentException($"Property '{propertyName}' cannot be null.");
         }
 
         var text = Convert.ToString(value, CultureInfo.InvariantCulture);
-        if (string.IsNullOrWhiteSpace(text))
-        {
+        if (string.IsNullOrWhiteSpace(text)) {
             throw new PSArgumentException($"Property '{propertyName}' cannot be empty.");
         }
 
         return text;
     }
 
-    private static double ConvertToDouble(object? value, string propertyName)
-    {
-        if (value == null)
-        {
+    private static double ConvertToDouble(object? value, string propertyName) {
+        if (value == null) {
             throw new PSArgumentException($"Property '{propertyName}' cannot be null.");
         }
 
-        try
-        {
+        try {
             return Convert.ToDouble(value, CultureInfo.InvariantCulture);
-        }
-        catch (Exception)
-        {
+        } catch (Exception) {
             throw new PSArgumentException($"Property '{propertyName}' must be numeric.", propertyName);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointImageCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointImageCommand.cs
index 90eaeba2..a9decb0b 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointImageCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointImageCommand.cs
@@ -21,8 +21,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 [Cmdlet(VerbsCommon.Add, "OfficePowerPointImage")]
 [Alias("PptImage")]
 [OutputType(typeof(PowerPointPicture))]
-public sealed class AddOfficePowerPointImageCommand : PSCmdlet
-{
+public sealed class AddOfficePowerPointImageCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Target slide that will receive the picture (optional inside DSL).
     [Parameter(ValueFromPipeline = true)]
     public PowerPointSlide? Slide { get; set; }
@@ -48,28 +47,22 @@ public sealed class AddOfficePowerPointImageCommand : PSCmdlet
     public double Height { get; set; } = 150;
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
-            if (Width <= 0)
-            {
+    protected override void ProcessRecord() {
+        try {
+            if (Width <= 0) {
                 throw new ArgumentOutOfRangeException(nameof(Width), "Width must be greater than 0.");
             }
 
-            if (Height <= 0)
-            {
+            if (Height <= 0) {
                 throw new ArgumentOutOfRangeException(nameof(Height), "Height must be greater than 0.");
             }
 
             var slide = Slide ?? PowerPointDslContext.Require(this).RequireSlide();
             var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
             var picture = slide.AddPicturePoints(resolvedPath, X, Y, Width, Height);
-            WriteObject(picture);
-        }
-        catch (Exception ex)
-        {
+            WritePassThru(picture);
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "PowerPointAddImageFailed", ErrorCategory.InvalidOperation, Slide));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointSectionCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointSectionCommand.cs
index 267a40ee..ddc5bc52 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointSectionCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointSectionCommand.cs
@@ -21,8 +21,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 [Cmdlet(VerbsCommon.Add, "OfficePowerPointSection")]
 [Alias("PptSection")]
 [OutputType(typeof(PowerPointSectionInfo))]
-public sealed class AddOfficePowerPointSectionCommand : PSCmdlet
-{
+public sealed class AddOfficePowerPointSectionCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Presentation to update (optional inside DSL).
     [Parameter(ValueFromPipeline = true)]
     public PowerPointPresentation? Presentation { get; set; }
@@ -36,40 +35,32 @@ public sealed class AddOfficePowerPointSectionCommand : PSCmdlet
     public int? StartSlideIndex { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
+    protected override void ProcessRecord() {
+        try {
             var context = PowerPointDslContext.Current;
             var presentation = Presentation ?? context?.Presentation
                 ?? throw new InvalidOperationException("Presentation was not provided. Use -Presentation or run inside New-OfficePowerPoint.");
 
             int startIndex = ResolveStartSlideIndex(presentation, context);
-            WriteObject(presentation.AddSection(Name, startIndex));
-        }
-        catch (Exception ex)
-        {
+            WritePassThru(presentation.AddSection(Name, startIndex));
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "PowerPointAddSectionFailed", ErrorCategory.InvalidOperation, Presentation));
         }
     }
 
-    private int ResolveStartSlideIndex(PowerPointPresentation presentation, PowerPointDslContext? context)
-    {
-        if (StartSlideIndex.HasValue)
-        {
+    private int ResolveStartSlideIndex(PowerPointPresentation presentation, PowerPointDslContext? context) {
+        if (StartSlideIndex.HasValue) {
             return StartSlideIndex.Value;
         }
 
         var currentSlide = context?.CurrentSlide;
-        if (currentSlide != null)
-        {
+        if (currentSlide != null) {
             int index = presentation.Slides.ToList().IndexOf(currentSlide);
-            if (index >= 0)
-            {
+            if (index >= 0) {
                 return index;
             }
         }
 
         throw new PSArgumentException("Specify -StartSlideIndex or run inside a slide scope within New-OfficePowerPoint.");
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointShapeCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointShapeCommand.cs
index d09c9bfa..ee4cd135 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointShapeCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointShapeCommand.cs
@@ -22,8 +22,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 /// 
 [Cmdlet(VerbsCommon.Add, "OfficePowerPointShape")]
 [Alias("PptShape")]
-public sealed class AddOfficePowerPointShapeCommand : PSCmdlet
-{
+public sealed class AddOfficePowerPointShapeCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Target slide that will receive the shape (optional inside DSL).
     [Parameter(ValueFromPipeline = true)]
     public PowerPointSlide? Slide { get; set; }
@@ -65,22 +64,17 @@ public sealed class AddOfficePowerPointShapeCommand : PSCmdlet
     public double? OutlineWidth { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
-            if (Width <= 0)
-            {
+    protected override void ProcessRecord() {
+        try {
+            if (Width <= 0) {
                 throw new ArgumentOutOfRangeException(nameof(Width), "Width must be greater than 0.");
             }
 
-            if (Height <= 0)
-            {
+            if (Height <= 0) {
                 throw new ArgumentOutOfRangeException(nameof(Height), "Height must be greater than 0.");
             }
 
-            if (OutlineWidth is < 0)
-            {
+            if (OutlineWidth is < 0) {
                 throw new ArgumentOutOfRangeException(nameof(OutlineWidth), "OutlineWidth cannot be negative.");
             }
 
@@ -89,52 +83,42 @@ protected override void ProcessRecord()
             var shape = slide.AddShapePoints(shapeType, X, Y, Width, Height, Name);
 
             var fill = NormalizeColor(FillColor);
-            if (fill != null)
-            {
+            if (fill != null) {
                 shape.FillColor = fill;
             }
 
             var outline = NormalizeColor(OutlineColor);
-            if (outline != null)
-            {
+            if (outline != null) {
                 shape.OutlineColor = outline;
             }
 
-            if (OutlineWidth.HasValue)
-            {
+            if (OutlineWidth.HasValue) {
                 shape.OutlineWidthPoints = OutlineWidth.Value;
             }
 
-            WriteObject(shape);
-        }
-        catch (Exception ex)
-        {
+            WritePassThru(shape);
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "PowerPointAddShapeFailed", ErrorCategory.InvalidOperation, Slide));
         }
     }
 
-    private static string? NormalizeColor(string? color)
-    {
-        if (string.IsNullOrWhiteSpace(color))
-        {
+    private static string? NormalizeColor(string? color) {
+        if (string.IsNullOrWhiteSpace(color)) {
             return null;
         }
 
         return OfficeColor.Parse(color!).ToRgbHex().ToLowerInvariant();
     }
 
-    private static OfficePresetShapeType ResolveShapeType(string? shapeType)
-    {
-        if (string.IsNullOrWhiteSpace(shapeType))
-        {
+    private static OfficePresetShapeType ResolveShapeType(string? shapeType) {
+        if (string.IsNullOrWhiteSpace(shapeType)) {
             return OfficePresetShapeType.Rectangle;
         }
 
-        if (!OpenXmlValueParser.TryParse(shapeType, out var parsed))
-        {
+        if (!OpenXmlValueParser.TryParse(shapeType, out var parsed)) {
             throw new PSArgumentException($"Unknown shape type '{shapeType}'.", nameof(ShapeType));
         }
 
         return parsed;
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointSlideCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointSlideCommand.cs
index 8a7fd9a6..f4a08831 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointSlideCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointSlideCommand.cs
@@ -10,7 +10,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 /// 
 ///   Append a slide with the default layout.
 ///   PS> 
-///   $ppt = New-OfficePowerPoint -FilePath .\deck.pptx; Add-OfficePowerPointSlide -Presentation $ppt
+///   $ppt = New-OfficePowerPoint -Path .\deck.pptx; Add-OfficePowerPointSlide -Presentation $ppt
 ///   Creates a deck and appends a new slide at the end.
 /// 
 /// 
@@ -21,8 +21,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 /// 
 [Cmdlet(VerbsCommon.Add, "OfficePowerPointSlide", DefaultParameterSetName = ParameterSetIndex)]
 [Alias("PptSlide")]
-public class AddOfficePowerPointSlideCommand : PSCmdlet
-{
+public class AddOfficePowerPointSlideCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetIndex = "Index";
     private const string ParameterSetByName = "Name";
     private const string ParameterSetByType = "Type";
@@ -56,20 +55,16 @@ public class AddOfficePowerPointSlideCommand : PSCmdlet
     public ScriptBlock? Content { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         PowerPointPresentation? presentation = Presentation;
-        try
-        {
+        try {
             var context = PowerPointDslContext.Current;
-            if (presentation == null)
-            {
+            if (presentation == null) {
                 presentation = (context ?? PowerPointDslContext.Require(this)).Presentation;
             }
 
             PowerPointSlide slide;
-            switch (ParameterSetName)
-            {
+            switch (ParameterSetName) {
                 case ParameterSetByName:
                     slide = presentation.AddSlide(LayoutName, Master, ignoreCase: !CaseSensitive.IsPresent);
                     break;
@@ -81,30 +76,22 @@ protected override void ProcessRecord()
                     break;
             }
 
-            if (Content != null)
-            {
-                if (context != null)
-                {
-                    using (context.Push(slide))
-                    {
+            if (Content != null) {
+                if (context != null) {
+                    using (context.Push(slide)) {
                         Content.InvokeReturnAsIs();
                     }
-                }
-                else
-                {
+                } else {
                     using (var scoped = PowerPointDslContext.Enter(presentation))
-                    using (scoped.Push(slide))
-                    {
+                    using (scoped.Push(slide)) {
                         Content.InvokeReturnAsIs();
                     }
                 }
             }
 
-            WriteObject(slide);
-        }
-        catch (Exception ex)
-        {
+            WritePassThru(slide);
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "PowerPointAddSlideFailed", ErrorCategory.InvalidOperation, presentation ?? Presentation));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointTableCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointTableCommand.cs
index e651612d..704c8d67 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointTableCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointTableCommand.cs
@@ -22,8 +22,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 /// 
 [Cmdlet(VerbsCommon.Add, "OfficePowerPointTable", DefaultParameterSetName = ParameterSetInputObject)]
 [Alias("PptTable")]
-public sealed class AddOfficePowerPointTableCommand : PSCmdlet
-{
+public sealed class AddOfficePowerPointTableCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetInputObject = "InputObject";
     private const string ParameterSetSize = "Size";
 
@@ -103,11 +102,9 @@ public sealed class AddOfficePowerPointTableCommand : PSCmdlet
     public string? StyleId { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         PowerPointSlide? slide = null;
-        try
-        {
+        try {
             ValidateDimensions();
             slide = Slide ?? PowerPointDslContext.Require(this).RequireSlide();
 
@@ -115,36 +112,29 @@ protected override void ProcessRecord()
                 ? CreateSizedTable(slide)
                 : CreateDataTable(slide);
 
-            if (!string.IsNullOrWhiteSpace(StyleId))
-            {
+            if (!string.IsNullOrWhiteSpace(StyleId)) {
                 table.StyleId = StyleId;
             }
 
-            WriteObject(table);
-        }
-        catch (Exception ex)
-        {
+            WritePassThru(table);
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "PowerPointAddTableFailed", ErrorCategory.InvalidOperation, slide ?? Slide));
         }
     }
 
-    private PowerPointTable CreateSizedTable(PowerPointSlide slide)
-    {
-        if (Rows <= 0)
-        {
+    private PowerPointTable CreateSizedTable(PowerPointSlide slide) {
+        if (Rows <= 0) {
             throw new ArgumentOutOfRangeException(nameof(Rows), "Rows must be greater than 0.");
         }
 
-        if (Columns <= 0)
-        {
+        if (Columns <= 0) {
             throw new ArgumentOutOfRangeException(nameof(Columns), "Columns must be greater than 0.");
         }
 
         return slide.AddTablePoints(Rows, Columns, X, Y, Width, Height);
     }
 
-    private PowerPointTable CreateDataTable(PowerPointSlide slide)
-    {
+    private PowerPointTable CreateDataTable(PowerPointSlide slide) {
         var items = new List();
         TableInputCollector.AddInput(items, InputObject);
         var inputRows = TableInputCollector.RequireRows(items, nameof(InputObject));
@@ -161,8 +151,7 @@ private PowerPointTable CreateDataTable(PowerPointSlide slide)
                 propertyNames: explicitHeaders,
                 header: NoHeader.IsPresent ? Array.Empty() : explicitHeaders,
                 out var tableSpec,
-                normalizerOptions))
-        {
+                normalizerOptions)) {
             return CreateStructuredTable(slide, tableSpec);
         }
 
@@ -170,8 +159,7 @@ private PowerPointTable CreateDataTable(PowerPointSlide slide)
         var rows = NormalizeRows(normalized);
         var headers = ResolveHeaders(rows);
 
-        if (headers.Count == 0)
-        {
+        if (headers.Count == 0) {
             throw new InvalidOperationException("Unable to infer columns from the supplied data.");
         }
 
@@ -184,20 +172,16 @@ private PowerPointTable CreateDataTable(PowerPointSlide slide)
         return slide.AddTablePoints(rows, columns, includeHeaders: !NoHeader.IsPresent, X, Y, Width, Height);
     }
 
-    private PowerPointTable CreateStructuredTable(PowerPointSlide slide, OfficeTableSpec spec)
-    {
-        foreach (var placement in spec.Placements)
-        {
+    private PowerPointTable CreateStructuredTable(PowerPointSlide slide, OfficeTableSpec spec) {
+        foreach (var placement in spec.Placements) {
             PowerPointTableCellSpecService.Validate(placement.Cell);
         }
 
         var table = slide.AddTablePoints(spec.RowCount, spec.ColumnCount, X, Y, Width, Height);
-        foreach (var placement in spec.Placements)
-        {
+        foreach (var placement in spec.Placements) {
             var cell = table.GetCell(placement.RowIndex, placement.ColumnIndex);
             PowerPointTableCellSpecService.Apply(cell, placement.Cell);
-            if (placement.Cell.HasSpan)
-            {
+            if (placement.Cell.HasSpan) {
                 cell.Merge = (placement.Cell.RowSpan, placement.Cell.ColumnSpan);
             }
         }
@@ -205,38 +189,29 @@ private PowerPointTable CreateStructuredTable(PowerPointSlide slide, OfficeTable
         return table;
     }
 
-    private void ValidateDimensions()
-    {
-        if (Width <= 0)
-        {
+    private void ValidateDimensions() {
+        if (Width <= 0) {
             throw new ArgumentOutOfRangeException(nameof(Width), "Width must be greater than 0.");
         }
 
-        if (Height <= 0)
-        {
+        if (Height <= 0) {
             throw new ArgumentOutOfRangeException(nameof(Height), "Height must be greater than 0.");
         }
     }
 
-    private List> NormalizeRows(IReadOnlyList items)
-    {
+    private List> NormalizeRows(IReadOnlyList items) {
         var rows = new List>(items.Count);
-        foreach (var item in items)
-        {
-            if (item == null)
-            {
+        foreach (var item in items) {
+            if (item == null) {
                 rows.Add(new Dictionary(StringComparer.OrdinalIgnoreCase));
                 continue;
             }
 
-            if (item is IDictionary dict)
-            {
+            if (item is IDictionary dict) {
                 var row = new Dictionary(StringComparer.OrdinalIgnoreCase);
-                foreach (DictionaryEntry entry in dict)
-                {
+                foreach (DictionaryEntry entry in dict) {
                     var key = Convert.ToString(entry.Key, CultureInfo.InvariantCulture);
-                    if (string.IsNullOrWhiteSpace(key))
-                    {
+                    if (string.IsNullOrWhiteSpace(key)) {
                         continue;
                     }
                     row[key] = entry.Value;
@@ -246,8 +221,7 @@ private void ValidateDimensions()
                 continue;
             }
 
-            rows.Add(new Dictionary(StringComparer.OrdinalIgnoreCase)
-            {
+            rows.Add(new Dictionary(StringComparer.OrdinalIgnoreCase) {
                 ["Value"] = item
             });
         }
@@ -255,22 +229,17 @@ private void ValidateDimensions()
         return rows;
     }
 
-    private List ResolveHeaders(IReadOnlyList> rows)
-    {
+    private List ResolveHeaders(IReadOnlyList> rows) {
         var explicitHeaders = ResolveExplicitHeaders();
-        if (explicitHeaders != null)
-        {
+        if (explicitHeaders != null) {
             return explicitHeaders.ToList();
         }
 
         var headers = new List();
         var seen = new HashSet(StringComparer.OrdinalIgnoreCase);
-        foreach (var row in rows)
-        {
-            foreach (var key in row.Keys)
-            {
-                if (seen.Add(key))
-                {
+        foreach (var row in rows) {
+            foreach (var key in row.Keys) {
+                if (seen.Add(key)) {
                     headers.Add(key);
                 }
             }
@@ -279,10 +248,8 @@ private List ResolveHeaders(IReadOnlyList> r
         return headers;
     }
 
-    private string[]? ResolveExplicitHeaders()
-    {
-        if (Header == null || Header.Length == 0)
-        {
+    private string[]? ResolveExplicitHeaders() {
+        if (Header == null || Header.Length == 0) {
             return null;
         }
 
@@ -291,11 +258,10 @@ private List ResolveHeaders(IReadOnlyList> r
             .Distinct(StringComparer.OrdinalIgnoreCase)
             .ToArray();
 
-        if (explicitHeaders.Length == 0)
-        {
+        if (explicitHeaders.Length == 0) {
             throw new PSArgumentException("Header cannot be empty.", nameof(Header));
         }
 
         return explicitHeaders;
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointTextBoxCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointTextBoxCommand.cs
index 199c99ad..c19b3ec3 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointTextBoxCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointTextBoxCommand.cs
@@ -19,8 +19,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 /// 
 [Cmdlet(VerbsCommon.Add, "OfficePowerPointTextBox", DefaultParameterSetName = "Text")]
 [Alias("PptTextBox")]
-public class AddOfficePowerPointTextBoxCommand : PSCmdlet
-{
+public class AddOfficePowerPointTextBoxCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetText = "Text";
     private const string ParameterSetRun = "Run";
 
@@ -54,27 +53,21 @@ public class AddOfficePowerPointTextBoxCommand : PSCmdlet
     public int Height { get; set; } = 50;
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
+    protected override void ProcessRecord() {
+        try {
             var slide = Slide ?? PowerPointDslContext.Require(this).RequireSlide();
-            if (ParameterSetName == ParameterSetRun)
-            {
+            if (ParameterSetName == ParameterSetRun) {
                 PowerPointTextRunService.ValidateRuns(Run!, allowHyperlinks: true);
             }
 
             var textBox = slide.AddTextBoxPoints(Text ?? string.Empty, X, Y, Width, Height);
-            if (ParameterSetName == ParameterSetRun)
-            {
+            if (ParameterSetName == ParameterSetRun) {
                 PowerPointTextRunService.ApplyRuns(textBox, Run!);
             }
 
-            WriteObject(textBox);
-        }
-        catch (Exception ex)
-        {
+            WritePassThru(textBox);
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "PowerPointAddTextBoxFailed", ErrorCategory.InvalidOperation, Slide));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointVisualCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointVisualCommand.cs
index e0cb8a24..a49d5f29 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointVisualCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointVisualCommand.cs
@@ -10,8 +10,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 [Cmdlet(VerbsCommon.Add, "OfficePowerPointVisual")]
 [Alias("PptVisual")]
 [OutputType(typeof(PowerPointPicture))]
-public sealed class AddOfficePowerPointVisualCommand : OfficeVisualCommandBase
-{
+public sealed class AddOfficePowerPointVisualCommand : OfficeVisualCommandBase {
     /// ChartForgeX VisualArtifact, OfficeVisualSource, OfficeVisualConversionResult, or SVG file path.
     [Parameter(Mandatory = true, Position = 0, ValueFromPipeline = true)]
     public object InputObject { get; set; } = null!;
@@ -28,10 +27,16 @@ public sealed class AddOfficePowerPointVisualCommand : OfficeVisualCommandBase
     [Parameter]
     public double Y { get; set; }
 
+    /// Emit the picture added to the slide.
+    [Parameter]
+    public SwitchParameter PassThru { get; set; }
+
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         PowerPointSlide slide = Slide ?? PowerPointDslContext.Require(this).RequireSlide();
-        WriteObject(slide.AddVisualArtifact(ResolveVisual(InputObject), X, Y));
+        var picture = slide.AddVisualArtifact(ResolveVisual(InputObject), X, Y);
+        if (PassThru.IsPresent) {
+            WriteObject(picture);
+        }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/CloseOfficePowerPointCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/CloseOfficePowerPointCommand.cs
index e4a356f3..945f3fbb 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/CloseOfficePowerPointCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/CloseOfficePowerPointCommand.cs
@@ -10,18 +10,17 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 /// 
 ///   Close without saving.
 ///   PS> 
-///   $ppt = Get-OfficePowerPoint -FilePath .\deck.pptx; Close-OfficePowerPoint -Presentation $ppt
+///   $ppt = Get-OfficePowerPoint -Path .\deck.pptx; Close-OfficePowerPoint -Presentation $ppt
 ///   Releases the loaded presentation instance.
 /// 
 /// 
 ///   Save, open, and close.
 ///   PS> 
-///   Close-OfficePowerPoint -Presentation $ppt -Save -Show
+///   Close-OfficePowerPoint -Presentation $ppt -Save -Open
 ///   Saves the presentation, opens it in PowerPoint, and releases the object.
 /// 
 [Cmdlet(VerbsCommon.Close, "OfficePowerPoint", SupportsShouldProcess = true)]
-public sealed class CloseOfficePowerPointCommand : PSCmdlet
-{
+public sealed class CloseOfficePowerPointCommand : PSCmdlet {
     /// Presentation to close.
     [Parameter(Mandatory = true, ValueFromPipeline = true)]
     [ValidateNotNull]
@@ -33,32 +32,27 @@ public sealed class CloseOfficePowerPointCommand : PSCmdlet
 
     /// Open the presentation in PowerPoint after saving.
     [Parameter]
-    public SwitchParameter Show { get; set; }
+    [Alias("Show")]
+    public SwitchParameter Open { get; set; }
 
     /// Password used to save the presentation as an encrypted package.
     [Parameter]
     public string? Password { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (Presentation == null)
-        {
+    protected override void ProcessRecord() {
+        if (Presentation == null) {
             WriteError(new ErrorRecord(new ArgumentNullException(nameof(Presentation)), "PresentationNull", ErrorCategory.InvalidArgument, null));
             return;
         }
 
-        try
-        {
-            var action = Save.IsPresent || Show.IsPresent ? "Save and close" : "Close";
-            if (ShouldProcess("PowerPoint presentation", action))
-            {
-                PowerPointDocumentService.ClosePresentation(Presentation, Save.IsPresent, Show.IsPresent, Password);
+        try {
+            var action = Save.IsPresent || Open.IsPresent ? "Save and close" : "Close";
+            if (ShouldProcess("PowerPoint presentation", action)) {
+                PowerPointDocumentService.ClosePresentation(Presentation, Save.IsPresent, Open.IsPresent, Password);
             }
-        }
-        catch (Exception ex)
-        {
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "PowerPointCloseFailed", ErrorCategory.InvalidOperation, Presentation));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/CopyOfficePowerPointSlideCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/CopyOfficePowerPointSlideCommand.cs
index b8a5e6ca..009dd409 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/CopyOfficePowerPointSlideCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/CopyOfficePowerPointSlideCommand.cs
@@ -20,8 +20,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 /// 
 [Cmdlet(VerbsCommon.Copy, "OfficePowerPointSlide")]
 [OutputType(typeof(PowerPointSlide))]
-public sealed class CopyOfficePowerPointSlideCommand : PSCmdlet
-{
+public sealed class CopyOfficePowerPointSlideCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Presentation to update (optional inside DSL).
     [Parameter(ValueFromPipeline = true)]
     public PowerPointPresentation? Presentation { get; set; }
@@ -35,18 +34,14 @@ public sealed class CopyOfficePowerPointSlideCommand : PSCmdlet
     public int? InsertAt { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
+    protected override void ProcessRecord() {
+        try {
             var presentation = Presentation ?? PowerPointDslContext.Current?.Presentation
                 ?? throw new InvalidOperationException("Presentation was not provided. Use -Presentation or run inside New-OfficePowerPoint.");
 
-            WriteObject(presentation.DuplicateSlide(Index, InsertAt));
-        }
-        catch (Exception ex)
-        {
+            WritePassThru(presentation.DuplicateSlide(Index, InsertAt));
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "PowerPointCopySlideFailed", ErrorCategory.InvalidOperation, Presentation));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointCommand.cs
index 3c66b2c8..b4b51171 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointCommand.cs
@@ -11,37 +11,31 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 /// 
 ///   Open a deck for editing.
 ///   PS> 
-///   $ppt = Get-OfficePowerPoint -FilePath .\Quarterly.pptx
+///   $ppt = Get-OfficePowerPoint -Path .\Quarterly.pptx
 ///   Reads Quarterly.pptx and exposes the presentation object.
 /// 
 [Cmdlet(VerbsCommon.Get, "OfficePowerPoint")]
-public class GetOfficePowerPointCommand : PSCmdlet
-{
+public class GetOfficePowerPointCommand : PSCmdlet {
     /// Path to the .pptx file.
     [Parameter(Mandatory = true)]
     [ValidateNotNullOrEmpty]
-    public string FilePath { get; set; } = string.Empty;
+    [Alias("FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Password used to open an encrypted presentation package.
     [Parameter]
     public string? Password { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
-            var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(FilePath);
+    protected override void ProcessRecord() {
+        try {
+            var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
             var presentation = PowerPointDocumentService.LoadPresentation(resolvedPath, Password);
             WriteObject(presentation);
-        }
-        catch (FileNotFoundException ex)
-        {
-            WriteError(new ErrorRecord(ex, "FileNotFound", ErrorCategory.ObjectNotFound, FilePath));
-        }
-        catch (Exception ex)
-        {
-            WriteError(new ErrorRecord(ex, "PowerPointLoadFailed", ErrorCategory.InvalidOperation, FilePath));
+        } catch (FileNotFoundException ex) {
+            WriteError(new ErrorRecord(ex, "FileNotFound", ErrorCategory.ObjectNotFound, Path));
+        } catch (Exception ex) {
+            WriteError(new ErrorRecord(ex, "PowerPointLoadFailed", ErrorCategory.InvalidOperation, Path));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointSectionCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointSectionCommand.cs
index fc81254c..2069de62 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointSectionCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointSectionCommand.cs
@@ -10,7 +10,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 /// 
 ///   List all sections in a deck.
 ///   PS> 
-///   $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointSectionsRead.pptx
+///   $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSectionsRead.pptx
 /// Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null
 /// Add-OfficePowerPointSection -Presentation $ppt -Name 'Appendix' -StartSlideIndex 0 | Out-Null
 /// Get-OfficePowerPointSection -Presentation $ppt | Select-Object Name, FirstSlideIndex, SlideCount
@@ -18,8 +18,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 /// 
 [Cmdlet(VerbsCommon.Get, "OfficePowerPointSection")]
 [OutputType(typeof(PowerPointSectionInfo))]
-public sealed class GetOfficePowerPointSectionCommand : PSCmdlet
-{
+public sealed class GetOfficePowerPointSectionCommand : PSCmdlet {
     /// Presentation to inspect (optional inside DSL).
     [Parameter(ValueFromPipeline = true)]
     public PowerPointPresentation? Presentation { get; set; }
@@ -33,28 +32,22 @@ public sealed class GetOfficePowerPointSectionCommand : PSCmdlet
     public SwitchParameter CaseSensitive { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
+    protected override void ProcessRecord() {
+        try {
             var presentation = Presentation ?? PowerPointDslContext.Current?.Presentation
                 ?? throw new InvalidOperationException("Presentation was not provided. Use -Presentation or run inside New-OfficePowerPoint.");
 
             var comparison = CaseSensitive.IsPresent ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase;
-            foreach (var section in presentation.GetSections())
-            {
+            foreach (var section in presentation.GetSections()) {
                 if (!string.IsNullOrWhiteSpace(Name) &&
-                    !string.Equals(section.Name, Name, comparison))
-                {
+                    !string.Equals(section.Name, Name, comparison)) {
                     continue;
                 }
 
                 WriteObject(section);
             }
-        }
-        catch (Exception ex)
-        {
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "PowerPointGetSectionFailed", ErrorCategory.InvalidOperation, Presentation));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointThemeCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointThemeCommand.cs
index 547202bf..4df38060 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointThemeCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointThemeCommand.cs
@@ -9,7 +9,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 /// 
 ///   Inspect the default master theme.
 ///   PS> 
-///   $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointThemeRead.pptx
+///   $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointThemeRead.pptx
 /// Set-OfficePowerPointThemeName -Presentation $ppt -Name 'Service Brief'
 /// Set-OfficePowerPointThemeFonts -Presentation $ppt -MajorLatin 'Aptos Display' -MinorLatin 'Aptos'
 /// Get-OfficePowerPointTheme -Presentation $ppt | Select-Object Name, Master
@@ -18,8 +18,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 [Cmdlet(VerbsCommon.Get, "OfficePowerPointTheme")]
 [Alias("PptTheme")]
 [OutputType(typeof(PowerPointThemeInfo))]
-public sealed class GetOfficePowerPointThemeCommand : PSCmdlet
-{
+public sealed class GetOfficePowerPointThemeCommand : PSCmdlet {
     /// Presentation to inspect (optional inside New-OfficePowerPoint).
     [Parameter(ValueFromPipeline = true)]
     public PowerPointPresentation? Presentation { get; set; }
@@ -29,10 +28,8 @@ public sealed class GetOfficePowerPointThemeCommand : PSCmdlet
     public int Master { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
+    protected override void ProcessRecord() {
+        try {
             var presentation = Presentation ?? PowerPointDslContext.Require(this).Presentation;
             var info = new PowerPointThemeInfo(
                 Master,
@@ -41,10 +38,8 @@ protected override void ProcessRecord()
                 presentation.GetThemeFonts(Master));
 
             WriteObject(info);
-        }
-        catch (Exception ex)
-        {
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "PowerPointGetThemeFailed", ErrorCategory.InvalidOperation, Presentation));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointCommand.cs
index 1ef240e0..dda4e191 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointCommand.cs
@@ -2,7 +2,6 @@
 using System.IO;
 using System.Management.Automation;
 using OfficeIMO.PowerPoint;
-using OfficeIMO.PowerPoint.Pdf;
 using PSWriteOffice.Services;
 using PSWriteOffice.Services.Pdf;
 using PSWriteOffice.Services.PowerPoint;
@@ -14,8 +13,8 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 /// 
 ///   Create and capture the presentation object.
 ///   PS> 
-///   $ppt = New-OfficePowerPoint -FilePath .\deck.pptx
-///   Creates deck.pptx and returns the live presentation object for further editing.
+///   $ppt = New-OfficePowerPoint -Path .\deck.pptx -NoSave
+///   Creates a live presentation associated with deck.pptx for incremental composition.
 /// 
 /// 
 ///   Create a deck with a title slide.
@@ -25,12 +24,11 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 /// 
 [Cmdlet(VerbsCommon.New, "OfficePowerPoint", SupportsShouldProcess = true)]
 [Alias("PowerPointNew", "PptNew")]
-public class NewOfficePowerPointCommand : PSCmdlet
-{
+public class NewOfficePowerPointCommand : PSCmdlet {
     /// Destination path for the new .pptx.
     [Parameter(Mandatory = true, Position = 0)]
-    [Alias("Path")]
-    public string FilePath { get; set; } = string.Empty;
+    [Alias("FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// DSL scriptblock describing presentation content.
     [Parameter(Position = 1)]
@@ -44,7 +42,7 @@ public class NewOfficePowerPointCommand : PSCmdlet
     [Parameter]
     public SwitchParameter NoSave { get; set; }
 
-    /// Emit a  for chaining.
+    /// Emit the saved  for chaining.
     [Parameter]
     public SwitchParameter PassThru { get; set; }
 
@@ -52,65 +50,43 @@ public class NewOfficePowerPointCommand : PSCmdlet
     [Parameter]
     public string? Password { get; set; }
 
-    /// Optional PDF path to create from the same presentation before closing it.
-    [Parameter]
-    public string? PdfPath { get; set; }
-
     /// 
-    protected override void ProcessRecord()
-    {
-        var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(FilePath);
-        if (NoSave.IsPresent)
-        {
-            if (!PdfCommandUtilities.ShouldWrite(this, resolvedPath, "Create PowerPoint presentation"))
-            {
+    protected override void ProcessRecord() {
+        var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
+        if (NoSave.IsPresent) {
+            if (!PdfCommandUtilities.ShouldWrite(this, resolvedPath, "Create PowerPoint presentation")) {
                 return;
             }
-        }
-        else
-        {
-            if (!PdfCommandUtilities.ShouldWrite(this, resolvedPath, "Write new PowerPoint presentation"))
-            {
+        } else {
+            if (!PdfCommandUtilities.ShouldWrite(this, resolvedPath, "Write new PowerPoint presentation")) {
                 return;
             }
         }
 
-        var directory = Path.GetDirectoryName(resolvedPath);
-        if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory))
-        {
+        var directory = System.IO.Path.GetDirectoryName(resolvedPath);
+        if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory)) {
             Directory.CreateDirectory(directory);
         }
 
         PowerPointPresentation? presentation = null;
-        try
-        {
+        try {
             presentation = PowerPointDocumentService.CreatePresentation(resolvedPath);
 
-            if (Content == null)
-            {
-                WriteObject(presentation);
-                return;
-            }
-
-            using (PowerPointDslContext.Enter(presentation))
-            {
-                try
-                {
-                    Content.InvokeReturnAsIs();
-                }
-                catch (Exception ex) when (IsStopUpstream(ex))
-                {
-                    // Select-Object -First throws this to stop enumeration; ignore.
+            if (Content != null) {
+                using (PowerPointDslContext.Enter(presentation)) {
+                    try {
+                        Content.InvokeReturnAsIs();
+                    } catch (Exception ex) when (IsStopUpstream(ex)) {
+                        // Select-Object -First throws this to stop enumeration; ignore.
+                    }
                 }
             }
 
-            if (NoSave.IsPresent)
-            {
+            if (NoSave.IsPresent) {
                 WriteObject(presentation);
                 return;
             }
 
-            SavePdfIfRequested(presentation);
             var savedPath = PowerPointDocumentService.SavePresentation(
                 presentation,
                 show: false,
@@ -119,45 +95,23 @@ protected override void ProcessRecord()
             PowerPointDocumentService.ClosePresentation(presentation, save: false, show: false);
             presentation = null;
 
-            if (Open.IsPresent)
-            {
+            if (Open.IsPresent) {
                 FileOpenService.Open(savedPath);
             }
 
-            if (PassThru.IsPresent)
-            {
+            if (PassThru.IsPresent) {
                 WriteObject(new FileInfo(resolvedPath));
             }
-        }
-        catch (Exception ex)
-        {
-            if (presentation != null)
-            {
+        } catch (Exception ex) {
+            if (presentation != null) {
                 PowerPointDocumentService.ClosePresentation(presentation, save: false, show: false);
             }
-            WriteError(new ErrorRecord(ex, "PowerPointCreateFailed", ErrorCategory.InvalidOperation, FilePath));
+            WriteError(new ErrorRecord(ex, "PowerPointCreateFailed", ErrorCategory.InvalidOperation, Path));
         }
     }
 
-    private static bool IsStopUpstream(Exception ex)
-    {
+    private static bool IsStopUpstream(Exception ex) {
         return ex.GetType().Name == "StopUpstreamCommandsException";
     }
 
-    private void SavePdfIfRequested(PowerPointPresentation presentation)
-    {
-        if (string.IsNullOrWhiteSpace(PdfPath))
-        {
-            return;
-        }
-
-        var pdfPath = PdfCommandUtilities.ResolvePath(this, PdfPath!);
-        if (!PdfCommandUtilities.ShouldWrite(this, pdfPath, "Write PowerPoint PDF"))
-        {
-            return;
-        }
-
-        PdfCommandUtilities.EnsureDirectory(pdfPath);
-        presentation.SaveAsPdf(pdfPath).RequireSuccess();
-    }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/RemoveOfficePowerPointSlideCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/RemoveOfficePowerPointSlideCommand.cs
index 3ba3da50..36d3c936 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/RemoveOfficePowerPointSlideCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/RemoveOfficePowerPointSlideCommand.cs
@@ -9,7 +9,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 /// 
 ///   Delete the first slide.
 ///   PS> 
-///   $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointRemoveSlide.pptx
+///   $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRemoveSlide.pptx
 /// Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null
 /// Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null
 /// Remove-OfficePowerPointSlide -Presentation $ppt -Index 0 -Confirm:$false
@@ -17,8 +17,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 ///   Removes the first slide and saves the updated deck.
 /// 
 [Cmdlet(VerbsCommon.Remove, "OfficePowerPointSlide", SupportsShouldProcess = true)]
-public class RemoveOfficePowerPointSlideCommand : PSCmdlet
-{
+public class RemoveOfficePowerPointSlideCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Presentation to modify.
     [Parameter(Mandatory = true)]
     public PowerPointPresentation Presentation { get; set; } = null!;
@@ -28,18 +27,14 @@ public class RemoveOfficePowerPointSlideCommand : PSCmdlet
     public int Index { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
-            if (ShouldProcess($"Slide {Index}", "Remove slide"))
-            {
+    protected override void ProcessRecord() {
+        try {
+            if (ShouldProcess($"Slide {Index}", "Remove slide")) {
                 Presentation.RemoveSlide(Index);
+                WritePassThru(Presentation);
             }
-        }
-        catch (Exception ex)
-        {
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "PowerPointRemoveSlideFailed", ErrorCategory.InvalidOperation, Presentation));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/RenameOfficePowerPointSectionCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/RenameOfficePowerPointSectionCommand.cs
index a05b9cfe..1259ad34 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/RenameOfficePowerPointSectionCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/RenameOfficePowerPointSectionCommand.cs
@@ -10,7 +10,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 /// 
 ///   Rename a section in a presentation.
 ///   PS> 
-///   $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointRenameSection.pptx
+///   $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRenameSection.pptx
 /// Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null
 /// Add-OfficePowerPointSection -Presentation $ppt -Name 'Results' -StartSlideIndex 0 | Out-Null
 /// Rename-OfficePowerPointSection -Presentation $ppt -Name 'Results' -NewName 'Deep Dive' -PassThru
@@ -18,8 +18,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 /// 
 [Cmdlet(VerbsCommon.Rename, "OfficePowerPointSection")]
 [OutputType(typeof(PowerPointSectionInfo), typeof(bool))]
-public sealed class RenameOfficePowerPointSectionCommand : PSCmdlet
-{
+public sealed class RenameOfficePowerPointSectionCommand : PSCmdlet {
     /// Presentation to update (optional inside DSL).
     [Parameter(ValueFromPipeline = true)]
     public PowerPointPresentation? Presentation { get; set; }
@@ -41,16 +40,13 @@ public sealed class RenameOfficePowerPointSectionCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
+    protected override void ProcessRecord() {
+        try {
             var presentation = Presentation ?? PowerPointDslContext.Current?.Presentation
                 ?? throw new InvalidOperationException("Presentation was not provided. Use -Presentation or run inside New-OfficePowerPoint.");
 
             bool renamed = presentation.RenameSection(Name, NewName, ignoreCase: !CaseSensitive.IsPresent);
-            if (!renamed)
-            {
+            if (!renamed) {
                 WriteError(new ErrorRecord(
                     new InvalidOperationException($"Section '{Name}' was not found."),
                     "PowerPointSectionNotFound",
@@ -59,23 +55,17 @@ protected override void ProcessRecord()
                 return;
             }
 
-            if (PassThru.IsPresent)
-            {
+            if (PassThru.IsPresent) {
                 var comparison = CaseSensitive.IsPresent ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase;
                 var section = presentation.GetSections().FirstOrDefault(s => string.Equals(s.Name, NewName, comparison));
-                if (!string.IsNullOrEmpty(section.Name))
-                {
+                if (!string.IsNullOrEmpty(section.Name)) {
                     WriteObject(section);
-                }
-                else
-                {
+                } else {
                     WriteObject(true);
                 }
             }
-        }
-        catch (Exception ex)
-        {
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "PowerPointRenameSectionFailed", ErrorCategory.InvalidOperation, Presentation));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SaveOfficePowerPointCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SaveOfficePowerPointCommand.cs
index c41f48d6..cfca72bf 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SaveOfficePowerPointCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SaveOfficePowerPointCommand.cs
@@ -1,8 +1,6 @@
 using System;
 using System.Management.Automation;
 using OfficeIMO.PowerPoint;
-using OfficeIMO.PowerPoint.Pdf;
-using PSWriteOffice.Services.Pdf;
 using PSWriteOffice.Services.PowerPoint;
 
 namespace PSWriteOffice.Cmdlets.PowerPoint;
@@ -12,16 +10,15 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 /// 
 ///   Save and open the deck.
 ///   PS> 
-///   $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointSave.pptx
+///   $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSave.pptx
 /// $slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1
 /// Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Saved later'
-/// Save-OfficePowerPoint -Presentation $ppt -PdfPath .\Examples\Documents\PowerPointSave.pdf
-///   Saves the current presentation and exports a PDF sidecar.
+/// Save-OfficePowerPoint -Presentation $ppt
+///   Saves the current presentation without closing it.
 /// 
 [Cmdlet(VerbsData.Save, "OfficePowerPoint", SupportsShouldProcess = true)]
 [OutputType(typeof(PowerPointPresentation))]
-public class SaveOfficePowerPointCommand : PSCmdlet
-{
+public class SaveOfficePowerPointCommand : PSCmdlet {
     /// Presentation instance to save.
     [Parameter(Mandatory = true, ValueFromPipeline = true)]
     [ValidateNotNull]
@@ -34,70 +31,42 @@ public class SaveOfficePowerPointCommand : PSCmdlet
 
     /// Launch the saved file in the default viewer.
     [Parameter]
-    public SwitchParameter Show { get; set; }
+    [Alias("Show")]
+    public SwitchParameter Open { get; set; }
 
     /// Password used to save the presentation as an encrypted package.
     [Parameter]
     public string? Password { get; set; }
 
-    /// Optional PDF path to create from the same presentation.
-    [Parameter]
-    public string? PdfPath { get; set; }
-
     /// Emit the still-open presentation for further processing.
     [Parameter]
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (Presentation == null)
-        {
+    protected override void ProcessRecord() {
+        if (Presentation == null) {
             WriteError(new ErrorRecord(new ArgumentNullException(nameof(Presentation)), "PresentationNull", ErrorCategory.InvalidArgument, null));
             return;
         }
 
-        try
-        {
+        try {
             var associatedPath = PowerPointDocumentService.GetAssociatedPath(Presentation);
-            if (string.IsNullOrWhiteSpace(Path) && string.IsNullOrWhiteSpace(associatedPath))
-            {
+            if (string.IsNullOrWhiteSpace(Path) && string.IsNullOrWhiteSpace(associatedPath)) {
                 throw new PSInvalidOperationException("No file path provided. Use -Path or open the presentation from disk.");
             }
 
             var targetPath = string.IsNullOrWhiteSpace(Path)
                 ? associatedPath!
                 : SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
-            if (ShouldProcess(targetPath, "Save PowerPoint presentation"))
-            {
-                PowerPointDocumentService.SavePresentation(Presentation, Show.IsPresent, Password, targetPath);
-                SavePdfIfRequested();
-                if (PassThru.IsPresent)
-                {
+            if (ShouldProcess(targetPath, "Save PowerPoint presentation")) {
+                PowerPointDocumentService.SavePresentation(Presentation, Open.IsPresent, Password, targetPath);
+                if (PassThru.IsPresent) {
                     WriteObject(Presentation);
                 }
             }
-        }
-        catch (Exception ex)
-        {
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "PowerPointSaveFailed", ErrorCategory.InvalidOperation, null));
         }
     }
 
-    private void SavePdfIfRequested()
-    {
-        if (string.IsNullOrWhiteSpace(PdfPath))
-        {
-            return;
-        }
-
-        var pdfPath = PdfCommandUtilities.ResolvePath(this, PdfPath!);
-        if (!PdfCommandUtilities.ShouldWrite(this, pdfPath, "Write PowerPoint PDF"))
-        {
-            return;
-        }
-
-        PdfCommandUtilities.EnsureDirectory(pdfPath);
-        Presentation.SaveAsPdf(pdfPath).RequireSuccess();
-    }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointBackgroundCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointBackgroundCommand.cs
index 7f3eb738..3e10dd0e 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointBackgroundCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointBackgroundCommand.cs
@@ -21,8 +21,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 [Cmdlet(VerbsCommon.Set, "OfficePowerPointBackground", DefaultParameterSetName = ParameterSetColor)]
 [Alias("PptBackground")]
 [OutputType(typeof(PowerPointSlide))]
-public sealed class SetOfficePowerPointBackgroundCommand : PSCmdlet
-{
+public sealed class SetOfficePowerPointBackgroundCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetColor = "Color";
     private const string ParameterSetImage = "Image";
     private const string ParameterSetClear = "Clear";
@@ -44,14 +43,11 @@ public sealed class SetOfficePowerPointBackgroundCommand : PSCmdlet
     public SwitchParameter Clear { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
+    protected override void ProcessRecord() {
+        try {
             var slide = Slide ?? PowerPointDslContext.Require(this).RequireSlide();
 
-            switch (ParameterSetName)
-            {
+            switch (ParameterSetName) {
                 case ParameterSetImage:
                     slide.SetBackgroundImage(ResolvePath(ImagePath));
                     break;
@@ -64,29 +60,24 @@ protected override void ProcessRecord()
                     break;
             }
 
-            WriteObject(slide);
-        }
-        catch (Exception ex)
-        {
+            WritePassThru(slide);
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "PowerPointSetBackgroundFailed", ErrorCategory.InvalidOperation, Slide));
         }
     }
 
-    private string ResolvePath(string path)
-    {
+    private string ResolvePath(string path) {
         var providerPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(path);
         return System.IO.Path.IsPathRooted(providerPath)
             ? providerPath
             : System.IO.Path.Combine(SessionState.Path.CurrentFileSystemLocation.Path, providerPath);
     }
 
-    private static string NormalizeColor(string color)
-    {
-        if (string.IsNullOrWhiteSpace(color))
-        {
+    private static string NormalizeColor(string color) {
+        if (string.IsNullOrWhiteSpace(color)) {
             throw new PSArgumentException("Color cannot be empty.", nameof(Color));
         }
 
         return OfficeColor.Parse(color).ToRgbHex().ToLowerInvariant();
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointNotesCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointNotesCommand.cs
index f19b37c4..120fd1d3 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointNotesCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointNotesCommand.cs
@@ -19,8 +19,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 [Cmdlet(VerbsCommon.Set, "OfficePowerPointNotes")]
 [Alias("PptNotes")]
 [OutputType(typeof(PowerPointSlide))]
-public sealed class SetOfficePowerPointNotesCommand : PSCmdlet
-{
+public sealed class SetOfficePowerPointNotesCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Slide whose notes should be updated (optional inside DSL).
     [Parameter(ValueFromPipeline = true)]
     public PowerPointSlide? Slide { get; set; }
@@ -30,18 +29,14 @@ public sealed class SetOfficePowerPointNotesCommand : PSCmdlet
     public string Text { get; set; } = string.Empty;
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
+    protected override void ProcessRecord() {
+        try {
             var slide = Slide ?? PowerPointDslContext.Require(this).RequireSlide();
             var notes = slide.Notes;
             notes.Text = Text ?? string.Empty;
-            WriteObject(slide);
-        }
-        catch (Exception ex)
-        {
+            WritePassThru(slide);
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "PowerPointSetNotesFailed", ErrorCategory.InvalidOperation, Slide));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointSlideLayoutCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointSlideLayoutCommand.cs
index a4850593..829de03e 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointSlideLayoutCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointSlideLayoutCommand.cs
@@ -15,8 +15,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 [Cmdlet(VerbsCommon.Set, "OfficePowerPointSlideLayout", DefaultParameterSetName = ParameterSetIndex)]
 [Alias("PptSlideLayout")]
 [OutputType(typeof(PowerPointSlide))]
-public sealed class SetOfficePowerPointSlideLayoutCommand : PSCmdlet
-{
+public sealed class SetOfficePowerPointSlideLayoutCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetIndex = "Index";
     private const string ParameterSetByName = "Name";
     private const string ParameterSetByType = "Type";
@@ -46,13 +45,10 @@ public sealed class SetOfficePowerPointSlideLayoutCommand : PSCmdlet
     public SwitchParameter CaseSensitive { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
+    protected override void ProcessRecord() {
+        try {
             var slide = Slide ?? PowerPointDslContext.Require(this).RequireSlide();
-            switch (ParameterSetName)
-            {
+            switch (ParameterSetName) {
                 case ParameterSetByName:
                     slide.SetLayout(LayoutName, Master, ignoreCase: !CaseSensitive.IsPresent);
                     break;
@@ -64,11 +60,9 @@ protected override void ProcessRecord()
                     break;
             }
 
-            WriteObject(slide);
-        }
-        catch (Exception ex)
-        {
+            WritePassThru(slide);
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "PowerPointSetSlideLayoutFailed", ErrorCategory.InvalidOperation, Slide));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointSlideSizeCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointSlideSizeCommand.cs
index d0442392..44e588ef 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointSlideSizeCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointSlideSizeCommand.cs
@@ -19,7 +19,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 /// 
 ///   Set a custom size in centimeters.
 ///   PS> 
-///   $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointCustomSize.pptx
+///   $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointCustomSize.pptx
 /// Set-OfficePowerPointSlideSize -Presentation $ppt -WidthCm 25.4 -HeightCm 14.0
 /// Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Custom size'
 ///   Sets the presentation slide size to a custom 25.4 x 14.0 cm layout.
@@ -27,8 +27,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 [Cmdlet(VerbsCommon.Set, "OfficePowerPointSlideSize", DefaultParameterSetName = ParameterSetPreset)]
 [Alias("PptSlideSize")]
 [OutputType(typeof(PowerPointSlideSize))]
-public sealed class SetOfficePowerPointSlideSizeCommand : PSCmdlet
-{
+public sealed class SetOfficePowerPointSlideSizeCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetPreset = "Preset";
     private const string ParameterSetCentimeters = "Centimeters";
     private const string ParameterSetInches = "Inches";
@@ -80,16 +79,13 @@ public sealed class SetOfficePowerPointSlideSizeCommand : PSCmdlet
     public long HeightEmus { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
+    protected override void ProcessRecord() {
+        try {
             var presentation = Presentation ?? PowerPointDslContext.Current?.Presentation
                 ?? throw new InvalidOperationException("Presentation was not provided. Use -Presentation or run inside New-OfficePowerPoint.");
 
             var slideSize = presentation.SlideSize;
-            switch (ParameterSetName)
-            {
+            switch (ParameterSetName) {
                 case ParameterSetPreset:
                     slideSize.SetPreset(Preset, Portrait.IsPresent);
                     break;
@@ -109,11 +105,9 @@ protected override void ProcessRecord()
                     throw new InvalidOperationException($"Unsupported parameter set '{ParameterSetName}'.");
             }
 
-            WriteObject(slideSize);
-        }
-        catch (Exception ex)
-        {
+            WritePassThru(slideSize);
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "PowerPointSetSlideSizeFailed", ErrorCategory.InvalidOperation, Presentation));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointSlideTitleCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointSlideTitleCommand.cs
index 04f53e1b..7c9b72c4 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointSlideTitleCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointSlideTitleCommand.cs
@@ -16,8 +16,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 /// 
 [Cmdlet(VerbsCommon.Set, "OfficePowerPointSlideTitle")]
 [Alias("PptTitle")]
-public class SetOfficePowerPointSlideTitleCommand : PSCmdlet
-{
+public class SetOfficePowerPointSlideTitleCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Slide whose title should change (optional inside DSL).
     [Parameter(ValueFromPipeline = true)]
     public PowerPointSlide? Slide { get; set; }
@@ -27,28 +26,21 @@ public class SetOfficePowerPointSlideTitleCommand : PSCmdlet
     public string Title { get; set; } = null!;
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
+    protected override void ProcessRecord() {
+        try {
             var slide = Slide ?? PowerPointDslContext.Require(this).RequireSlide();
             var titleBox = slide.GetPlaceholder(PowerPointPlaceholderType.Title) ??
                            slide.GetPlaceholder(PowerPointPlaceholderType.CenteredTitle);
 
-            if (titleBox != null)
-            {
+            if (titleBox != null) {
                 titleBox.Text = Title;
-            }
-            else
-            {
+            } else {
                 slide.AddTitle(Title);
             }
 
-            WriteObject(slide);
-        }
-        catch (Exception ex)
-        {
+            WritePassThru(slide);
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "PowerPointSetTitleFailed", ErrorCategory.InvalidOperation, Slide));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointSlideTransitionCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointSlideTransitionCommand.cs
index 6fb35b85..aae9ec58 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointSlideTransitionCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointSlideTransitionCommand.cs
@@ -16,8 +16,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 [Cmdlet(VerbsCommon.Set, "OfficePowerPointSlideTransition")]
 [Alias("PptTransition")]
 [OutputType(typeof(PowerPointSlide))]
-public sealed class SetOfficePowerPointSlideTransitionCommand : PSCmdlet
-{
+public sealed class SetOfficePowerPointSlideTransitionCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Slide to update (optional inside a slide DSL scope).
     [Parameter(ValueFromPipeline = true)]
     public PowerPointSlide? Slide { get; set; }
@@ -27,17 +26,13 @@ public sealed class SetOfficePowerPointSlideTransitionCommand : PSCmdlet
     public PowerPointSlideTransition Transition { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
+    protected override void ProcessRecord() {
+        try {
             var slide = Slide ?? PowerPointDslContext.Require(this).RequireSlide();
             slide.Transition = Transition;
-            WriteObject(slide);
-        }
-        catch (Exception ex)
-        {
+            WritePassThru(slide);
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "PowerPointSetTransitionFailed", ErrorCategory.InvalidOperation, Slide));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/UpdateOfficePowerPointTextCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/UpdateOfficePowerPointTextCommand.cs
index fc892475..2d0358ca 100644
--- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/UpdateOfficePowerPointTextCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/UpdateOfficePowerPointTextCommand.cs
@@ -10,7 +10,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 /// 
 ///   Replace fiscal year text across the whole deck.
 ///   PS> 
-///   $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointUpdateText.pptx
+///   $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointUpdateText.pptx
 /// $slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1
 /// Add-OfficePowerPointTextBox -Slide $slide -Text 'FY24 summary' | Out-Null
 /// Set-OfficePowerPointNotes -Slide $slide -Text 'Mention FY24 assumptions.' | Out-Null
@@ -20,8 +20,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint;
 [Cmdlet(VerbsData.Update, "OfficePowerPointText", DefaultParameterSetName = ParameterSetAuto)]
 [Alias("Replace-OfficePowerPointText")]
 [OutputType(typeof(int))]
-public sealed class UpdateOfficePowerPointTextCommand : PSCmdlet
-{
+public sealed class UpdateOfficePowerPointTextCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetAuto = "Auto";
     private const string ParameterSetPresentation = "Presentation";
     private const string ParameterSetSlide = "Slide";
@@ -52,13 +51,10 @@ public sealed class UpdateOfficePowerPointTextCommand : PSCmdlet
     public SwitchParameter IncludeNotes { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
+    protected override void ProcessRecord() {
+        try {
             int replacements;
-            switch (ParameterSetName)
-            {
+            switch (ParameterSetName) {
                 case ParameterSetPresentation:
                     replacements = (Presentation ?? throw new InvalidOperationException("Presentation was not provided."))
                         .ReplaceText(OldValue, NewValue ?? string.Empty, IncludeTables, IncludeNotes.IsPresent);
@@ -72,24 +68,20 @@ protected override void ProcessRecord()
                     break;
             }
 
-            WriteObject(replacements);
-        }
-        catch (Exception ex)
-        {
+            WritePassThru(replacements);
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "PowerPointUpdateTextFailed", ErrorCategory.InvalidOperation, Presentation ?? (object?)Slide));
         }
     }
 
-    private int ReplaceUsingDslContext()
-    {
+    private int ReplaceUsingDslContext() {
         var context = PowerPointDslContext.Current
             ?? throw new InvalidOperationException("Specify -Presentation, -Slide, or run inside New-OfficePowerPoint.");
 
-        if (context.CurrentSlide != null)
-        {
+        if (context.CurrentSlide != null) {
             return context.CurrentSlide.ReplaceText(OldValue, NewValue ?? string.Empty, IncludeTables, IncludeNotes.IsPresent);
         }
 
         return context.Presentation.ReplaceText(OldValue, NewValue ?? string.Empty, IncludeTables, IncludeNotes.IsPresent);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Rtf/NewOfficeRtfCommand.cs b/Sources/PSWriteOffice/Cmdlets/Rtf/NewOfficeRtfCommand.cs
index e4282df4..fd583e8b 100644
--- a/Sources/PSWriteOffice/Cmdlets/Rtf/NewOfficeRtfCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Rtf/NewOfficeRtfCommand.cs
@@ -18,12 +18,11 @@ namespace PSWriteOffice.Cmdlets.Rtf;
 [Cmdlet(VerbsCommon.New, "OfficeRtf", SupportsShouldProcess = true)]
 [Alias("RtfNew")]
 [OutputType(typeof(FileInfo), typeof(RtfDocument))]
-public sealed class NewOfficeRtfCommand : PSCmdlet
-{
+public sealed class NewOfficeRtfCommand : PSCmdlet {
     /// Destination path for the RTF file.
     [Parameter(Mandatory = true, Position = 0)]
-    [Alias("FilePath", "Path")]
-    public string OutputPath { get; set; } = string.Empty;
+    [Alias("FilePath", "OutputPath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Plain paragraph text to add to the document.
     [Parameter(Position = 1, ValueFromPipeline = true)]
@@ -40,41 +39,34 @@ public sealed class NewOfficeRtfCommand : PSCmdlet
     private readonly List _paragraphs = new();
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (Text != null)
-        {
+    protected override void ProcessRecord() {
+        if (Text != null) {
             _paragraphs.AddRange(Text);
         }
     }
 
     /// 
-    protected override void EndProcessing()
-    {
+    protected override void EndProcessing() {
         var document = RtfDocument.Create();
-        foreach (var paragraph in _paragraphs)
-        {
+        foreach (var paragraph in _paragraphs) {
             document.AddParagraph(paragraph);
         }
 
-        if (NoSave.IsPresent)
-        {
+        if (NoSave.IsPresent) {
             WriteObject(document);
             return;
         }
 
-        var path = PdfCommandUtilities.ResolvePath(this, OutputPath);
-        if (!PdfCommandUtilities.ShouldWrite(this, path, "Write new RTF document"))
-        {
+        var path = PdfCommandUtilities.ResolvePath(this, Path);
+        if (!PdfCommandUtilities.ShouldWrite(this, path, "Write new RTF document")) {
             return;
         }
 
         PdfCommandUtilities.EnsureDirectory(path);
         document.Save(path, encoding: new UTF8Encoding(encoderShouldEmitUTF8Identifier: false));
 
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteObject(new FileInfo(path));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioConnectorCommand.cs b/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioConnectorCommand.cs
index ab0069ce..a52ea2a1 100644
--- a/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioConnectorCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioConnectorCommand.cs
@@ -20,8 +20,7 @@ namespace PSWriteOffice.Cmdlets.Visio;
 [Cmdlet(VerbsCommon.Add, "OfficeVisioConnector", DefaultParameterSetName = ByKeyParameterSet)]
 [Alias("VisioConnector")]
 [OutputType(typeof(VisioConnector))]
-public sealed class AddOfficeVisioConnectorCommand : PSCmdlet
-{
+public sealed class AddOfficeVisioConnectorCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ByKeyParameterSet = "ByKey";
     private const string ByShapeParameterSet = "ByShape";
 
@@ -82,8 +81,7 @@ public sealed class AddOfficeVisioConnectorCommand : PSCmdlet
     public EndArrow? EndArrow { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var context = VisioDslContext.Current;
         var page = Page ?? (context ?? VisioDslContext.Require(this)).RequirePage();
         var fromShape = ParameterSetName == ByShapeParameterSet
@@ -95,13 +93,11 @@ protected override void ProcessRecord()
 
         var connector = page.AddConnector(fromShape, toShape, Kind, FromSide, ToSide);
         VisioShapeCommandUtilities.ApplyConnectorStyle(connector, LineColor, LineWeight, LinePattern, BeginArrow, EndArrow, Label);
-        WriteObject(connector);
+        WritePassThru(connector);
     }
 
-    private VisioShape ResolveShape(VisioDslContext? context, VisioPage page, string value)
-    {
-        if (context != null)
-        {
+    private VisioShape ResolveShape(VisioDslContext? context, VisioPage page, string value) {
+        if (context != null) {
             return context.ResolveShape(page, value);
         }
 
@@ -112,4 +108,4 @@ private VisioShape ResolveShape(VisioDslContext? context, VisioPage page, string
 
         return shape ?? throw new PSInvalidOperationException($"Visio shape '{value}' was not found on the target page.");
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioContainerCommand.cs b/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioContainerCommand.cs
index f367c110..5a505580 100644
--- a/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioContainerCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioContainerCommand.cs
@@ -22,8 +22,7 @@ namespace PSWriteOffice.Cmdlets.Visio;
 [Cmdlet(VerbsCommon.Add, "OfficeVisioContainer")]
 [Alias("VisioContainer")]
 [OutputType(typeof(VisioShape))]
-public sealed class AddOfficeVisioContainerCommand : PSCmdlet
-{
+public sealed class AddOfficeVisioContainerCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private readonly List _input = new();
 
     /// Shapes, shape selections, or shape keys/ids to include in the container.
@@ -97,68 +96,56 @@ public sealed class AddOfficeVisioContainerCommand : PSCmdlet
     public SwitchParameter NoRibbon { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         AddInput(InputObject);
     }
 
     /// 
-    protected override void EndProcessing()
-    {
+    protected override void EndProcessing() {
         var page = Page ?? VisioDslContext.Current?.CurrentPage;
-        if (page == null)
-        {
+        if (page == null) {
             throw new PSArgumentException("Provide -Page or run inside a VisioPage DSL scope.", nameof(Page));
         }
 
         var shapes = ResolveShapes(page);
-        if (shapes.Count == 0)
-        {
+        if (shapes.Count == 0) {
             throw new PSArgumentException("At least one member shape is required.", nameof(InputObject));
         }
 
         var options = BuildOptions();
         var container = page.AddContainer(Id, Text, shapes, options);
         VisioDslContext.Current?.RegisterShape(page, Id, container);
-        WriteObject(container);
+        WritePassThru(container);
     }
 
-    private VisioContainerOptions BuildOptions()
-    {
+    private VisioContainerOptions BuildOptions() {
         var options = new VisioContainerOptions();
 
-        if (Margin.HasValue)
-        {
+        if (Margin.HasValue) {
             options.Margin = Margin.Value;
         }
 
-        if (HeadingHeight.HasValue)
-        {
+        if (HeadingHeight.HasValue) {
             options.HeadingHeight = HeadingHeight.Value;
         }
 
-        if (!string.IsNullOrWhiteSpace(FillColor))
-        {
+        if (!string.IsNullOrWhiteSpace(FillColor)) {
             options.FillColor = OfficeColor.Parse(FillColor!);
         }
 
-        if (!string.IsNullOrWhiteSpace(LineColor))
-        {
+        if (!string.IsNullOrWhiteSpace(LineColor)) {
             options.LineColor = OfficeColor.Parse(LineColor!);
         }
 
-        if (LineWeight.HasValue)
-        {
+        if (LineWeight.HasValue) {
             options.LineWeight = LineWeight.Value;
         }
 
-        if (ContainerStyle.HasValue)
-        {
+        if (ContainerStyle.HasValue) {
             options.ContainerStyle = ContainerStyle.Value;
         }
 
-        if (HeadingStyle.HasValue)
-        {
+        if (HeadingStyle.HasValue) {
             options.HeadingStyle = HeadingStyle.Value;
         }
 
@@ -169,23 +156,18 @@ private VisioContainerOptions BuildOptions()
         return options;
     }
 
-    private void AddInput(object? value)
-    {
-        if (value == null)
-        {
+    private void AddInput(object? value) {
+        if (value == null) {
             return;
         }
 
-        if (value is PSObject psObject)
-        {
+        if (value is PSObject psObject) {
             AddInput(psObject.BaseObject);
             return;
         }
 
-        if (value is IEnumerable enumerable && value is not string)
-        {
-            foreach (var item in enumerable)
-            {
+        if (value is IEnumerable enumerable && value is not string) {
+            foreach (var item in enumerable) {
                 AddInput(item);
             }
 
@@ -195,22 +177,17 @@ private void AddInput(object? value)
         _input.Add(value);
     }
 
-    private List ResolveShapes(VisioPage page)
-    {
+    private List ResolveShapes(VisioPage page) {
         var shapes = new List();
 
-        if (ShapeId != null)
-        {
-            foreach (var shapeId in ShapeId)
-            {
+        if (ShapeId != null) {
+            foreach (var shapeId in ShapeId) {
                 shapes.Add(ResolveShapeReference(page, shapeId));
             }
         }
 
-        foreach (var item in _input)
-        {
-            switch (item)
-            {
+        foreach (var item in _input) {
+            switch (item) {
                 case VisioShape shape:
                     shapes.Add(shape);
                     break;
@@ -225,16 +202,13 @@ private List ResolveShapes(VisioPage page)
         return shapes.Distinct().ToList();
     }
 
-    private static VisioShape ResolveShapeReference(VisioPage page, string reference)
-    {
-        if (string.IsNullOrWhiteSpace(reference))
-        {
+    private static VisioShape ResolveShapeReference(VisioPage page, string reference) {
+        if (string.IsNullOrWhiteSpace(reference)) {
             throw new PSArgumentException("Shape reference cannot be empty.", nameof(ShapeId));
         }
 
         var context = VisioDslContext.Current;
-        if (context != null)
-        {
+        if (context != null) {
             return context.ResolveShape(page, reference);
         }
 
@@ -245,4 +219,4 @@ private static VisioShape ResolveShapeReference(VisioPage page, string reference
 
         return shape ?? throw new PSInvalidOperationException($"Visio shape '{reference}' was not found on the target Visio page.");
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioDiamondCommand.cs b/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioDiamondCommand.cs
index 3e7b228a..e6aad176 100644
--- a/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioDiamondCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioDiamondCommand.cs
@@ -16,8 +16,7 @@ namespace PSWriteOffice.Cmdlets.Visio;
 [Cmdlet(VerbsCommon.Add, "OfficeVisioDiamond")]
 [Alias("VisioDiamond")]
 [OutputType(typeof(VisioShape))]
-public sealed class AddOfficeVisioDiamondCommand : PSCmdlet
-{
+public sealed class AddOfficeVisioDiamondCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Target page. Optional inside VisioPage or New-OfficeVisio.
     [Parameter(ValueFromPipeline = true)]
     public VisioPage? Page { get; set; }
@@ -67,13 +66,12 @@ public sealed class AddOfficeVisioDiamondCommand : PSCmdlet
     public double? LineWeight { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var context = VisioDslContext.Current;
         var page = Page ?? VisioDslContext.Require(this).RequirePage();
         var shape = page.AddDiamond(X, Y, Width, Height, Text, Unit);
         VisioShapeCommandUtilities.ApplyShapeStyle(shape, Name ?? Key, null, FillColor, LineColor, LineWeight, null, null, null);
         context?.RegisterShape(page, Key, shape);
-        WriteObject(shape);
+        WritePassThru(shape);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioEllipseCommand.cs b/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioEllipseCommand.cs
index 6a3a5b4a..125342bb 100644
--- a/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioEllipseCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioEllipseCommand.cs
@@ -16,8 +16,7 @@ namespace PSWriteOffice.Cmdlets.Visio;
 [Cmdlet(VerbsCommon.Add, "OfficeVisioEllipse")]
 [Alias("VisioEllipse")]
 [OutputType(typeof(VisioShape))]
-public sealed class AddOfficeVisioEllipseCommand : PSCmdlet
-{
+public sealed class AddOfficeVisioEllipseCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Target page. Optional inside VisioPage or New-OfficeVisio.
     [Parameter(ValueFromPipeline = true)]
     public VisioPage? Page { get; set; }
@@ -67,13 +66,12 @@ public sealed class AddOfficeVisioEllipseCommand : PSCmdlet
     public double? LineWeight { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var context = VisioDslContext.Current;
         var page = Page ?? VisioDslContext.Require(this).RequirePage();
         var shape = page.AddEllipse(X, Y, Width, Height, Text, Unit);
         VisioShapeCommandUtilities.ApplyShapeStyle(shape, Name ?? Key, null, FillColor, LineColor, LineWeight, null, null, null);
         context?.RegisterShape(page, Key, shape);
-        WriteObject(shape);
+        WritePassThru(shape);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioPageCommand.cs b/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioPageCommand.cs
index 0c52210e..bd259fd9 100644
--- a/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioPageCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioPageCommand.cs
@@ -18,8 +18,7 @@ namespace PSWriteOffice.Cmdlets.Visio;
 [Cmdlet(VerbsCommon.Add, "OfficeVisioPage")]
 [Alias("VisioPage")]
 [OutputType(typeof(VisioPage))]
-public sealed class AddOfficeVisioPageCommand : PSCmdlet
-{
+public sealed class AddOfficeVisioPageCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Target Visio document. Optional inside New-OfficeVisio.
     [Parameter(ValueFromPipeline = true)]
     public VisioDocument? Document { get; set; }
@@ -45,31 +44,24 @@ public sealed class AddOfficeVisioPageCommand : PSCmdlet
     public ScriptBlock? Content { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var context = VisioDslContext.Current;
         var document = Document ?? (context ?? VisioDslContext.Require(this)).Document;
         var page = document.AddPage(Name, Width, Height, Unit);
 
-        if (Content != null)
-        {
-            if (context != null)
-            {
-                using (context.Push(page))
-                {
+        if (Content != null) {
+            if (context != null) {
+                using (context.Push(page)) {
                     Content.InvokeReturnAsIs();
                 }
-            }
-            else
-            {
+            } else {
                 using (var scoped = VisioDslContext.Enter(document))
-                using (scoped.Push(page))
-                {
+                using (scoped.Push(page)) {
                     Content.InvokeReturnAsIs();
                 }
             }
         }
 
-        WriteObject(page);
+        WritePassThru(page);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioRectangleCommand.cs b/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioRectangleCommand.cs
index 87b1281f..0207e7a0 100644
--- a/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioRectangleCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioRectangleCommand.cs
@@ -16,8 +16,7 @@ namespace PSWriteOffice.Cmdlets.Visio;
 [Cmdlet(VerbsCommon.Add, "OfficeVisioRectangle")]
 [Alias("VisioRectangle", "VisioRect")]
 [OutputType(typeof(VisioShape))]
-public sealed class AddOfficeVisioRectangleCommand : PSCmdlet
-{
+public sealed class AddOfficeVisioRectangleCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Target page. Optional inside VisioPage or New-OfficeVisio.
     [Parameter(ValueFromPipeline = true)]
     public VisioPage? Page { get; set; }
@@ -83,13 +82,12 @@ public sealed class AddOfficeVisioRectangleCommand : PSCmdlet
     public double? Angle { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var context = VisioDslContext.Current;
         var page = Page ?? VisioDslContext.Require(this).RequirePage();
         var shape = page.AddRectangle(X, Y, Width, Height, Text, Unit);
         VisioShapeCommandUtilities.ApplyShapeStyle(shape, Name ?? Key, NameU, FillColor, LineColor, LineWeight, LinePattern, FillPattern, Angle);
         context?.RegisterShape(page, Key, shape);
-        WriteObject(shape);
+        WritePassThru(shape);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioStencilShapeCommand.cs b/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioStencilShapeCommand.cs
index 1c0ab824..47f9614a 100644
--- a/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioStencilShapeCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioStencilShapeCommand.cs
@@ -20,8 +20,7 @@ namespace PSWriteOffice.Cmdlets.Visio;
 [Cmdlet(VerbsCommon.Add, "OfficeVisioStencilShape", DefaultParameterSetName = CatalogNameParameterSet)]
 [Alias("VisioStencil")]
 [OutputType(typeof(VisioShape))]
-public sealed class AddOfficeVisioStencilShapeCommand : PSCmdlet
-{
+public sealed class AddOfficeVisioStencilShapeCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string CatalogObjectParameterSet = "CatalogObject";
     private const string CatalogNameParameterSet = "CatalogName";
     private const string BuiltInParameterSet = "BuiltIn";
@@ -105,8 +104,7 @@ public sealed class AddOfficeVisioStencilShapeCommand : PSCmdlet
     public double? Angle { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var context = VisioDslContext.Current;
         var page = Page ?? VisioDslContext.Require(this).RequirePage();
         var catalog = ResolveCatalog(context);
@@ -126,23 +124,19 @@ protected override void ProcessRecord()
 
         VisioShapeCommandUtilities.ApplyShapeStyle(shape, ShapeName ?? Key, NameU, FillColor, LineColor, LineWeight, LinePattern, FillPattern, Angle);
         context?.RegisterShape(page, Key, shape);
-        WriteObject(shape);
+        WritePassThru(shape);
     }
 
-    private VisioStencilCatalog ResolveCatalog(VisioDslContext? context)
-    {
-        if (ParameterSetName == CatalogObjectParameterSet)
-        {
+    private VisioStencilCatalog ResolveCatalog(VisioDslContext? context) {
+        if (ParameterSetName == CatalogObjectParameterSet) {
             return CatalogObject!;
         }
 
-        if (ParameterSetName == BuiltInParameterSet)
-        {
+        if (ParameterSetName == BuiltInParameterSet) {
             return VisioStencilCommandUtilities.GetBuiltInCatalog(BuiltIn);
         }
 
-        if (context != null)
-        {
+        if (context != null) {
             return context.ResolveStencilCatalog(Catalog);
         }
 
@@ -151,44 +145,37 @@ private VisioStencilCatalog ResolveCatalog(VisioDslContext? context)
             : throw new PSInvalidOperationException("A named stencil catalog can only be resolved inside New-OfficeVisio.");
     }
 
-    private static string CreateUniqueShapeId(VisioPage page, string baseId)
-    {
+    private static string CreateUniqueShapeId(VisioPage page, string baseId) {
         string stem = string.IsNullOrWhiteSpace(baseId) ? "stencil" : baseId.Trim();
         var existingIds = page.AllShapes()
             .Select(shape => shape.Id)
             .Where(id => !string.IsNullOrWhiteSpace(id))
             .ToHashSet(StringComparer.OrdinalIgnoreCase);
 
-        if (!existingIds.Contains(stem))
-        {
+        if (!existingIds.Contains(stem)) {
             return stem;
         }
 
-        for (int index = 2; ; index++)
-        {
+        for (int index = 2; ; index++) {
             string candidate = stem + "-" + index.ToString(System.Globalization.CultureInfo.InvariantCulture);
-            if (!existingIds.Contains(candidate))
-            {
+            if (!existingIds.Contains(candidate)) {
                 return candidate;
             }
         }
     }
 
-    private static double ConvertStencilDefaultToPageUnit(double value, VisioStencilShape stencil, VisioPage page)
-    {
+    private static double ConvertStencilDefaultToPageUnit(double value, VisioStencilShape stencil, VisioPage page) {
         var sourceUnit = stencil.DefaultUnit ?? page.DefaultUnit;
-        var inches = sourceUnit switch
-        {
+        var inches = sourceUnit switch {
             VisioMeasurementUnit.Centimeters => value / 2.54,
             VisioMeasurementUnit.Millimeters => value / 25.4,
             _ => value
         };
 
-        return page.DefaultUnit switch
-        {
+        return page.DefaultUnit switch {
             VisioMeasurementUnit.Centimeters => inches * 2.54,
             VisioMeasurementUnit.Millimeters => inches * 25.4,
             _ => inches
         };
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioTextBoxCommand.cs b/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioTextBoxCommand.cs
index b865967a..9a8b13bf 100644
--- a/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioTextBoxCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Visio/AddOfficeVisioTextBoxCommand.cs
@@ -16,8 +16,7 @@ namespace PSWriteOffice.Cmdlets.Visio;
 [Cmdlet(VerbsCommon.Add, "OfficeVisioTextBox")]
 [Alias("VisioTextBox", "VisioText")]
 [OutputType(typeof(VisioShape))]
-public sealed class AddOfficeVisioTextBoxCommand : PSCmdlet
-{
+public sealed class AddOfficeVisioTextBoxCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Target page. Optional inside VisioPage or New-OfficeVisio.
     [Parameter(ValueFromPipeline = true)]
     public VisioPage? Page { get; set; }
@@ -71,13 +70,12 @@ public sealed class AddOfficeVisioTextBoxCommand : PSCmdlet
     public double? LineWeight { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var context = VisioDslContext.Current;
         var page = Page ?? VisioDslContext.Require(this).RequirePage();
         var shape = page.AddTextBox(X, Y, Width, Height, Text, Unit);
         VisioShapeCommandUtilities.ApplyShapeStyle(shape, Name ?? Key, NameU, FillColor, LineColor, LineWeight, null, null, null);
         context?.RegisterShape(page, Key, shape);
-        WriteObject(shape);
+        WritePassThru(shape);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Visio/ConvertToOfficeVisioPngCommand.cs b/Sources/PSWriteOffice/Cmdlets/Visio/ConvertToOfficeVisioPngCommand.cs
index 22f13410..4edb11e2 100644
--- a/Sources/PSWriteOffice/Cmdlets/Visio/ConvertToOfficeVisioPngCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Visio/ConvertToOfficeVisioPngCommand.cs
@@ -18,8 +18,7 @@ namespace PSWriteOffice.Cmdlets.Visio;
 [Cmdlet(VerbsData.ConvertTo, "OfficeVisioPng", DefaultParameterSetName = PathParameterSet, SupportsShouldProcess = true)]
 [Alias("ConvertTo-VisioPng")]
 [OutputType(typeof(byte[]), typeof(FileInfo))]
-public sealed class ConvertToOfficeVisioPngCommand : PSCmdlet
-{
+public sealed class ConvertToOfficeVisioPngCommand : PSCmdlet {
     private const string PathParameterSet = "Path";
     private const string DocumentParameterSet = "Document";
 
@@ -87,11 +86,11 @@ public sealed class ConvertToOfficeVisioPngCommand : PSCmdlet
 
     /// Open the PNG after saving.
     [Parameter]
-    public SwitchParameter Show { get; set; }
+    [Alias("Show")]
+    public SwitchParameter Open { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var options = VisioCommandUtilities.BuildImageOptions(
             this,
             PageIndex,
@@ -110,14 +109,12 @@ protected override void ProcessRecord()
 
         string? targetPath = null;
 
-        if (!string.IsNullOrWhiteSpace(OutputPath))
-        {
+        if (!string.IsNullOrWhiteSpace(OutputPath)) {
             targetPath = VisioCommandUtilities.ResolveImageOutputPath(
                 this,
                 OutputPath!,
                 OfficeImageExportFormat.Png);
-            if (!ShouldProcess(targetPath, "Write Visio PNG"))
-            {
+            if (!ShouldProcess(targetPath, "Write Visio PNG")) {
                 return;
             }
         }
@@ -125,13 +122,11 @@ protected override void ProcessRecord()
         var document = VisioCommandUtilities.ResolveDocument(this, Document, Path);
         OfficeImageExportResult result = document.ExportImage(OfficeImageExportFormat.Png, options);
 
-        if (targetPath != null)
-        {
+        if (targetPath != null) {
             VisioCommandUtilities.EnsureDirectory(targetPath);
             OfficeImageExportResult saved = result.Save(targetPath);
 
-            if (Show.IsPresent)
-            {
+            if (Open.IsPresent) {
                 FileOpenService.Open(saved.SavedPath!);
             }
 
@@ -141,4 +136,4 @@ protected override void ProcessRecord()
 
         WriteObject(result.Bytes, enumerateCollection: false);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Visio/ConvertToOfficeVisioSvgCommand.cs b/Sources/PSWriteOffice/Cmdlets/Visio/ConvertToOfficeVisioSvgCommand.cs
index ed2561ab..cb68ee67 100644
--- a/Sources/PSWriteOffice/Cmdlets/Visio/ConvertToOfficeVisioSvgCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Visio/ConvertToOfficeVisioSvgCommand.cs
@@ -19,8 +19,7 @@ namespace PSWriteOffice.Cmdlets.Visio;
 [Cmdlet(VerbsData.ConvertTo, "OfficeVisioSvg", DefaultParameterSetName = PathParameterSet, SupportsShouldProcess = true)]
 [Alias("ConvertTo-VisioSvg")]
 [OutputType(typeof(string), typeof(FileInfo))]
-public sealed class ConvertToOfficeVisioSvgCommand : PSCmdlet
-{
+public sealed class ConvertToOfficeVisioSvgCommand : PSCmdlet {
     private const string PathParameterSet = "Path";
     private const string DocumentParameterSet = "Document";
 
@@ -76,11 +75,11 @@ public sealed class ConvertToOfficeVisioSvgCommand : PSCmdlet
 
     /// Open the SVG after saving.
     [Parameter]
-    public SwitchParameter Show { get; set; }
+    [Alias("Show")]
+    public SwitchParameter Open { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var options = VisioCommandUtilities.BuildImageOptions(
             this,
             PageIndex,
@@ -99,14 +98,12 @@ protected override void ProcessRecord()
 
         string? targetPath = null;
 
-        if (!string.IsNullOrWhiteSpace(OutputPath))
-        {
+        if (!string.IsNullOrWhiteSpace(OutputPath)) {
             targetPath = VisioCommandUtilities.ResolveImageOutputPath(
                 this,
                 OutputPath!,
                 OfficeImageExportFormat.Svg);
-            if (!ShouldProcess(targetPath, "Write Visio SVG"))
-            {
+            if (!ShouldProcess(targetPath, "Write Visio SVG")) {
                 return;
             }
         }
@@ -114,13 +111,11 @@ protected override void ProcessRecord()
         var document = VisioCommandUtilities.ResolveDocument(this, Document, Path);
         OfficeImageExportResult result = document.ExportImage(OfficeImageExportFormat.Svg, options);
 
-        if (targetPath != null)
-        {
+        if (targetPath != null) {
             VisioCommandUtilities.EnsureDirectory(targetPath);
             OfficeImageExportResult saved = result.Save(targetPath);
 
-            if (Show.IsPresent)
-            {
+            if (Open.IsPresent) {
                 FileOpenService.Open(saved.SavedPath!);
             }
 
@@ -130,4 +125,4 @@ protected override void ProcessRecord()
 
         WriteObject(Encoding.UTF8.GetString(result.Bytes));
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Visio/ExportOfficeVisioVisualCommand.cs b/Sources/PSWriteOffice/Cmdlets/Visio/ExportOfficeVisioVisualCommand.cs
index b8e90b4f..c1b3bb93 100644
--- a/Sources/PSWriteOffice/Cmdlets/Visio/ExportOfficeVisioVisualCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Visio/ExportOfficeVisioVisualCommand.cs
@@ -16,8 +16,7 @@ namespace PSWriteOffice.Cmdlets.Visio;
 /// 
 [Cmdlet(VerbsData.Export, "OfficeVisioVisual", SupportsShouldProcess = true)]
 [OutputType(typeof(OfficeVisioVisualConversionResult), typeof(FileInfo))]
-public sealed class ExportOfficeVisioVisualCommand : OfficeVisioVisualCommandBase
-{
+public sealed class ExportOfficeVisioVisualCommand : OfficeVisioVisualCommandBase {
     private object? _bufferedInput;
     private bool _inputSeen;
 
@@ -32,22 +31,20 @@ public sealed class ExportOfficeVisioVisualCommand : OfficeVisioVisualCommandBas
 
     /// Open the generated VSDX after saving.
     [Parameter]
-    public SwitchParameter Show { get; set; }
+    [Alias("Show")]
+    public SwitchParameter Open { get; set; }
 
     /// Emit the conversion result instead of the saved file.
     [Parameter]
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (BufferPipelineByte(InputObject))
-        {
+    protected override void ProcessRecord() {
+        if (BufferPipelineByte(InputObject)) {
             return;
         }
 
-        if (_inputSeen)
-        {
+        if (_inputSeen) {
             throw new PSInvalidOperationException(
                 "Export-OfficeVisioVisual accepts one input artifact for one output path. Invoke the cmdlet separately for each destination.");
         }
@@ -56,37 +53,31 @@ protected override void ProcessRecord()
     }
 
     /// 
-    protected override void EndProcessing()
-    {
+    protected override void EndProcessing() {
         byte[]? jsonBytes = CompletePipelineBytes();
-        if (jsonBytes != null)
-        {
+        if (jsonBytes != null) {
             _bufferedInput = jsonBytes;
             _inputSeen = true;
         }
 
-        if (!_inputSeen)
-        {
+        if (!_inputSeen) {
             return;
         }
 
         string fullPath = VisioCommandUtilities.ResolvePath(this, Path);
-        if (!string.Equals(System.IO.Path.GetExtension(fullPath), ".vsdx", System.StringComparison.OrdinalIgnoreCase))
-        {
+        if (!string.Equals(System.IO.Path.GetExtension(fullPath), ".vsdx", System.StringComparison.OrdinalIgnoreCase)) {
             throw new PSArgumentException("Native editable Visio output must use the .vsdx extension.", nameof(Path));
         }
-        if (!ShouldProcess(fullPath, "Export CFX visual artifact as native editable Visio"))
-        {
+        if (!ShouldProcess(fullPath, "Export CFX visual artifact as native editable Visio")) {
             return;
         }
 
         OfficeVisioVisualConversionResult result = ResolveVisioVisual(_bufferedInput!);
         VisioCommandUtilities.EnsureDirectory(fullPath);
         result.Document.Save(fullPath);
-        if (Show.IsPresent)
-        {
+        if (Open.IsPresent) {
             FileOpenService.Open(fullPath);
         }
         WriteObject(PassThru.IsPresent ? result : new FileInfo(fullPath));
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Visio/NewOfficeVisioCommand.cs b/Sources/PSWriteOffice/Cmdlets/Visio/NewOfficeVisioCommand.cs
index c21df6ca..939778a7 100644
--- a/Sources/PSWriteOffice/Cmdlets/Visio/NewOfficeVisioCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Visio/NewOfficeVisioCommand.cs
@@ -20,8 +20,7 @@ namespace PSWriteOffice.Cmdlets.Visio;
 [Cmdlet(VerbsCommon.New, "OfficeVisio", SupportsShouldProcess = true)]
 [Alias("VisioNew")]
 [OutputType(typeof(VisioDocument), typeof(FileInfo))]
-public sealed class NewOfficeVisioCommand : PSCmdlet
-{
+public sealed class NewOfficeVisioCommand : PSCmdlet {
     /// Destination .vsdx path.
     [Parameter(Mandatory = true, Position = 0)]
     [Alias("FilePath")]
@@ -69,20 +68,18 @@ public sealed class NewOfficeVisioCommand : PSCmdlet
 
     /// Open the document after saving.
     [Parameter]
-    public SwitchParameter Show { get; set; }
+    [Alias("Show")]
+    public SwitchParameter Open { get; set; }
 
     /// Emit the document object instead of the saved file.
     [Parameter]
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var fullPath = VisioCommandUtilities.ResolvePath(this, Path);
-        if (!NoSave.IsPresent)
-        {
-            if (!ShouldProcess(fullPath, "Write new Visio document"))
-            {
+        if (!NoSave.IsPresent) {
+            if (!ShouldProcess(fullPath, "Write new Visio document")) {
                 return;
             }
 
@@ -94,34 +91,31 @@ protected override void ProcessRecord()
         document.Author = Author;
         document.UseMastersByDefault = UseMastersByDefault.IsPresent;
 
-        if (RequestRecalcOnOpen.IsPresent)
-        {
+        if (RequestRecalcOnOpen.IsPresent) {
             document.RequestRecalcOnOpen();
         }
 
         var page = document.AddPage(PageName, Width, Height, Unit);
-        if (Content != null)
-        {
+        if (Content != null) {
             using (var context = VisioDslContext.Enter(document))
-            using (context.Push(page))
-            {
+            using (context.Push(page)) {
                 Content.InvokeReturnAsIs();
             }
         }
 
-        if (NoSave.IsPresent)
-        {
+        if (NoSave.IsPresent) {
             WriteObject(document);
             return;
         }
 
         document.Save();
 
-        if (Show.IsPresent)
-        {
+        if (Open.IsPresent) {
             FileOpenService.Open(fullPath);
         }
 
-        WriteObject(PassThru.IsPresent ? document : new FileInfo(fullPath));
+        if (PassThru.IsPresent) {
+            WriteObject(new FileInfo(fullPath));
+        }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Visio/SaveOfficeVisioCommand.cs b/Sources/PSWriteOffice/Cmdlets/Visio/SaveOfficeVisioCommand.cs
index 40b691e5..708bc08a 100644
--- a/Sources/PSWriteOffice/Cmdlets/Visio/SaveOfficeVisioCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Visio/SaveOfficeVisioCommand.cs
@@ -16,9 +16,8 @@ namespace PSWriteOffice.Cmdlets.Visio;
 /// 
 [Cmdlet(VerbsData.Save, "OfficeVisio", SupportsShouldProcess = true)]
 [Alias("VisioSave")]
-[OutputType(typeof(VisioDocument), typeof(FileInfo))]
-public sealed class SaveOfficeVisioCommand : PSCmdlet
-{
+[OutputType(typeof(VisioDocument))]
+public sealed class SaveOfficeVisioCommand : PSCmdlet {
     /// Visio document to save.
     [Parameter(Mandatory = true, ValueFromPipeline = true, Position = 0)]
     public VisioDocument Document { get; set; } = null!;
@@ -30,54 +29,52 @@ public sealed class SaveOfficeVisioCommand : PSCmdlet
 
     /// Open the document after saving.
     [Parameter]
-    public SwitchParameter Show { get; set; }
+    [Alias("Show")]
+    public SwitchParameter Open { get; set; }
 
-    /// Emit the document object instead of the saved file.
+    /// Emit the document object for further processing.
     [Parameter]
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (string.IsNullOrWhiteSpace(Path))
-        {
+    protected override void ProcessRecord() {
+        if (string.IsNullOrWhiteSpace(Path)) {
             var associatedPath = Document.FilePath;
-            if (string.IsNullOrWhiteSpace(associatedPath))
-            {
+            if (string.IsNullOrWhiteSpace(associatedPath)) {
                 throw new PSInvalidOperationException("No file path provided. Use -Path or load the document from disk.");
             }
 
             var targetPath = associatedPath!;
 
-            if (!ShouldProcess(targetPath, "Save Visio document"))
-            {
+            if (!ShouldProcess(targetPath, "Save Visio document")) {
                 return;
             }
 
             Document.Save();
-            if (Show.IsPresent)
-            {
+            if (Open.IsPresent) {
                 FileOpenService.Open(targetPath);
             }
 
-            WriteObject(PassThru.IsPresent ? Document : new FileInfo(targetPath));
+            if (PassThru.IsPresent) {
+                WriteObject(Document);
+            }
             return;
         }
 
         var fullPath = VisioCommandUtilities.ResolvePath(this, Path!);
-        if (!ShouldProcess(fullPath, "Save Visio document"))
-        {
+        if (!ShouldProcess(fullPath, "Save Visio document")) {
             return;
         }
 
         VisioCommandUtilities.EnsureDirectory(fullPath);
         Document.Save(fullPath);
 
-        if (Show.IsPresent)
-        {
+        if (Open.IsPresent) {
             FileOpenService.Open(fullPath);
         }
 
-        WriteObject(PassThru.IsPresent ? Document : new FileInfo(fullPath));
+        if (PassThru.IsPresent) {
+            WriteObject(Document);
+        }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordFooterCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordFooterCommand.cs
index c696016b..46b56174 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordFooterCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordFooterCommand.cs
@@ -14,8 +14,7 @@ namespace PSWriteOffice.Cmdlets.Word;
 /// 
 [Cmdlet(VerbsCommon.Add, "OfficeWordFooter")]
 [Alias("WordFooter")]
-public sealed class AddOfficeWordFooterCommand : PSCmdlet
-{
+public sealed class AddOfficeWordFooterCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// The footer kind (Default/First/Even).
     [Parameter]
     public WordHeaderFooterType Type { get; set; } = WordHeaderFooterType.Default;
@@ -25,15 +24,14 @@ public sealed class AddOfficeWordFooterCommand : PSCmdlet
     public ScriptBlock? Content { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var context = WordDslContext.Require(this);
         var section = context.RequireSection();
         var footer = section.GetOrCreateFooter(Type);
 
-        using (context.Push(footer))
-        {
+        using (context.Push(footer)) {
             Content?.InvokeReturnAsIs();
         }
+        WritePassThru(footer);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordHeaderCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordHeaderCommand.cs
index dfce54dd..06cb7cf8 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordHeaderCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordHeaderCommand.cs
@@ -14,8 +14,7 @@ namespace PSWriteOffice.Cmdlets.Word;
 /// 
 [Cmdlet(VerbsCommon.Add, "OfficeWordHeader")]
 [Alias("WordHeader")]
-public sealed class AddOfficeWordHeaderCommand : PSCmdlet
-{
+public sealed class AddOfficeWordHeaderCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// The header type to modify.
     [Parameter]
     public WordHeaderFooterType Type { get; set; } = WordHeaderFooterType.Default;
@@ -25,15 +24,14 @@ public sealed class AddOfficeWordHeaderCommand : PSCmdlet
     public ScriptBlock? Content { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var context = WordDslContext.Require(this);
         var section = context.RequireSection();
         var header = section.GetOrCreateHeader(Type);
 
-        using (context.Push(header))
-        {
+        using (context.Push(header)) {
             Content?.InvokeReturnAsIs();
         }
+        WritePassThru(header);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordListCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordListCommand.cs
index 172a40cf..80fed50f 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordListCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordListCommand.cs
@@ -14,8 +14,7 @@ namespace PSWriteOffice.Cmdlets.Word;
 /// 
 [Cmdlet(VerbsCommon.Add, "OfficeWordList")]
 [Alias("WordList")]
-public sealed class AddOfficeWordListCommand : PSCmdlet
-{
+public sealed class AddOfficeWordListCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Built-in list style or custom numbering scheme.
     [Parameter(Position = 1)]
     [Alias("Type")]
@@ -26,8 +25,7 @@ public sealed class AddOfficeWordListCommand : PSCmdlet
     public ScriptBlock? Content { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var context = WordDslContext.Require(this);
         var host = context.RequireParagraphHost();
         var anchor = host.AddParagraph();
@@ -35,15 +33,14 @@ protected override void ProcessRecord()
         var list = anchor.AddList(Style);
         context.RegisterListAnchor(list, anchor);
 
-        using (context.Push(list))
-        {
+        using (context.Push(list)) {
             Content?.InvokeReturnAsIs();
         }
 
         var leftoverAnchor = context.ConsumeListAnchor(list);
-        if (leftoverAnchor != null && string.IsNullOrWhiteSpace(leftoverAnchor.Text))
-        {
+        if (leftoverAnchor != null && string.IsNullOrWhiteSpace(leftoverAnchor.Text)) {
             leftoverAnchor.Remove();
         }
+        WritePassThru(list);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordPageNumberCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordPageNumberCommand.cs
index d52fcae5..962a20d6 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordPageNumberCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordPageNumberCommand.cs
@@ -16,8 +16,7 @@ namespace PSWriteOffice.Cmdlets.Word;
 /// 
 [Cmdlet(VerbsCommon.Add, "OfficeWordPageNumber")]
 [Alias("WordPageNumber")]
-public sealed class AddOfficeWordPageNumberCommand : PSCmdlet
-{
+public sealed class AddOfficeWordPageNumberCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Include “of N” when true.
     [Parameter]
     public SwitchParameter IncludeTotalPages { get; set; }
@@ -29,15 +28,14 @@ public sealed class AddOfficeWordPageNumberCommand : PSCmdlet
     public string Separator { get; set; } = " of ";
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var context = WordDslContext.Require(this);
         WordHeaderFooter? target = context.CurrentFooter ?? context.CurrentHeader as WordHeaderFooter;
-        if (target == null)
-        {
+        if (target == null) {
             throw new InvalidOperationException("WordPageNumber must be called within WordHeader or WordFooter.");
         }
 
         target.AddPageNumber(IncludeTotalPages.IsPresent, Format, Separator);
+        WritePassThru(target);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordTableConditionCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordTableConditionCommand.cs
index 3fbf55ce..0ef4d148 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordTableConditionCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordTableConditionCommand.cs
@@ -16,8 +16,7 @@ namespace PSWriteOffice.Cmdlets.Word;
 /// 
 [Cmdlet(VerbsCommon.Add, "OfficeWordTableCondition")]
 [Alias("WordTableCondition")]
-public sealed class AddOfficeWordTableConditionCommand : PSCmdlet
-{
+public sealed class AddOfficeWordTableConditionCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     /// Predicate executed per data row (uses $_).
     [Parameter(Mandatory = true)]
     public ScriptBlock FilterScript { get; set; } = null!;
@@ -31,10 +30,8 @@ public sealed class AddOfficeWordTableConditionCommand : PSCmdlet
     public string? BackgroundColor { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (!TableStyle.HasValue && string.IsNullOrWhiteSpace(BackgroundColor))
-        {
+    protected override void ProcessRecord() {
+        if (!TableStyle.HasValue && string.IsNullOrWhiteSpace(BackgroundColor)) {
             ThrowTerminatingError(new ErrorRecord(
                 new ArgumentException("Specify TableStyle or BackgroundColor."),
                 "WordTableConditionNoAction",
@@ -48,15 +45,14 @@ protected override void ProcessRecord()
         var normalizedColor = NormalizeColor(BackgroundColor);
 
         context.AddTableCondition(table, new WordTableConditionModel(FilterScript, TableStyle, normalizedColor));
+        WritePassThru(table);
     }
 
-    private static string? NormalizeColor(string? color)
-    {
-        if (string.IsNullOrWhiteSpace(color))
-        {
+    private static string? NormalizeColor(string? color) {
+        if (string.IsNullOrWhiteSpace(color)) {
             return null;
         }
 
         return OfficeColor.Parse(color!).ToRgbHex().ToLowerInvariant();
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordVisualCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordVisualCommand.cs
index 18878bab..6df4af6e 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordVisualCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordVisualCommand.cs
@@ -16,8 +16,7 @@ namespace PSWriteOffice.Cmdlets.Word;
 [Cmdlet(VerbsCommon.Add, "OfficeWordVisual")]
 [Alias("WordVisual")]
 [OutputType(typeof(WordImage))]
-public sealed class AddOfficeWordVisualCommand : OfficeVisualCommandBase
-{
+public sealed class AddOfficeWordVisualCommand : OfficeVisualCommandBase {
     /// ChartForgeX VisualArtifact, OfficeVisualSource, OfficeVisualConversionResult, or SVG file path.
     [Parameter(Mandatory = true, Position = 0, ValueFromPipeline = true)]
     public object InputObject { get; set; } = null!;
@@ -30,16 +29,21 @@ public sealed class AddOfficeWordVisualCommand : OfficeVisualCommandBase
     [Parameter]
     public WordImageTextWrapping Wrap { get; set; } = WordImageTextWrapping.InLineWithText;
 
+    /// Emit the image added to the paragraph.
+    [Parameter]
+    public SwitchParameter PassThru { get; set; }
+
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordParagraph paragraph = Paragraph ?? ResolveParagraph();
-        WriteObject(paragraph.AddVisualArtifact(ResolveVisual(InputObject), Wrap));
+        var image = paragraph.AddVisualArtifact(ResolveVisual(InputObject), Wrap);
+        if (PassThru.IsPresent) {
+            WriteObject(image);
+        }
     }
 
-    private WordParagraph ResolveParagraph()
-    {
+    private WordParagraph ResolveParagraph() {
         WordDslContext context = WordDslContext.Require(this);
         return context.CurrentParagraph ?? context.RequireParagraphHost().AddParagraph();
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/CloseOfficeWordCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/CloseOfficeWordCommand.cs
index 22e1ca1a..dfb6181e 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/CloseOfficeWordCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/CloseOfficeWordCommand.cs
@@ -21,12 +21,11 @@ namespace PSWriteOffice.Cmdlets.Word;
 /// 
 ///   Save to a new path and open the file.
 ///   PS> 
-///   Close-OfficeWord -Document $doc -Save -Path .\Report-final.docx -Show
+///   Close-OfficeWord -Document $doc -Save -Path .\Report-final.docx -Open
 ///   Saves updates to Report-final.docx, opens it, and disposes the document.
 /// 
 [Cmdlet(VerbsCommon.Close, "OfficeWord", DefaultParameterSetName = ParameterSetCurrent)]
-public sealed class CloseOfficeWordCommand : PSCmdlet
-{
+public sealed class CloseOfficeWordCommand : PSCmdlet {
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetCurrent = "Current";
     private const string ParameterSetAll = "All";
@@ -54,58 +53,49 @@ public sealed class CloseOfficeWordCommand : PSCmdlet
 
     /// Open the file after saving.
     [Parameter]
-    public SwitchParameter Show { get; set; }
+    [Alias("Show")]
+    public SwitchParameter Open { get; set; }
 
     /// Password used to save the document as an encrypted package.
     [Parameter]
     public string? Password { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (All.IsPresent)
-        {
+    protected override void ProcessRecord() {
+        if (All.IsPresent) {
             var documents = WordDocumentService.GetTrackedDocuments();
-            for (var index = documents.Count - 1; index >= 0; index--)
-            {
+            for (var index = documents.Count - 1; index >= 0; index--) {
                 CloseSingleDocument(documents[index]);
             }
             return;
         }
 
         WordDocument? document;
-        if (ParameterSetName == ParameterSetDocument)
-        {
+        if (ParameterSetName == ParameterSetDocument) {
             document = Document;
-            if (document == null)
-            {
+            if (document == null) {
                 throw new PSArgumentNullException(nameof(Document), "Provide a WordDocument instance when using -Document.");
             }
-        }
-        else
-        {
+        } else {
             document = WordDocumentService.GetCurrentTrackedDocument();
         }
 
-        if (document == null)
-        {
+        if (document == null) {
             throw new PSInvalidOperationException("No tracked Word document was found. Pass -Document or open a document with Get-OfficeWord/New-OfficeWord first.");
         }
 
         CloseSingleDocument(document);
     }
 
-    private void CloseSingleDocument(WordDocument document)
-    {
-        if (Save.IsPresent || !string.IsNullOrEmpty(Path))
-        {
+    private void CloseSingleDocument(WordDocument document) {
+        if (Save.IsPresent || !string.IsNullOrEmpty(Path)) {
             var resolvedPath = !string.IsNullOrWhiteSpace(Path)
                 ? SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path)
                 : null;
-            WordDocumentService.SaveDocument(document, Show.IsPresent, resolvedPath, Password);
+            WordDocumentService.SaveDocument(document, Open.IsPresent, resolvedPath, Password);
             return;
         }
 
         WordDocumentService.CloseDocument(document);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/ConvertFromOfficeWordHtmlCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/ConvertFromOfficeWordHtmlCommand.cs
index f4718fc3..be13410b 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/ConvertFromOfficeWordHtmlCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/ConvertFromOfficeWordHtmlCommand.cs
@@ -25,8 +25,7 @@ namespace PSWriteOffice.Cmdlets.Word;
 [Cmdlet(VerbsData.ConvertFrom, "OfficeWordHtml", DefaultParameterSetName = ParameterSetHtml, SupportsShouldProcess = true)]
 [Alias("ConvertFrom-WordHtml")]
 [OutputType(typeof(WordDocument), typeof(FileInfo))]
-public sealed class ConvertFromOfficeWordHtmlCommand : PSCmdlet
-{
+public sealed class ConvertFromOfficeWordHtmlCommand : PSCmdlet {
     private const string ParameterSetHtml = "Html";
     private const string ParameterSetPath = "Path";
 
@@ -36,8 +35,8 @@ public sealed class ConvertFromOfficeWordHtmlCommand : PSCmdlet
 
     /// Path to an HTML file.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path")]
-    public string FilePath { get; set; } = string.Empty;
+    [Alias("FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Optional output path for the .docx file.
     [Parameter]
@@ -93,21 +92,17 @@ public sealed class ConvertFromOfficeWordHtmlCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        try
-        {
+    protected override void ProcessRecord() {
+        try {
             var html = Html;
             string? htmlFileDirectory = null;
-            if (ParameterSetName == ParameterSetPath)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(FilePath);
+            if (ParameterSetName == ParameterSetPath) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                 html = File.ReadAllText(resolvedPath);
-                htmlFileDirectory = Path.GetDirectoryName(resolvedPath);
+                htmlFileDirectory = System.IO.Path.GetDirectoryName(resolvedPath);
             }
 
-            if (string.IsNullOrWhiteSpace(html))
-            {
+            if (string.IsNullOrWhiteSpace(html)) {
                 ThrowTerminatingError(new ErrorRecord(
                     new ArgumentException("HTML content cannot be empty."),
                     "HtmlEmpty",
@@ -116,34 +111,26 @@ protected override void ProcessRecord()
                 return;
             }
 
-            var options = new HtmlToWordOptions
-            {
+            var options = new HtmlToWordOptions {
                 IncludeListStyles = IncludeListStyles.IsPresent,
                 ContinueNumbering = ContinueNumbering.IsPresent,
                 SupportsHeadingNumbering = SupportsHeadingNumbering.IsPresent,
                 RenderPreAsTable = RenderPreAsTable.IsPresent
             };
 
-            if (!string.IsNullOrWhiteSpace(FontFamily))
-            {
+            if (!string.IsNullOrWhiteSpace(FontFamily)) {
                 options.FontFamily = FontFamily;
             }
 
-            if (!string.IsNullOrWhiteSpace(BasePath))
-            {
+            if (!string.IsNullOrWhiteSpace(BasePath)) {
                 options.BasePath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(BasePath);
-            }
-            else if (!string.IsNullOrWhiteSpace(htmlFileDirectory))
-            {
+            } else if (!string.IsNullOrWhiteSpace(htmlFileDirectory)) {
                 options.BasePath = htmlFileDirectory;
             }
 
-            if (StylesheetPath != null)
-            {
-                foreach (var entry in StylesheetPath)
-                {
-                    if (string.IsNullOrWhiteSpace(entry))
-                    {
+            if (StylesheetPath != null) {
+                foreach (var entry in StylesheetPath) {
+                    if (string.IsNullOrWhiteSpace(entry)) {
                         continue;
                     }
 
@@ -151,72 +138,55 @@ protected override void ProcessRecord()
                 }
             }
 
-            if (StylesheetContent != null)
-            {
-                foreach (var entry in StylesheetContent)
-                {
-                    if (!string.IsNullOrWhiteSpace(entry))
-                    {
+            if (StylesheetContent != null) {
+                foreach (var entry in StylesheetContent) {
+                    if (!string.IsNullOrWhiteSpace(entry)) {
                         options.StylesheetContents.Add(entry);
                     }
                 }
             }
 
-            if (TableCaptionPosition.HasValue)
-            {
+            if (TableCaptionPosition.HasValue) {
                 options.TableCaptionPosition = TableCaptionPosition.Value;
             }
 
-            if (SectionTagHandling.HasValue)
-            {
+            if (SectionTagHandling.HasValue) {
                 options.SectionTagHandling = SectionTagHandling.Value;
             }
 
             var document = HtmlConversionDocument.Parse(html).ToWordDocument(options);
 
-            if (!string.IsNullOrWhiteSpace(OutputPath))
-            {
+            if (!string.IsNullOrWhiteSpace(OutputPath)) {
                 var resolvedOutput = SessionState.Path.GetUnresolvedProviderPathFromPSPath(OutputPath);
-                if (!ShouldProcess(resolvedOutput, "Write Word document converted from HTML"))
-                {
+                if (!ShouldProcess(resolvedOutput, "Write Word document converted from HTML")) {
                     document.Dispose();
                     return;
                 }
 
-                var directory = Path.GetDirectoryName(resolvedOutput);
-                if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory))
-                {
+                var directory = System.IO.Path.GetDirectoryName(resolvedOutput);
+                if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory)) {
                     Directory.CreateDirectory(directory);
                 }
 
-                try
-                {
+                try {
                     document.Save(resolvedOutput);
-                }
-                finally
-                {
+                } finally {
                     document.Dispose();
                 }
 
-                if (Open.IsPresent)
-                {
+                if (Open.IsPresent) {
                     FileOpenService.Open(resolvedOutput);
                 }
 
-                if (PassThru.IsPresent)
-                {
+                if (PassThru.IsPresent) {
                     WriteObject(new FileInfo(resolvedOutput));
                 }
-            }
-            else
-            {
+            } else {
                 WriteObject(document);
             }
-        }
-        catch (Exception ex)
-        {
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "HtmlToWordFailed", ErrorCategory.InvalidOperation,
-                ParameterSetName == ParameterSetPath ? FilePath : Html));
+                ParameterSetName == ParameterSetPath ? Path : Html));
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/ConvertFromOfficeWordMarkdownCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/ConvertFromOfficeWordMarkdownCommand.cs
index 26db926e..dc4bb985 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/ConvertFromOfficeWordMarkdownCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/ConvertFromOfficeWordMarkdownCommand.cs
@@ -36,8 +36,7 @@ namespace PSWriteOffice.Cmdlets.Word;
 [Cmdlet(VerbsData.ConvertFrom, "OfficeWordMarkdown", DefaultParameterSetName = ParameterSetMarkdown, SupportsShouldProcess = true)]
 [Alias("ConvertFrom-WordMarkdown")]
 [OutputType(typeof(WordDocument), typeof(FileInfo))]
-public sealed class ConvertFromOfficeWordMarkdownCommand : AsyncPSCmdlet
-{
+public sealed class ConvertFromOfficeWordMarkdownCommand : AsyncPSCmdlet {
     private const string ParameterSetMarkdown = "Markdown";
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
@@ -48,8 +47,8 @@ public sealed class ConvertFromOfficeWordMarkdownCommand : AsyncPSCmdlet
 
     /// Path to a Markdown file.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path")]
-    public string FilePath { get; set; } = string.Empty;
+    [Alias("FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Markdown document instance to convert.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -163,44 +162,36 @@ public sealed class ConvertFromOfficeWordMarkdownCommand : AsyncPSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override async Task ProcessRecordAsync()
-    {
+    protected override async Task ProcessRecordAsync() {
         WordDocument? document = null;
 
-        try
-        {
-            if (FitImagesToPageContentWidth.IsPresent && FitImagesToContextWidth.IsPresent)
-            {
+        try {
+            if (FitImagesToPageContentWidth.IsPresent && FitImagesToContextWidth.IsPresent) {
                 throw new ArgumentException("Use either -FitImagesToPageContentWidth or -FitImagesToContextWidth, not both.");
             }
 
             ValidateTemplateParameters();
             var options = BuildOptions();
 
-            switch (ParameterSetName)
-            {
-                case ParameterSetPath:
-                {
-                    var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(FilePath);
-                    if (!File.Exists(resolvedPath))
-                    {
-                        throw new FileNotFoundException($"File '{resolvedPath}' was not found.", resolvedPath);
-                    }
+            switch (ParameterSetName) {
+                case ParameterSetPath: {
+                        var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
+                        if (!File.Exists(resolvedPath)) {
+                            throw new FileNotFoundException($"File '{resolvedPath}' was not found.", resolvedPath);
+                        }
 
-                    if (string.IsNullOrWhiteSpace(options.BaseUri))
-                    {
-                        options.BaseUri = BuildDirectoryUri(Path.GetDirectoryName(resolvedPath) ?? Directory.GetCurrentDirectory());
-                    }
+                        if (string.IsNullOrWhiteSpace(options.BaseUri)) {
+                            options.BaseUri = BuildDirectoryUri(System.IO.Path.GetDirectoryName(resolvedPath) ?? Directory.GetCurrentDirectory());
+                        }
 
-                    document = await ConvertMarkdownTextAsync(File.ReadAllText(resolvedPath), options).ConfigureAwait(false);
-                    break;
-                }
+                        document = await ConvertMarkdownTextAsync(File.ReadAllText(resolvedPath), options).ConfigureAwait(false);
+                        break;
+                    }
                 case ParameterSetDocument:
                     document = await ConvertMarkdownDocumentAsync(Document, options).ConfigureAwait(false);
                     break;
                 default:
-                    if (string.IsNullOrWhiteSpace(Markdown))
-                    {
+                    if (string.IsNullOrWhiteSpace(Markdown)) {
                         throw new ArgumentException("Markdown content cannot be empty.", nameof(Markdown));
                     }
 
@@ -208,55 +199,41 @@ protected override async Task ProcessRecordAsync()
                     break;
             }
 
-            if (document == null)
-            {
+            if (document == null) {
                 throw new InvalidOperationException("Word document could not be created from Markdown.");
             }
 
-            if (!string.IsNullOrWhiteSpace(OutputPath))
-            {
+            if (!string.IsNullOrWhiteSpace(OutputPath)) {
                 var resolvedOutput = SessionState.Path.GetUnresolvedProviderPathFromPSPath(OutputPath);
-                if (!ShouldProcess(resolvedOutput, "Write Word document converted from Markdown"))
-                {
+                if (!ShouldProcess(resolvedOutput, "Write Word document converted from Markdown")) {
                     document.Dispose();
                     return;
                 }
 
-                var directory = Path.GetDirectoryName(resolvedOutput);
-                if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory))
-                {
+                var directory = System.IO.Path.GetDirectoryName(resolvedOutput);
+                if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory)) {
                     Directory.CreateDirectory(directory);
                 }
 
-                try
-                {
+                try {
                     document.Save(resolvedOutput);
-                }
-                finally
-                {
+                } finally {
                     document.Dispose();
                 }
 
-                if (Open.IsPresent)
-                {
+                if (Open.IsPresent) {
                     FileOpenService.Open(resolvedOutput);
                 }
 
-                if (PassThru.IsPresent)
-                {
+                if (PassThru.IsPresent) {
                     WriteObject(new FileInfo(resolvedOutput));
                 }
-            }
-            else
-            {
+            } else {
                 WriteObject(document);
             }
-        }
-        catch (Exception ex)
-        {
-            object? target = ParameterSetName switch
-            {
-                ParameterSetPath => FilePath,
+        } catch (Exception ex) {
+            object? target = ParameterSetName switch {
+                ParameterSetPath => Path,
                 ParameterSetDocument => Document,
                 _ => Markdown
             };
@@ -264,10 +241,8 @@ protected override async Task ProcessRecordAsync()
         }
     }
 
-    private MarkdownToWordOptions BuildOptions()
-    {
-        if (ReaderOptions != null && Profile.HasValue)
-        {
+    private MarkdownToWordOptions BuildOptions() {
+        if (ReaderOptions != null && Profile.HasValue) {
             throw new PSArgumentException("Specify either -ReaderOptions or -Profile, not both.");
         }
 
@@ -275,58 +250,47 @@ private MarkdownToWordOptions BuildOptions()
         options.AllowLocalImages = AllowLocalImages.IsPresent;
         options.OnWarning = WriteWarning;
 
-        if (RenderFrontMatter.IsPresent)
-        {
+        if (RenderFrontMatter.IsPresent) {
             options.RenderFrontMatter = true;
         }
 
-        if (options is MarkdownToWordTemplateOptions templateOptions)
-        {
+        if (options is MarkdownToWordTemplateOptions templateOptions) {
             templateOptions.BookmarkName = NormalizeOptionalText(BookmarkName);
             templateOptions.ContentControlTag = NormalizeOptionalText(ContentControlTag);
             templateOptions.ContentControlAlias = NormalizeOptionalText(ContentControlAlias);
             templateOptions.ReplacePlaceholder = !KeepPlaceholder.IsPresent;
         }
 
-        if (!string.IsNullOrWhiteSpace(FontFamily))
-        {
+        if (!string.IsNullOrWhiteSpace(FontFamily)) {
             options.FontFamily = FontFamily;
         }
 
-        if (!string.IsNullOrWhiteSpace(BaseUri))
-        {
+        if (!string.IsNullOrWhiteSpace(BaseUri)) {
             options.BaseUri = ResolveBaseUri(BaseUri!);
         }
 
-        if (Theme.HasValue)
-        {
+        if (Theme.HasValue) {
             options.Theme = MarkdownVisualTheme.Create(Theme.Value);
         }
 
-        if (AllowDataUriImages.HasValue)
-        {
+        if (AllowDataUriImages.HasValue) {
             options.AllowDataUriImages = AllowDataUriImages.Value;
         }
 
-        if (MaxDataUriImageBytes.HasValue)
-        {
+        if (MaxDataUriImageBytes.HasValue) {
             options.MaxDataUriImageBytes = MaxDataUriImageBytes.Value;
         }
 
-        if (PreferNarrativeSingleLineDefinitions.IsPresent)
-        {
+        if (PreferNarrativeSingleLineDefinitions.IsPresent) {
             options.PreferNarrativeSingleLineDefinitions = true;
         }
 
         var readerOptions = ReaderOptions ?? (Profile.HasValue
             ? MarkdownReaderOptions.CreateProfile(Profile.Value)
             : null);
-        if (readerOptions != null && NormalizeInput.HasValue)
-        {
+        if (readerOptions != null && NormalizeInput.HasValue) {
             readerOptions.InputNormalization.ApplyPreset(NormalizeInput.Value);
-        }
-        else if (readerOptions == null && NormalizeInput.HasValue)
-        {
+        } else if (readerOptions == null && NormalizeInput.HasValue) {
             readerOptions = MarkdownReaderOptions.CreateOfficeIMOProfile();
             readerOptions.InputNormalization.ApplyPreset(NormalizeInput.Value);
         }
@@ -338,12 +302,9 @@ private MarkdownToWordOptions BuildOptions()
         TrySetOptionProperty(options, "MaxImageHeightPixels", MaxImageHeightPixels);
         TrySetOptionProperty(options, "MaxImageWidthPercentOfContent", MaxImageWidthPercentOfContent);
 
-        if (AllowedImageDirectory != null)
-        {
-            foreach (var entry in AllowedImageDirectory)
-            {
-                if (string.IsNullOrWhiteSpace(entry))
-                {
+        if (AllowedImageDirectory != null) {
+            foreach (var entry in AllowedImageDirectory) {
+                if (string.IsNullOrWhiteSpace(entry)) {
                     continue;
                 }
 
@@ -354,83 +315,68 @@ private MarkdownToWordOptions BuildOptions()
         return options;
     }
 
-    private MarkdownToWordOptions CreateOptions()
-    {
+    private MarkdownToWordOptions CreateOptions() {
         return string.IsNullOrWhiteSpace(TemplatePath)
             ? new MarkdownToWordOptions()
             : new MarkdownToWordTemplateOptions();
     }
 
-    private Task ConvertMarkdownTextAsync(string markdown, MarkdownToWordOptions options)
-    {
+    private Task ConvertMarkdownTextAsync(string markdown, MarkdownToWordOptions options) {
         var markdownDocument = MarkdownReader.Parse(markdown, options.CreateReaderOptions());
         return ConvertMarkdownDocumentAsync(markdownDocument, options);
     }
 
-    private async Task ConvertMarkdownDocumentAsync(MarkdownDoc markdownDocument, MarkdownToWordOptions options)
-    {
-        if (AllowRemoteImages.IsPresent)
-        {
+    private async Task ConvertMarkdownDocumentAsync(MarkdownDoc markdownDocument, MarkdownToWordOptions options) {
+        if (AllowRemoteImages.IsPresent) {
             await MarkdownRemoteImageService.ConfigureResolverAsync(markdownDocument, options, CancelToken).ConfigureAwait(false);
         }
 
-        if (options is not MarkdownToWordTemplateOptions templateOptions)
-        {
+        if (options is not MarkdownToWordTemplateOptions templateOptions) {
             return markdownDocument.ToWordDocument(options);
         }
 
-        var templateDocument = WordDocument.Load(ResolveTemplatePath(), new WordLoadOptions
-        {
+        var templateDocument = WordDocument.Load(ResolveTemplatePath(), new WordLoadOptions {
             AccessMode = DocumentAccessMode.ReadWrite,
             PersistenceMode = DocumentPersistenceMode.Explicit
         });
         return markdownDocument.ToWordDocument(templateDocument, templateOptions);
     }
 
-    private void ValidateTemplateParameters()
-    {
+    private void ValidateTemplateParameters() {
         var hasTemplateTarget = !string.IsNullOrWhiteSpace(BookmarkName)
             || !string.IsNullOrWhiteSpace(ContentControlTag)
             || !string.IsNullOrWhiteSpace(ContentControlAlias)
             || KeepPlaceholder.IsPresent;
 
-        if (hasTemplateTarget && string.IsNullOrWhiteSpace(TemplatePath))
-        {
+        if (hasTemplateTarget && string.IsNullOrWhiteSpace(TemplatePath)) {
             throw new ArgumentException("Template insertion parameters require -TemplatePath.", nameof(TemplatePath));
         }
     }
 
-    private string ResolveTemplatePath()
-    {
-        if (string.IsNullOrWhiteSpace(TemplatePath))
-        {
+    private string ResolveTemplatePath() {
+        if (string.IsNullOrWhiteSpace(TemplatePath)) {
             throw new ArgumentException("Template path cannot be empty.", nameof(TemplatePath));
         }
 
         var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(TemplatePath);
-        if (!File.Exists(resolvedPath))
-        {
+        if (!File.Exists(resolvedPath)) {
             throw new FileNotFoundException($"Template file '{resolvedPath}' was not found.", resolvedPath);
         }
 
         return resolvedPath;
     }
 
-    private static string? NormalizeOptionalText(string? value)
-    {
+    private static string? NormalizeOptionalText(string? value) {
         return string.IsNullOrWhiteSpace(value) ? null : value;
     }
 
-    private static void TrySetOptionProperty(object target, string propertyName, object? value)
-    {
-        if (value == null)
-        {
+    private static void TrySetOptionProperty(object target, string propertyName, object? value) {
+        if (value == null) {
             return;
         }
 
         var property = target.GetType().GetProperty(propertyName, BindingFlags.Instance | BindingFlags.Public);
-        if (property == null || !property.CanWrite)
-        {
+        if (property == null || !property.CanWrite) {
             return;
         }
 
@@ -438,57 +384,47 @@ private static void TrySetOptionProperty(object target, string propertyName, obj
         property.SetValue(target, convertedValue);
     }
 
-    private static object? ConvertOptionValue(object value, Type propertyType)
-    {
+    private static object? ConvertOptionValue(object value, Type propertyType) {
         var targetType = Nullable.GetUnderlyingType(propertyType) ?? propertyType;
-        if (targetType.IsInstanceOfType(value))
-        {
+        if (targetType.IsInstanceOfType(value)) {
             return value;
         }
 
-        if (targetType.IsEnum && value is string text)
-        {
+        if (targetType.IsEnum && value is string text) {
             return Enum.Parse(targetType, text, ignoreCase: true);
         }
 
         return Convert.ChangeType(value, targetType, CultureInfo.InvariantCulture);
     }
 
-    private string ResolveBaseUri(string value)
-    {
-        if (Uri.TryCreate(value, UriKind.Absolute, out var uri))
-        {
+    private string ResolveBaseUri(string value) {
+        if (Uri.TryCreate(value, UriKind.Absolute, out var uri)) {
             return uri.ToString();
         }
 
         var resolved = SessionState.Path.GetUnresolvedProviderPathFromPSPath(value);
-        if (Directory.Exists(resolved))
-        {
+        if (Directory.Exists(resolved)) {
             return BuildDirectoryUri(resolved);
         }
 
-        if (File.Exists(resolved))
-        {
+        if (File.Exists(resolved)) {
             return new Uri(resolved).AbsoluteUri;
         }
 
-        if (Path.HasExtension(resolved))
-        {
-            return new Uri(Path.GetFullPath(resolved)).AbsoluteUri;
+        if (System.IO.Path.HasExtension(resolved)) {
+            return new Uri(System.IO.Path.GetFullPath(resolved)).AbsoluteUri;
         }
 
         return BuildDirectoryUri(resolved);
     }
 
-    private static string BuildDirectoryUri(string path)
-    {
-        var fullPath = Path.GetFullPath(path);
-        if (!fullPath.EndsWith(Path.DirectorySeparatorChar.ToString(), StringComparison.Ordinal)
-            && !fullPath.EndsWith(Path.AltDirectorySeparatorChar.ToString(), StringComparison.Ordinal))
-        {
-            fullPath += Path.DirectorySeparatorChar;
+    private static string BuildDirectoryUri(string path) {
+        var fullPath = System.IO.Path.GetFullPath(path);
+        if (!fullPath.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString(), StringComparison.Ordinal)
+            && !fullPath.EndsWith(System.IO.Path.AltDirectorySeparatorChar.ToString(), StringComparison.Ordinal)) {
+            fullPath += System.IO.Path.DirectorySeparatorChar;
         }
 
         return new Uri(fullPath).AbsoluteUri;
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/ConvertToOfficeWordHtmlCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/ConvertToOfficeWordHtmlCommand.cs
index 3090cc41..437eff77 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/ConvertToOfficeWordHtmlCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/ConvertToOfficeWordHtmlCommand.cs
@@ -24,15 +24,14 @@ namespace PSWriteOffice.Cmdlets.Word;
 [Cmdlet(VerbsData.ConvertTo, "OfficeWordHtml", DefaultParameterSetName = ParameterSetPath, SupportsShouldProcess = true)]
 [Alias("ConvertTo-WordHtml")]
 [OutputType(typeof(string), typeof(FileInfo))]
-public sealed class ConvertToOfficeWordHtmlCommand : PSCmdlet
-{
+public sealed class ConvertToOfficeWordHtmlCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Path to a .docx file.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path")]
-    public string FilePath { get; set; } = string.Empty;
+    [Alias("FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Word document instance to convert.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -80,31 +79,24 @@ public sealed class ConvertToOfficeWordHtmlCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
-            if (ParameterSetName == ParameterSetPath)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(FilePath);
+        try {
+            if (ParameterSetName == ParameterSetPath) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                 document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                 dispose = true;
-            }
-            else
-            {
+            } else {
                 document = Document;
             }
 
-            if (document == null)
-            {
+            if (document == null) {
                 throw new InvalidOperationException("Word document was not provided.");
             }
 
-            var options = new WordToHtmlOptions
-            {
+            var options = new WordToHtmlOptions {
                 IncludeFontStyles = IncludeFontStyles.IsPresent,
                 IncludeListStyles = IncludeListStyles.IsPresent,
                 IncludeParagraphClasses = IncludeParagraphClasses.IsPresent,
@@ -112,57 +104,43 @@ protected override void ProcessRecord()
                 IncludeDefaultCss = IncludeDefaultCss.IsPresent
             };
 
-            if (!string.IsNullOrWhiteSpace(FontFamily))
-            {
+            if (!string.IsNullOrWhiteSpace(FontFamily)) {
                 options.FontFamily = FontFamily;
             }
 
-            if (UseImagePaths.IsPresent)
-            {
+            if (UseImagePaths.IsPresent) {
                 options.EmbedImagesAsBase64 = false;
             }
 
-            if (ExcludeFootnotes.IsPresent)
-            {
+            if (ExcludeFootnotes.IsPresent) {
                 options.ExportFootnotes = false;
             }
 
-            if (!string.IsNullOrWhiteSpace(OutputPath))
-            {
+            if (!string.IsNullOrWhiteSpace(OutputPath)) {
                 var resolvedOutput = SessionState.Path.GetUnresolvedProviderPathFromPSPath(OutputPath);
-                if (!ShouldProcess(resolvedOutput, "Write HTML converted from Word document"))
-                {
+                if (!ShouldProcess(resolvedOutput, "Write HTML converted from Word document")) {
                     return;
                 }
 
-                var directory = Path.GetDirectoryName(resolvedOutput);
-                if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory))
-                {
+                var directory = System.IO.Path.GetDirectoryName(resolvedOutput);
+                if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory)) {
                     Directory.CreateDirectory(directory);
                 }
 
                 document.SaveAsHtml(resolvedOutput, options);
-                if (PassThru.IsPresent)
-                {
+                if (PassThru.IsPresent) {
                     WriteObject(new FileInfo(resolvedOutput));
                 }
-            }
-            else
-            {
+            } else {
                 WriteObject(document.ToHtml(options));
             }
-        }
-        catch (Exception ex)
-        {
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "WordToHtmlFailed", ErrorCategory.InvalidOperation,
-                ParameterSetName == ParameterSetPath ? FilePath : Document));
-        }
-        finally
-        {
-            if (dispose)
-            {
+                ParameterSetName == ParameterSetPath ? Path : Document));
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/ConvertToOfficeWordMarkdownCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/ConvertToOfficeWordMarkdownCommand.cs
index c8289099..f9dd15ed 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/ConvertToOfficeWordMarkdownCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/ConvertToOfficeWordMarkdownCommand.cs
@@ -24,15 +24,14 @@ namespace PSWriteOffice.Cmdlets.Word;
 [Cmdlet(VerbsData.ConvertTo, "OfficeWordMarkdown", DefaultParameterSetName = ParameterSetPath, SupportsShouldProcess = true)]
 [Alias("ConvertTo-WordMarkdown")]
 [OutputType(typeof(string), typeof(FileInfo))]
-public sealed class ConvertToOfficeWordMarkdownCommand : PSCmdlet
-{
+public sealed class ConvertToOfficeWordMarkdownCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Path to a .docx file.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path")]
-    public string FilePath { get; set; } = string.Empty;
+    [Alias("FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Word document instance to convert.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -68,89 +67,68 @@ public sealed class ConvertToOfficeWordMarkdownCommand : PSCmdlet
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
-            if (ParameterSetName == ParameterSetPath)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(FilePath);
+        try {
+            if (ParameterSetName == ParameterSetPath) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                 document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                 dispose = true;
-            }
-            else
-            {
+            } else {
                 document = Document;
             }
 
-            if (document == null)
-            {
+            if (document == null) {
                 throw new InvalidOperationException("Word document was not provided.");
             }
 
-            var options = new WordToMarkdownOptions
-            {
+            var options = new WordToMarkdownOptions {
                 EnableUnderline = EnableUnderline.IsPresent,
                 EnableHighlight = EnableHighlight.IsPresent,
                 ImageExportMode = ImageExportMode
             };
 
-            if (!string.IsNullOrWhiteSpace(FontFamily))
-            {
+            if (!string.IsNullOrWhiteSpace(FontFamily)) {
                 options.FontFamily = FontFamily;
             }
 
-            if (!string.IsNullOrWhiteSpace(ImageDirectory))
-            {
+            if (!string.IsNullOrWhiteSpace(ImageDirectory)) {
                 options.ImageDirectory = SessionState.Path.GetUnresolvedProviderPathFromPSPath(ImageDirectory);
             }
 
-            if (!string.IsNullOrWhiteSpace(OutputPath))
-            {
+            if (!string.IsNullOrWhiteSpace(OutputPath)) {
                 var resolvedOutput = SessionState.Path.GetUnresolvedProviderPathFromPSPath(OutputPath);
-                if (!ShouldProcess(resolvedOutput, "Write Markdown converted from Word document"))
-                {
+                if (!ShouldProcess(resolvedOutput, "Write Markdown converted from Word document")) {
                     return;
                 }
 
-                var directory = Path.GetDirectoryName(resolvedOutput);
-                if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory))
-                {
+                var directory = System.IO.Path.GetDirectoryName(resolvedOutput);
+                if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory)) {
                     Directory.CreateDirectory(directory);
                 }
 
                 document.SaveAsMarkdown(resolvedOutput, options);
-                if (PassThru.IsPresent)
-                {
+                if (PassThru.IsPresent) {
                     WriteObject(new FileInfo(resolvedOutput));
                 }
-            }
-            else
-            {
+            } else {
                 if (options.ImageExportMode == ImageExportMode.File && !string.IsNullOrWhiteSpace(options.ImageDirectory) &&
-                    !ShouldProcess(options.ImageDirectory, "Export Word images while converting to Markdown"))
-                {
+                    !ShouldProcess(options.ImageDirectory, "Export Word images while converting to Markdown")) {
                     options.ImageExportMode = ImageExportMode.Base64;
                     options.ImageDirectory = null;
                 }
 
                 WriteObject(document.ToMarkdown(options));
             }
-        }
-        catch (Exception ex)
-        {
+        } catch (Exception ex) {
             WriteError(new ErrorRecord(ex, "WordToMarkdownFailed", ErrorCategory.InvalidOperation,
-                ParameterSetName == ParameterSetPath ? FilePath : Document));
-        }
-        finally
-        {
-            if (dispose)
-            {
+                ParameterSetName == ParameterSetPath ? Path : Document));
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/FindOfficeWordCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/FindOfficeWordCommand.cs
index 9d02f5e2..7fa7092a 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/FindOfficeWordCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/FindOfficeWordCommand.cs
@@ -29,8 +29,7 @@ namespace PSWriteOffice.Cmdlets.Word;
 /// 
 [Cmdlet(VerbsCommon.Find, "OfficeWord", DefaultParameterSetName = ParameterSetPathText)]
 [OutputType(typeof(WordParagraph), typeof(WordSearchResult))]
-public sealed class FindOfficeWordCommand : PSCmdlet
-{
+public sealed class FindOfficeWordCommand : PSCmdlet {
     private const string ParameterSetPathText = "PathText";
     private const string ParameterSetPathRegex = "PathRegex";
     private const string ParameterSetDocumentText = "DocumentText";
@@ -39,8 +38,8 @@ public sealed class FindOfficeWordCommand : PSCmdlet
     /// Path to the .docx file.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPathText)]
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPathRegex)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Word document to search.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocumentText)]
@@ -67,31 +66,24 @@ public sealed class FindOfficeWordCommand : PSCmdlet
     public SwitchParameter AsResult { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
-            if (ParameterSetName == ParameterSetPathText || ParameterSetName == ParameterSetPathRegex)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+        try {
+            if (ParameterSetName == ParameterSetPathText || ParameterSetName == ParameterSetPathRegex) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                 document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                 dispose = true;
-            }
-            else
-            {
+            } else {
                 document = Document;
             }
 
-            if (document == null)
-            {
+            if (document == null) {
                 throw new InvalidOperationException("Word document was not provided.");
             }
 
-            if (ParameterSetName == ParameterSetPathText || ParameterSetName == ParameterSetDocumentText)
-            {
+            if (ParameterSetName == ParameterSetPathText || ParameterSetName == ParameterSetDocumentText) {
                 var comparison = CaseSensitive.IsPresent ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase;
                 var results = document.Find(Text, comparison);
                 WriteObject(results, enumerateCollection: true);
@@ -101,26 +93,19 @@ protected override void ProcessRecord()
             var regexOptions = CaseSensitive.IsPresent ? RegexOptions.None : RegexOptions.IgnoreCase;
             var regex = new Regex(Pattern, regexOptions);
             var result = document.Find(regex);
-            if (AsResult.IsPresent)
-            {
+            if (AsResult.IsPresent) {
                 WriteObject(result);
-            }
-            else
-            {
+            } else {
                 WriteObject(Flatten(result), enumerateCollection: true);
             }
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
 
-    private static IEnumerable Flatten(WordSearchResult result)
-    {
+    private static IEnumerable Flatten(WordSearchResult result) {
         foreach (var paragraph in result.BodyParagraphs) yield return paragraph;
         foreach (var paragraph in result.TableParagraphs) yield return paragraph;
         foreach (var paragraph in result.DefaultHeaderParagraphs) yield return paragraph;
@@ -130,4 +115,4 @@ private static IEnumerable Flatten(WordSearchResult result)
         foreach (var paragraph in result.EvenPageFooterParagraphs) yield return paragraph;
         foreach (var paragraph in result.FirstPageFooterParagraphs) yield return paragraph;
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/FindOfficeWordListCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/FindOfficeWordListCommand.cs
index e017ac31..0d59c208 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/FindOfficeWordListCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/FindOfficeWordListCommand.cs
@@ -38,8 +38,7 @@ namespace PSWriteOffice.Cmdlets.Word;
 /// 
 [Cmdlet(VerbsCommon.Find, "OfficeWordList", DefaultParameterSetName = ParameterSetPathText)]
 [OutputType(typeof(WordList))]
-public sealed class FindOfficeWordListCommand : PSCmdlet
-{
+public sealed class FindOfficeWordListCommand : PSCmdlet {
     private const string ParameterSetPathText = "PathText";
     private const string ParameterSetPathRegex = "PathRegex";
     private const string ParameterSetDocumentText = "DocumentText";
@@ -50,8 +49,8 @@ public sealed class FindOfficeWordListCommand : PSCmdlet
     /// Path to the document to open read-only for searching.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPathText)]
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPathRegex)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Open document to inspect. The caller controls the document lifetime.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocumentText)]
@@ -80,35 +79,26 @@ public sealed class FindOfficeWordListCommand : PSCmdlet
     public SwitchParameter CaseSensitive { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
+        try {
             IEnumerable lists;
-            if (ParameterSetName == ParameterSetSectionText || ParameterSetName == ParameterSetSectionRegex)
-            {
+            if (ParameterSetName == ParameterSetSectionText || ParameterSetName == ParameterSetSectionRegex) {
                 lists = Section != null
                     ? Section.Lists
                     : Array.Empty();
-            }
-            else
-            {
-                if (ParameterSetName == ParameterSetPathText || ParameterSetName == ParameterSetPathRegex)
-                {
-                    var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+            } else {
+                if (ParameterSetName == ParameterSetPathText || ParameterSetName == ParameterSetPathRegex) {
+                    var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                     document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                     dispose = true;
-                }
-                else
-                {
+                } else {
                     document = Document;
                 }
 
-                if (document == null)
-                {
+                if (document == null) {
                     throw new InvalidOperationException("Word document was not provided.");
                 }
 
@@ -119,20 +109,15 @@ protected override void ProcessRecord()
                 ? WordObjectSearch.CreateRegexMatcher(Pattern, CaseSensitive.IsPresent)
                 : WordObjectSearch.CreateTextMatcher(Text, CaseSensitive.IsPresent);
 
-            foreach (var list in lists.Where(list => list.ListItems.Count > 0))
-            {
-                if (WordObjectSearch.MatchesList(list, matcher))
-                {
+            foreach (var list in lists.Where(list => list.ListItems.Count > 0)) {
+                if (WordObjectSearch.MatchesList(list, matcher)) {
                     WriteObject(list);
                 }
             }
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/FindOfficeWordTableCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/FindOfficeWordTableCommand.cs
index ff0dcf03..028de47b 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/FindOfficeWordTableCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/FindOfficeWordTableCommand.cs
@@ -40,8 +40,7 @@ namespace PSWriteOffice.Cmdlets.Word;
 /// 
 [Cmdlet(VerbsCommon.Find, "OfficeWordTable", DefaultParameterSetName = ParameterSetPathText)]
 [OutputType(typeof(WordTable))]
-public sealed class FindOfficeWordTableCommand : PSCmdlet
-{
+public sealed class FindOfficeWordTableCommand : PSCmdlet {
     private const string ParameterSetPathText = "PathText";
     private const string ParameterSetPathRegex = "PathRegex";
     private const string ParameterSetDocumentText = "DocumentText";
@@ -50,8 +49,8 @@ public sealed class FindOfficeWordTableCommand : PSCmdlet
     /// Path to the document to open read-only for searching.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPathText)]
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPathRegex)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Open document to inspect. The caller controls the document lifetime.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocumentText)]
@@ -77,26 +76,20 @@ public sealed class FindOfficeWordTableCommand : PSCmdlet
     public SwitchParameter IncludeNested { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
-            if (ParameterSetName == ParameterSetPathText || ParameterSetName == ParameterSetPathRegex)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+        try {
+            if (ParameterSetName == ParameterSetPathText || ParameterSetName == ParameterSetPathRegex) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                 document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                 dispose = true;
-            }
-            else
-            {
+            } else {
                 document = Document;
             }
 
-            if (document == null)
-            {
+            if (document == null) {
                 throw new InvalidOperationException("Word document was not provided.");
             }
 
@@ -108,20 +101,15 @@ protected override void ProcessRecord()
                 ? document.TablesIncludingNestedTables
                 : document.Tables;
 
-            foreach (var table in tables)
-            {
-                if (WordObjectSearch.MatchesTable(table, matcher))
-                {
+            foreach (var table in tables) {
+                if (WordObjectSearch.MatchesTable(table, matcher)) {
                     WriteObject(table);
                 }
             }
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordBookmarkCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordBookmarkCommand.cs
index 706ea4a9..1b8922ad 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordBookmarkCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordBookmarkCommand.cs
@@ -20,15 +20,14 @@ namespace PSWriteOffice.Cmdlets.Word;
 /// 
 [Cmdlet(VerbsCommon.Get, "OfficeWordBookmark", DefaultParameterSetName = ParameterSetPath)]
 [OutputType(typeof(WordBookmark))]
-public sealed class GetOfficeWordBookmarkCommand : PSCmdlet
-{
+public sealed class GetOfficeWordBookmarkCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Path to the .docx file.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Word document to read.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -40,57 +39,44 @@ public sealed class GetOfficeWordBookmarkCommand : PSCmdlet
     public string[]? Name { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
-            if (ParameterSetName == ParameterSetPath)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+        try {
+            if (ParameterSetName == ParameterSetPath) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                 document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                 dispose = true;
-            }
-            else
-            {
+            } else {
                 document = Document;
             }
 
-            if (document == null)
-            {
+            if (document == null) {
                 throw new InvalidOperationException("Word document was not provided.");
             }
 
             var bookmarks = document.Bookmarks;
             IEnumerable results = bookmarks;
-            if (Name != null && Name.Length > 0)
-            {
+            if (Name != null && Name.Length > 0) {
                 var patterns = new List();
-                foreach (var pattern in Name)
-                {
-                    if (!string.IsNullOrWhiteSpace(pattern))
-                    {
+                foreach (var pattern in Name) {
+                    if (!string.IsNullOrWhiteSpace(pattern)) {
                         patterns.Add(new WildcardPattern(pattern, WildcardOptions.IgnoreCase));
                     }
                 }
 
-                if (patterns.Count > 0)
-                {
+                if (patterns.Count > 0) {
                     results = bookmarks.FindAll(b =>
                         b.Name != null && patterns.Exists(p => p.IsMatch(b.Name)));
                 }
             }
 
             WriteObject(results, enumerateCollection: true);
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordCheckBoxCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordCheckBoxCommand.cs
index 5031cedd..0cb12dc3 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordCheckBoxCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordCheckBoxCommand.cs
@@ -21,15 +21,14 @@ namespace PSWriteOffice.Cmdlets.Word;
 [Cmdlet(VerbsCommon.Get, "OfficeWordCheckBox", DefaultParameterSetName = ParameterSetPath)]
 [Alias("WordCheckBoxes")]
 [OutputType(typeof(WordCheckBox))]
-public sealed class GetOfficeWordCheckBoxCommand : PSCmdlet
-{
+public sealed class GetOfficeWordCheckBoxCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Path to the .docx file.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Word document to read.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -54,38 +53,29 @@ public sealed class GetOfficeWordCheckBoxCommand : PSCmdlet
     public SwitchParameter Unchecked { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
-            if (ParameterSetName == ParameterSetPath)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+        try {
+            if (ParameterSetName == ParameterSetPath) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                 document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                 dispose = true;
-            }
-            else
-            {
+            } else {
                 document = Document;
             }
 
-            if (document == null)
-            {
+            if (document == null) {
                 throw new InvalidOperationException("Word document was not provided.");
             }
 
             var aliasPatterns = WordFilterHelpers.BuildPatterns(Alias);
             var tagPatterns = WordFilterHelpers.BuildPatterns(Tag);
             bool? filterChecked = null;
-            if (Checked.IsPresent && !Unchecked.IsPresent)
-            {
+            if (Checked.IsPresent && !Unchecked.IsPresent) {
                 filterChecked = true;
-            }
-            else if (Unchecked.IsPresent && !Checked.IsPresent)
-            {
+            } else if (Unchecked.IsPresent && !Checked.IsPresent) {
                 filterChecked = false;
             }
 
@@ -94,19 +84,15 @@ protected override void ProcessRecord()
                 WordFilterHelpers.Matches(control.Alias, aliasPatterns) &&
                 WordFilterHelpers.Matches(control.Tag, tagPatterns));
 
-            if (filterChecked.HasValue)
-            {
+            if (filterChecked.HasValue) {
                 results = results.Where(control => control.IsChecked == filterChecked.Value);
             }
 
             WriteObject(results, enumerateCollection: true);
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordComboBoxCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordComboBoxCommand.cs
index 47c6d522..9c10c1bc 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordComboBoxCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordComboBoxCommand.cs
@@ -21,15 +21,14 @@ namespace PSWriteOffice.Cmdlets.Word;
 [Cmdlet(VerbsCommon.Get, "OfficeWordComboBox", DefaultParameterSetName = ParameterSetPath)]
 [Alias("WordComboBoxes")]
 [OutputType(typeof(WordComboBox))]
-public sealed class GetOfficeWordComboBoxCommand : PSCmdlet
-{
+public sealed class GetOfficeWordComboBoxCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Path to the .docx file.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Word document to read.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -46,26 +45,20 @@ public sealed class GetOfficeWordComboBoxCommand : PSCmdlet
     public string[]? Tag { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
-            if (ParameterSetName == ParameterSetPath)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+        try {
+            if (ParameterSetName == ParameterSetPath) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                 document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                 dispose = true;
-            }
-            else
-            {
+            } else {
                 document = Document;
             }
 
-            if (document == null)
-            {
+            if (document == null) {
                 throw new InvalidOperationException("Word document was not provided.");
             }
 
@@ -78,13 +71,10 @@ protected override void ProcessRecord()
                 WordFilterHelpers.Matches(control.Tag, tagPatterns));
 
             WriteObject(results, enumerateCollection: true);
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordCommand.cs
index 050d420f..19cd8ca7 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordCommand.cs
@@ -20,12 +20,11 @@ namespace PSWriteOffice.Cmdlets.Word;
 ///   Loads the document, appends content through the DSL, and returns the open document for saving or further edits.
 /// 
 [Cmdlet(VerbsCommon.Get, "OfficeWord")]
-public sealed class GetOfficeWordCommand : PSCmdlet
-{
+public sealed class GetOfficeWordCommand : PSCmdlet {
     /// Path to the .docx. Accepts PS paths.
     [Parameter(Mandatory = true, Position = 0)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Open in read-only mode.
     [Parameter]
@@ -44,23 +43,20 @@ public sealed class GetOfficeWordCommand : PSCmdlet
     public ScriptBlock? Content { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         var fullPath = ResolvePath();
         var document = WordDocumentService.LoadDocument(fullPath, ReadOnly.IsPresent, AutoSave.IsPresent, Password);
-        if (Content != null)
-        {
+        if (Content != null) {
             WordDocumentService.InvokeDsl(document, Content);
         }
 
         WriteObject(document);
     }
 
-    private string ResolvePath()
-    {
-        var providerPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
-        return Path.IsPathRooted(providerPath)
+    private string ResolvePath() {
+        var providerPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
+        return System.IO.Path.IsPathRooted(providerPath)
             ? providerPath
-            : Path.Combine(SessionState.Path.CurrentFileSystemLocation.Path, providerPath);
+            : System.IO.Path.Combine(SessionState.Path.CurrentFileSystemLocation.Path, providerPath);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordContentControlCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordContentControlCommand.cs
index 21e818d7..41009763 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordContentControlCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordContentControlCommand.cs
@@ -21,15 +21,14 @@ namespace PSWriteOffice.Cmdlets.Word;
 [Cmdlet(VerbsCommon.Get, "OfficeWordContentControl", DefaultParameterSetName = ParameterSetPath)]
 [Alias("WordContentControls")]
 [OutputType(typeof(WordStructuredDocumentTag))]
-public sealed class GetOfficeWordContentControlCommand : PSCmdlet
-{
+public sealed class GetOfficeWordContentControlCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Path to the .docx file.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Word document to read.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -51,26 +50,20 @@ public sealed class GetOfficeWordContentControlCommand : PSCmdlet
     public string[]? Text { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
-            if (ParameterSetName == ParameterSetPath)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+        try {
+            if (ParameterSetName == ParameterSetPath) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                 document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                 dispose = true;
-            }
-            else
-            {
+            } else {
                 document = Document;
             }
 
-            if (document == null)
-            {
+            if (document == null) {
                 throw new InvalidOperationException("Word document was not provided.");
             }
 
@@ -85,13 +78,10 @@ protected override void ProcessRecord()
                 WordFilterHelpers.Matches(control.Text, textPatterns));
 
             WriteObject(results, enumerateCollection: true);
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordDatePickerCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordDatePickerCommand.cs
index 4e65cc71..6b1989b7 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordDatePickerCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordDatePickerCommand.cs
@@ -21,15 +21,14 @@ namespace PSWriteOffice.Cmdlets.Word;
 [Cmdlet(VerbsCommon.Get, "OfficeWordDatePicker", DefaultParameterSetName = ParameterSetPath)]
 [Alias("WordDatePickers")]
 [OutputType(typeof(WordDatePicker))]
-public sealed class GetOfficeWordDatePickerCommand : PSCmdlet
-{
+public sealed class GetOfficeWordDatePickerCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Path to the .docx file.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Word document to read.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -46,26 +45,20 @@ public sealed class GetOfficeWordDatePickerCommand : PSCmdlet
     public string[]? Tag { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
-            if (ParameterSetName == ParameterSetPath)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+        try {
+            if (ParameterSetName == ParameterSetPath) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                 document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                 dispose = true;
-            }
-            else
-            {
+            } else {
                 document = Document;
             }
 
-            if (document == null)
-            {
+            if (document == null) {
                 throw new InvalidOperationException("Word document was not provided.");
             }
 
@@ -78,13 +71,10 @@ protected override void ProcessRecord()
                 WordFilterHelpers.Matches(control.Tag, tagPatterns));
 
             WriteObject(results, enumerateCollection: true);
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordDocumentPropertyCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordDocumentPropertyCommand.cs
index a60d41b3..46f9701c 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordDocumentPropertyCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordDocumentPropertyCommand.cs
@@ -20,15 +20,14 @@ namespace PSWriteOffice.Cmdlets.Word;
 /// 
 [Cmdlet(VerbsCommon.Get, "OfficeWordDocumentProperty", DefaultParameterSetName = ParameterSetPath)]
 [OutputType(typeof(WordDocumentPropertyInfo))]
-public sealed class GetOfficeWordDocumentPropertyCommand : PSCmdlet
-{
+public sealed class GetOfficeWordDocumentPropertyCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Path to the document.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Document to inspect.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -48,26 +47,20 @@ public sealed class GetOfficeWordDocumentPropertyCommand : PSCmdlet
     public SwitchParameter Custom { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
-            if (ParameterSetName == ParameterSetPath)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+        try {
+            if (ParameterSetName == ParameterSetPath) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                 document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                 dispose = true;
-            }
-            else
-            {
+            } else {
                 document = Document;
             }
 
-            if (document == null)
-            {
+            if (document == null) {
                 throw new InvalidOperationException("Word document was not provided.");
             }
 
@@ -76,33 +69,26 @@ protected override void ProcessRecord()
 
             IEnumerable properties = WordDocumentPropertyService.GetProperties(document, includeBuiltIn, includeCustom);
             var patterns = BuildPatterns(Name);
-            if (patterns.Count > 0)
-            {
+            if (patterns.Count > 0) {
                 properties = properties.Where(property => patterns.Any(pattern => pattern.IsMatch(property.Name)));
             }
 
             WriteObject(properties, enumerateCollection: true);
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
 
-    private static List BuildPatterns(string[]? patterns)
-    {
+    private static List BuildPatterns(string[]? patterns) {
         var compiled = new List();
-        foreach (var pattern in patterns ?? Array.Empty())
-        {
-            if (!string.IsNullOrWhiteSpace(pattern))
-            {
+        foreach (var pattern in patterns ?? Array.Empty()) {
+            if (!string.IsNullOrWhiteSpace(pattern)) {
                 compiled.Add(new WildcardPattern(pattern, WildcardOptions.IgnoreCase));
             }
         }
 
         return compiled;
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordDropDownListCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordDropDownListCommand.cs
index e91b646d..07b17dda 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordDropDownListCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordDropDownListCommand.cs
@@ -21,15 +21,14 @@ namespace PSWriteOffice.Cmdlets.Word;
 [Cmdlet(VerbsCommon.Get, "OfficeWordDropDownList", DefaultParameterSetName = ParameterSetPath)]
 [Alias("WordDropDownLists")]
 [OutputType(typeof(WordDropDownList))]
-public sealed class GetOfficeWordDropDownListCommand : PSCmdlet
-{
+public sealed class GetOfficeWordDropDownListCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Path to the .docx file.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Word document to read.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -46,26 +45,20 @@ public sealed class GetOfficeWordDropDownListCommand : PSCmdlet
     public string[]? Tag { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
-            if (ParameterSetName == ParameterSetPath)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+        try {
+            if (ParameterSetName == ParameterSetPath) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                 document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                 dispose = true;
-            }
-            else
-            {
+            } else {
                 document = Document;
             }
 
-            if (document == null)
-            {
+            if (document == null) {
                 throw new InvalidOperationException("Word document was not provided.");
             }
 
@@ -78,13 +71,10 @@ protected override void ProcessRecord()
                 WordFilterHelpers.Matches(control.Tag, tagPatterns));
 
             WriteObject(results, enumerateCollection: true);
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordEndnoteCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordEndnoteCommand.cs
index 4045b0f3..2161186e 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordEndnoteCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordEndnoteCommand.cs
@@ -21,16 +21,15 @@ namespace PSWriteOffice.Cmdlets.Word;
 [Cmdlet(VerbsCommon.Get, "OfficeWordEndnote", DefaultParameterSetName = ParameterSetPath)]
 [Alias("WordEndnotes")]
 [OutputType(typeof(WordNoteInfo))]
-public sealed class GetOfficeWordEndnoteCommand : PSCmdlet
-{
+public sealed class GetOfficeWordEndnoteCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetSection = "Section";
 
     /// Path to the document.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Document to inspect.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -41,27 +40,21 @@ public sealed class GetOfficeWordEndnoteCommand : PSCmdlet
     public WordSection Section { get; set; } = null!;
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
+        try {
             IEnumerable notes;
-            if (ParameterSetName == ParameterSetSection)
-            {
+            if (ParameterSetName == ParameterSetSection) {
                 notes = Section?.EndNotes ?? Enumerable.Empty();
-            }
-            else
-            {
+            } else {
                 document = ParameterSetName == ParameterSetPath
-                    ? WordDocumentService.LoadDocument(SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath), readOnly: true, autoSave: false)
+                    ? WordDocumentService.LoadDocument(SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path), readOnly: true, autoSave: false)
                     : Document;
                 dispose = ParameterSetName == ParameterSetPath;
 
-                if (document == null)
-                {
+                if (document == null) {
                     throw new InvalidOperationException("Word document was not provided.");
                 }
 
@@ -69,18 +62,14 @@ protected override void ProcessRecord()
             }
 
             WriteObject(notes.Select(ToInfo), enumerateCollection: true);
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
 
-    private static WordNoteInfo ToInfo(WordEndNote note)
-    {
+    private static WordNoteInfo ToInfo(WordEndNote note) {
         var paragraphs = note.Paragraphs?
             .Select(paragraph => paragraph.Text)
             .Where(text => !string.IsNullOrWhiteSpace(text))
@@ -88,4 +77,4 @@ private static WordNoteInfo ToInfo(WordEndNote note)
 
         return new WordNoteInfo("Endnote", note.ReferenceId, note.ParentParagraph?.Text, paragraphs);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordFieldCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordFieldCommand.cs
index ee640712..6034b143 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordFieldCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordFieldCommand.cs
@@ -21,15 +21,14 @@ namespace PSWriteOffice.Cmdlets.Word;
 /// 
 [Cmdlet(VerbsCommon.Get, "OfficeWordField", DefaultParameterSetName = ParameterSetPath)]
 [OutputType(typeof(WordField))]
-public sealed class GetOfficeWordFieldCommand : PSCmdlet
-{
+public sealed class GetOfficeWordFieldCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Path to the .docx file.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Word document to read.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -48,52 +47,41 @@ public sealed class GetOfficeWordFieldCommand : PSCmdlet
     public SwitchParameter CaseSensitive { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
-            if (ParameterSetName == ParameterSetPath)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+        try {
+            if (ParameterSetName == ParameterSetPath) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                 document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                 dispose = true;
-            }
-            else
-            {
+            } else {
                 document = Document;
             }
 
-            if (document == null)
-            {
+            if (document == null) {
                 throw new InvalidOperationException("Word document was not provided.");
             }
 
             var fields = document.Fields;
             IEnumerable results = fields;
 
-            if (FieldType != null && FieldType.Length > 0)
-            {
+            if (FieldType != null && FieldType.Length > 0) {
                 var allowed = new HashSet(FieldType);
                 results = fields.FindAll(f => f.FieldType.HasValue && allowed.Contains(f.FieldType.Value));
             }
 
-            if (!string.IsNullOrWhiteSpace(Contains))
-            {
+            if (!string.IsNullOrWhiteSpace(Contains)) {
                 var comparison = CaseSensitive.IsPresent ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase;
                 results = results.Where(f => f.Field.IndexOf(Contains!, comparison) >= 0);
             }
 
             WriteObject(results, enumerateCollection: true);
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordFootnoteCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordFootnoteCommand.cs
index 08966485..5a3952ac 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordFootnoteCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordFootnoteCommand.cs
@@ -21,16 +21,15 @@ namespace PSWriteOffice.Cmdlets.Word;
 [Cmdlet(VerbsCommon.Get, "OfficeWordFootnote", DefaultParameterSetName = ParameterSetPath)]
 [Alias("WordFootnotes")]
 [OutputType(typeof(WordNoteInfo))]
-public sealed class GetOfficeWordFootnoteCommand : PSCmdlet
-{
+public sealed class GetOfficeWordFootnoteCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetSection = "Section";
 
     /// Path to the document.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Document to inspect.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -41,27 +40,21 @@ public sealed class GetOfficeWordFootnoteCommand : PSCmdlet
     public WordSection Section { get; set; } = null!;
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
+        try {
             IEnumerable notes;
-            if (ParameterSetName == ParameterSetSection)
-            {
+            if (ParameterSetName == ParameterSetSection) {
                 notes = Section?.FootNotes ?? Enumerable.Empty();
-            }
-            else
-            {
+            } else {
                 document = ParameterSetName == ParameterSetPath
-                    ? WordDocumentService.LoadDocument(SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath), readOnly: true, autoSave: false)
+                    ? WordDocumentService.LoadDocument(SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path), readOnly: true, autoSave: false)
                     : Document;
                 dispose = ParameterSetName == ParameterSetPath;
 
-                if (document == null)
-                {
+                if (document == null) {
                     throw new InvalidOperationException("Word document was not provided.");
                 }
 
@@ -69,18 +62,14 @@ protected override void ProcessRecord()
             }
 
             WriteObject(notes.Select(ToInfo), enumerateCollection: true);
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
 
-    private static WordNoteInfo ToInfo(WordFootNote note)
-    {
+    private static WordNoteInfo ToInfo(WordFootNote note) {
         var paragraphs = note.Paragraphs?
             .Select(paragraph => paragraph.Text)
             .Where(text => !string.IsNullOrWhiteSpace(text))
@@ -88,4 +77,4 @@ private static WordNoteInfo ToInfo(WordFootNote note)
 
         return new WordNoteInfo("Footnote", note.ReferenceId, note.ParentParagraph?.Text, paragraphs);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordHyperlinkCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordHyperlinkCommand.cs
index efad7378..5f893df9 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordHyperlinkCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordHyperlinkCommand.cs
@@ -19,8 +19,7 @@ namespace PSWriteOffice.Cmdlets.Word;
 /// 
 [Cmdlet(VerbsCommon.Get, "OfficeWordHyperlink", DefaultParameterSetName = ParameterSetPath)]
 [OutputType(typeof(WordHyperLink))]
-public sealed class GetOfficeWordHyperlinkCommand : PSCmdlet
-{
+public sealed class GetOfficeWordHyperlinkCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetSection = "Section";
@@ -28,8 +27,8 @@ public sealed class GetOfficeWordHyperlinkCommand : PSCmdlet
 
     /// Path to the document.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Document to inspect.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -61,13 +60,11 @@ public sealed class GetOfficeWordHyperlinkCommand : PSCmdlet
     public string[]? Anchor { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
+        try {
             IEnumerable hyperlinks = ResolveHyperlinks(ref document, ref dispose);
 
             hyperlinks = FilterByPatterns(hyperlinks, Text, hyperlink => hyperlink.Text);
@@ -75,20 +72,15 @@ protected override void ProcessRecord()
             hyperlinks = FilterByPatterns(hyperlinks, Anchor, hyperlink => hyperlink.Anchor);
 
             WriteObject(hyperlinks, enumerateCollection: true);
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
 
-    private IEnumerable ResolveHyperlinks(ref WordDocument? document, ref bool dispose)
-    {
-        switch (ParameterSetName)
-        {
+    private IEnumerable ResolveHyperlinks(ref WordDocument? document, ref bool dispose) {
+        switch (ParameterSetName) {
             case ParameterSetParagraph:
                 return Paragraph.IsHyperLink && Paragraph.Hyperlink != null
                     ? new[] { Paragraph.Hyperlink }
@@ -98,7 +90,7 @@ private IEnumerable ResolveHyperlinks(ref WordDocument? document,
             case ParameterSetDocument:
                 return Document != null ? Document.HyperLinks : Array.Empty();
             default:
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                 document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                 dispose = true;
                 return document.HyperLinks;
@@ -108,32 +100,26 @@ private IEnumerable ResolveHyperlinks(ref WordDocument? document,
     private static IEnumerable FilterByPatterns(
         IEnumerable hyperlinks,
         string[]? patterns,
-        Func valueSelector)
-    {
+        Func valueSelector) {
         var compiledPatterns = BuildPatterns(patterns);
-        if (compiledPatterns.Count == 0)
-        {
+        if (compiledPatterns.Count == 0) {
             return hyperlinks;
         }
 
-        return hyperlinks.Where(hyperlink =>
-        {
+        return hyperlinks.Where(hyperlink => {
             var value = valueSelector(hyperlink);
             return value != null && compiledPatterns.Any(pattern => pattern.IsMatch(value));
         });
     }
 
-    private static List BuildPatterns(string[]? patterns)
-    {
+    private static List BuildPatterns(string[]? patterns) {
         var compiled = new List();
-        foreach (var pattern in patterns ?? Array.Empty())
-        {
-            if (!string.IsNullOrWhiteSpace(pattern))
-            {
+        foreach (var pattern in patterns ?? Array.Empty()) {
+            if (!string.IsNullOrWhiteSpace(pattern)) {
                 compiled.Add(new WildcardPattern(pattern, WildcardOptions.IgnoreCase));
             }
         }
 
         return compiled;
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordImageCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordImageCommand.cs
index 795b6c20..502049e3 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordImageCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordImageCommand.cs
@@ -19,8 +19,7 @@ namespace PSWriteOffice.Cmdlets.Word;
 [Cmdlet(VerbsCommon.Get, "OfficeWordImage", DefaultParameterSetName = ParameterSetPath)]
 [Alias("WordImages")]
 [OutputType(typeof(WordImage))]
-public sealed class GetOfficeWordImageCommand : PSCmdlet
-{
+public sealed class GetOfficeWordImageCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetSection = "Section";
@@ -28,8 +27,8 @@ public sealed class GetOfficeWordImageCommand : PSCmdlet
 
     /// Path to the document.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Document to inspect.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -44,16 +43,13 @@ public sealed class GetOfficeWordImageCommand : PSCmdlet
     public WordParagraph Paragraph { get; set; } = null!;
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
+        try {
             IEnumerable images;
-            switch (ParameterSetName)
-            {
+            switch (ParameterSetName) {
                 case ParameterSetSection:
                     images = Section != null
                         ? Section.Images
@@ -65,14 +61,11 @@ protected override void ProcessRecord()
                         : Array.Empty();
                     break;
                 default:
-                    if (ParameterSetName == ParameterSetPath)
-                    {
-                        var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+                    if (ParameterSetName == ParameterSetPath) {
+                        var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                         document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                         dispose = true;
-                    }
-                    else
-                    {
+                    } else {
                         document = Document;
                     }
 
@@ -83,13 +76,10 @@ protected override void ProcessRecord()
             }
 
             WriteObject(images, enumerateCollection: true);
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordListCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordListCommand.cs
index 4db9af6b..7ba7716c 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordListCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordListCommand.cs
@@ -34,16 +34,15 @@ namespace PSWriteOffice.Cmdlets.Word;
 /// 
 [Cmdlet(VerbsCommon.Get, "OfficeWordList", DefaultParameterSetName = ParameterSetPath)]
 [OutputType(typeof(WordList))]
-public sealed class GetOfficeWordListCommand : PSCmdlet
-{
+public sealed class GetOfficeWordListCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetSection = "Section";
 
     /// Path to the document to open read-only for list inspection.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Open document to inspect. The caller controls the document lifetime.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -58,55 +57,42 @@ public sealed class GetOfficeWordListCommand : PSCmdlet
     public SwitchParameter IncludeEmpty { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
+        try {
             IEnumerable lists;
 
-            if (ParameterSetName == ParameterSetSection)
-            {
+            if (ParameterSetName == ParameterSetSection) {
                 lists = Section != null
                     ? Section.Lists
                     : Array.Empty();
-            }
-            else
-            {
-                if (ParameterSetName == ParameterSetPath)
-                {
-                    var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+            } else {
+                if (ParameterSetName == ParameterSetPath) {
+                    var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                     document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                     dispose = true;
-                }
-                else
-                {
+                } else {
                     document = Document;
                 }
 
-                if (document == null)
-                {
+                if (document == null) {
                     throw new InvalidOperationException("Word document was not provided.");
                 }
 
                 lists = document.Lists;
             }
 
-            if (!IncludeEmpty.IsPresent)
-            {
+            if (!IncludeEmpty.IsPresent) {
                 lists = lists.Where(list => list.ListItems.Count > 0);
             }
 
             WriteObject(lists, enumerateCollection: true);
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordParagraphCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordParagraphCommand.cs
index 7b4a3fef..9b0f82cf 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordParagraphCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordParagraphCommand.cs
@@ -20,16 +20,15 @@ namespace PSWriteOffice.Cmdlets.Word;
 /// 
 [Cmdlet(VerbsCommon.Get, "OfficeWordParagraph", DefaultParameterSetName = ParameterSetPath)]
 [OutputType(typeof(WordParagraph))]
-public sealed class GetOfficeWordParagraphCommand : PSCmdlet
-{
+public sealed class GetOfficeWordParagraphCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetSection = "Section";
 
     /// Path to the document.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Document to inspect.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -40,36 +39,27 @@ public sealed class GetOfficeWordParagraphCommand : PSCmdlet
     public WordSection Section { get; set; } = null!;
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
+        try {
             IEnumerable paragraphs;
 
-            if (ParameterSetName == ParameterSetSection)
-            {
+            if (ParameterSetName == ParameterSetSection) {
                 paragraphs = Section != null
                     ? Section.Paragraphs
                     : Array.Empty();
-            }
-            else
-            {
-                if (ParameterSetName == ParameterSetPath)
-                {
-                    var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+            } else {
+                if (ParameterSetName == ParameterSetPath) {
+                    var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                     document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                     dispose = true;
-                }
-                else
-                {
+                } else {
                     document = Document;
                 }
 
-                if (document == null)
-                {
+                if (document == null) {
                     throw new InvalidOperationException("Word document was not provided.");
                 }
 
@@ -77,13 +67,10 @@ protected override void ProcessRecord()
             }
 
             WriteObject(paragraphs, enumerateCollection: true);
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordPictureControlCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordPictureControlCommand.cs
index d710880b..5df8352c 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordPictureControlCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordPictureControlCommand.cs
@@ -21,15 +21,14 @@ namespace PSWriteOffice.Cmdlets.Word;
 [Cmdlet(VerbsCommon.Get, "OfficeWordPictureControl", DefaultParameterSetName = ParameterSetPath)]
 [Alias("WordPictureControls")]
 [OutputType(typeof(WordPictureControl))]
-public sealed class GetOfficeWordPictureControlCommand : PSCmdlet
-{
+public sealed class GetOfficeWordPictureControlCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Path to the .docx file.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Word document to read.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -46,26 +45,20 @@ public sealed class GetOfficeWordPictureControlCommand : PSCmdlet
     public string[]? Tag { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
-            if (ParameterSetName == ParameterSetPath)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+        try {
+            if (ParameterSetName == ParameterSetPath) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                 document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                 dispose = true;
-            }
-            else
-            {
+            } else {
                 document = Document;
             }
 
-            if (document == null)
-            {
+            if (document == null) {
                 throw new InvalidOperationException("Word document was not provided.");
             }
 
@@ -78,13 +71,10 @@ protected override void ProcessRecord()
                 WordFilterHelpers.Matches(control.Tag, tagPatterns));
 
             WriteObject(results, enumerateCollection: true);
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordRepeatingSectionCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordRepeatingSectionCommand.cs
index cba83f1a..e060e3f5 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordRepeatingSectionCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordRepeatingSectionCommand.cs
@@ -21,15 +21,14 @@ namespace PSWriteOffice.Cmdlets.Word;
 [Cmdlet(VerbsCommon.Get, "OfficeWordRepeatingSection", DefaultParameterSetName = ParameterSetPath)]
 [Alias("WordRepeatingSections")]
 [OutputType(typeof(WordRepeatingSection))]
-public sealed class GetOfficeWordRepeatingSectionCommand : PSCmdlet
-{
+public sealed class GetOfficeWordRepeatingSectionCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Path to the .docx file.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Word document to read.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -46,26 +45,20 @@ public sealed class GetOfficeWordRepeatingSectionCommand : PSCmdlet
     public string[]? Tag { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
-            if (ParameterSetName == ParameterSetPath)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+        try {
+            if (ParameterSetName == ParameterSetPath) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                 document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                 dispose = true;
-            }
-            else
-            {
+            } else {
                 document = Document;
             }
 
-            if (document == null)
-            {
+            if (document == null) {
                 throw new InvalidOperationException("Word document was not provided.");
             }
 
@@ -78,13 +71,10 @@ protected override void ProcessRecord()
                 WordFilterHelpers.Matches(control.Tag, tagPatterns));
 
             WriteObject(results, enumerateCollection: true);
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordSectionCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordSectionCommand.cs
index 8c88eebf..4e688b7f 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordSectionCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordSectionCommand.cs
@@ -20,15 +20,14 @@ namespace PSWriteOffice.Cmdlets.Word;
 /// 
 [Cmdlet(VerbsCommon.Get, "OfficeWordSection", DefaultParameterSetName = ParameterSetPath)]
 [OutputType(typeof(WordSection))]
-public sealed class GetOfficeWordSectionCommand : PSCmdlet
-{
+public sealed class GetOfficeWordSectionCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Path to the document.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Document to inspect.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -39,39 +38,30 @@ public sealed class GetOfficeWordSectionCommand : PSCmdlet
     public int[]? Index { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
-            if (ParameterSetName == ParameterSetPath)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+        try {
+            if (ParameterSetName == ParameterSetPath) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                 document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                 dispose = true;
-            }
-            else
-            {
+            } else {
                 document = Document;
             }
 
-            if (document == null)
-            {
+            if (document == null) {
                 throw new InvalidOperationException("Word document was not provided.");
             }
 
             IEnumerable sections = document.Sections;
 
-            if (Index != null && Index.Length > 0)
-            {
+            if (Index != null && Index.Length > 0) {
                 var list = document.Sections;
                 var results = new List(Index.Length);
-                foreach (var idx in Index)
-                {
-                    if (idx < 0 || idx >= list.Count)
-                    {
+                foreach (var idx in Index) {
+                    if (idx < 0 || idx >= list.Count) {
                         throw new ArgumentOutOfRangeException(nameof(Index), $"Section index {idx} is out of range.");
                     }
                     results.Add(list[idx]);
@@ -80,13 +70,10 @@ protected override void ProcessRecord()
             }
 
             WriteObject(sections, enumerateCollection: true);
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordShapeCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordShapeCommand.cs
index 4bf138af..66b2f22a 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordShapeCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordShapeCommand.cs
@@ -19,8 +19,7 @@ namespace PSWriteOffice.Cmdlets.Word;
 [Cmdlet(VerbsCommon.Get, "OfficeWordShape", DefaultParameterSetName = ParameterSetPath)]
 [Alias("WordShapes")]
 [OutputType(typeof(WordShape))]
-public sealed class GetOfficeWordShapeCommand : PSCmdlet
-{
+public sealed class GetOfficeWordShapeCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetSection = "Section";
@@ -28,8 +27,8 @@ public sealed class GetOfficeWordShapeCommand : PSCmdlet
 
     /// Path to the document.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Document to inspect.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -44,16 +43,13 @@ public sealed class GetOfficeWordShapeCommand : PSCmdlet
     public WordParagraph Paragraph { get; set; } = null!;
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
+        try {
             IEnumerable shapes;
-            switch (ParameterSetName)
-            {
+            switch (ParameterSetName) {
                 case ParameterSetSection:
                     shapes = Section != null
                         ? Section.Shapes
@@ -65,14 +61,11 @@ protected override void ProcessRecord()
                         : Array.Empty();
                     break;
                 default:
-                    if (ParameterSetName == ParameterSetPath)
-                    {
-                        var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+                    if (ParameterSetName == ParameterSetPath) {
+                        var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                         document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                         dispose = true;
-                    }
-                    else
-                    {
+                    } else {
                         document = Document;
                     }
 
@@ -83,13 +76,10 @@ protected override void ProcessRecord()
             }
 
             WriteObject(shapes, enumerateCollection: true);
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordStatisticsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordStatisticsCommand.cs
index 98f5efc8..b3783835 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordStatisticsCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordStatisticsCommand.cs
@@ -21,53 +21,43 @@ namespace PSWriteOffice.Cmdlets.Word;
 [Cmdlet(VerbsCommon.Get, "OfficeWordStatistics", DefaultParameterSetName = ParameterSetPath)]
 [Alias("WordStatistics")]
 [OutputType(typeof(WordDocumentStatisticsInfo))]
-public sealed class GetOfficeWordStatisticsCommand : PSCmdlet
-{
+public sealed class GetOfficeWordStatisticsCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Path to the Word document.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Document to inspect.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
     public WordDocument Document { get; set; } = null!;
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
-            if (ParameterSetName == ParameterSetPath)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
-                if (!File.Exists(resolvedPath))
-                {
+        try {
+            if (ParameterSetName == ParameterSetPath) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
+                if (!File.Exists(resolvedPath)) {
                     throw new FileNotFoundException($"File {resolvedPath} doesn't exist.", resolvedPath);
                 }
                 document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                 dispose = true;
-            }
-            else
-            {
+            } else {
                 document = Document;
             }
 
             var statistics = document.Statistics ?? new WordDocumentStatistics(document);
 
             WriteObject(new WordDocumentStatisticsInfo(statistics));
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordTableCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordTableCommand.cs
index 50941851..335b4b89 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordTableCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordTableCommand.cs
@@ -20,16 +20,15 @@ namespace PSWriteOffice.Cmdlets.Word;
 /// 
 [Cmdlet(VerbsCommon.Get, "OfficeWordTable", DefaultParameterSetName = ParameterSetPath)]
 [OutputType(typeof(WordTable))]
-public sealed class GetOfficeWordTableCommand : PSCmdlet
-{
+public sealed class GetOfficeWordTableCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetSection = "Section";
 
     /// Path to the document.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Document to inspect.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -44,43 +43,31 @@ public sealed class GetOfficeWordTableCommand : PSCmdlet
     public SwitchParameter IncludeNested { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
+        try {
             IEnumerable tables;
 
-            if (ParameterSetName == ParameterSetSection)
-            {
-                if (Section == null)
-                {
+            if (ParameterSetName == ParameterSetSection) {
+                if (Section == null) {
                     tables = Array.Empty();
-                }
-                else
-                {
+                } else {
                     tables = IncludeNested.IsPresent
                         ? Section.TablesIncludingNestedTables
                         : Section.Tables;
                 }
-            }
-            else
-            {
-                if (ParameterSetName == ParameterSetPath)
-                {
-                    var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+            } else {
+                if (ParameterSetName == ParameterSetPath) {
+                    var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                     document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                     dispose = true;
-                }
-                else
-                {
+                } else {
                     document = Document;
                 }
 
-                if (document == null)
-                {
+                if (document == null) {
                     throw new InvalidOperationException("Word document was not provided.");
                 }
 
@@ -90,13 +77,10 @@ protected override void ProcessRecord()
             }
 
             WriteObject(tables, enumerateCollection: true);
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordTableOfContentsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordTableOfContentsCommand.cs
index f2b0e29e..b4397c7c 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordTableOfContentsCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordTableOfContentsCommand.cs
@@ -20,56 +20,45 @@ namespace PSWriteOffice.Cmdlets.Word;
 /// 
 [Cmdlet(VerbsCommon.Get, "OfficeWordTableOfContents", DefaultParameterSetName = ParameterSetPath)]
 [OutputType(typeof(WordTableOfContent))]
-public sealed class GetOfficeWordTableOfContentsCommand : PSCmdlet
-{
+public sealed class GetOfficeWordTableOfContentsCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Path to the .docx file.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Word document to read.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
     public WordDocument Document { get; set; } = null!;
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
-            if (ParameterSetName == ParameterSetPath)
-            {
-                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+        try {
+            if (ParameterSetName == ParameterSetPath) {
+                var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                 document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                 dispose = true;
-            }
-            else
-            {
+            } else {
                 document = Document;
             }
 
-            if (document == null)
-            {
+            if (document == null) {
                 throw new InvalidOperationException("Word document was not provided.");
             }
 
             var toc = document.TableOfContent;
-            if (toc != null)
-            {
+            if (toc != null) {
                 WriteObject(toc);
             }
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordTextCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordTextCommand.cs
index 09893b37..a1b27fd2 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordTextCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordTextCommand.cs
@@ -16,8 +16,7 @@ namespace PSWriteOffice.Cmdlets.Word;
 /// 
 [Cmdlet(VerbsCommon.Get, "OfficeWordText", DefaultParameterSetName = ParameterSetParagraph)]
 [OutputType(typeof(WordParagraph))]
-public sealed class GetOfficeWordTextCommand : PSCmdlet
-{
+public sealed class GetOfficeWordTextCommand : PSCmdlet {
     private const string ParameterSetParagraph = "Paragraph";
     private const string ParameterSetSection = "Section";
     private const string ParameterSetDocument = "Document";
@@ -37,21 +36,18 @@ public sealed class GetOfficeWordTextCommand : PSCmdlet
 
     /// Path to the document.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
+        try {
             IEnumerable paragraphs;
 
-            switch (ParameterSetName)
-            {
+            switch (ParameterSetName) {
                 case ParameterSetParagraph:
                     paragraphs = Paragraph != null ? new[] { Paragraph } : Array.Empty();
                     break;
@@ -61,35 +57,29 @@ protected override void ProcessRecord()
                         : Array.Empty();
                     break;
                 case ParameterSetPath:
-                    var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
+                    var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
                     document = WordDocumentService.LoadDocument(resolvedPath, readOnly: true, autoSave: false);
                     dispose = true;
                     paragraphs = document.Paragraphs;
                     break;
                 default:
                     document = Document;
-                    if (document == null)
-                    {
+                    if (document == null) {
                         throw new InvalidOperationException("Word document was not provided.");
                     }
                     paragraphs = document.Paragraphs;
                     break;
             }
 
-            foreach (var paragraph in paragraphs)
-            {
-                foreach (var text in paragraph.GetRuns())
-                {
+            foreach (var paragraph in paragraphs) {
+                foreach (var text in paragraph.GetRuns()) {
                     WriteObject(text);
                 }
             }
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/JoinOfficeWordDocumentCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/JoinOfficeWordDocumentCommand.cs
index 6d2811d5..ed0368a4 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/JoinOfficeWordDocumentCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/JoinOfficeWordDocumentCommand.cs
@@ -31,15 +31,14 @@ namespace PSWriteOffice.Cmdlets.Word;
 [Cmdlet(VerbsCommon.Join, "OfficeWordDocument", DefaultParameterSetName = ParameterSetPath, SupportsShouldProcess = true)]
 [Alias("Merge-OfficeWordDocument", "WordDocumentJoin")]
 [OutputType(typeof(WordDocument))]
-public sealed class JoinOfficeWordDocumentCommand : PSCmdlet
-{
+public sealed class JoinOfficeWordDocumentCommand : PSCmdlet {
     private const string ParameterSetPath = "Path";
     private const string ParameterSetDocument = "Document";
 
     /// Base document path.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("Path", "BasePath")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "BasePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Base document object.
     [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = ParameterSetDocument)]
@@ -56,37 +55,30 @@ public sealed class JoinOfficeWordDocumentCommand : PSCmdlet
 
     /// Open the saved output with the shell.
     [Parameter]
-    public SwitchParameter Show { get; set; }
+    [Alias("Show")]
+    public SwitchParameter Open { get; set; }
 
     /// Emit the merged Word document instead of disposing it.
     [Parameter]
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
+    protected override void ProcessRecord() {
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
+        try {
             string? saveTarget = null;
-            if (ParameterSetName == ParameterSetPath)
-            {
-                var resolvedPath = ResolveExistingPath(InputPath);
+            if (ParameterSetName == ParameterSetPath) {
+                var resolvedPath = ResolveExistingPath(Path);
                 document = WordDocumentService.LoadDocument(resolvedPath, readOnly: false, autoSave: false);
                 dispose = true;
                 saveTarget = string.IsNullOrWhiteSpace(OutputPath) ? resolvedPath : ResolveOutputPath(OutputPath!);
-            }
-            else
-            {
+            } else {
                 document = Document;
-                if (!string.IsNullOrWhiteSpace(OutputPath))
-                {
+                if (!string.IsNullOrWhiteSpace(OutputPath)) {
                     saveTarget = ResolveOutputPath(OutputPath!);
-                }
-                else if (Show.IsPresent)
-                {
+                } else if (Open.IsPresent) {
                     saveTarget = document.FilePath ?? throw new InvalidOperationException("No saved file path was available.");
                 }
             }
@@ -97,70 +89,55 @@ protected override void ProcessRecord()
             var processAction = !string.IsNullOrWhiteSpace(saveTarget)
                 ? "Write joined Word document"
                 : "Join Word documents";
-            if (!ShouldProcess(processTarget, processAction))
-            {
+            if (!ShouldProcess(processTarget, processAction)) {
                 return;
             }
 
-            foreach (var sourcePath in AppendPath)
-            {
+            foreach (var sourcePath in AppendPath) {
                 using var source = WordDocumentService.LoadDocument(ResolveExistingPath(sourcePath), readOnly: true, autoSave: false);
                 document.AppendDocument(source);
             }
 
             string? savedPath = null;
 
-            if (!string.IsNullOrWhiteSpace(OutputPath))
-            {
+            if (!string.IsNullOrWhiteSpace(OutputPath)) {
                 savedPath = saveTarget;
                 document.Save(savedPath!);
-            }
-            else if (ParameterSetName == ParameterSetPath)
-            {
+            } else if (ParameterSetName == ParameterSetPath) {
                 document.Save();
                 savedPath = saveTarget;
-            }
-            else if (Show.IsPresent)
-            {
+            } else if (Open.IsPresent) {
                 savedPath = saveTarget;
                 document.Save();
             }
 
-            if (Show.IsPresent)
-            {
+            if (Open.IsPresent) {
                 FileOpenService.Open(savedPath ?? throw new InvalidOperationException("No saved file path was available."));
             }
 
-            if (PassThru.IsPresent)
-            {
+            if (PassThru.IsPresent) {
                 dispose = false;
                 WriteObject(document);
             }
-        }
-        finally
-        {
-            if (dispose)
-            {
+        } finally {
+            if (dispose) {
                 document?.Dispose();
             }
         }
     }
 
-    private string ResolveExistingPath(string path)
-    {
+    private string ResolveExistingPath(string path) {
         var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(path);
-        if (!File.Exists(resolvedPath))
-        {
+        if (!File.Exists(resolvedPath)) {
             throw new FileNotFoundException($"File {resolvedPath} doesn't exist.", resolvedPath);
         }
         return resolvedPath;
     }
 
-    private string ResolveOutputPath(string path)
-    {
+    private string ResolveOutputPath(string path) {
         var providerPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(path);
         return System.IO.Path.IsPathRooted(providerPath)
             ? providerPath
             : System.IO.Path.Combine(SessionState.Path.CurrentFileSystemLocation.Path, providerPath);
     }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordCommand.cs
index 9d5c4beb..b7d85ba9 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordCommand.cs
@@ -1,7 +1,6 @@
 using System;
 using System.IO;
 using System.Management.Automation;
-using OfficeIMO.Word.Pdf;
 using PSWriteOffice.Services.Pdf;
 using PSWriteOffice.Services.Word;
 
@@ -32,12 +31,11 @@ namespace PSWriteOffice.Cmdlets.Word;
 /// 
 [Cmdlet(VerbsCommon.New, "OfficeWord", SupportsShouldProcess = true)]
 [Alias("WordNew")]
-public sealed class NewOfficeWordCommand : PSCmdlet
-{
+public sealed class NewOfficeWordCommand : PSCmdlet {
     /// Destination path for the document.
     [Parameter(Mandatory = true, Position = 0)]
-    [Alias("FilePath", "Path")]
-    public string OutputPath { get; set; } = string.Empty;
+    [Alias("FilePath", "OutputPath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Existing .docx file to clone before running the DSL.
     [Parameter]
@@ -59,159 +57,93 @@ public sealed class NewOfficeWordCommand : PSCmdlet
     [Parameter]
     public SwitchParameter NoSave { get; set; }
 
-    /// Enable OfficeIMO AutoSave mode.
-    [Parameter]
-    public SwitchParameter AutoSave { get; set; }
-
     /// Password used to save the document as an encrypted package.
     [Parameter]
     public string? Password { get; set; }
 
-    /// Optional PDF path to create from the same Word document before closing it.
-    [Parameter]
-    public string? PdfPath { get; set; }
-
-    /// Optional default font family used by the native Word PDF converter.
-    [Parameter]
-    public string? PdfFontFamily { get; set; }
-
-    /// Allow the native Word PDF converter to embed installed system fonts used by the document.
-    [Parameter]
-    [Alias("AllowSystemFontEmbedding")]
-    public SwitchParameter PdfAllowSystemFontEmbedding { get; set; }
-
     /// 
-    protected override void ProcessRecord()
-    {
-        if (!NoSave.IsPresent && AutoSave.IsPresent && !string.IsNullOrEmpty(Password))
-        {
-            throw new PSArgumentException("Encrypted Word documents require explicit Save-OfficeWord -Password or Close-OfficeWord -Save -Password. -AutoSave cannot be used with -Password.");
-        }
-
+    protected override void ProcessRecord() {
         var fullPath = GetResolvedPath();
         var action = NoSave.IsPresent
             ? string.IsNullOrWhiteSpace(TemplatePath)
                 ? "Create in-memory Word document"
                 : "Create Word document from template"
             : "Write new Word document";
-        if (!PdfCommandUtilities.ShouldWrite(this, fullPath, action))
-        {
+        if (!PdfCommandUtilities.ShouldWrite(this, fullPath, action)) {
             return;
         }
 
-        if (!NoSave.IsPresent || !string.IsNullOrWhiteSpace(TemplatePath))
-        {
-            var directory = Path.GetDirectoryName(fullPath);
-            if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory))
-            {
+        if (!NoSave.IsPresent || !string.IsNullOrWhiteSpace(TemplatePath)) {
+            var directory = System.IO.Path.GetDirectoryName(fullPath);
+            if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory)) {
                 Directory.CreateDirectory(directory);
             }
         }
 
         var document = CreateOrLoadDocument(fullPath);
-        try
-        {
-            if (NoSave.IsPresent)
-            {
+        var closed = false;
+        try {
+            if (NoSave.IsPresent) {
                 WordDocumentService.UpdateSaveAssociation(document, fullPath, encrypted: false);
             }
 
-            if (Content == null)
-            {
-                WriteObject(document);
-                return;
+            if (Content != null) {
+                WordDocumentService.InvokeDsl(document, Content);
             }
 
-            WordDocumentService.InvokeDsl(document, Content);
-
-            if (NoSave.IsPresent)
-            {
+            if (NoSave.IsPresent) {
                 WriteObject(document);
                 return;
             }
 
-            SavePdfIfRequested(document);
             WordDocumentService.SaveDocument(document, Open.IsPresent, fullPath, Password);
+            WordDocumentService.CloseDocument(document);
+            closed = true;
 
-            if (PassThru.IsPresent)
-            {
+            if (PassThru.IsPresent) {
                 WriteObject(new FileInfo(fullPath));
             }
-        }
-        catch
-        {
-            WordDocumentService.CloseDocument(document);
+        } catch {
+            if (!closed) {
+                WordDocumentService.CloseDocument(document);
+            }
             throw;
         }
     }
 
-    private string GetResolvedPath()
-    {
-        var providerPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(OutputPath);
-        return Path.IsPathRooted(providerPath)
+    private string GetResolvedPath() {
+        var providerPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
+        return System.IO.Path.IsPathRooted(providerPath)
             ? providerPath
-            : Path.Combine(SessionState.Path.CurrentFileSystemLocation.Path, providerPath);
+            : System.IO.Path.Combine(SessionState.Path.CurrentFileSystemLocation.Path, providerPath);
     }
 
-    private OfficeIMO.Word.WordDocument CreateOrLoadDocument(string fullPath)
-    {
-        if (string.IsNullOrWhiteSpace(TemplatePath))
-        {
-            if (NoSave.IsPresent)
-            {
+    private OfficeIMO.Word.WordDocument CreateOrLoadDocument(string fullPath) {
+        if (string.IsNullOrWhiteSpace(TemplatePath)) {
+            if (NoSave.IsPresent) {
                 return WordDocumentService.CreateInMemoryDocument();
             }
 
-            return WordDocumentService.CreateDocument(fullPath, AutoSave.IsPresent);
+            return WordDocumentService.CreateDocument(fullPath, autoSave: false);
         }
 
         var templatePath = ResolveFileSystemPath(TemplatePath!);
-        if (!File.Exists(templatePath))
-        {
+        if (!File.Exists(templatePath)) {
             throw new FileNotFoundException($"Template file {templatePath} doesn't exist.", templatePath);
         }
 
-        if (!string.Equals(templatePath, fullPath, StringComparison.OrdinalIgnoreCase))
-        {
+        if (!string.Equals(templatePath, fullPath, StringComparison.OrdinalIgnoreCase)) {
             File.Copy(templatePath, fullPath, overwrite: true);
         }
 
-        return WordDocumentService.LoadDocument(fullPath, readOnly: false, autoSave: AutoSave.IsPresent);
+        return WordDocumentService.LoadDocument(fullPath, readOnly: false, autoSave: false);
     }
 
-    private string ResolveFileSystemPath(string path)
-    {
+    private string ResolveFileSystemPath(string path) {
         var providerPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(path);
-        return Path.IsPathRooted(providerPath)
+        return System.IO.Path.IsPathRooted(providerPath)
             ? providerPath
-            : Path.Combine(SessionState.Path.CurrentFileSystemLocation.Path, providerPath);
+            : System.IO.Path.Combine(SessionState.Path.CurrentFileSystemLocation.Path, providerPath);
     }
 
-    private void SavePdfIfRequested(OfficeIMO.Word.WordDocument document)
-    {
-        if (string.IsNullOrWhiteSpace(PdfPath))
-        {
-            return;
-        }
-
-        var pdfPath = PdfCommandUtilities.ResolvePath(this, PdfPath!);
-        if (!PdfCommandUtilities.ShouldWrite(this, pdfPath, "Write Word PDF"))
-        {
-            return;
-        }
-
-        PdfCommandUtilities.EnsureDirectory(pdfPath);
-        if (PdfAllowSystemFontEmbedding.IsPresent || !string.IsNullOrWhiteSpace(PdfFontFamily))
-        {
-            var pdfOptions = new WordPdfSaveOptions
-            {
-                FontFamily = PdfFontFamily
-            };
-            pdfOptions.ResourcePolicy.AllowSystemFontEmbedding = PdfAllowSystemFontEmbedding.IsPresent;
-            document.SaveAsPdf(pdfPath, pdfOptions).RequireSuccess();
-            return;
-        }
-
-        document.SaveAsPdf(pdfPath).RequireSuccess();
-    }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/SaveOfficeWordCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/SaveOfficeWordCommand.cs
index 59c6dc12..fb77c3cc 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/SaveOfficeWordCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/SaveOfficeWordCommand.cs
@@ -2,7 +2,6 @@
 using System.IO;
 using System.Management.Automation;
 using OfficeIMO.Word;
-using OfficeIMO.Word.Pdf;
 using PSWriteOffice.Services;
 using PSWriteOffice.Services.Pdf;
 using PSWriteOffice.Services.Word;
@@ -19,8 +18,7 @@ namespace PSWriteOffice.Cmdlets.Word;
 /// 
 [Cmdlet(VerbsData.Save, "OfficeWord", SupportsShouldProcess = true)]
 [OutputType(typeof(WordDocument))]
-public sealed class SaveOfficeWordCommand : PSCmdlet
-{
+public sealed class SaveOfficeWordCommand : PSCmdlet {
     /// Document to save.
     [Parameter(Mandatory = true, ValueFromPipeline = true, Position = 0)]
     public WordDocument Document { get; set; } = null!;
@@ -32,84 +30,56 @@ public sealed class SaveOfficeWordCommand : PSCmdlet
 
     /// Open the document after saving.
     [Parameter]
-    public SwitchParameter Show { get; set; }
+    [Alias("Show")]
+    public SwitchParameter Open { get; set; }
 
     /// Password used to save the document as an encrypted package.
     [Parameter]
     public string? Password { get; set; }
 
-    /// Optional PDF path to create from the same Word document.
-    [Parameter]
-    public string? PdfPath { get; set; }
-
-    /// Optional default font family used by the native Word PDF converter.
-    [Parameter]
-    public string? PdfFontFamily { get; set; }
-
-    /// Allow the native Word PDF converter to embed installed system fonts used by the document.
-    [Parameter]
-    [Alias("AllowSystemFontEmbedding")]
-    public SwitchParameter PdfAllowSystemFontEmbedding { get; set; }
-
     /// Emit the document object for further processing.
     [Parameter]
     public SwitchParameter PassThru { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (Document == null)
-        {
+    protected override void ProcessRecord() {
+        if (Document == null) {
             return;
         }
 
         var associatedPath = WordDocumentService.GetAssociatedPath(Document);
-        if (string.IsNullOrWhiteSpace(Path) && string.IsNullOrWhiteSpace(associatedPath))
-        {
+        if (string.IsNullOrWhiteSpace(Path) && string.IsNullOrWhiteSpace(associatedPath)) {
             throw new PSInvalidOperationException("No file path provided. Use -Path or open the document from disk.");
         }
 
         string savedPath;
-        if (!string.IsNullOrWhiteSpace(Path))
-        {
+        if (!string.IsNullOrWhiteSpace(Path)) {
             var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
-            if (!PdfCommandUtilities.ShouldWrite(this, resolvedPath, "Save Word document"))
-            {
+            if (!PdfCommandUtilities.ShouldWrite(this, resolvedPath, "Save Word document")) {
                 return;
             }
 
             if (string.IsNullOrEmpty(Password) &&
                 WordDocumentService.IsEncryptedSource(Document) &&
-                string.Equals(System.IO.Path.GetFullPath(resolvedPath), System.IO.Path.GetFullPath(associatedPath!), StringComparison.OrdinalIgnoreCase))
-            {
+                string.Equals(System.IO.Path.GetFullPath(resolvedPath), System.IO.Path.GetFullPath(associatedPath!), StringComparison.OrdinalIgnoreCase)) {
                 throw new PSInvalidOperationException("Provide -Password when saving a document loaded from an encrypted package.");
             }
 
-            if (!string.IsNullOrEmpty(Password))
-            {
+            if (!string.IsNullOrEmpty(Password)) {
                 OfficeEncryptedPackageService.SaveWord(Document, resolvedPath, Password!, false);
-            }
-            else
-            {
+            } else {
                 Document.Save(resolvedPath);
             }
             savedPath = resolvedPath;
-        }
-        else
-        {
-            if (!PdfCommandUtilities.ShouldWrite(this, associatedPath!, "Save Word document"))
-            {
+        } else {
+            if (!PdfCommandUtilities.ShouldWrite(this, associatedPath!, "Save Word document")) {
                 return;
             }
 
-            if (!string.IsNullOrEmpty(Password))
-            {
+            if (!string.IsNullOrEmpty(Password)) {
                 OfficeEncryptedPackageService.SaveWord(Document, associatedPath!, Password!, false);
-            }
-            else
-            {
-                if (WordDocumentService.IsEncryptedSource(Document))
-                {
+            } else {
+                if (WordDocumentService.IsEncryptedSource(Document)) {
                     throw new PSInvalidOperationException("Provide -Password when saving a document loaded from an encrypted package.");
                 }
 
@@ -119,44 +89,13 @@ protected override void ProcessRecord()
         }
 
         WordDocumentService.UpdateSaveAssociation(Document, savedPath, !string.IsNullOrEmpty(Password));
-        if (Show.IsPresent)
-        {
+        if (Open.IsPresent) {
             FileOpenService.Open(savedPath);
         }
 
-        SavePdfIfRequested();
-
-        if (PassThru.IsPresent)
-        {
+        if (PassThru.IsPresent) {
             WriteObject(Document);
         }
     }
 
-    private void SavePdfIfRequested()
-    {
-        if (string.IsNullOrWhiteSpace(PdfPath))
-        {
-            return;
-        }
-
-        var pdfPath = PdfCommandUtilities.ResolvePath(this, PdfPath!);
-        if (!PdfCommandUtilities.ShouldWrite(this, pdfPath, "Write Word PDF"))
-        {
-            return;
-        }
-
-        PdfCommandUtilities.EnsureDirectory(pdfPath);
-        if (PdfAllowSystemFontEmbedding.IsPresent || !string.IsNullOrWhiteSpace(PdfFontFamily))
-        {
-            var pdfOptions = new WordPdfSaveOptions
-            {
-                FontFamily = PdfFontFamily
-            };
-            pdfOptions.ResourcePolicy.AllowSystemFontEmbedding = PdfAllowSystemFontEmbedding.IsPresent;
-            Document.SaveAsPdf(pdfPath, pdfOptions).RequireSuccess();
-            return;
-        }
-
-        Document.SaveAsPdf(pdfPath).RequireSuccess();
-    }
-}
+}
\ No newline at end of file
diff --git a/Sources/PSWriteOffice/Cmdlets/Word/UpdateOfficeWordTextCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/UpdateOfficeWordTextCommand.cs
index 705c105d..73900cab 100644
--- a/Sources/PSWriteOffice/Cmdlets/Word/UpdateOfficeWordTextCommand.cs
+++ b/Sources/PSWriteOffice/Cmdlets/Word/UpdateOfficeWordTextCommand.cs
@@ -22,8 +22,7 @@ namespace PSWriteOffice.Cmdlets.Word;
 [Cmdlet(VerbsData.Update, "OfficeWordText", DefaultParameterSetName = ParameterSetAuto, SupportsShouldProcess = true)]
 [Alias("Replace-OfficeWordText")]
 [OutputType(typeof(int))]
-public sealed class UpdateOfficeWordTextCommand : PSCmdlet
-{
+public sealed class UpdateOfficeWordTextCommand : PSWriteOffice.Cmdlets.OfficeMutationCmdlet {
     private const string ParameterSetAuto = "Auto";
     private const string ParameterSetDocument = "Document";
     private const string ParameterSetPath = "Path";
@@ -34,8 +33,8 @@ public sealed class UpdateOfficeWordTextCommand : PSCmdlet
 
     /// Path to the .docx file to update in place.
     [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)]
-    [Alias("FilePath", "Path")]
-    public string InputPath { get; set; } = string.Empty;
+    [Alias("InputPath", "FilePath")]
+    public string Path { get; set; } = string.Empty;
 
     /// Text to find.
     [Parameter(Mandatory = true)]
@@ -68,30 +67,26 @@ public sealed class UpdateOfficeWordTextCommand : PSCmdlet
 
     /// Open the file after saving when using -Path.
     [Parameter(ParameterSetName = ParameterSetPath)]
-    public SwitchParameter Show { get; set; }
+    [Alias("Show")]
+    public SwitchParameter Open { get; set; }
 
     /// 
-    protected override void ProcessRecord()
-    {
-        if (string.IsNullOrEmpty(OldValue))
-        {
+    protected override void ProcessRecord() {
+        if (string.IsNullOrEmpty(OldValue)) {
             throw new PSArgumentException("Provide text to replace.", nameof(OldValue));
         }
 
         WordDocument? document = null;
         var dispose = false;
 
-        try
-        {
-            switch (ParameterSetName)
-            {
+        try {
+            switch (ParameterSetName) {
                 case ParameterSetDocument:
                     document = Document;
                     break;
                 case ParameterSetPath:
-                    var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(InputPath);
-                    if (!ShouldProcess(resolvedPath, "Update Word document text"))
-                    {
+                    var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path);
+                    if (!ShouldProcess(resolvedPath, "Update Word document text")) {
                         return;
                     }
 
@@ -103,13 +98,11 @@ protected override void ProcessRecord()
                     break;
             }
 
-            if (document == null)
-            {
+            if (document == null) {
                 throw new InvalidOperationException("Specify -Document, -Path, or run inside New-OfficeWord.");
             }
 
-            if (ParameterSetName != ParameterSetPath && !ShouldProcess(GetDocumentTarget(document), "Update Word document text"))
-            {
+            if (ParameterSetName != ParameterSetPath && !ShouldProcess(GetDocumentTarget(document), "Update Word document text")) {
                 return;
             }
 
@@ -117,43 +110,34 @@ protected override void ProcessRecord()
             var replacement = NewValue ?? string.Empty;
             var replacements = document.FindAndReplace(OldValue, replacement, comparison);
 
-            if (IncludeHyperlinkText.IsPresent || IncludeHyperlinkUri.IsPresent || IncludeHyperlinkAnchor.IsPresent || IncludeHyperlinkTooltip.IsPresent)
-            {
+            if (IncludeHyperlinkText.IsPresent || IncludeHyperlinkUri.IsPresent || IncludeHyperlinkAnchor.IsPresent || IncludeHyperlinkTooltip.IsPresent) {
                 replacements += ReplaceHyperlinks(document, OldValue, replacement, comparison);
             }
 
-            if (ParameterSetName == ParameterSetPath)
-            {
-                WordDocumentService.SaveDocument(document, Show.IsPresent, null);
+            if (ParameterSetName == ParameterSetPath) {
+                WordDocumentService.SaveDocument(document, Open.IsPresent, null);
                 dispose = false;
             }
 
-            WriteObject(replacements);
-        }
-        finally
-        {
-            if (dispose && document != null)
-            {
+            WritePassThru(replacements);
+        } finally {
+            if (dispose && document != null) {
                 WordDocumentService.CloseDocument(document);
             }
         }
     }
 
-    private static string GetDocumentTarget(WordDocument document)
-    {
+    private static string GetDocumentTarget(WordDocument document) {
         return !string.IsNullOrWhiteSpace(document.FilePath)
             ? document.FilePath!
             : "Word document";
     }
 
-    private int ReplaceHyperlinks(WordDocument document, string oldValue, string newValue, StringComparison comparison)
-    {
+    private int ReplaceHyperlinks(WordDocument document, string oldValue, string newValue, StringComparison comparison) {
         var replacements = 0;
 
-        foreach (var hyperlink in document.HyperLinks)
-        {
-            if (IncludeHyperlinkText.IsPresent)
-            {
+        foreach (var hyperlink in document.HyperLinks) {
+            if (IncludeHyperlinkText.IsPresent) {
                 replacements += ReplaceTextValue(
                     hyperlink.Text,
                     updatedValue => hyperlink.Text = updatedValue,
@@ -162,8 +146,7 @@ private int ReplaceHyperlinks(WordDocument document, string oldValue, string new
                     comparison);
             }
 
-            if (IncludeHyperlinkAnchor.IsPresent)
-            {
+            if (IncludeHyperlinkAnchor.IsPresent) {
                 replacements += ReplaceNullableValue(
                     hyperlink.Anchor,
                     updatedValue => hyperlink.Anchor = updatedValue,
@@ -172,8 +155,7 @@ private int ReplaceHyperlinks(WordDocument document, string oldValue, string new
                     comparison);
             }
 
-            if (IncludeHyperlinkTooltip.IsPresent)
-            {
+            if (IncludeHyperlinkTooltip.IsPresent) {
                 replacements += ReplaceNullableValue(
                     hyperlink.Tooltip,
                     updatedValue => hyperlink.Tooltip = updatedValue,
@@ -182,18 +164,13 @@ private int ReplaceHyperlinks(WordDocument document, string oldValue, string new
                     comparison);
             }
 
-            if (IncludeHyperlinkUri.IsPresent && hyperlink.Uri != null)
-            {
+            if (IncludeHyperlinkUri.IsPresent && hyperlink.Uri != null) {
                 var originalUri = hyperlink.Uri.OriginalString;
                 var updatedUri = ReplaceString(originalUri, oldValue, newValue, comparison, out var uriReplacements);
-                if (uriReplacements > 0)
-                {
-                    if (!Uri.TryCreate(updatedUri, UriKind.RelativeOrAbsolute, out var uri))
-                    {
+                if (uriReplacements > 0) {
+                    if (!Uri.TryCreate(updatedUri, UriKind.RelativeOrAbsolute, out var uri)) {
                         WriteWarning($"Skipping hyperlink URI '{originalUri}' because replacement produced invalid URI '{updatedUri}'.");
-                    }
-                    else
-                    {
+                    } else {
                         hyperlink.Uri = uri;
                         replacements += uriReplacements;
                     }
@@ -201,10 +178,8 @@ private int ReplaceHyperlinks(WordDocument document, string oldValue, string new
             }
         }
 
-        if (IncludeHyperlinkAnchor.IsPresent)
-        {
-            foreach (var bookmark in document.Bookmarks)
-            {
+        if (IncludeHyperlinkAnchor.IsPresent) {
+            foreach (var bookmark in document.Bookmarks) {
                 replacements += ReplaceNullableValue(
                     bookmark.Name,
                     updatedValue => bookmark.Name = updatedValue,
@@ -217,45 +192,37 @@ private int ReplaceHyperlinks(WordDocument document, string oldValue, string new
         return replacements;
     }
 
-    private static int ReplaceTextValue(string currentValue, Action assign, string oldValue, string newValue, StringComparison comparison)
-    {
+    private static int ReplaceTextValue(string currentValue, Action assign, string oldValue, string newValue, StringComparison comparison) {
         var updatedValue = ReplaceString(currentValue ?? string.Empty, oldValue, newValue, comparison, out var replacements);
-        if (replacements > 0)
-        {
+        if (replacements > 0) {
             assign(updatedValue);
         }
 
         return replacements;
     }
 
-    private static int ReplaceNullableValue(string? currentValue, Action assign, string oldValue, string newValue, StringComparison comparison)
-    {
-        if (currentValue == null)
-        {
+    private static int ReplaceNullableValue(string? currentValue, Action assign, string oldValue, string newValue, StringComparison comparison) {
+        if (currentValue == null) {
             return 0;
         }
 
         var updatedValue = ReplaceString(currentValue, oldValue, newValue, comparison, out var replacements);
-        if (replacements > 0)
-        {
+        if (replacements > 0) {
             assign(updatedValue);
         }
 
         return replacements;
     }
 
-    private static string ReplaceString(string source, string oldValue, string newValue, StringComparison comparison, out int replacements)
-    {
+    private static string ReplaceString(string source, string oldValue, string newValue, StringComparison comparison, out int replacements) {
         replacements = 0;
-        if (string.IsNullOrEmpty(source) || string.IsNullOrEmpty(oldValue))
-        {
+        if (string.IsNullOrEmpty(source) || string.IsNullOrEmpty(oldValue)) {
             return source;
         }
 
         var startIndex = 0;
         var result = source;
-        while ((startIndex = result.IndexOf(oldValue, startIndex, comparison)) >= 0)
-        {
+        while ((startIndex = result.IndexOf(oldValue, startIndex, comparison)) >= 0) {
             result = result.Remove(startIndex, oldValue.Length).Insert(startIndex, newValue);
             startIndex += newValue.Length;
             replacements++;
@@ -263,4 +230,4 @@ private static string ReplaceString(string source, string oldValue, string newVa
 
         return result;
     }
-}
+}
\ No newline at end of file
diff --git a/Tests/Csv.Tests.ps1 b/Tests/Csv.Tests.ps1
index 56236232..75f32470 100644
--- a/Tests/Csv.Tests.ps1
+++ b/Tests/Csv.Tests.ps1
@@ -1431,7 +1431,7 @@ Describe 'CSV cmdlets' {
         $path = Join-Path $TestDrive 'input-path-alias.csv'
         Set-Content -LiteralPath $path -Value "Name,Value`nAlpha,1" -Encoding UTF8
 
-        $document = Get-OfficeCsv -InputPath $path
+        $document = Get-OfficeCsv -Path $path
 
         $document.Header | Should -Be @('Name', 'Value')
         $document.AsEnumerable().Count | Should -Be 1
diff --git a/Tests/ExcelDsl.Tests.ps1 b/Tests/ExcelDsl.Tests.ps1
index 3e412a3f..827ed046 100644
--- a/Tests/ExcelDsl.Tests.ps1
+++ b/Tests/ExcelDsl.Tests.ps1
@@ -841,10 +841,6 @@ Describe 'Excel DSL surface' {
         }
 
         { Get-ZipEntriesLocal -Path $path } | Should -Throw
-        $autoSavePath = Join-Path $TestDrive 'EncryptedExcelAutoSave.xlsx'
-        { New-OfficeExcel -Path $autoSavePath -Password 'secret' -AutoSave -ErrorAction Stop } |
-            Should -Throw '*require explicit Save-OfficeExcel*'
-
         $doc = Get-OfficeExcel -Path $path -Password 'secret' -ReadOnly
         try {
             $doc.Sheets[0].Name | Should -Be 'Secure'
@@ -3119,7 +3115,7 @@ Describe 'Excel DSL surface' {
         $script:PowerQueryContextMetadata.AddedWorksheetQueryTable | Should -BeTrue
         $script:PowerQueryContextMetadata.QueryTableName | Should -Be 'ContextQueryTable'
 
-        $dataModel = Get-OfficeExcelDataModel -InputPath $path
+        $dataModel = Get-OfficeExcelDataModel -Path $path
         $dataModel.HasDataModelOrQueries | Should -BeTrue
     }
 
@@ -3769,9 +3765,9 @@ Describe 'Excel DSL surface' {
             }
         }
 
-        Copy-OfficeExcelSheet -Path $path -SourceSheet 'Data' -NewName 'DataCopy' | Should -Not -BeNullOrEmpty
+        Copy-OfficeExcelSheet -Path $path -SourceSheet 'Data' -NewName 'DataCopy' -PassThru | Should -Not -BeNullOrEmpty
         Move-OfficeExcelSheet -Path $path -Sheet 'DataCopy' -Index 0
-        Copy-OfficeExcelSheet -Path $path -SourcePath $sourcePath -SourceSheet 'External' -NewName 'ExternalCopy' -CopyMode Package | Should -Not -BeNullOrEmpty
+        Copy-OfficeExcelSheet -Path $path -SourcePath $sourcePath -SourceSheet 'External' -NewName 'ExternalCopy' -CopyMode Package -PassThru | Should -Not -BeNullOrEmpty
         $join = Join-OfficeExcelSheet -Path $path -TargetSheet 'Data' -SourceSheet 'More' -MatchColumnsByHeader
         Set-OfficeExcelPrintArea -Path $path -Sheet 'Data' -Range 'A1:B4'
         Set-OfficeExcelPrintTitles -Path $path -Sheet 'Data' -FirstRow 1 -LastRow 1
@@ -3852,8 +3848,8 @@ Describe 'Excel DSL surface' {
         $numericMatch.Count | Should -Be 1
         $numericMatch[0].Value | Should -BeOfType ([double])
         $numericMatch[0].Value | Should -Be 12
-        Update-OfficeExcelText -Path $path -Sheet 'Data' -OldValue 'Draft' -NewValue 'Ready' | Should -Be 2
-        Update-OfficeExcelText -Path $path -Sheet 'Data' -OldValue '12' -NewValue 'Twelve' | Should -Be 0
+        Update-OfficeExcelText -Path $path -Sheet 'Data' -OldValue 'Draft' -NewValue 'Ready' -PassThru | Should -Be 2
+        Update-OfficeExcelText -Path $path -Sheet 'Data' -OldValue '12' -NewValue 'Twelve' -PassThru | Should -Be 0
         Edit-OfficeExcelRow -Path $path -Sheet 'Data' -ScriptBlock {
             param($row)
             if ($row.CellByHeader('Name').Value -eq 'Ada') {
@@ -3882,7 +3878,7 @@ Describe 'Excel DSL surface' {
         $matches.Count | Should -Be 2
         @($matches | ForEach-Object { $_.Address }) | Should -Contain 'A1'
         @($matches | ForEach-Object { $_.Address }) | Should -Contain 'XFD1048576'
-        Update-OfficeExcelText -Path $path -Sheet 'Data' -OldValue 'Draft' -NewValue 'Ready' | Should -Be 2
+        Update-OfficeExcelText -Path $path -Sheet 'Data' -OldValue 'Draft' -NewValue 'Ready' -PassThru | Should -Be 2
     }
 
     It 'counts threaded comments in workbook summaries' {
@@ -4129,9 +4125,9 @@ Describe 'Excel DSL surface' {
                 Add-OfficeExcelTable -InputObject $rows -TableName 'Sales' -AutoFit
                 $chart = Add-OfficeExcelChart -TableName 'Sales' -Row 6 -Column 1 -Type Pie -Title 'Revenue Mix' -PassThru
                 $formattedChart = $chart |
-                    Set-OfficeExcelChartLegend -Position Right |
-                    Set-OfficeExcelChartDataLabels -ShowValue $true -ShowPercent $true -Position OutsideEnd -NumberFormat '0.0%' -SourceLinked:$false |
-                    Set-OfficeExcelChartStyle -StyleId 251 -ColorStyleId 10
+                    Set-OfficeExcelChartLegend -Position Right -PassThru |
+                    Set-OfficeExcelChartDataLabels -ShowValue $true -ShowPercent $true -Position OutsideEnd -NumberFormat '0.0%' -SourceLinked:$false -PassThru |
+                    Set-OfficeExcelChartStyle -StyleId 251 -ColorStyleId 10 -PassThru
 
                 $formattedChart | Should -Not -BeNullOrEmpty
             }
@@ -4174,10 +4170,10 @@ Describe 'Excel DSL surface' {
                 { $chart | Set-OfficeExcelChartPoint -SeriesIndex 0 -PointIndex 1 -LineWidthPoints 1.5 -ErrorAction Stop } |
                     Should -Throw '*LineColor is required*'
                 $formattedChart = $chart |
-                    Set-OfficeExcelChartAxis -CategoryTitle 'Month' -ValueTitle 'Revenue' -ValueNumberFormat '$#,##0' -SourceLinked:$false -ValueMinimum 0 -ValueMajorUnit 100 -ShowValueMinorGridlines -ValueGridlineColor '#D9EAD3' -GridlineWidthPoints 0.75 |
-                    Set-OfficeExcelChartSeries -SeriesIndex 0 -LineColor '#1F4E79' -LineWidthPoints 1.5 -MarkerStyle Circle -MarkerSize 6 -MarkerFillColor '#4472C4' |
-                    Set-OfficeExcelChartPoint -SeriesName 'Revenue' -PointIndex 1 -FillColor '#70AD47' -LineColor '#7030A0' -LineWidthPoints 1.25 |
-                    Set-OfficeExcelChartTrendline -SeriesIndex 0 -Type Linear -DisplayEquation -DisplayRSquared -LineColor '#C00000' -LineWidthPoints 1.25
+                    Set-OfficeExcelChartAxis -CategoryTitle 'Month' -ValueTitle 'Revenue' -ValueNumberFormat '$#,##0' -SourceLinked:$false -ValueMinimum 0 -ValueMajorUnit 100 -ShowValueMinorGridlines -ValueGridlineColor '#D9EAD3' -GridlineWidthPoints 0.75 -PassThru |
+                    Set-OfficeExcelChartSeries -SeriesIndex 0 -LineColor '#1F4E79' -LineWidthPoints 1.5 -MarkerStyle Circle -MarkerSize 6 -MarkerFillColor '#4472C4' -PassThru |
+                    Set-OfficeExcelChartPoint -SeriesName 'Revenue' -PointIndex 1 -FillColor '#70AD47' -LineColor '#7030A0' -LineWidthPoints 1.25 -PassThru |
+                    Set-OfficeExcelChartTrendline -SeriesIndex 0 -Type Linear -DisplayEquation -DisplayRSquared -LineColor '#C00000' -LineWidthPoints 1.25 -PassThru
 
                 $formattedChart | Should -Not -BeNullOrEmpty
             }
diff --git a/Tests/Markdown.Tests.ps1 b/Tests/Markdown.Tests.ps1
index ca32deb7..d04251ff 100644
--- a/Tests/Markdown.Tests.ps1
+++ b/Tests/Markdown.Tests.ps1
@@ -250,18 +250,16 @@ Describe 'Markdown cmdlets' {
         ($doc2.ToMarkdown() | Select-String -Pattern 'Alpha' -AllMatches).Matches.Count | Should -Be 1
     }
 
-    It 'does not save Markdown or PDF sidecars when NoSave is used' {
+    It 'returns an in-memory Markdown document when NoSave is used' {
         $path = Join-Path $TestDrive 'NoSave.md'
-        $pdfPath = Join-Path $TestDrive 'NoSave.pdf'
 
-        $document = New-OfficeMarkdown -Path $path -PdfPath $pdfPath -NoSave {
+        $document = New-OfficeMarkdown -Path $path -NoSave {
             MarkdownHeading -Level 1 -Text 'Draft'
         }
 
         $document.GetType().FullName | Should -Be 'OfficeIMO.Markdown.MarkdownDoc'
         $document.ToMarkdown() | Should -Match '# Draft'
         Test-Path $path | Should -BeFalse
-        Test-Path $pdfPath | Should -BeFalse
     }
 
     It 'builds advanced Markdown blocks via DSL helpers' {
diff --git a/Tests/OfficeIMONextSupport.Tests.ps1 b/Tests/OfficeIMONextSupport.Tests.ps1
index 779f9bb9..16224ebb 100644
--- a/Tests/OfficeIMONextSupport.Tests.ps1
+++ b/Tests/OfficeIMONextSupport.Tests.ps1
@@ -116,7 +116,7 @@ Describe 'Expanded OfficeIMO support' {
         foreach ($case in $cases) {
             $path = Join-Path $TestDrive "native.$($case.Extension)"
             $document = New-OfficeOpenDocument -Kind $case.Kind
-            $save = $document | Save-OfficeOpenDocument -Path $path -FailOnLoss
+            $save = $document | Save-OfficeOpenDocument -Path $path -FailOnLoss -PassThru
             $save.HasLoss | Should -BeFalse
             Test-Path -LiteralPath $path | Should -BeTrue
             (Get-OfficeOpenDocument -Path $path).GetType().FullName | Should -Be $case.Type
@@ -191,13 +191,17 @@ Describe 'Expanded OfficeIMO support' {
         $message.Body.Text = 'OfficeIMO email body'
         $message.Properties['Emlx:Flag:Flagged'] = $true
 
+        $quietEmailPath = Join-Path $TestDrive 'quiet-message.eml'
+        @($message | Save-OfficeEmail -Path $quietEmailPath) | Should -HaveCount 0
+        Test-Path -LiteralPath $quietEmailPath | Should -BeTrue
+
         foreach ($extension in 'eml', 'emlx', 'msg', 'dat') {
             $path = Join-Path $TestDrive "message.$extension"
             $format = if ($extension -eq 'dat') { 'Tnef' } else { $null }
             $result = if ($format) {
-                $message | Save-OfficeEmail -Path $path -Format $format
+                $message | Save-OfficeEmail -Path $path -Format $format -PassThru
             } else {
-                $message | Save-OfficeEmail -Path $path
+                $message | Save-OfficeEmail -Path $path -PassThru
             }
             $result.GetType().FullName | Should -Be 'OfficeIMO.Email.EmailWriteResult'
             Test-Path -LiteralPath $path | Should -BeTrue
@@ -223,7 +227,8 @@ Describe 'Expanded OfficeIMO support' {
         $mailbox = [Activator]::CreateInstance($emailMailboxType)
         $mailbox.Messages.Add([Activator]::CreateInstance($emailMailboxEntryType, @($message)))
         $mailboxPath = Join-Path $TestDrive 'mailbox.mbox'
-        $mailboxResult = $mailbox | Save-OfficeEmailMailbox -Path $mailboxPath
+        @($mailbox | Save-OfficeEmailMailbox -Path $mailboxPath) | Should -HaveCount 0
+        $mailboxResult = $mailbox | Save-OfficeEmailMailbox -Path $mailboxPath -PassThru
         $mailboxResult.GetType().FullName | Should -Be 'OfficeIMO.Email.EmailWriteResult'
         (Get-OfficeEmailMailbox -Path $mailboxPath).Messages.Count | Should -Be 1
     }
diff --git a/Tests/OfficePdfExport.Tests.ps1 b/Tests/OfficePdfExport.Tests.ps1
index 12a2c5b5..17251f71 100644
--- a/Tests/OfficePdfExport.Tests.ps1
+++ b/Tests/OfficePdfExport.Tests.ps1
@@ -7,37 +7,41 @@ BeforeAll {
     Import-Module $ModuleManifest -Global -ErrorAction Stop
 }
 
-Describe 'Office document PDF sidecar exports' {
-    It 'creates native documents and PDF sidecars in one command' {
+Describe 'Office document PDF exports' {
+    It 'exports saved native documents through one explicit command' {
         $wordPath = Join-Path $TestDrive 'new-word.docx'
         $wordPdf = Join-Path $TestDrive 'new-word.pdf'
-        New-OfficeWord -Path $wordPath -PdfPath $wordPdf {
+        New-OfficeWord -Path $wordPath {
             WordSection {
                 WordParagraph -Text 'New Word PDF sidecar'
             }
-        } | Out-Null
+        }
+        Export-OfficeDocumentPdf -InputPath $wordPath -Path $wordPdf
 
         $excelPath = Join-Path $TestDrive 'new-excel.xlsx'
         $excelPdf = Join-Path $TestDrive 'new-excel.pdf'
-        New-OfficeExcel -Path $excelPath -PdfPath $excelPdf {
+        New-OfficeExcel -Path $excelPath {
             ExcelSheet 'Data' {
                 ExcelCell -Address 'A1' -Value 'New Excel PDF sidecar'
             }
-        } | Out-Null
+        }
+        Export-OfficeDocumentPdf -InputPath $excelPath -Path $excelPdf
 
         $markdownPath = Join-Path $TestDrive 'new-markdown.md'
         $markdownPdf = Join-Path $TestDrive 'new-markdown.pdf'
-        New-OfficeMarkdown -Path $markdownPath -PdfPath $markdownPdf {
+        New-OfficeMarkdown -Path $markdownPath {
             MarkdownHeading -Level 1 -Text 'New Markdown PDF sidecar'
-        } | Out-Null
+        }
+        Export-OfficeDocumentPdf -InputPath $markdownPath -Path $markdownPdf
 
         $powerPointPath = Join-Path $TestDrive 'new-powerpoint.pptx'
         $powerPointPdf = Join-Path $TestDrive 'new-powerpoint.pdf'
-        New-OfficePowerPoint -Path $powerPointPath -PdfPath $powerPointPdf {
+        New-OfficePowerPoint -Path $powerPointPath {
             PptSlide {
                 PptTitle -Title 'New PowerPoint PDF sidecar'
             }
-        } | Out-Null
+        }
+        Export-OfficeDocumentPdf -InputPath $powerPointPath -Path $powerPointPdf
 
         foreach ($path in @($wordPath, $wordPdf, $excelPath, $excelPdf, $markdownPath, $markdownPdf, $powerPointPath, $powerPointPdf)) {
             Test-Path $path | Should -BeTrue
@@ -48,7 +52,7 @@ Describe 'Office document PDF sidecar exports' {
         }
     }
 
-    It 'saves Word documents with a PDF sidecar' {
+    It 'exports an open Word document to PDF' {
         $docx = Join-Path $TestDrive 'word-report.docx'
         $pdf = Join-Path $TestDrive 'word-report.pdf'
 
@@ -56,11 +60,11 @@ Describe 'Office document PDF sidecar exports' {
             WordSection {
                 WordParagraph -Text 'Word PDF export smoke'
             }
-        } | Out-Null
+        }
 
         $document = Get-OfficeWord -Path $docx
         try {
-            $document | Save-OfficeWord -PdfPath $pdf | Out-Null
+            $document | Export-OfficeDocumentPdf -Path $pdf
         } finally {
             Close-OfficeWord -Document $document
         }
@@ -71,7 +75,7 @@ Describe 'Office document PDF sidecar exports' {
         Get-OfficePdfText -Path $pdf | Should -Match 'Word PDF export smoke'
     }
 
-    It 'saves Excel workbooks with a PDF sidecar' {
+    It 'exports an open Excel workbook to PDF' {
         $xlsx = Join-Path $TestDrive 'excel-report.xlsx'
         $pdf = Join-Path $TestDrive 'excel-report.pdf'
 
@@ -81,11 +85,11 @@ Describe 'Office document PDF sidecar exports' {
                 ExcelCell -Address 'B1' -Value 42
                 ExcelAutoFit
             }
-        } | Out-Null
+        }
 
         $workbook = Get-OfficeExcel -Path $xlsx
         try {
-            $workbook | Save-OfficeExcel -PdfPath $pdf | Out-Null
+            $workbook | Export-OfficeDocumentPdf -Path $pdf
         } finally {
             Close-OfficeExcel -Document $workbook
         }
@@ -96,12 +100,13 @@ Describe 'Office document PDF sidecar exports' {
         Get-OfficePdfText -Path $pdf | Should -Match 'Excel PDF export smoke'
     }
 
-    It 'saves Markdown documents with a PDF sidecar' {
+    It 'exports a Markdown document to PDF' {
         $md = Join-Path $TestDrive 'markdown-report.md'
         $pdf = Join-Path $TestDrive 'markdown-pdf\markdown-report.pdf'
         $document = Get-OfficeMarkdown -Text "# Markdown PDF export smoke`n`nGenerated by PSWriteOffice."
 
-        $document | Save-OfficeMarkdown -Path $md -PdfPath $pdf | Out-Null
+        $document | Save-OfficeMarkdown -Path $md
+        $document | Export-OfficeDocumentPdf -Path $pdf
 
         Test-Path $md | Should -BeTrue
         Test-Path $pdf | Should -BeTrue
@@ -109,7 +114,7 @@ Describe 'Office document PDF sidecar exports' {
         Get-OfficePdfText -Path $pdf | Should -Match 'Markdown PDF export smoke'
     }
 
-    It 'saves PowerPoint presentations with a PDF sidecar' {
+    It 'exports an open PowerPoint presentation to PDF' {
         $pptx = Join-Path $TestDrive 'deck-report.pptx'
         $pdf = Join-Path $TestDrive 'deck-report.pdf'
 
@@ -117,10 +122,10 @@ Describe 'Office document PDF sidecar exports' {
             PptSlide {
                 PptTitle -Title 'PowerPoint PDF export smoke'
             }
-        } | Out-Null
+        }
 
-        $presentation = Get-OfficePowerPoint -FilePath $pptx
-        Save-OfficePowerPoint -Presentation $presentation -PdfPath $pdf | Out-Null
+        $presentation = Get-OfficePowerPoint -Path $pptx
+        $presentation | Export-OfficeDocumentPdf -Path $pdf
 
         Test-Path $pptx | Should -BeTrue
         Test-Path $pdf | Should -BeTrue
diff --git a/Tests/Pdf.Tests.ps1 b/Tests/Pdf.Tests.ps1
index 13537219..2d5edf8c 100644
--- a/Tests/Pdf.Tests.ps1
+++ b/Tests/Pdf.Tests.ps1
@@ -613,9 +613,9 @@ Describe 'PDF cmdlets' {
         $copy = Join-Path $TestDrive 'copy.pdf'
         $removed = Join-Path $TestDrive 'removed.pdf'
 
-        Set-OfficePdfPage -Path $path -Rotation 90 -OutputPath $rotated | Should -BeOfType System.IO.FileInfo
-        Copy-OfficePdfPage -Path $path -PageRange '1' -OutputPath $copy | Should -BeOfType System.IO.FileInfo
-        Remove-OfficePdfPage -Path $path -PageRange '2' -OutputPath $removed | Should -BeOfType System.IO.FileInfo
+        Set-OfficePdfPage -Path $path -Rotation 90 -OutputPath $rotated -PassThru | Should -BeOfType System.IO.FileInfo
+        Copy-OfficePdfPage -Path $path -PageRange '1' -OutputPath $copy -PassThru | Should -BeOfType System.IO.FileInfo
+        Remove-OfficePdfPage -Path $path -PageRange '2' -OutputPath $removed -PassThru | Should -BeOfType System.IO.FileInfo
 
         (Get-OfficePdfInfo -Path $copy).PageCount | Should -Be 1
         (Get-OfficePdfInfo -Path $removed).PageCount | Should -Be 1
@@ -745,7 +745,7 @@ Describe 'PDF cmdlets' {
             PdfParagraph 'Leave second page'
         } | Out-Null
 
-        Set-OfficePdfPage -Path $path -OutputPath $outputPath -PageRange '1' -PageSize Letter -ResizeMargin 18 |
+        Set-OfficePdfPage -Path $path -OutputPath $outputPath -PageRange '1' -PageSize Letter -ResizeMargin 18 -PassThru |
             Should -BeOfType System.IO.FileInfo
 
         $info = Get-OfficePdfInfo -Path $outputPath
@@ -807,7 +807,7 @@ Describe 'PDF cmdlets' {
             PdfParagraph 'Incremental body text'
         } | Out-Null
 
-        Set-OfficePdfMetadata -Path $path -OutputPath $incrementalPath -Title 'Updated title' -Incremental |
+        Set-OfficePdfMetadata -Path $path -OutputPath $incrementalPath -Title 'Updated title' -Incremental -PassThru |
             Should -BeOfType System.IO.FileInfo
 
         (Get-Item $incrementalPath).Length | Should -BeGreaterThan (Get-Item $path).Length
@@ -850,7 +850,7 @@ startxref
 %%EOF
 '@ | Set-Content -Path $path -NoNewline -Encoding Ascii
 
-        Set-OfficePdfForm -Path $path -OutputPath $outputPath -Field @{ Name = 'Grace' } -Incremental |
+        Set-OfficePdfForm -Path $path -OutputPath $outputPath -Field @{ Name = 'Grace' } -Incremental -PassThru |
             Should -BeOfType System.IO.FileInfo
 
         (Get-Item $outputPath).Length | Should -BeGreaterThan (Get-Item $path).Length
@@ -893,7 +893,7 @@ startxref
 %%EOF
 '@ | Set-Content -Path $path -NoNewline -Encoding Ascii
 
-        Set-OfficePdfForm -Path $path -OutputPath $outputPath -Field @{ Name = 'Grace' } -Incremental -KeepNeedAppearances |
+        Set-OfficePdfForm -Path $path -OutputPath $outputPath -Field @{ Name = 'Grace' } -Incremental -KeepNeedAppearances -PassThru |
             Should -BeOfType System.IO.FileInfo
 
         $field = Get-OfficePdfFormField -Path $outputPath -Name Name
@@ -945,7 +945,7 @@ startxref
 %%EOF
 '@ | Set-Content -Path $path -NoNewline -Encoding Ascii
 
-        Set-OfficePdfForm -Path $path -OutputPath $outputPath -Field @{ Name = 'Grace' } -Incremental |
+        Set-OfficePdfForm -Path $path -OutputPath $outputPath -Field @{ Name = 'Grace' } -Incremental -PassThru |
             Should -BeOfType System.IO.FileInfo
 
         $field = Get-OfficePdfFormField -Path $outputPath -Name Name
@@ -965,7 +965,7 @@ startxref
             PdfParagraph 'Page box source'
         } | Out-Null
 
-        Set-OfficePdfPage -Path $path -OutputPath $outputPath -BoxName TrimBox -Left 12 -Bottom 14 -Right 222 -Top 244 |
+        Set-OfficePdfPage -Path $path -OutputPath $outputPath -BoxName TrimBox -Left 12 -Bottom 14 -Right 222 -Top 244 -PassThru |
             Should -BeOfType System.IO.FileInfo
 
         $geometry = (Get-OfficePdfInfo -Path $outputPath).Pages[0].Geometry
@@ -1130,7 +1130,7 @@ startxref
         $preparedReport.Signatures[0].ByteRangeCoversEndOfFile | Should -BeTrue
 
         [IO.File]::WriteAllBytes($signaturePath, [byte[]](0x30, 0x82, 0x01, 0x0A, 0xAA, 0x55))
-        $signedReport = Set-OfficePdfSignature -Path $preparedPath -SignaturePath $signaturePath -OutputPath $signedPath -PassThruReport
+        $signedReport = Set-OfficePdfSignature -Path $preparedPath -SignaturePath $signaturePath -OutputPath $signedPath -PassThruReport -PassThru
         $signedReport.HasSignatures | Should -BeTrue
         $signedReport.Signatures[0].Signature.ByteRangeValues -join ',' | Should -Be ($plan.ByteRangeValues -join ',')
         $signedReport.Findings.Code | Should -Contain 'SignatureDetachedCmsSubFilter'
diff --git a/Tests/PdfExistingDocumentAutomation.Tests.ps1 b/Tests/PdfExistingDocumentAutomation.Tests.ps1
index 89c40700..4a49d3c7 100644
--- a/Tests/PdfExistingDocumentAutomation.Tests.ps1
+++ b/Tests/PdfExistingDocumentAutomation.Tests.ps1
@@ -129,14 +129,14 @@ Describe 'Authenticated PDF automation' {
         } | Out-Null
 
         Move-OfficePdfPage -Path $source -PageRange 1 -BeforePage 4 -OutputPath $moved `
-            -Password 'open' -IgnorePermissionRestrictions | Should -BeOfType System.IO.FileInfo
+            -Password 'open' -IgnorePermissionRestrictions -PassThru | Should -BeOfType System.IO.FileInfo
         Remove-OfficePdfPage -Path $source -PageRange 2 -OutputPath $removed `
-            -Password 'open' -IgnorePermissionRestrictions | Should -BeOfType System.IO.FileInfo
+            -Password 'open' -IgnorePermissionRestrictions -PassThru | Should -BeOfType System.IO.FileInfo
         Set-OfficePdfPage -Path $source -PageRange 1 -Rotation 90 -OutputPath $rotated `
-            -Password 'open' -IgnorePermissionRestrictions | Should -BeOfType System.IO.FileInfo
+            -Password 'open' -IgnorePermissionRestrictions -PassThru | Should -BeOfType System.IO.FileInfo
         Set-OfficePdfPage -Path $source -PageRange 1 -BoxName CropBox `
             -Left 10 -Bottom 10 -Right 300 -Top 500 -OutputPath $boxed `
-            -Password 'open' -IgnorePermissionRestrictions | Should -BeOfType System.IO.FileInfo
+            -Password 'open' -IgnorePermissionRestrictions -PassThru | Should -BeOfType System.IO.FileInfo
 
         $movedPages = @(Get-OfficePdfText -Path $moved -ByPage)
         $movedPages[2].Text | Should -Match 'Restricted page one'
@@ -158,13 +158,13 @@ Describe 'Authenticated PDF automation' {
         } | Out-Null
 
         Set-OfficePdfForm -Path $source -OutputPath $output -Field @{ Name = 'Grace' } `
-            -Password 'open' -IgnorePermissionRestrictions | Should -BeOfType System.IO.FileInfo
+            -Password 'open' -IgnorePermissionRestrictions -PassThru | Should -BeOfType System.IO.FileInfo
         ConvertTo-OfficePdfFlatForm -Path $source -OutputPath $flat `
             -Password 'open' -IgnorePermissionRestrictions | Should -BeOfType System.IO.FileInfo
         Set-OfficePdfForm -Path $source -OutputPath $filledAndFlat -Field @{ Name = 'Flattened' } -Flatten `
-            -Password 'open' -IgnorePermissionRestrictions | Should -BeOfType System.IO.FileInfo
+            -Password 'open' -IgnorePermissionRestrictions -PassThru | Should -BeOfType System.IO.FileInfo
         Set-OfficePdfForm -Path $source -OutputPath $incremental -Field @{ Name = 'Incremental' } -Incremental `
-            -Password 'owner' | Should -BeOfType System.IO.FileInfo
+            -Password 'owner' -PassThru | Should -BeOfType System.IO.FileInfo
         $xfdf = Export-OfficePdfXfdf -Path $source -Password 'open' -IgnorePermissionRestrictions
         $xfdf = $xfdf -replace '>Ada<', '>Imported<'
         Import-OfficePdfXfdf -Path $source -Xfdf $xfdf -OutputPath $imported `
@@ -186,7 +186,7 @@ Describe 'Authenticated PDF automation' {
         } | Out-Null
 
         Set-OfficePdfMetadata -Path $source -OutputPath $metadata -Title 'Authenticated metadata' `
-            -Password 'open' -IgnorePermissionRestrictions | Should -BeOfType System.IO.FileInfo
+            -Password 'open' -IgnorePermissionRestrictions -PassThru | Should -BeOfType System.IO.FileInfo
         $sanitization = ConvertTo-OfficePdfSanitized -Path $source -OutputPath $sanitized `
             -Password 'open' -IgnorePermissionRestrictions
 
@@ -245,7 +245,7 @@ Describe 'General existing-page visual stamping' {
         } -Content {
             param($canvas, $page)
             $null = $canvas.Text("Canvas overlay $($page.PageNumber)/$($page.PageCount)", 36, 36, $page.Width - 72, 24, 11)
-        } | Should -BeOfType System.IO.FileInfo
+        } -PassThru | Should -BeOfType System.IO.FileInfo
 
         $configured | Should -HaveCount 1
         $pages = @(Get-OfficePdfText -Path $output -ByPage)
@@ -267,7 +267,7 @@ Describe 'General existing-page visual stamping' {
             ) -X 36 -Y 24 -FontSize 10
 
             PdfCanvasText 'Review copy' -X 36 -Y 60 -Italic
-        } | Should -BeOfType System.IO.FileInfo
+        } -PassThru | Should -BeOfType System.IO.FileInfo
 
         $text = Get-OfficePdfText -Path $output
         $text | Should -Match 'Owner: Platform'
@@ -308,9 +308,9 @@ Describe 'General existing-page visual stamping' {
         } | Out-Null
 
         Add-OfficePdfPageOverlay -Path $target -SourcePath $source -SourcePageNumber 2 `
-            -PageRange 2 -OutputPath $overlay | Should -BeOfType System.IO.FileInfo
+            -PageRange 2 -OutputPath $overlay -PassThru | Should -BeOfType System.IO.FileInfo
         Add-OfficePdfPageOverlay -Path $target -SourcePath $source -SourcePageNumber 1 `
-            -PageRange 1 -Underlay -OutputPath $underlay | Should -BeOfType System.IO.FileInfo
+            -PageRange 1 -Underlay -OutputPath $underlay -PassThru | Should -BeOfType System.IO.FileInfo
 
         $overlayPages = @(Get-OfficePdfText -Path $overlay -ByPage)
         $overlayPages[0].Text | Should -Not -Match 'Source page two'
diff --git a/Tests/PdfFormsAndStamps.Tests.ps1 b/Tests/PdfFormsAndStamps.Tests.ps1
index 48dcd11b..cfe96573 100644
--- a/Tests/PdfFormsAndStamps.Tests.ps1
+++ b/Tests/PdfFormsAndStamps.Tests.ps1
@@ -29,7 +29,7 @@ Describe 'PDF forms and stamps' {
             CustomerName = 'Alice Example'
             Plan = 'Premium'
             Regions = 'EU'
-        } -Flatten | Should -BeOfType System.IO.FileInfo
+        } -Flatten -PassThru | Should -BeOfType System.IO.FileInfo
 
         $preflight = Get-OfficePdfPreflight -Path $filledPath
         $preflight.CanRead | Should -BeTrue
@@ -46,7 +46,7 @@ Describe 'PDF forms and stamps' {
         $filledPath = Join-Path $TestDrive 'nested\filled.pdf'
         Set-OfficePdfForm -Path $formPath -OutputPath $filledPath -Field @{
             CustomerName = 'Alice Example'
-        } | Should -BeOfType System.IO.FileInfo
+        } -PassThru | Should -BeOfType System.IO.FileInfo
 
         Test-Path $filledPath | Should -BeTrue
         (Get-OfficePdfPreflight -Path $filledPath).CanRead | Should -BeTrue
@@ -62,7 +62,7 @@ Describe 'PDF forms and stamps' {
         $filledPath = Join-Path $TestDrive 'appearance-filled.pdf'
         Set-OfficePdfForm -Path $formPath -OutputPath $filledPath -Field @{
             CustomerName = 'Alice Example'
-        } | Should -BeOfType System.IO.FileInfo
+        } -PassThru | Should -BeOfType System.IO.FileInfo
 
         $info = Get-OfficePdfInfo -Path $filledPath
         $raw = [System.Text.Encoding]::ASCII.GetString([System.IO.File]::ReadAllBytes($filledPath))
@@ -81,7 +81,7 @@ Describe 'PDF forms and stamps' {
         $filledPath = Join-Path $TestDrive 'legacy-appearance-filled.pdf'
         Set-OfficePdfForm -Path $formPath -OutputPath $filledPath -Field @{
             CustomerName = 'Alice Example'
-        } -KeepNeedAppearances | Should -BeOfType System.IO.FileInfo
+        } -KeepNeedAppearances -PassThru | Should -BeOfType System.IO.FileInfo
 
         (Get-OfficePdfInfo -Path $filledPath).AcroFormNeedAppearances | Should -BeTrue
     }
@@ -94,7 +94,7 @@ Describe 'PDF forms and stamps' {
         } | Out-Null
 
         $metadataPath = Join-Path $TestDrive 'metadata.pdf'
-        Set-OfficePdfMetadata -Path $sourcePath -OutputPath $metadataPath -Title 'Stamped Invoice' -Author 'PSWriteOffice' |
+        Set-OfficePdfMetadata -Path $sourcePath -OutputPath $metadataPath -Title 'Stamped Invoice' -Author 'PSWriteOffice' -PassThru |
             Should -BeOfType System.IO.FileInfo
 
         $metadata = (Get-OfficePdfInfo -Path $metadataPath).Metadata
@@ -102,7 +102,7 @@ Describe 'PDF forms and stamps' {
         $metadata.Author | Should -Be 'PSWriteOffice'
 
         $stampedPath = Join-Path $TestDrive 'stamped.pdf'
-        Add-OfficePdfStamp -Path $metadataPath -OutputPath $stampedPath -Text 'APPROVED' -X 72 -Y 72 -FontSize 18 -Color '#008000' |
+        Add-OfficePdfStamp -Path $metadataPath -OutputPath $stampedPath -Text 'APPROVED' -X 72 -Y 72 -FontSize 18 -Color '#008000' -PassThru |
             Should -BeOfType System.IO.FileInfo
 
         $text = Get-OfficePdfText -Path $stampedPath
@@ -118,11 +118,11 @@ Describe 'PDF forms and stamps' {
         } | Out-Null
 
         $metadataPath = Join-Path $TestDrive 'metadata\out.pdf'
-        Set-OfficePdfMetadata -Path $sourcePath -OutputPath $metadataPath -Title 'Nested Metadata' |
+        Set-OfficePdfMetadata -Path $sourcePath -OutputPath $metadataPath -Title 'Nested Metadata' -PassThru |
             Should -BeOfType System.IO.FileInfo
 
         $stampedPath = Join-Path $TestDrive 'stamps\approved.pdf'
-        Add-OfficePdfStamp -Path $metadataPath -OutputPath $stampedPath -Text 'APPROVED' -X 72 -Y 72 |
+        Add-OfficePdfStamp -Path $metadataPath -OutputPath $stampedPath -Text 'APPROVED' -X 72 -Y 72 -PassThru |
             Should -BeOfType System.IO.FileInfo
 
         Test-Path $metadataPath | Should -BeTrue
diff --git a/Tests/PdfHtml.Tests.ps1 b/Tests/PdfHtml.Tests.ps1
index c9b2f554..c2e388dc 100644
--- a/Tests/PdfHtml.Tests.ps1
+++ b/Tests/PdfHtml.Tests.ps1
@@ -39,7 +39,7 @@ Describe 'PDF HTML cmdlets' {
         $path = Join-Path $TestDrive 'html-file-report.pdf'
         Set-Content -Path $htmlPath -Value '

File HTML

Loaded from disk.

' -Encoding UTF8 - ConvertFrom-OfficePdfHtml -InputPath $htmlPath -OutputPath $path -PassThru | + ConvertFrom-OfficePdfHtml -Path $htmlPath -OutputPath $path -PassThru | Should -BeOfType System.IO.FileInfo Test-Path $path | Should -BeTrue diff --git a/Tests/PdfReadbackCompliance.Tests.ps1 b/Tests/PdfReadbackCompliance.Tests.ps1 index b5f74ae6..13bdd096 100644 --- a/Tests/PdfReadbackCompliance.Tests.ps1 +++ b/Tests/PdfReadbackCompliance.Tests.ps1 @@ -89,7 +89,7 @@ Describe 'PDF readback and compliance cmdlets' { PdfParagraph 'Explicit attachment document' } - $updated = $document | PdfAttachment -Path $attachmentPath -Name 'explicit-payload.txt' + $updated = $document | PdfAttachment -Path $attachmentPath -Name 'explicit-payload.txt' -PassThru $updated | Save-OfficePdf -Path $pdfPath | Out-Null $updated | Should -BeOfType OfficeIMO.Pdf.PdfDocument @@ -232,7 +232,7 @@ startxref %%EOF '@ | Set-Content -Path $pdfPath -NoNewline -Encoding Ascii - $updateReport = Set-OfficePdfAnnotation -Path $pdfPath -OutputPath $updatedPath -ObjectNumber 4 -Contents 'Updated note' -Title 'Reviewer' -Name 'Note-2' -Color '#0080FF' -RemoveAction -PassThruReport + $updateReport = Set-OfficePdfAnnotation -Path $pdfPath -OutputPath $updatedPath -ObjectNumber 4 -Contents 'Updated note' -Title 'Reviewer' -Name 'Note-2' -Color '#0080FF' -RemoveAction -PassThruReport -PassThru $updateReport.Applied | Should -BeTrue $updated = @(Get-OfficePdfAnnotation -Path $updatedPath -Subtype Text) $updated.Count | Should -Be 1 @@ -241,7 +241,7 @@ startxref $updated[0].Name | Should -Be 'Note-2' $updated[0].HasAdditionalActions | Should -BeFalse - $removeReport = Remove-OfficePdfAnnotation -Path $updatedPath -OutputPath $removedPath -Subtype Text -PassThruReport + $removeReport = Remove-OfficePdfAnnotation -Path $updatedPath -OutputPath $removedPath -Subtype Text -PassThruReport -PassThru $removeReport.Applied | Should -BeTrue @(Get-OfficePdfAnnotation -Path $removedPath -Subtype Text).Count | Should -Be 0 } diff --git a/Tests/PdfReverseConversion.Tests.ps1 b/Tests/PdfReverseConversion.Tests.ps1 index adbb7083..9c4d3457 100644 --- a/Tests/PdfReverseConversion.Tests.ps1 +++ b/Tests/PdfReverseConversion.Tests.ps1 @@ -43,18 +43,18 @@ Describe 'PDF reverse conversion workflows' { Test-Path -LiteralPath $excelPath | Should -BeTrue Test-Path -LiteralPath $powerPointPath | Should -BeTrue - $wordText = (Get-OfficeWordText -InputPath $wordPath | ForEach-Object Text) -join ' ' + $wordText = (Get-OfficeWordText -Path $wordPath | ForEach-Object Text) -join ' ' $wordText | Should -Match 'Quarterly results' $wordText | Should -Match 'Revenue improved' $excelReport.Entries.Count | Should -BeGreaterThan 0 - $excelSummary = Get-OfficeExcelSummary -InputPath $excelPath -IncludeSheets + $excelSummary = Get-OfficeExcelSummary -Path $excelPath -IncludeSheets $rows = @(Import-OfficeExcel -Path $excelPath -WorksheetName $excelSummary.Sheets[0].Name) $rows | Should -HaveCount 3 $rows[0].Region | Should -Be 'North' $rows[0].Revenue | Should -Be 1250 - $presentation = Get-OfficePowerPoint -FilePath $powerPointPath + $presentation = Get-OfficePowerPoint -Path $powerPointPath try { $slides = @($presentation | Get-OfficePowerPointSlideSummary) $slides | Should -HaveCount 1 diff --git a/Tests/PowerPoint.Tests.ps1 b/Tests/PowerPoint.Tests.ps1 index 1ea52568..4ffbe72f 100644 --- a/Tests/PowerPoint.Tests.ps1 +++ b/Tests/PowerPoint.Tests.ps1 @@ -33,7 +33,7 @@ Describe 'PowerPoint cmdlets' { It 'does not create a NoSave presentation when WhatIf skips creation' { $path = Join-Path $TestDrive 'PowerPointNoSaveWhatIf.pptx' - New-OfficePowerPoint -FilePath $path -NoSave -WhatIf | Out-Null + New-OfficePowerPoint -Path $path -NoSave -WhatIf | Out-Null Test-Path -LiteralPath $path | Should -BeFalse } @@ -42,7 +42,7 @@ Describe 'PowerPoint cmdlets' { $folder = Join-Path $TestDrive 'missing' $path = Join-Path $folder 'PowerPointNoSave.pptx' - $presentation = New-OfficePowerPoint -FilePath $path -NoSave + $presentation = New-OfficePowerPoint -Path $path -NoSave try { $presentation | Should -Not -BeNullOrEmpty Test-Path -LiteralPath $folder | Should -BeTrue @@ -55,12 +55,12 @@ Describe 'PowerPoint cmdlets' { It 'closes a presentation through a PowerShell cmdlet' { $path = Join-Path $TestDrive 'PowerPointClose.pptx' - $presentation = New-OfficePowerPoint -FilePath $path + $presentation = New-OfficePowerPoint -Path $path -NoSave Add-OfficePowerPointSlide -Presentation $presentation | Out-Null Close-OfficePowerPoint -Presentation $presentation -Save - $reloaded = Get-OfficePowerPoint -FilePath $path + $reloaded = Get-OfficePowerPoint -Path $path try { $reloaded.Slides.Count | Should -Be 1 } finally { @@ -71,7 +71,7 @@ Describe 'PowerPoint cmdlets' { It 'saves an external OfficeIMO presentation without closing it and supports save as' { $savedAsPath = Join-Path (Join-Path $TestDrive 'save-as-output') 'PowerPointExternal.Copy.pptx' $seedPath = Join-Path $TestDrive 'PowerPointTypeSeed.pptx' - $seed = New-OfficePowerPoint -FilePath $seedPath -NoSave + $seed = New-OfficePowerPoint -Path $seedPath -NoSave $presentationType = $seed.GetType() Close-OfficePowerPoint -Presentation $seed $create = $presentationType.GetMethods() | @@ -94,7 +94,7 @@ Describe 'PowerPoint cmdlets' { } } - $reloaded = Get-OfficePowerPoint -FilePath $savedAsPath + $reloaded = Get-OfficePowerPoint -Path $savedAsPath try { $reloaded.Slides.Count | Should -Be 2 } finally { @@ -104,13 +104,13 @@ Describe 'PowerPoint cmdlets' { It 'does not persist edits made after save when closed without save' { $path = Join-Path $TestDrive 'PowerPointExplicitClose.pptx' - $presentation = New-OfficePowerPoint -FilePath $path -NoSave + $presentation = New-OfficePowerPoint -Path $path -NoSave Add-OfficePowerPointSlide -Presentation $presentation | Out-Null Save-OfficePowerPoint -Presentation $presentation Add-OfficePowerPointSlide -Presentation $presentation | Out-Null Close-OfficePowerPoint -Presentation $presentation - $reloaded = Get-OfficePowerPoint -FilePath $path + $reloaded = Get-OfficePowerPoint -Path $path try { $reloaded.Slides.Count | Should -Be 1 } finally { @@ -169,7 +169,7 @@ Describe 'PowerPoint cmdlets' { PptSlide { PptTitle -Title 'Encrypted source' } } - $presentation = Get-OfficePowerPoint -FilePath $sourcePath -Password 'secret' + $presentation = Get-OfficePowerPoint -Path $sourcePath -Password 'secret' try { Save-OfficePowerPoint -Presentation $presentation -Path $savedAsPath } finally { @@ -178,13 +178,13 @@ Describe 'PowerPoint cmdlets' { Test-Path -LiteralPath $sourcePath | Should -BeTrue Test-Path -LiteralPath $savedAsPath | Should -BeTrue - $encryptedReload = Get-OfficePowerPoint -FilePath $sourcePath -Password 'secret' + $encryptedReload = Get-OfficePowerPoint -Path $sourcePath -Password 'secret' try { $encryptedReload.Slides.Count | Should -Be 1 } finally { Close-OfficePowerPoint -Presentation $encryptedReload } - $reloaded = Get-OfficePowerPoint -FilePath $savedAsPath + $reloaded = Get-OfficePowerPoint -Path $savedAsPath try { $reloaded.Slides.Count | Should -Be 1 } finally { @@ -208,7 +208,7 @@ Describe 'PowerPoint cmdlets' { Close-OfficePowerPoint -Presentation $presentation } - $reloaded = Get-OfficePowerPoint -FilePath $savedAsPath -Password 'secret' + $reloaded = Get-OfficePowerPoint -Path $savedAsPath -Password 'secret' try { $reloaded.Slides.Count | Should -Be 1 } finally { @@ -247,7 +247,7 @@ Describe 'PowerPoint cmdlets' { Close-OfficePowerPoint -Presentation $presentation -ErrorAction SilentlyContinue } - $reloaded = Get-OfficePowerPoint -FilePath $sourcePath -Password 'secret' + $reloaded = Get-OfficePowerPoint -Path $sourcePath -Password 'secret' try { $reloaded.Slides.Count | Should -Be 1 } finally { @@ -275,7 +275,7 @@ Describe 'PowerPoint cmdlets' { Close-OfficePowerPoint -Presentation $presentation -ErrorAction SilentlyContinue } - $reloaded = Get-OfficePowerPoint -FilePath $encryptedTarget -Password 'secret' + $reloaded = Get-OfficePowerPoint -Path $encryptedTarget -Password 'secret' try { $reloaded.Slides.Count | Should -Be 1 } finally { @@ -334,7 +334,7 @@ Describe 'PowerPoint cmdlets' { { Get-ZipEntriesLocal -Path $path } | Should -Throw - $reloaded = Get-OfficePowerPoint -FilePath $path -Password 'secret' + $reloaded = Get-OfficePowerPoint -Path $path -Password 'secret' try { $reloaded.Slides.Count | Should -Be 1 } finally { @@ -344,7 +344,7 @@ Describe 'PowerPoint cmdlets' { It 'creates a presentation with shapes, tables, media, and notes' { $path = Join-Path $TestDrive 'PowerPointContent.pptx' - $presentation = New-OfficePowerPoint -FilePath $path + $presentation = New-OfficePowerPoint -Path $path -NoSave $imagePath = New-TestOfficeImageFile -Directory $TestDrive $layouts = Get-OfficePowerPointLayout -Presentation $presentation @@ -353,28 +353,28 @@ Describe 'PowerPoint cmdlets' { if ($layoutType) { $layoutMaster = $layoutType.MasterIndex $layoutIndex = $layoutType.LayoutIndex - $slide2 = Add-OfficePowerPointSlide -Presentation $presentation -LayoutType $layoutType.LayoutType -Master $layoutType.MasterIndex + $slide2 = Add-OfficePowerPointSlide -Presentation $presentation -LayoutType $layoutType.LayoutType -Master $layoutType.MasterIndex -PassThru } elseif ($layouts[0].Name) { $layoutMaster = $layouts[0].MasterIndex $layoutIndex = $layouts[0].LayoutIndex - $slide2 = Add-OfficePowerPointSlide -Presentation $presentation -LayoutName $layouts[0].Name -Master $layouts[0].MasterIndex + $slide2 = Add-OfficePowerPointSlide -Presentation $presentation -LayoutName $layouts[0].Name -Master $layouts[0].MasterIndex -PassThru } else { $layoutMaster = $layouts[0].MasterIndex $layoutIndex = $layouts[0].LayoutIndex - $slide2 = Add-OfficePowerPointSlide -Presentation $presentation -Layout $layouts[0].LayoutIndex -Master $layouts[0].MasterIndex + $slide2 = Add-OfficePowerPointSlide -Presentation $presentation -Layout $layouts[0].LayoutIndex -Master $layouts[0].MasterIndex -PassThru } - $slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 + $slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Status Update' - $shape = Add-OfficePowerPointShape -Slide $slide -ShapeType Rectangle -X 40 -Y 40 -Width 200 -Height 80 -FillColor '#DDEEFF' -OutlineColor '#1F4E79' -OutlineWidth 1 + $shape = Add-OfficePowerPointShape -Slide $slide -ShapeType Rectangle -X 40 -Y 40 -Width 200 -Height 80 -FillColor '#DDEEFF' -OutlineColor '#1F4E79' -OutlineWidth 1 -PassThru $rows = @( [PSCustomObject]@{ Item = 'Alpha'; Qty = 10 } [PSCustomObject]@{ Item = 'Beta'; Qty = 20 } ) - $table = Add-OfficePowerPointTable -Slide $slide -InputObject $rows -X 40 -Y 140 -Width 360 -Height 200 - $image = Add-OfficePowerPointImage -Slide $slide -Path $imagePath -X 420 -Y 40 -Width 120 -Height 90 - $bullets = Add-OfficePowerPointBullets -Slide $slide -Bullets 'Wins','Risks','Next Steps' -X 420 -Y 150 -Width 250 -Height 200 + $table = Add-OfficePowerPointTable -Slide $slide -InputObject $rows -X 40 -Y 140 -Width 360 -Height 200 -PassThru + $image = Add-OfficePowerPointImage -Slide $slide -Path $imagePath -X 420 -Y 40 -Width 120 -Height 90 -PassThru + $bullets = Add-OfficePowerPointBullets -Slide $slide -Bullets 'Wins','Risks','Next Steps' -X 420 -Y 150 -Width 250 -Height 200 -PassThru Set-OfficePowerPointNotes -Slide $slide -Text 'Keep this under five minutes.' $slide.Shapes.Count | Should -BeGreaterThan 0 @@ -420,7 +420,7 @@ Describe 'PowerPoint cmdlets' { $presentation.Dispose() $presentation = $null - $reloaded = Get-OfficePowerPoint -FilePath $path + $reloaded = Get-OfficePowerPoint -Path $path try { $reloaded.Slides.Count | Should -Be 2 @@ -454,9 +454,9 @@ Describe 'PowerPoint cmdlets' { It 'supports transposed PowerPoint tables' { $path = Join-Path $TestDrive 'PowerPointTransposedTable.pptx' - $presentation = New-OfficePowerPoint -FilePath $path + $presentation = New-OfficePowerPoint -Path $path -NoSave try { - $slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 + $slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru $rows = @( [PSCustomObject]@{ Region = 'Europe'; Revenue = 21704714 } [PSCustomObject]@{ Region = 'Asia'; Revenue = 8774099 } @@ -474,9 +474,9 @@ Describe 'PowerPoint cmdlets' { It 'preserves the legacy PowerPoint table headers alias' { $path = Join-Path $TestDrive 'PowerPointHeadersAlias.pptx' - $presentation = New-OfficePowerPoint -FilePath $path + $presentation = New-OfficePowerPoint -Path $path -NoSave try { - $slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 + $slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru $rows = @( [PSCustomObject]@{ Item = 'Alpha'; Qty = 10 } [PSCustomObject]@{ Item = 'Beta'; Qty = 20 } @@ -494,9 +494,9 @@ Describe 'PowerPoint cmdlets' { It 'finds and modifies existing PowerPoint text boxes and tables' { $path = Join-Path $TestDrive 'PowerPointExistingShapeModify.pptx' - $presentation = New-OfficePowerPoint -FilePath $path + $presentation = New-OfficePowerPoint -Path $path -NoSave try { - $slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 + $slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru Add-OfficePowerPointTextBox -Slide $slide -Text 'Draft status' -X 80 -Y 80 -Width 300 -Height 50 | Out-Null $rows = @( [PSCustomObject]@{ Metric = 'Risk'; State = 'Open' } @@ -526,7 +526,7 @@ Describe 'PowerPoint cmdlets' { } } - $reloaded = Get-OfficePowerPoint -FilePath $path + $reloaded = Get-OfficePowerPoint -Path $path try { $readyShape = Find-OfficePowerPointShape -Presentation $reloaded -Text 'Ready status' -Kind TextBox | Select-Object -First 1 $readyShape | Should -Not -BeNullOrEmpty @@ -547,13 +547,13 @@ Describe 'PowerPoint cmdlets' { } $path = Join-Path $TestDrive 'PowerPointRichTextRuns.pptx' - $presentation = PptNew -FilePath $path + $presentation = PptNew -Path $path -NoSave try { - $slide = PptSlide -Presentation $presentation -Layout 1 + $slide = PptSlide -Presentation $presentation -Layout 1 -PassThru $textBox = PptTextBox -Slide $slide -Run @( PptTextRun 'Status: ' PptTextRun 'Ready' -Color SeaGreen -Bold - ) -X 80 -Y 80 -Width 300 -Height 50 + ) -X 80 -Y 80 -Width 300 -Height 50 -PassThru $textBox.Text | Should -Be 'Status: Ready' $textBox = $textBox | Set-OfficePowerPointShapeText -Run @( PptTextRun 'Linked' -Color Crimson -BackgroundColor Yellow -FontName 'Arial' -FontSize 18 -LinkUri 'https://example.org/ppt' @@ -588,7 +588,7 @@ Describe 'PowerPoint cmdlets' { , @('Owner', 'Platform') , @(@{ Text = 'Filled'; FillColor = 'Yellow'; Bold = $true }, 'Styled') , @(@{ Run = 'Queued' }, 'String run') - ) -X 80 -Y 150 -Width 420 -Height 140 + ) -X 80 -Y 150 -Width 420 -Height 140 -PassThru $table.GetCell(0, 0).Text | Should -Be 'Build Ready' $table.GetCell(0, 0).Runs[0].Bold | Should -BeTrue $table.GetCell(0, 0).Runs[0].Color | Should -Be 'FF0000' @@ -617,7 +617,7 @@ Describe 'PowerPoint cmdlets' { $threeColumnTable = PptTable -Slide $slide -InputObject @( , @('Metric', 'Scope', 'Value') - ) -X 80 -Y 320 -Width 420 -Height 120 + ) -X 80 -Y 320 -Width 420 -Height 120 -PassThru $valueAfterSpan = $threeColumnTable | Add-OfficePowerPointTableRow -Values @( @{ Text = 'Total'; ColumnSpan = 2; FillColor = 'AliceBlue' }, '42' @@ -665,7 +665,7 @@ Describe 'PowerPoint cmdlets' { $baselineTextBox = PptTextBox -Slide $slide -Run @( PptTextRun 'x' PptTextRun '2' -Kind Superscript - ) -X 360 -Y 80 -Width 120 -Height 50 + ) -X 360 -Y 80 -Width 120 -Height 50 -PassThru $baselineTextBox.Text | Should -Be 'x2' $baselineTable = PptTable -Slide $slide -InputObject @( @@ -678,7 +678,7 @@ Describe 'PowerPoint cmdlets' { ) } ) - ) -X 80 -Y 450 -Width 240 -Height 80 + ) -X 80 -Y 450 -Width 240 -Height 80 -PassThru $baselineTable.GetCell(0, 0).Text | Should -Be 'H2O' Save-OfficePowerPoint -Presentation $presentation @@ -697,16 +697,16 @@ Describe 'PowerPoint cmdlets' { It 'keeps ordinary style-named columns in PowerPoint object tables' { $path = Join-Path $TestDrive 'PowerPointOrdinaryStyleColumns.pptx' - $presentation = PptNew -FilePath $path + $presentation = PptNew -Path $path -NoSave try { - $slide = PptSlide -Presentation $presentation -Layout 1 + $slide = PptSlide -Presentation $presentation -Layout 1 -PassThru $table = PptTable -Slide $slide -InputObject @( [pscustomobject]@{ Text = 'Apple' Color = 'Red' FontSize = 'Large' } - ) -X 80 -Y 150 -Width 300 -Height 100 + ) -X 80 -Y 150 -Width 300 -Height 100 -PassThru $table.GetCell(0, 0).Text | Should -Be 'Text' $table.GetCell(0, 1).Text | Should -Be 'Color' @@ -723,9 +723,9 @@ Describe 'PowerPoint cmdlets' { It 'validates structured PowerPoint table runs before creating the table' { $path = Join-Path $TestDrive 'PowerPointStructuredTableRunValidation.pptx' - $presentation = PptNew -FilePath $path + $presentation = PptNew -Path $path -NoSave try { - $slide = PptSlide -Presentation $presentation -Layout 1 + $slide = PptSlide -Presentation $presentation -Layout 1 -PassThru @($slide.Tables).Count | Should -Be 0 { @@ -746,9 +746,9 @@ Describe 'PowerPoint cmdlets' { It 'validates PowerPoint text box runs before creating the shape' { $path = Join-Path $TestDrive 'PowerPointTextBoxRunValidation.pptx' - $presentation = PptNew -FilePath $path + $presentation = PptNew -Path $path -NoSave try { - $slide = PptSlide -Presentation $presentation -Layout 1 + $slide = PptSlide -Presentation $presentation -Layout 1 -PassThru @($slide.TextBoxes).Count | Should -Be 0 { @@ -767,9 +767,9 @@ Describe 'PowerPoint cmdlets' { It 'preserves explicit headers on structured PowerPoint tables' { $path = Join-Path $TestDrive 'PowerPointStructuredHeaders.pptx' - $presentation = PptNew -FilePath $path + $presentation = PptNew -Path $path -NoSave try { - $slide = PptSlide -Presentation $presentation -Layout 1 + $slide = PptSlide -Presentation $presentation -Layout 1 -PassThru $table = PptTable -Slide $slide -Headers Qty, Item -InputObject @( [pscustomobject]@{ Item = 'Alpha' @@ -779,7 +779,7 @@ Describe 'PowerPoint cmdlets' { @{ Run = @(PptTextRun 'Total' -Bold) }, 'Two' ) - ) -X 80 -Y 150 -Width 420 -Height 140 + ) -X 80 -Y 150 -Width 420 -Height 140 -PassThru $table.GetCell(0, 0).Text | Should -Be 'Qty' $table.GetCell(0, 1).Text | Should -Be 'Item' @@ -796,14 +796,14 @@ Describe 'PowerPoint cmdlets' { It 'keeps ordinary Run columns in PowerPoint object tables' { $path = Join-Path $TestDrive 'PowerPointOrdinaryRunColumn.pptx' - $presentation = PptNew -FilePath $path + $presentation = PptNew -Path $path -NoSave try { - $slide = PptSlide -Presentation $presentation -Layout 1 + $slide = PptSlide -Presentation $presentation -Layout 1 -PassThru $table = PptTable -Slide $slide -InputObject @( [pscustomobject]@{ Run = @('Nightly', 'Daily') } - ) -X 80 -Y 150 -Width 300 -Height 100 + ) -X 80 -Y 150 -Width 300 -Height 100 -PassThru $table.GetCell(0, 0).Text | Should -Be 'Run' $table.GetCell(1, 0).Text | Should -Match 'Nightly' @@ -817,15 +817,15 @@ Describe 'PowerPoint cmdlets' { It 'finds existing PowerPoint shapes by metadata without a text term' { $path = Join-Path $TestDrive 'PowerPointMetadataShapeFind.pptx' - $presentation = New-OfficePowerPoint -FilePath $path + $presentation = New-OfficePowerPoint -Path $path -NoSave try { - $slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 - $textBox = Add-OfficePowerPointTextBox -Slide $slide -Text 'Metadata status' -X 80 -Y 80 -Width 300 -Height 50 + $slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru + $textBox = Add-OfficePowerPointTextBox -Slide $slide -Text 'Metadata status' -X 80 -Y 80 -Width 300 -Height 50 -PassThru $textBox.Name = 'Status.Primary' $rows = @( [PSCustomObject]@{ Metric = 'Risk'; State = 'Open' } ) - $table = Add-OfficePowerPointTable -Slide $slide -InputObject $rows -X 80 -Y 160 -Width 420 -Height 120 + $table = Add-OfficePowerPointTable -Slide $slide -InputObject $rows -X 80 -Y 160 -Width 420 -Height 120 -PassThru $table.Name = 'Status.Table' $byName = Find-OfficePowerPointShape -Presentation $presentation -Name 'Status.*' -Kind TextBox @@ -844,12 +844,12 @@ Describe 'PowerPoint cmdlets' { It 'arranges PowerPoint shapes through OfficeIMO layout helpers' { $path = Join-Path $TestDrive 'PowerPointShapeLayout.pptx' - $presentation = New-OfficePowerPoint -FilePath $path + $presentation = New-OfficePowerPoint -Path $path -NoSave try { - $slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 - $shape1 = Add-OfficePowerPointShape -Slide $slide -Name 'Kpi.One' -ShapeType Rectangle -X 40 -Y 80 -Width 80 -Height 40 - $shape2 = Add-OfficePowerPointShape -Slide $slide -Name 'Kpi.Two' -ShapeType Rectangle -X 180 -Y 140 -Width 80 -Height 40 - $shape3 = Add-OfficePowerPointShape -Slide $slide -Name 'Kpi.Three' -ShapeType Rectangle -X 320 -Y 200 -Width 80 -Height 40 + $slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru + $shape1 = Add-OfficePowerPointShape -Slide $slide -Name 'Kpi.One' -ShapeType Rectangle -X 40 -Y 80 -Width 80 -Height 40 -PassThru + $shape2 = Add-OfficePowerPointShape -Slide $slide -Name 'Kpi.Two' -ShapeType Rectangle -X 180 -Y 140 -Width 80 -Height 40 -PassThru + $shape3 = Add-OfficePowerPointShape -Slide $slide -Name 'Kpi.Three' -ShapeType Rectangle -X 320 -Y 200 -Width 80 -Height 40 -PassThru @($shape1, $shape2, $shape3) | Set-OfficePowerPointShapeLayout -Slide $slide -Align Top $shape1.TopPoints | Should -Be $shape2.TopPoints @@ -869,9 +869,9 @@ Describe 'PowerPoint cmdlets' { It 'reads notes without creating empty notes parts' { $path = Join-Path $TestDrive 'PowerPointNotesRead.pptx' - $presentation = New-OfficePowerPoint -FilePath $path + $presentation = New-OfficePowerPoint -Path $path -NoSave - $slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 + $slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide -Title 'No notes yet' $notes = Get-OfficePowerPointNotes -Slide $slide -IncludeEmpty @@ -902,7 +902,7 @@ Describe 'PowerPoint cmdlets' { It 'persists layout placeholder edits across save and reopen' { $path = Join-Path $TestDrive 'PowerPointLayoutEdits.pptx' - $presentation = New-OfficePowerPoint -FilePath $path + $presentation = New-OfficePowerPoint -Path $path -NoSave $layoutPlaceholder = $null $layouts = Get-OfficePowerPointLayout -Presentation $presentation @@ -912,15 +912,15 @@ Describe 'PowerPoint cmdlets' { if ($layoutType) { $layoutMaster = $layoutType.MasterIndex $layoutIndex = $layoutType.LayoutIndex - $slide = Add-OfficePowerPointSlide -Presentation $presentation -LayoutType $layoutType.LayoutType -Master $layoutType.MasterIndex + $slide = Add-OfficePowerPointSlide -Presentation $presentation -LayoutType $layoutType.LayoutType -Master $layoutType.MasterIndex -PassThru } elseif ($layouts[0].Name) { $layoutMaster = $layouts[0].MasterIndex $layoutIndex = $layouts[0].LayoutIndex - $slide = Add-OfficePowerPointSlide -Presentation $presentation -LayoutName $layouts[0].Name -Master $layouts[0].MasterIndex + $slide = Add-OfficePowerPointSlide -Presentation $presentation -LayoutName $layouts[0].Name -Master $layouts[0].MasterIndex -PassThru } else { $layoutMaster = $layouts[0].MasterIndex $layoutIndex = $layouts[0].LayoutIndex - $slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout $layouts[0].LayoutIndex -Master $layouts[0].MasterIndex + $slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout $layouts[0].LayoutIndex -Master $layouts[0].MasterIndex -PassThru } $layoutPlaceholders = Get-OfficePowerPointLayoutPlaceholder -Slide $slide @@ -949,7 +949,7 @@ Describe 'PowerPoint cmdlets' { Save-OfficePowerPoint -Presentation $presentation $presentation.Dispose() - $reloaded = Get-OfficePowerPoint -FilePath $path + $reloaded = Get-OfficePowerPoint -Path $path try { $reloadedSlide = Get-OfficePowerPointSlide -Presentation $reloaded -Index 0 $reloadedLayoutPlaceholders = Get-OfficePowerPointLayoutPlaceholder -Slide $reloadedSlide @@ -972,19 +972,19 @@ Describe 'PowerPoint cmdlets' { It 'removes slides and preserves the remaining title' { $path = Join-Path $TestDrive 'PowerPointRemoval.pptx' - $presentation = New-OfficePowerPoint -FilePath $path + $presentation = New-OfficePowerPoint -Path $path -NoSave - $firstSlide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 + $firstSlide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $firstSlide -Title 'Remove me' - $secondSlide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 + $secondSlide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $secondSlide -Title 'Keep me' Set-OfficePowerPointPlaceholderText -Slide $secondSlide -PlaceholderType Title -Text 'Keep me v2' Save-OfficePowerPoint -Presentation $presentation $presentation.Dispose() - $reloaded = Get-OfficePowerPoint -FilePath $path + $reloaded = Get-OfficePowerPoint -Path $path try { Remove-OfficePowerPointSlide -Presentation $reloaded -Index 0 -Confirm:$false Save-OfficePowerPoint -Presentation $reloaded @@ -994,7 +994,7 @@ Describe 'PowerPoint cmdlets' { } } - $afterRemoval = Get-OfficePowerPoint -FilePath $path + $afterRemoval = Get-OfficePowerPoint -Path $path try { $afterRemoval.Slides.Count | Should -Be 1 $remainingSlide = Get-OfficePowerPointSlide -Presentation $afterRemoval -Index 0 @@ -1012,23 +1012,23 @@ Describe 'PowerPoint cmdlets' { It 'copies a slide and preserves its content' { $path = Join-Path $TestDrive 'PowerPointCopy.pptx' - $presentation = New-OfficePowerPoint -FilePath $path + $presentation = New-OfficePowerPoint -Path $path -NoSave - $slide1 = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 + $slide1 = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide1 -Title 'Quarterly Overview' Add-OfficePowerPointTextBox -Slide $slide1 -Text 'Revenue and margin summary' -X 80 -Y 150 -Width 320 -Height 60 | Out-Null Set-OfficePowerPointNotes -Slide $slide1 -Text 'Reuse this for the board deck.' - $slide2 = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 + $slide2 = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide2 -Title 'Closing Slide' - $copiedSlide = Copy-OfficePowerPointSlide -Presentation $presentation -Index 0 -InsertAt 1 + $copiedSlide = Copy-OfficePowerPointSlide -Presentation $presentation -Index 0 -InsertAt 1 -PassThru $copiedSlide | Should -Not -BeNullOrEmpty Save-OfficePowerPoint -Presentation $presentation $presentation.Dispose() - $reloaded = Get-OfficePowerPoint -FilePath $path + $reloaded = Get-OfficePowerPoint -Path $path try { $reloaded.Slides.Count | Should -Be 3 @@ -1058,16 +1058,16 @@ Describe 'PowerPoint cmdlets' { It 'sets slide transitions and custom slide sizes' { $path = Join-Path $TestDrive 'PowerPointTransitionsAndSize.pptx' - $presentation = New-OfficePowerPoint -FilePath $path + $presentation = New-OfficePowerPoint -Path $path -NoSave - $slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 + $slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Transition Demo' | Out-Null - $updatedSlide = $slide | Set-OfficePowerPointSlideTransition -Transition Fade + $updatedSlide = $slide | Set-OfficePowerPointSlideTransition -Transition Fade -PassThru $fadeTransition = Get-TestPSWriteOfficeEnumValue -AssemblyName 'OfficeIMO.PowerPoint' -TypeName 'OfficeIMO.PowerPoint.PowerPointSlideTransition' -Name 'Fade' -CommandName 'New-OfficePowerPoint' $updatedSlide.Transition | Should -Be $fadeTransition - $slideSize = Set-OfficePowerPointSlideSize -Presentation $presentation -WidthCm 25.4 -HeightCm 14.0 + $slideSize = Set-OfficePowerPointSlideSize -Presentation $presentation -WidthCm 25.4 -HeightCm 14.0 -PassThru [math]::Round($slideSize.WidthCm, 1) | Should -Be 25.4 [math]::Round($slideSize.HeightCm, 1) | Should -Be 14.0 @@ -1079,7 +1079,7 @@ Describe 'PowerPoint cmdlets' { $transitionNode | Should -Not -BeNullOrEmpty $transitionNode.SelectSingleNode("*[local-name()='fade']") | Should -Not -BeNullOrEmpty - $reloaded = Get-OfficePowerPoint -FilePath $path + $reloaded = Get-OfficePowerPoint -Path $path try { $reloadedSlide = Get-OfficePowerPointSlide -Presentation $reloaded -Index 0 $reloadedSlide.Transition | Should -Be $fadeTransition @@ -1095,10 +1095,10 @@ Describe 'PowerPoint cmdlets' { It 'applies preset slide sizes including portrait orientation' { $path = Join-Path $TestDrive 'PowerPointPresetSize.pptx' - $presentation = New-OfficePowerPoint -FilePath $path + $presentation = New-OfficePowerPoint -Path $path -NoSave Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 | Out-Null - $presetSize = Set-OfficePowerPointSlideSize -Presentation $presentation -Preset Screen4x3 -Portrait + $presetSize = Set-OfficePowerPointSlideSize -Presentation $presentation -Preset Screen4x3 -Portrait -PassThru $presetSize.IsPortrait | Should -BeTrue [math]::Round($presetSize.WidthInches, 1) | Should -Be 7.5 [math]::Round($presetSize.HeightInches, 1) | Should -Be 10.0 @@ -1106,7 +1106,7 @@ Describe 'PowerPoint cmdlets' { Save-OfficePowerPoint -Presentation $presentation $presentation.Dispose() - $reloaded = Get-OfficePowerPoint -FilePath $path + $reloaded = Get-OfficePowerPoint -Path $path try { $reloaded.SlideSize.IsPortrait | Should -BeTrue [math]::Round($reloaded.SlideSize.WidthInches, 1) | Should -Be 7.5 @@ -1155,7 +1155,7 @@ Describe 'PowerPoint cmdlets' { Test-Path $path | Should -BeTrue - $presentation = Get-OfficePowerPoint -FilePath $path + $presentation = Get-OfficePowerPoint -Path $path $slide = Get-OfficePowerPointSlide -Presentation $presentation -Index 0 $summary = Get-OfficePowerPointSlideSummary -Slide $slide $summary.LayoutPlaceholderCount | Should -BeGreaterThan 0 @@ -1177,26 +1177,26 @@ Describe 'PowerPoint cmdlets' { $sourcePath = Join-Path $TestDrive 'PowerPointSourceDeck.pptx' $targetPath = Join-Path $TestDrive 'PowerPointTargetDeck.pptx' - $source = New-OfficePowerPoint -FilePath $sourcePath - $sourceSlide = Add-OfficePowerPointSlide -Presentation $source -Layout 1 + $source = New-OfficePowerPoint -Path $sourcePath -NoSave + $sourceSlide = Add-OfficePowerPointSlide -Presentation $source -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $sourceSlide -Title 'FY24 Imported' Add-OfficePowerPointTextBox -Slide $sourceSlide -Text 'FY24 details from source' -X 80 -Y 150 -Width 320 -Height 60 | Out-Null Set-OfficePowerPointNotes -Slide $sourceSlide -Text 'FY24 source notes' Save-OfficePowerPoint -Presentation $source - $target = New-OfficePowerPoint -FilePath $targetPath - $introSlide = Add-OfficePowerPointSlide -Presentation $target -Layout 1 + $target = New-OfficePowerPoint -Path $targetPath -NoSave + $introSlide = Add-OfficePowerPointSlide -Presentation $target -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $introSlide -Title 'FY24 Overview' Add-OfficePowerPointTextBox -Slide $introSlide -Text 'FY24 summary for leadership' -X 80 -Y 150 -Width 320 -Height 60 | Out-Null Set-OfficePowerPointNotes -Slide $introSlide -Text 'FY24 note for intro' - $resultsSlide = Add-OfficePowerPointSlide -Presentation $target -Layout 1 + $resultsSlide = Add-OfficePowerPointSlide -Presentation $target -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $resultsSlide -Title 'FY24 Results' Add-OfficePowerPointTextBox -Slide $resultsSlide -Text 'FY24 results body' -X 80 -Y 150 -Width 320 -Height 60 | Out-Null - $introSection = Add-OfficePowerPointSection -Presentation $target -Name 'Intro' -StartSlideIndex 0 + $introSection = Add-OfficePowerPointSection -Presentation $target -Name 'Intro' -StartSlideIndex 0 -PassThru $introSection.Name | Should -Be 'Intro' - $resultsSection = Add-OfficePowerPointSection -Presentation $target -Name 'Results' -StartSlideIndex 1 + $resultsSection = Add-OfficePowerPointSection -Presentation $target -Name 'Results' -StartSlideIndex 1 -PassThru $resultsSection.Name | Should -Be 'Results' $renamedSection = Rename-OfficePowerPointSection -Presentation $target -Name 'Results' -NewName 'Deep Dive' -PassThru @@ -1207,7 +1207,7 @@ Describe 'PowerPoint cmdlets' { ($sections | Where-Object Name -eq 'Intro').SlideIndices | Should -Contain 0 ($sections | Where-Object Name -eq 'Deep Dive').SlideIndices | Should -Contain 1 - $replacements = Update-OfficePowerPointText -Presentation $target -OldValue 'FY24' -NewValue 'FY25' -IncludeNotes + $replacements = Update-OfficePowerPointText -Presentation $target -OldValue 'FY24' -NewValue 'FY25' -IncludeNotes -PassThru $replacements | Should -BeGreaterThan 0 $importedSlide = Import-OfficePowerPointSlide -Presentation $target -SourcePath $sourcePath -SourceIndex 0 -InsertAt 1 @@ -1215,7 +1215,7 @@ Describe 'PowerPoint cmdlets' { Save-OfficePowerPoint -Presentation $target - $reloaded = Get-OfficePowerPoint -FilePath $targetPath + $reloaded = Get-OfficePowerPoint -Path $targetPath try { $reloaded.Slides.Count | Should -Be 3 @@ -1241,7 +1241,7 @@ Describe 'PowerPoint cmdlets' { ($sectionInfo | Where-Object Name -eq 'Intro').SlideIndices | Should -Contain 1 ($sectionInfo | Where-Object Name -eq 'Deep Dive').SlideIndices | Should -Contain 2 - $aliasReplacements = Replace-OfficePowerPointText -Presentation $reloaded -OldValue 'FY24' -NewValue 'FY26' + $aliasReplacements = Replace-OfficePowerPointText -Presentation $reloaded -OldValue 'FY24' -NewValue 'FY26' -PassThru $aliasReplacements | Should -BeGreaterThan 0 } finally { if ($reloaded) { @@ -1252,9 +1252,9 @@ Describe 'PowerPoint cmdlets' { It 'supports theme inspection, theme updates, and slide layout switching' { $path = Join-Path $TestDrive 'PowerPointThemeAndLayout.pptx' - $presentation = New-OfficePowerPoint -FilePath $path + $presentation = New-OfficePowerPoint -Path $path -NoSave - $slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 + $slide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Theme Demo' | Out-Null $layouts = Get-OfficePowerPointLayout -Presentation $presentation @@ -1295,7 +1295,7 @@ Describe 'PowerPoint cmdlets' { Save-OfficePowerPoint -Presentation $presentation $presentation.Dispose() - $reloaded = Get-OfficePowerPoint -FilePath $path + $reloaded = Get-OfficePowerPoint -Path $path try { $reloadedTheme = Get-OfficePowerPointTheme -Presentation $reloaded $reloadedTheme.ThemeName | Should -Be 'Contoso Theme' @@ -1319,13 +1319,13 @@ Describe 'PowerPoint cmdlets' { $presentation = $null try { - $presentation = New-OfficePowerPoint -FilePath $path + $presentation = New-OfficePowerPoint -Path $path -NoSave Set-OfficePowerPointSlideSize -Presentation $presentation -WidthCm 30 -HeightCm 20 | Out-Null - $colorSlide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 + $colorSlide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $colorSlide -Title 'Layout Demo' | Out-Null - $updatedSlide = Set-OfficePowerPointBackground -Slide $colorSlide -Color '#F4F7FB' + $updatedSlide = Set-OfficePowerPointBackground -Slide $colorSlide -Color '#F4F7FB' -PassThru $updatedSlide | Should -Be $colorSlide $colorSlide.BackgroundColor | Should -Be 'f4f7fb' @@ -1348,7 +1348,7 @@ Describe 'PowerPoint cmdlets' { Add-OfficePowerPointTextBox -Slide $colorSlide -Text 'Left column' -X $columns[0].LeftPoints -Y $columns[0].TopPoints -Width $columns[0].WidthPoints -Height 40 | Out-Null Add-OfficePowerPointTextBox -Slide $colorSlide -Text 'Right column' -X $columns[1].LeftPoints -Y $columns[1].TopPoints -Width $columns[1].WidthPoints -Height 40 | Out-Null - $imageSlide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 + $imageSlide = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $imageSlide -Title 'Image Background' | Out-Null Set-OfficePowerPointBackground -Slide $imageSlide -ImagePath $imagePath | Out-Null $imageSlide.BackgroundColor | Should -BeNullOrEmpty @@ -1370,7 +1370,7 @@ Describe 'PowerPoint cmdlets' { $entries = @(Get-ZipEntriesLocal -Path $path) ($entries | Where-Object { $_ -like 'ppt/media/*' }).Count | Should -BeGreaterThan 0 - $reloaded = Get-OfficePowerPoint -FilePath $path + $reloaded = Get-OfficePowerPoint -Path $path try { $reloadedColorSlide = Get-OfficePowerPointSlide -Presentation $reloaded -Index 0 $reloadedColorSlide.BackgroundColor | Should -Be 'f4f7fb' @@ -1399,7 +1399,7 @@ Describe 'PowerPoint cmdlets' { ) } - $preview = @(PptDesignerDeck -Plan $plan -AccentColor '#008C95' -Seed 'designer-test' -Purpose 'technical service brief' -Preview) + $preview = @(PptDesignerDeck -Plan $plan -AccentColor '#008C95' -Seed 'designer-test' -Purpose 'technical service brief' -Preview -PassThru) $preview.Count | Should -BeGreaterThan 0 New-OfficePowerPoint -Path $path { @@ -1409,7 +1409,7 @@ Describe 'PowerPoint cmdlets' { $entries = @(Get-ZipEntriesLocal -Path $path) ($entries | Where-Object { $_ -match '^ppt/slides/slide\d+\.xml$' }).Count | Should -BeGreaterThan 2 - $reloaded = Get-OfficePowerPoint -FilePath $path + $reloaded = Get-OfficePowerPoint -Path $path try { $reloaded.Slides.Count | Should -BeGreaterThan 2 $summary = @(Get-OfficePowerPointSlideSummary -Presentation $reloaded) @@ -1452,23 +1452,23 @@ Describe 'PowerPoint cmdlets' { ) try { - $presentation = New-OfficePowerPoint -FilePath $path + $presentation = New-OfficePowerPoint -Path $path -NoSave - $slide1 = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 + $slide1 = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide1 -Title 'Column Chart' | Out-Null - $columnChart = Add-OfficePowerPointChart -Slide $slide1 -Data $rows -CategoryProperty Month -SeriesProperty Sales, Profit -Title 'Sales vs Profit' -X 40 -Y 120 -Width 360 -Height 220 + $columnChart = Add-OfficePowerPointChart -Slide $slide1 -Data $rows -CategoryProperty Month -SeriesProperty Sales, Profit -Title 'Sales vs Profit' -X 40 -Y 120 -Width 360 -Height 220 -PassThru $columnChart | Should -Not -BeNullOrEmpty @($slide1.Charts).Count | Should -Be 1 - $slide2 = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 + $slide2 = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide2 -Title 'Pie Chart' | Out-Null - $pieChart = Add-OfficePowerPointChart -Slide $slide2 -Type Pie -InputObject $rows -CategoryProperty Month -SeriesProperty Sales -Title 'Sales Mix' -X 40 -Y 120 -Width 320 -Height 220 + $pieChart = Add-OfficePowerPointChart -Slide $slide2 -Type Pie -InputObject $rows -CategoryProperty Month -SeriesProperty Sales -Title 'Sales Mix' -X 40 -Y 120 -Width 320 -Height 220 -PassThru $pieChart | Should -Not -BeNullOrEmpty @($slide2.Charts).Count | Should -Be 1 - $slide3 = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 + $slide3 = Add-OfficePowerPointSlide -Presentation $presentation -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide3 -Title 'Scatter Chart' | Out-Null - $scatterChart = Add-OfficePowerPointChart -Slide $slide3 -Type Scatter -Data $rows -XProperty MonthNumber -YProperty Sales, Profit -Title 'Trend Scatter' -X 40 -Y 120 -Width 360 -Height 220 + $scatterChart = Add-OfficePowerPointChart -Slide $slide3 -Type Scatter -Data $rows -XProperty MonthNumber -YProperty Sales, Profit -Title 'Trend Scatter' -X 40 -Y 120 -Width 360 -Height 220 -PassThru $scatterChart | Should -Not -BeNullOrEmpty @($slide3.Charts).Count | Should -Be 1 @@ -1498,7 +1498,7 @@ Describe 'PowerPoint cmdlets' { $chart3Xml.OuterXml | Should -Match '.*?)^```\s*$') | ForEach-Object { + $prefix = $markdown.Substring(0, $_.Groups['code'].Index) + [pscustomobject]@{ + Text = $_.Groups['code'].Value + LineOffset = @($prefix -split '\r?\n').Count - 1 + } + } + ) + } + + foreach ($snippet in $snippets) { + $tokens = $null + $errors = $null + $ast = [System.Management.Automation.Language.Parser]::ParseInput($snippet.Text, [ref] $tokens, [ref] $errors) + if ($file.Extension -eq '.ps1') { + $errors | Should -BeNullOrEmpty + } + + foreach ($pipeline in $ast.FindAll({ + param($node) + $node -is [System.Management.Automation.Language.PipelineAst] + }, $true)) { + if ($pipeline.PipelineElements.Count -lt 2) { + continue + } + + $last = $pipeline.PipelineElements[-1] + if ($last -isnot [System.Management.Automation.Language.CommandAst] -or $last.GetCommandName() -ne 'Out-Null') { + continue + } + + $commandNames = @( + $pipeline.PipelineElements | + Where-Object { $_ -is [System.Management.Automation.Language.CommandAst] } | + ForEach-Object { $_.GetCommandName() } + ) + if ($commandNames | Where-Object { $_ -match 'Office' }) { + $line = $snippet.LineOffset + $pipeline.Extent.StartLineNumber + $offenders.Add(('{0}:{1}' -f $file.FullName, $line)) + } + } + } + } + + $offenders | Should -BeNullOrEmpty + } +} diff --git a/Tests/TabularInputContracts.Tests.ps1 b/Tests/TabularInputContracts.Tests.ps1 index b5e9760d..59854616 100644 --- a/Tests/TabularInputContracts.Tests.ps1 +++ b/Tests/TabularInputContracts.Tests.ps1 @@ -536,15 +536,15 @@ Describe 'Shared tabular input contracts' { } $powerPointPath = Join-Path $TestDrive 'Reader.pptx' - $presentation = New-OfficePowerPoint -FilePath $powerPointPath -NoSave + $presentation = New-OfficePowerPoint -Path $powerPointPath -NoSave try { - $slide = Add-OfficePowerPointSlide -Presentation $presentation + $slide = Add-OfficePowerPointSlide -Presentation $presentation -PassThru $reader = New-TestTabularContractReader try { $table = Add-OfficePowerPointTable -Slide $slide -InputObject $reader ` -CollectionSeparator ' | ' ` -DictionaryEntrySeparator '; ' ` - -DictionaryKeyValueSeparator ': ' + -DictionaryKeyValueSeparator ': ' -PassThru } finally { $reader.Dispose() } @@ -664,10 +664,10 @@ Describe 'Shared tabular input contracts' { } $powerPointPath = Join-Path $TestDrive 'ReadOnlyDictionary.pptx' - $presentation = New-OfficePowerPoint -FilePath $powerPointPath -NoSave + $presentation = New-OfficePowerPoint -Path $powerPointPath -NoSave try { - $slide = Add-OfficePowerPointSlide -Presentation $presentation - $table = Add-OfficePowerPointTable -Slide $slide -InputObject $row -CollectionSeparator ' | ' + $slide = Add-OfficePowerPointSlide -Presentation $presentation -PassThru + $table = Add-OfficePowerPointTable -Slide $slide -InputObject $row -CollectionSeparator ' | ' -PassThru $table.GetCell(0, 0).Text | Should -Be 'Name' $table.GetCell(1, 0).Text | Should -Be 'Alpha' $table.GetCell(1, 1).Text | Should -Be 'One | Two' diff --git a/Tests/Visio.Tests.ps1 b/Tests/Visio.Tests.ps1 index de99294a..b452d895 100644 --- a/Tests/Visio.Tests.ps1 +++ b/Tests/Visio.Tests.ps1 @@ -13,7 +13,7 @@ Describe 'Visio cmdlets' { It 'creates, loads, and inspects a Visio document' { $path = Join-Path $TestDrive 'diagram.vsdx' - $document = New-OfficeVisio -Path $path -Title 'Visio smoke' -Author 'PSWriteOffice' -PassThru + $document = New-OfficeVisio -Path $path -Title 'Visio smoke' -Author 'PSWriteOffice' -NoSave $document.Pages[0].AddRectangle(2, 2, 2, 1, 'Visio smoke') | Out-Null $document | Save-OfficeVisio -Path $path | Out-Null @@ -36,7 +36,7 @@ Describe 'Visio cmdlets' { $svgPath = Join-Path $TestDrive 'export.svg' $pngPath = Join-Path $TestDrive 'export.png' - $document = New-OfficeVisio -Path $path -PassThru + $document = New-OfficeVisio -Path $path -NoSave $document.Pages[0].AddRectangle(2, 2, 2, 1, 'SVG smoke') | Out-Null $document | Save-OfficeVisio -Path $path | Out-Null @@ -81,12 +81,12 @@ Describe 'Visio cmdlets' { It 'saves to the associated path without closing the Visio document' { $path = Join-Path $TestDrive 'associated-save.vsdx' - $document = New-OfficeVisio -Path $path -PassThru + $document = New-OfficeVisio -Path $path -NoSave $document.Pages[0].AddRectangle(2, 2, 2, 1, 'First save') | Out-Null - $savedFile = $document | Save-OfficeVisio - $savedFile | Should -BeOfType System.IO.FileInfo - $savedFile.FullName | Should -Be $path + $savedOutput = @($document | Save-OfficeVisio) + $savedOutput | Should -HaveCount 0 + Test-Path -LiteralPath $path | Should -BeTrue $document.Pages[0].AddRectangle(5, 2, 2, 1, 'Second save') | Out-Null $returned = $document | Save-OfficeVisio -PassThru @@ -346,7 +346,7 @@ Describe 'Visio cmdlets' { It 'arranges Visio shapes with OfficeIMO selection layout and layers' { $path = Join-Path $TestDrive 'visio-layout.vsdx' - $document = New-OfficeVisio -Path $path -PassThru + $document = New-OfficeVisio -Path $path -NoSave $page = $document.Pages[0] $shape1 = $page.AddRectangle(1, 4, 1, 0.5, 'One') $shape2 = $page.AddRectangle(3, 3, 1, 0.5, 'Two') @@ -367,7 +367,7 @@ Describe 'Visio cmdlets' { $ordered[1].PinX | Should -BeGreaterThan $ordered[0].PinX $ordered[2].PinX | Should -BeGreaterThan $ordered[1].PinX - $container = Add-OfficeVisioContainer -Page $page -ShapeId $shape1.Id, $shape2.Id, $shape3.Id -Id 'milestone-container' -Text 'Milestones' -Margin 0.2 -HeadingHeight 0.3 -FillColor '#E0F2FE' -LineColor '#0369A1' + $container = Add-OfficeVisioContainer -Page $page -ShapeId $shape1.Id, $shape2.Id, $shape3.Id -Id 'milestone-container' -Text 'Milestones' -Margin 0.2 -HeadingHeight 0.3 -FillColor '#E0F2FE' -LineColor '#0369A1' -PassThru $container.IsContainer | Should -BeTrue $container.ContainerMemberIds | Should -Contain $shape1.Id $shape1.ContainerOwnerIds | Should -Contain 'milestone-container' diff --git a/Tests/WordDsl.Tests.ps1 b/Tests/WordDsl.Tests.ps1 index 8ce3e5f0..22aaa2fa 100644 --- a/Tests/WordDsl.Tests.ps1 +++ b/Tests/WordDsl.Tests.ps1 @@ -256,10 +256,6 @@ Describe 'Word DSL surface' { } { Get-ZipEntriesLocal -Path $path } | Should -Throw - $autoSavePath = Join-Path $TestDrive 'EncryptedWordAutoSave.docx' - { New-OfficeWord -Path $autoSavePath -Password 'secret' -AutoSave -ErrorAction Stop } | - Should -Throw '*require explicit Save-OfficeWord*' - $document = Get-OfficeWord -Path $path -Password 'secret' -ReadOnly try { $document.Paragraphs.Text | Should -Contain 'Encrypted Word value' @@ -1129,7 +1125,7 @@ Describe 'Word DSL surface' { [PSCustomObject]@{ Month = 'Mar'; Sales = 15; Profit = 7 } ) - $document = New-OfficeWord -Path $path + $document = New-OfficeWord -Path $path -NoSave try { $chart = Add-OfficeWordChart -Document $document -Type Line -InputObject $rows -CategoryProperty Month -SeriesProperty Sales, Profit -Legend -XAxisTitle 'Month' -YAxisTitle 'Value' -Title 'Monthly Trend' -PassThru $chart.Title | Should -Be 'Monthly Trend' @@ -1473,7 +1469,7 @@ Describe 'Word DSL surface' { } } | Out-Null - $replacements = Update-OfficeWordText -Path $path -OldValue 'FY24' -NewValue 'FY25' -IncludeHyperlinkText -IncludeHyperlinkUri -IncludeHyperlinkAnchor -IncludeHyperlinkTooltip + $replacements = Update-OfficeWordText -Path $path -OldValue 'FY24' -NewValue 'FY25' -IncludeHyperlinkText -IncludeHyperlinkUri -IncludeHyperlinkAnchor -IncludeHyperlinkTooltip -PassThru $replacements | Should -BeGreaterThan 0 $document = Get-OfficeWord -Path $path -ReadOnly @@ -1509,7 +1505,7 @@ Describe 'Word DSL surface' { $editable.Dispose() } - $replacements = Update-OfficeWordText -Path $path -OldValue 'FY24' -NewValue 'FY25' -IncludeHyperlinkUri + $replacements = Update-OfficeWordText -Path $path -OldValue 'FY24' -NewValue 'FY25' -IncludeHyperlinkUri -PassThru $replacements | Should -Be 2 $document = Get-OfficeWord -Path $path -ReadOnly @@ -1523,12 +1519,12 @@ Describe 'Word DSL surface' { It 'does not mutate live Word documents when text update uses WhatIf' { $path = Join-Path $TestDrive 'DslReplaceLiveWhatIf.docx' - $document = New-OfficeWord -Path $path + $document = New-OfficeWord -Path $path -NoSave try { $document.AddParagraph('FY24 live document') | Out-Null - Update-OfficeWordText -Document $document -OldValue 'FY24' -NewValue 'FY25' -WhatIf | Should -BeNullOrEmpty + Update-OfficeWordText -Document $document -OldValue 'FY24' -NewValue 'FY25' -WhatIf -PassThru | Should -BeNullOrEmpty (Find-OfficeWord -Document $document -Text 'FY24').Count | Should -Be 1 (Find-OfficeWord -Document $document -Text 'FY25').Count | Should -Be 0 @@ -1539,12 +1535,12 @@ Describe 'Word DSL surface' { It 'does not mutate the tracked Word document when text update uses WhatIf' { $path = Join-Path $TestDrive 'DslReplaceTrackedWhatIf.docx' - $document = New-OfficeWord -Path $path + $document = New-OfficeWord -Path $path -NoSave try { $document.AddParagraph('FY24 tracked document') | Out-Null - Update-OfficeWordText -OldValue 'FY24' -NewValue 'FY25' -WhatIf | Should -BeNullOrEmpty + Update-OfficeWordText -OldValue 'FY24' -NewValue 'FY25' -WhatIf -PassThru | Should -BeNullOrEmpty (Find-OfficeWord -Document $document -Text 'FY24').Count | Should -Be 1 (Find-OfficeWord -Document $document -Text 'FY25').Count | Should -Be 0 @@ -1557,14 +1553,14 @@ Describe 'Word DSL surface' { $pathOne = Join-Path $TestDrive 'TrackedOne.docx' $pathTwo = Join-Path $TestDrive 'TrackedTwo.docx' - $docOne = New-OfficeWord -Path $pathOne - $docTwo = New-OfficeWord -Path $pathTwo + $docOne = New-OfficeWord -Path $pathOne -NoSave + $docTwo = New-OfficeWord -Path $pathTwo -NoSave try { $docOne.AddParagraph('First tracked document') | Out-Null $docTwo.AddParagraph('Second tracked FY24 document') | Out-Null - Update-OfficeWordText -OldValue 'FY24' -NewValue 'FY25' | Should -Be 1 + Update-OfficeWordText -OldValue 'FY24' -NewValue 'FY25' -PassThru | Should -Be 1 Close-OfficeWord -Save Close-OfficeWord -All -Save @@ -1595,7 +1591,7 @@ Describe 'Word DSL surface' { It 'does not fall back to the tracked document when -Document is null' { $path = Join-Path $TestDrive 'NullDocumentGuard.docx' - $doc = New-OfficeWord -Path $path + $doc = New-OfficeWord -Path $path -NoSave try { $nullDocument = $null diff --git a/Website/content/examples/compose-pdf-report.md b/Website/content/examples/compose-pdf-report.md index cb6a604c..5fd0cef4 100644 --- a/Website/content/examples/compose-pdf-report.md +++ b/Website/content/examples/compose-pdf-report.md @@ -14,8 +14,7 @@ It is adapted from `Examples/Pdf/Example-PdfReportDsl.ps1` and `Examples/Pdf/Exa Import-Module PSWriteOffice $outputDirectory = Join-Path $PSScriptRoot 'Output' -New-Item -ItemType Directory -Path $outputDirectory -Force | Out-Null - +$null = New-Item -ItemType Directory -Path $outputDirectory -Force $coverPath = Join-Path $outputDirectory 'Cover.pdf' $statusPath = Join-Path $outputDirectory 'Status.pdf' $finalPath = Join-Path $outputDirectory 'Combined.pdf' diff --git a/Website/content/examples/create-excel-workbook.md b/Website/content/examples/create-excel-workbook.md index 4e8b822f..bd7cc151 100644 --- a/Website/content/examples/create-excel-workbook.md +++ b/Website/content/examples/create-excel-workbook.md @@ -14,8 +14,7 @@ It is adapted from `Examples/Excel/Example-ExcelBasic.ps1`. Import-Module PSWriteOffice $outputPath = Join-Path $PSScriptRoot 'Output\RevenueSnapshot.xlsx' -New-Item -ItemType Directory -Path (Split-Path $outputPath) -Force | Out-Null - +$null = New-Item -ItemType Directory -Path (Split-Path $outputPath) -Force $data = @( [PSCustomObject]@{ Region = 'North America'; Revenue = 125000; YoY = 0.12 } [PSCustomObject]@{ Region = 'EMEA'; Revenue = 98000; YoY = 0.22 } diff --git a/Website/content/examples/create-powerpoint-deck.md b/Website/content/examples/create-powerpoint-deck.md index f5b3c4d0..c1cdd49e 100644 --- a/Website/content/examples/create-powerpoint-deck.md +++ b/Website/content/examples/create-powerpoint-deck.md @@ -14,8 +14,7 @@ It is adapted from `Examples/PowerPoint/Example-PowerPointTransitionsAndSizing.p Import-Module PSWriteOffice $outputPath = Join-Path $PSScriptRoot 'Output\ServiceBrief.pptx' -New-Item -ItemType Directory -Path (Split-Path $outputPath) -Force | Out-Null - +$null = New-Item -ItemType Directory -Path (Split-Path $outputPath) -Force $deck = New-OfficePowerPoint -Path $outputPath { PptSlide { PptTitle -Title 'Service Brief' diff --git a/Website/content/examples/create-visio-diagram.md b/Website/content/examples/create-visio-diagram.md index ff764f46..5e1c1934 100644 --- a/Website/content/examples/create-visio-diagram.md +++ b/Website/content/examples/create-visio-diagram.md @@ -14,14 +14,13 @@ It is adapted from `Examples/Visio/Example-Visio-StencilFlow.ps1`. Import-Module PSWriteOffice $outputDirectory = Join-Path $PSScriptRoot 'Output' -New-Item -ItemType Directory -Path $outputDirectory -Force | Out-Null - +$null = New-Item -ItemType Directory -Path $outputDirectory -Force $visioPath = Join-Path $outputDirectory 'OnboardingFlow.vsdx' $svgPath = Join-Path $outputDirectory 'OnboardingFlow.svg' $pngPath = Join-Path $outputDirectory 'OnboardingFlow.png' New-OfficeVisio -Path $visioPath -Title 'Customer onboarding flow' -UseMastersByDefault -RequestRecalcOnOpen { - Import-OfficeVisioStencil -BuiltIn Flowchart -Name Flow -Default | Out-Null + Import-OfficeVisioStencil -BuiltIn Flowchart -Name Flow -Default VisioStencil -Catalog Flow -Stencil process -Key intake -Text 'Intake' -X 1.5 -Y 4 VisioStencil -Catalog Flow -Stencil decision -Key review -Text 'Review?' -X 4 -Y 4 diff --git a/Website/content/examples/create-word-report.md b/Website/content/examples/create-word-report.md index 0d279105..c2eb3625 100644 --- a/Website/content/examples/create-word-report.md +++ b/Website/content/examples/create-word-report.md @@ -14,8 +14,7 @@ It is adapted from `Examples/Word/Example-WordBasic.ps1`. Import-Module PSWriteOffice $outputPath = Join-Path $PSScriptRoot 'Output\RevenueSnapshot.docx' -New-Item -ItemType Directory -Path (Split-Path $outputPath) -Force | Out-Null - +$null = New-Item -ItemType Directory -Path (Split-Path $outputPath) -Force $data = @( [PSCustomObject]@{ Region = 'North America'; Revenue = 125000; YoY = '12%' } [PSCustomObject]@{ Region = 'EMEA'; Revenue = 98000; YoY = '22%' } diff --git a/Website/content/examples/read-and-convert-documents.md b/Website/content/examples/read-and-convert-documents.md index 082f10de..1f140449 100644 --- a/Website/content/examples/read-and-convert-documents.md +++ b/Website/content/examples/read-and-convert-documents.md @@ -14,8 +14,7 @@ This page collects small patterns from the Reader, Markdown, CSV, Word conversio Import-Module PSWriteOffice $outputDirectory = Join-Path $PSScriptRoot 'Output' -New-Item -ItemType Directory -Path $outputDirectory -Force | Out-Null - +$null = New-Item -ItemType Directory -Path $outputDirectory -Force $markdownPath = Join-Path $outputDirectory 'Summary.md' $csvPath = Join-Path $outputDirectory 'Status.csv' $wordPath = Join-Path $outputDirectory 'Summary.docx' diff --git a/Website/content/examples/review-office-documents-as-html.md b/Website/content/examples/review-office-documents-as-html.md index 6097119f..dff3221b 100644 --- a/Website/content/examples/review-office-documents-as-html.md +++ b/Website/content/examples/review-office-documents-as-html.md @@ -12,8 +12,7 @@ Use HTML review output when a workbook or deck needs lightweight inspection with Import-Module PSWriteOffice $outputDirectory = Join-Path $PSScriptRoot 'Output' -New-Item -ItemType Directory -Path $outputDirectory -Force | Out-Null - +$null = New-Item -ItemType Directory -Path $outputDirectory -Force $workbookPath = Join-Path $outputDirectory 'ServiceReview.xlsx' $deckPath = Join-Path $outputDirectory 'ServiceReview.pptx' @@ -28,14 +27,14 @@ New-OfficeExcel -Path $workbookPath { Add-OfficeExcelTable -Data $rows -TableName 'Services' -TableStyle 'TableStyleMedium4' Set-OfficeExcelColumn -Column 1, 2, 3 -AutoFit } -} -PassThru | Out-Null - -$deck = New-OfficePowerPoint -FilePath $deckPath -$slide = Add-OfficePowerPointSlide -Presentation $deck -Layout 1 -Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Service Review' | Out-Null -Add-OfficePowerPointTextBox -Slide $slide -Text 'Review the service status before the weekly meeting.' -X 80 -Y 140 -Width 560 -Height 80 | Out-Null -Save-OfficePowerPoint -Presentation $deck -$deck.Dispose() +} + +$deck = New-OfficePowerPoint -Path $deckPath -NoSave +$slide = Add-OfficePowerPointSlide -Presentation $deck -Layout 1 -PassThru +Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Service Review' +Add-OfficePowerPointTextBox -Slide $slide -Text 'Review the service status before the weekly meeting.' -X 80 -Y 140 -Width 560 -Height 80 +$deck | Save-OfficePowerPoint +$deck | Close-OfficePowerPoint ConvertTo-OfficeExcelHtml -Path $workbookPath -OutputPath (Join-Path $outputDirectory 'ServiceReview.workbook.html') -Title 'Workbook Review' ConvertTo-OfficePowerPointHtml -Path $deckPath -Profile VisualReview -OutputPath (Join-Path $outputDirectory 'ServiceReview.deck.visual.html') -Title 'Deck Review' diff --git a/Website/content/project-docs/docs/command-families.md b/Website/content/project-docs/docs/command-families.md index 8cb2b827..783ad2e3 100644 --- a/Website/content/project-docs/docs/command-families.md +++ b/Website/content/project-docs/docs/command-families.md @@ -12,7 +12,7 @@ The PSWriteOffice website catalog groups every exported cmdlet into exactly one | --- | ---: | --- | | Excel | 158 | [Excel automation](/docs/pswriteoffice/excel/) | | Word | 92 | [Word automation](/docs/pswriteoffice/word/) | -| PDF | 85 | [PDF automation](/docs/pswriteoffice/pdf/) | +| PDF | 86 | [PDF automation](/docs/pswriteoffice/pdf/) | | PowerPoint | 58 | [PowerPoint automation](/docs/pswriteoffice/powerpoint/) | | Markdown | 25 | [Open and text formats](/docs/pswriteoffice/open-text-formats/) | | Visio | 23 | [Visio diagrams](/docs/pswriteoffice/visio/) | diff --git a/Website/content/project-docs/docs/excel-export-publish.md b/Website/content/project-docs/docs/excel-export-publish.md index 26438874..0af4addc 100644 --- a/Website/content/project-docs/docs/excel-export-publish.md +++ b/Website/content/project-docs/docs/excel-export-publish.md @@ -11,7 +11,7 @@ Excel often sits in the middle of a pipeline: CSV or application data arrives, a `Import-OfficeExcelDelimitedText` adds normalized CSV or other delimited data to an existing workbook. Specify the delimiter and culture rather than relying on machine defaults. ```powershell -Import-OfficeExcelDelimitedText -InputPath '.\Report.xlsx' ` +Import-OfficeExcelDelimitedText -Path '.\Report.xlsx' ` -SourcePath '.\Sales.csv' -Delimiter ';' ` -CultureName 'en-US' -SheetName Sales ``` diff --git a/Website/content/project-docs/docs/excel-merge-compare.md b/Website/content/project-docs/docs/excel-merge-compare.md index 98604e5d..c02929bf 100644 --- a/Website/content/project-docs/docs/excel-merge-compare.md +++ b/Website/content/project-docs/docs/excel-merge-compare.md @@ -9,7 +9,7 @@ Workbook consolidation and workbook comparison solve different problems. Joining ## Consolidate selected sheets ```powershell -Join-OfficeExcelWorkbook -InputPath '.\Consolidated.xlsx' ` +Join-OfficeExcelWorkbook -Path '.\Consolidated.xlsx' ` -SourcePath '.\Regions.xlsx' ` -SourceSheet North,South ` -SheetNamePrefix 'Region ' diff --git a/Website/content/project-docs/docs/install.md b/Website/content/project-docs/docs/install.md index 84e75b0f..62267dbe 100644 --- a/Website/content/project-docs/docs/install.md +++ b/Website/content/project-docs/docs/install.md @@ -31,8 +31,7 @@ Examples should write to a script-local or explicitly configured artifact direct ```powershell $outputRoot = Join-Path $PSScriptRoot 'Output' -New-Item -ItemType Directory -Path $outputRoot -Force | Out-Null - +$null = New-Item -ItemType Directory -Path $outputRoot -Force $wordPath = Join-Path $outputRoot 'Report.docx' $pdfPath = Join-Path $outputRoot 'Report.pdf' ``` diff --git a/Website/content/project-docs/docs/markdown-convert-publish.md b/Website/content/project-docs/docs/markdown-convert-publish.md index 23531fac..1f503cbf 100644 --- a/Website/content/project-docs/docs/markdown-convert-publish.md +++ b/Website/content/project-docs/docs/markdown-convert-publish.md @@ -11,7 +11,7 @@ Markdown is often the editable source while HTML is the delivery artifact. Keep `ConvertTo-OfficeMarkdownHtml` supports fragment or document output, visual themes, CSS delivery modes, anchor links, task lists, footnotes, external-link attributes, and explicit URL or image restrictions. ```powershell -ConvertTo-OfficeMarkdownHtml -InputPath '.\Runbook.md' ` +ConvertTo-OfficeMarkdownHtml -Path '.\Runbook.md' ` -OutputPath '.\Runbook.html' -DocumentMode ` -Title 'Operations runbook' -IncludeAnchorLinks ``` diff --git a/Website/content/project-docs/docs/markdown-read-parse.md b/Website/content/project-docs/docs/markdown-read-parse.md index ab985844..7ac8e9dc 100644 --- a/Website/content/project-docs/docs/markdown-read-parse.md +++ b/Website/content/project-docs/docs/markdown-read-parse.md @@ -9,10 +9,10 @@ Markdown is simple text, but structure-aware parsing is safer than ad hoc regula ## Inspect semantic structures ```powershell -$headings = Get-OfficeMarkdownHeading -InputPath '.\Article.md' -$frontMatter = Get-OfficeMarkdownFrontMatter -InputPath '.\Article.md' -$tables = Get-OfficeMarkdownTable -InputPath '.\Article.md' -AsObject -$nodes = Get-OfficeMarkdownNode -InputPath '.\Article.md' -MaxDepth 3 +$headings = Get-OfficeMarkdownHeading -Path '.\Article.md' +$frontMatter = Get-OfficeMarkdownFrontMatter -Path '.\Article.md' +$tables = Get-OfficeMarkdownTable -Path '.\Article.md' -AsObject +$nodes = Get-OfficeMarkdownNode -Path '.\Article.md' -MaxDepth 3 ``` Reader profiles and URL restrictions make parsing behavior explicit. Use heading level, text, anchor, node type, and depth filters to return only the structures the workflow needs. diff --git a/Website/content/project-docs/docs/overview.md b/Website/content/project-docs/docs/overview.md index df666a38..03494a2b 100644 --- a/Website/content/project-docs/docs/overview.md +++ b/Website/content/project-docs/docs/overview.md @@ -23,7 +23,7 @@ The module manifest is the source of truth for exported cmdlets and aliases. The - **Excel — 158 commands:** authoring, reading, charts, pivots, validation, comments, templates, comparison, repair, accessibility, streaming, visual placement, and image export. - **Word — 92 commands:** sections, paragraphs, lists, tables, fields, content controls, review, mail merge, protection, merging, visual placement, and conversion. -- **PDF — 85 commands:** composition, editable Word/Excel/PowerPoint reconstruction, text and image extraction, merge/split, pages, forms, annotations, attachments, signatures, compliance, redaction, optimization, visual placement, and diagnostics. +- **PDF — 86 commands:** composition, explicit Word/Excel/PowerPoint/Markdown/RTF export, editable Office reconstruction, text and image extraction, merge/split, pages, forms, annotations, attachments, signatures, compliance, redaction, optimization, visual placement, and diagnostics. - **PowerPoint — 58 commands:** slides, sections, shapes, charts, tables, notes, themes, layouts, transitions, visual placement, import, inspection, and HTML review. - **Confluence Cloud — 7 commands:** plan, create, update, and remove pages; preserve managed sections; and list, upload, or download attachments. - **Protection capabilities — 1 commands:** inspect OfficeIMO's shared protected-content support contract as typed rows, JSON, or Markdown. diff --git a/Website/content/project-docs/docs/powerpoint-read-inspect.md b/Website/content/project-docs/docs/powerpoint-read-inspect.md index 39a35bec..ddf2b568 100644 --- a/Website/content/project-docs/docs/powerpoint-read-inspect.md +++ b/Website/content/project-docs/docs/powerpoint-read-inspect.md @@ -9,7 +9,7 @@ Use the PowerPoint read surface to inventory a deck before modification, build a ## Inspect slide by slide ```powershell -$presentation = Get-OfficePowerPoint -FilePath '.\Briefing.pptx' +$presentation = Get-OfficePowerPoint -Path '.\Briefing.pptx' for ($index = 0; $index -lt $presentation.Slides.Count; $index++) { $slide = Get-OfficePowerPointSlide -Presentation $presentation -Index $index Get-OfficePowerPointSlideSummary -Slide $slide diff --git a/Website/content/project-docs/docs/powerpoint-reuse-slides.md b/Website/content/project-docs/docs/powerpoint-reuse-slides.md index 627f0d71..ddb5009f 100644 --- a/Website/content/project-docs/docs/powerpoint-reuse-slides.md +++ b/Website/content/project-docs/docs/powerpoint-reuse-slides.md @@ -32,7 +32,7 @@ PptNew -Path $targetPath { } } -$presentation = Get-OfficePowerPoint -FilePath $targetPath +$presentation = Get-OfficePowerPoint -Path $targetPath Import-OfficePowerPointSlide -Presentation $presentation ` -SourcePath $sourcePath -SourceIndex 0 -InsertAt 1 diff --git a/Website/content/project-docs/docs/powerpoint-update-existing.md b/Website/content/project-docs/docs/powerpoint-update-existing.md index 7cf2a4cd..fc6a6d02 100644 --- a/Website/content/project-docs/docs/powerpoint-update-existing.md +++ b/Website/content/project-docs/docs/powerpoint-update-existing.md @@ -11,7 +11,7 @@ Targeted updates are useful for recurring decks where the design should remain s Open the presentation, run `Update-OfficePowerPointText`, and close it with `-Save`. Use `-IncludeNotes` when the same term must change in speaker notes; table text is included by default and can be controlled explicitly. ```powershell -$deck = Get-OfficePowerPoint -FilePath '.\FY24-Review.pptx' +$deck = Get-OfficePowerPoint -Path '.\FY24-Review.pptx' Update-OfficePowerPointText -Presentation $deck ` -OldValue FY24 -NewValue FY25 -IncludeNotes Close-OfficePowerPoint -Presentation $deck -Save diff --git a/Website/content/project-docs/docs/word-merge-mailmerge.md b/Website/content/project-docs/docs/word-merge-mailmerge.md index 724753c1..4f1cae4b 100644 --- a/Website/content/project-docs/docs/word-merge-mailmerge.md +++ b/Website/content/project-docs/docs/word-merge-mailmerge.md @@ -10,7 +10,7 @@ Word has two distinct merge workflows. Document merge appends complete files int ```powershell Join-OfficeWordDocument ` - -InputPath '.\Cover.docx' ` + -Path '.\Cover.docx' ` -AppendPath '.\Report.docx','.\Appendix.docx' ` -OutputPath '.\Delivery-Pack.docx' ``` diff --git a/WebsiteArtifacts/apidocs/powershell/PSWriteOffice-help.xml b/WebsiteArtifacts/apidocs/powershell/PSWriteOffice-help.xml index d4b2e488..2943eb8c 100644 --- a/WebsiteArtifacts/apidocs/powershell/PSWriteOffice-help.xml +++ b/WebsiteArtifacts/apidocs/powershell/PSWriteOffice-help.xml @@ -27,6 +27,18 @@ None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Range @@ -66,6 +78,18 @@ None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Range @@ -129,6 +153,18 @@ None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Range @@ -7786,18 +7822,6 @@ Add-OfficeExcelPackageMetadata - - InputPath - - Workbook path to update. - - String - - String - - - None - Kind @@ -7826,6 +7850,18 @@ None + + Path + + Workbook path to update. + + String + + String + + + None + WorksheetName @@ -7932,18 +7968,6 @@ None - - InputPath - - Workbook path to update. - - String - - String - - - None - Kind @@ -7972,6 +7996,18 @@ None + + Path + + Workbook path to update. + + String + + String + + + None + WorksheetName @@ -8121,26 +8157,26 @@ None - - InputPath + + PassThru - Workbook path to update. + Emit page-break records after adding them. - String + SwitchParameter - String + SwitchParameter None - - PassThru + + Path - Emit page-break records after adding them. + Workbook path to update. - SwitchParameter + String - SwitchParameter + String None @@ -8283,26 +8319,26 @@ None - - InputPath + + PassThru - Workbook path to update. + Emit page-break records after adding them. - String + SwitchParameter - String + SwitchParameter None - - PassThru + + Path - Emit page-break records after adding them. + Workbook path to update. - SwitchParameter + String - SwitchParameter + String None @@ -10824,18 +10860,6 @@ None - - InputPath - - Workbook path to update. - - String - - String - - - None - Name @@ -10860,6 +10884,18 @@ None + + Path + + Workbook path to update. + + String + + String + + + None + QueryTableName @@ -11034,18 +11070,6 @@ None - - InputPath - - Workbook path to update. - - String - - String - - - None - Name @@ -11070,6 +11094,18 @@ None + + Path + + Workbook path to update. + + String + + String + + + None + QueryTableName @@ -11192,6 +11228,18 @@ None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Title @@ -11250,6 +11298,18 @@ None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Title @@ -11345,6 +11405,18 @@ None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + PerRow @@ -11384,6 +11456,18 @@ None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + PerRow @@ -11503,6 +11587,18 @@ None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Title @@ -11578,6 +11674,18 @@ None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Title @@ -11641,6 +11749,18 @@ Add-OfficeExcelReportParagraph + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Text @@ -11656,6 +11776,18 @@ + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Text @@ -11716,6 +11848,18 @@ Add-OfficeExcelReportSection + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Text @@ -11731,6 +11875,18 @@ + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Text @@ -12010,6 +12166,18 @@ Add-OfficeExcelReportSpacer + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Rows @@ -12025,6 +12193,18 @@ + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Rows @@ -12572,6 +12752,18 @@ Add-OfficeExcelReportTitle + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Subtitle @@ -12599,6 +12791,18 @@ + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Subtitle @@ -12983,18 +13187,6 @@ Add-OfficeExcelSlicer - - InputPath - - Workbook path to update. - - String - - String - - - None - Name @@ -13019,6 +13211,18 @@ None + + Path + + Workbook path to update. + + String + + String + + + None + PivotTableName @@ -13145,18 +13349,6 @@ None - - InputPath - - Workbook path to update. - - String - - String - - - None - Name @@ -13181,6 +13373,18 @@ None + + Path + + Workbook path to update. + + String + + String + + + None + PivotTableName @@ -15420,7 +15624,7 @@ Open - Open the workbook after saving when InputPath is used. + Open the workbook after saving when Path is used. SwitchParameter @@ -15540,18 +15744,6 @@ None - - InputPath - - Path to the workbook to update in place. - - String - - String - - - None - NoHyperlinks @@ -15579,7 +15771,7 @@ Open - Open the workbook after saving when InputPath is used. + Open the workbook after saving when Path is used. SwitchParameter @@ -15600,6 +15792,18 @@ None + + Path + + Path to the workbook to update in place. + + String + + String + + + None + SheetName @@ -15738,7 +15942,7 @@ Open - Open the workbook after saving when InputPath is used. + Open the workbook after saving when Path is used. SwitchParameter @@ -15870,18 +16074,6 @@ None - - InputPath - - Path to the workbook to update in place. - - String - - String - - - None - NoHyperlinks @@ -15909,7 +16101,7 @@ Open - Open the workbook after saving when InputPath is used. + Open the workbook after saving when Path is used. SwitchParameter @@ -15930,6 +16122,18 @@ None + + Path + + Path to the workbook to update in place. + + String + + String + + + None + SheetName @@ -16020,27 +16224,27 @@ and should close or save the workbook after all edits are complete. None - - InputPath + + PassThru - Workbook path to open, update, save, and close. + Emit the updated table wrapper for open document or table inputs. Path-owned workbooks are saved and closed by this command, +so they do not emit a live table wrapper. - String + SwitchParameter - String + SwitchParameter None - - PassThru + + Path - Emit the updated table wrapper for open document or table inputs. Path-owned workbooks are saved and closed by this command, -so they do not emit a live table wrapper. + Workbook path to open, update, save, and close. - SwitchParameter + String - SwitchParameter + String None @@ -16224,27 +16428,27 @@ so they do not emit a live table wrapper. None - - InputPath + + PassThru - Workbook path to open, update, save, and close. + Emit the updated table wrapper for open document or table inputs. Path-owned workbooks are saved and closed by this command, +so they do not emit a live table wrapper. - String + SwitchParameter - String + SwitchParameter None - - PassThru + + Path - Emit the updated table wrapper for open document or table inputs. Path-owned workbooks are saved and closed by this command, -so they do not emit a live table wrapper. + Workbook path to open, update, save, and close. - SwitchParameter + String - SwitchParameter + String None @@ -16531,18 +16735,6 @@ so they do not emit a live table wrapper. None - - InputPath - - Workbook path to update. - - String - - String - - - None - NoSave @@ -16579,6 +16771,18 @@ so they do not emit a live table wrapper. None + + Path + + Workbook path to update. + + String + + String + + + None + Sheet @@ -16825,18 +17029,6 @@ so they do not emit a live table wrapper. None - - InputPath - - Workbook path to update. - - String - - String - - - None - NoSave @@ -16873,6 +17065,18 @@ so they do not emit a live table wrapper. None + + Path + + Workbook path to update. + + String + + String + + + None + Sheet @@ -17024,18 +17228,6 @@ so they do not emit a live table wrapper. Add-OfficeExcelTimeline - - InputPath - - Workbook path to update. - - String - - String - - - None - Name @@ -17060,6 +17252,18 @@ so they do not emit a live table wrapper. None + + Path + + Workbook path to update. + + String + + String + + + None + PivotTableName @@ -17186,18 +17390,6 @@ so they do not emit a live table wrapper. None - - InputPath - - Workbook path to update. - - String - - String - - - None - Name @@ -17222,6 +17414,18 @@ so they do not emit a live table wrapper. None + + Path + + Workbook path to update. + + String + + String + + + None + PivotTableName @@ -21096,6 +21300,18 @@ so they do not emit a live table wrapper. None + + PassThru + + Emit the image added to the worksheet. + + SwitchParameter + + SwitchParameter + + + None + PointsPerPixel @@ -21308,6 +21524,18 @@ so they do not emit a live table wrapper. None + + PassThru + + Emit the image added to the worksheet. + + SwitchParameter + + SwitchParameter + + + None + PointsPerPixel @@ -25975,6 +26203,18 @@ This does not discover, bypass, or crack a missing password. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -26087,6 +26327,18 @@ This does not discover, bypass, or crack a missing password. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -26312,6 +26564,18 @@ page area from the supplied coordinates. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Strike @@ -26453,6 +26717,18 @@ page area from the supplied coordinates. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Run @@ -26649,6 +26925,18 @@ page area from the supplied coordinates. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Run @@ -28636,6 +28924,18 @@ page area from the supplied coordinates. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -28896,6 +29196,18 @@ page area from the supplied coordinates. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -30200,6 +30512,18 @@ This does not discover, bypass, or crack a missing password. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -30348,6 +30672,18 @@ This does not discover, bypass, or crack a missing password. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -30520,6 +30856,18 @@ This does not discover, bypass, or crack a missing password. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -34947,6 +35295,18 @@ URI links and bookmark links are supported; a single run cannot target both. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Slide @@ -35046,6 +35406,18 @@ URI links and bookmark links are supported; a single run cannot target both. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Slide @@ -35159,6 +35531,18 @@ URI links and bookmark links are supported; a single run cannot target both. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Slide @@ -35277,6 +35661,18 @@ URI links and bookmark links are supported; a single run cannot target both. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + SeriesProperty @@ -35395,6 +35791,18 @@ URI links and bookmark links are supported; a single run cannot target both. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Slide @@ -35537,6 +35945,18 @@ URI links and bookmark links are supported; a single run cannot target both. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + SeriesProperty @@ -36163,6 +36583,18 @@ URI links and bookmark links are supported; a single run cannot target both. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -36238,6 +36670,18 @@ URI links and bookmark links are supported; a single run cannot target both. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -37758,6 +38202,18 @@ URI links and bookmark links are supported; a single run cannot target both. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Presentation @@ -37797,6 +38253,18 @@ URI links and bookmark links are supported; a single run cannot target both. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Presentation @@ -37934,6 +38402,18 @@ URI links and bookmark links are supported; a single run cannot target both. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + ShapeType @@ -38057,6 +38537,18 @@ URI links and bookmark links are supported; a single run cannot target both. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + ShapeType @@ -38200,6 +38692,18 @@ URI links and bookmark links are supported; a single run cannot target both. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Presentation @@ -38263,6 +38767,18 @@ URI links and bookmark links are supported; a single run cannot target both. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Presentation @@ -38352,6 +38868,18 @@ URI links and bookmark links are supported; a single run cannot target both. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Presentation @@ -38477,6 +39005,18 @@ URI links and bookmark links are supported; a single run cannot target both. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Presentation @@ -38509,7 +39049,7 @@ URI links and bookmark links are supported; a single run cannot target both. PS> - $ppt = New-OfficePowerPoint -FilePath .\deck.pptx; Add-OfficePowerPointSlide -Presentation $ppt + $ppt = New-OfficePowerPoint -Path .\deck.pptx; Add-OfficePowerPointSlide -Presentation $ppt Creates a deck and appends a new slide at the end. @@ -38650,6 +39190,18 @@ URI links and bookmark links are supported; a single run cannot target both. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Slide @@ -38753,6 +39305,18 @@ URI links and bookmark links are supported; a single run cannot target both. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Rows @@ -38948,6 +39512,18 @@ URI links and bookmark links are supported; a single run cannot target both. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Rows @@ -39282,6 +39858,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Slide @@ -39357,6 +39945,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Run @@ -39432,6 +40032,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Run @@ -39635,6 +40247,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the picture added to the slide. + + SwitchParameter + + SwitchParameter + + + None + PointsPerPixel @@ -39811,6 +40435,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the picture added to the slide. + + SwitchParameter + + SwitchParameter + + + None + PointsPerPixel @@ -40089,6 +40725,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + To @@ -40266,6 +40914,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + ToShape @@ -40455,6 +41115,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + To @@ -40719,6 +41391,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + ShapeId @@ -40914,6 +41598,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + ShapeId @@ -41075,6 +41771,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Text @@ -41227,6 +41935,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Text @@ -41427,6 +42147,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Text @@ -41579,6 +42311,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Text @@ -41743,6 +42487,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Unit @@ -41823,6 +42579,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Unit @@ -42037,6 +42805,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Text @@ -42237,6 +43017,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Text @@ -42485,6 +43277,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + ShapeName @@ -42692,6 +43496,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + ShapeName @@ -42917,6 +43733,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + ShapeName @@ -43166,6 +43994,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + ShapeName @@ -43386,6 +44226,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Text @@ -43550,6 +44402,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Text @@ -46675,6 +47539,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Type @@ -46707,6 +47583,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Type @@ -46903,6 +47791,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Type @@ -46935,6 +47835,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Type @@ -47684,6 +48596,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Style @@ -47727,6 +48651,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Style @@ -47962,6 +48898,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + @@ -47977,6 +48925,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + @@ -50664,6 +51624,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + TableStyle @@ -50810,6 +51782,18 @@ table formatting, borders, and style choices are preserved. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + TableStyle @@ -52478,6 +53462,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + PassThru + + Emit the image added to the paragraph. + + SwitchParameter + + SwitchParameter + + + None + PointsPerPixel @@ -52651,6 +53647,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + PassThru + + Emit the image added to the paragraph. + + SwitchParameter + + SwitchParameter + + + None + PointsPerPixel @@ -53032,6 +54040,18 @@ cells. This keeps existing-document editing simple without forcing callers back Clear-OfficeExcelAutoFilter + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Clear-OfficeExcelAutoFilter @@ -53047,6 +54067,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Sheet @@ -53086,6 +54118,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Sheet @@ -53288,26 +54332,26 @@ cells. This keeps existing-document editing simple without forcing callers back None - - InputPath + + PassThru - Workbook path to update. + Returns the number of comments cleared. - String + SwitchParameter - String + SwitchParameter None - - PassThru + + Path - Returns the number of comments cleared. + Workbook path to update. - SwitchParameter + String - SwitchParameter + String None @@ -53522,26 +54566,26 @@ cells. This keeps existing-document editing simple without forcing callers back None - - InputPath + + PassThru - Workbook path to update. + Returns the number of comments cleared. - String + SwitchParameter - String + SwitchParameter None - - PassThru + + Path - Returns the number of comments cleared. + Workbook path to update. - SwitchParameter + String - SwitchParameter + String None @@ -53681,6 +54725,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Range @@ -53768,8 +54824,20 @@ cells. This keeps existing-document editing simple without forcing callers back None - - InputPath + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + + + Path Workbook path to update. @@ -53879,6 +54947,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Range @@ -53978,8 +55058,20 @@ cells. This keeps existing-document editing simple without forcing callers back None - - InputPath + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + + + Path Workbook path to update. @@ -54119,6 +55211,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Range @@ -54206,8 +55310,20 @@ cells. This keeps existing-document editing simple without forcing callers back None - - InputPath + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + + + Path Workbook path to update. @@ -54317,6 +55433,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Range @@ -54416,8 +55544,20 @@ cells. This keeps existing-document editing simple without forcing callers back None - - InputPath + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + + + Path Workbook path to update. @@ -54545,6 +55685,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Row @@ -54608,8 +55760,20 @@ cells. This keeps existing-document editing simple without forcing callers back None - - InputPath + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + + + Path Workbook path to update. @@ -54695,6 +55859,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Row @@ -54770,8 +55946,20 @@ cells. This keeps existing-document editing simple without forcing callers back None - - InputPath + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + + + Path Workbook path to update. @@ -54959,6 +56147,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Range @@ -55118,22 +56318,22 @@ cells. This keeps existing-document editing simple without forcing callers back None - - InputPath + + Merges - Workbook path to update. + Clear merged-cell definitions that overlap the selected range. - String + SwitchParameter - String + SwitchParameter None - Merges + PassThru - Clear merged-cell definitions that overlap the selected range. + Emit the object created or changed by the command. SwitchParameter @@ -55142,6 +56342,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + Path + + Workbook path to update. + + String + + String + + + None + Range @@ -55325,6 +56537,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Range @@ -55496,22 +56720,22 @@ cells. This keeps existing-document editing simple without forcing callers back None - - InputPath + + Merges - Workbook path to update. + Clear merged-cell definitions that overlap the selected range. - String + SwitchParameter - String + SwitchParameter None - Merges + PassThru - Clear merged-cell definitions that overlap the selected range. + Emit the object created or changed by the command. SwitchParameter @@ -55520,6 +56744,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + Path + + Workbook path to update. + + String + + String + + + None + Range @@ -55994,6 +57230,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + Open + + Open the workbook in Excel after saving. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -56054,18 +57302,6 @@ cells. This keeps existing-document editing simple without forcing callers back None - - Show - - Open the workbook in Excel after saving. - - SwitchParameter - - SwitchParameter - - - None - ValidateOpenXml @@ -56171,6 +57407,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + Open + + Open the workbook in Excel after saving. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -56231,18 +57479,6 @@ cells. This keeps existing-document editing simple without forcing callers back None - - Show - - Open the workbook in Excel after saving. - - SwitchParameter - - SwitchParameter - - - None - ValidateOpenXml @@ -56305,6 +57541,18 @@ cells. This keeps existing-document editing simple without forcing callers back Close-OfficePowerPoint + + Open + + Open the presentation in PowerPoint after saving. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -56341,21 +57589,21 @@ cells. This keeps existing-document editing simple without forcing callers back None - - Show - - Open the presentation in PowerPoint after saving. - - SwitchParameter - - SwitchParameter - - - None - + + Open + + Open the presentation in PowerPoint after saving. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -56392,18 +57640,6 @@ cells. This keeps existing-document editing simple without forcing callers back None - - Show - - Open the presentation in PowerPoint after saving. - - SwitchParameter - - SwitchParameter - - - None - @@ -56424,7 +57660,7 @@ cells. This keeps existing-document editing simple without forcing callers back PS> - $ppt = Get-OfficePowerPoint -FilePath .\deck.pptx; Close-OfficePowerPoint -Presentation $ppt + $ppt = Get-OfficePowerPoint -Path .\deck.pptx; Close-OfficePowerPoint -Presentation $ppt Releases the loaded presentation instance. @@ -56434,7 +57670,7 @@ cells. This keeps existing-document editing simple without forcing callers back PS> - Close-OfficePowerPoint -Presentation $ppt -Save -Show + Close-OfficePowerPoint -Presentation $ppt -Save -Open Saves the presentation, opens it in PowerPoint, and releases the object. @@ -56469,6 +57705,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + Open + + Open the file after saving. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -56505,18 +57753,6 @@ cells. This keeps existing-document editing simple without forcing callers back None - - Show - - Open the file after saving. - - SwitchParameter - - SwitchParameter - - - None - Close-OfficeWord @@ -56532,6 +57768,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + Open + + Open the file after saving. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -56568,18 +57816,6 @@ cells. This keeps existing-document editing simple without forcing callers back None - - Show - - Open the file after saving. - - SwitchParameter - - SwitchParameter - - - None - Close-OfficeWord @@ -56595,34 +57831,34 @@ cells. This keeps existing-document editing simple without forcing callers back None - - Password + + Open - Password used to save the document as an encrypted package. + Open the file after saving. - String + SwitchParameter - String + SwitchParameter None - Save + Password - Persist changes before closing. + Password used to save the document as an encrypted package. - SwitchParameter + String - SwitchParameter + String None - Show + Save - Open the file after saving. + Persist changes before closing. SwitchParameter @@ -56670,6 +57906,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + Open + + Open the file after saving. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -56706,18 +57954,6 @@ cells. This keeps existing-document editing simple without forcing callers back None - - Show - - Open the file after saving. - - SwitchParameter - - SwitchParameter - - - None - @@ -56758,7 +57994,7 @@ cells. This keeps existing-document editing simple without forcing callers back PS> - Close-OfficeWord -Document $doc -Save -Path .\Report-final.docx -Show + Close-OfficeWord -Document $doc -Save -Path .\Report-final.docx -Open Saves updates to Report-final.docx, opens it, and disposes the document. @@ -56793,18 +58029,6 @@ cells. This keeps existing-document editing simple without forcing callers back None - - InputPath - - Left workbook path. - - String - - String - - - None - LeftRange @@ -56841,6 +58065,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + Path + + Left workbook path. + + String + + String + + + None + RightPath @@ -57198,18 +58434,6 @@ cells. This keeps existing-document editing simple without forcing callers back None - - InputPath - - Left workbook path. - - String - - String - - - None - LeftRange @@ -57246,6 +58470,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + Path + + Left workbook path. + + String + + String + + + None + RightDocument @@ -57394,26 +58630,26 @@ cells. This keeps existing-document editing simple without forcing callers back None - - InputPath + + MaxDifferences - Workbook path. + Maximum number of differences to report. - String + Int32 - String + Int32 None - - MaxDifferences + + Path - Maximum number of differences to report. + Workbook path. - Int32 + String - Int32 + String None @@ -57640,26 +58876,26 @@ cells. This keeps existing-document editing simple without forcing callers back None - - InputPath + + MaxDifferences - Workbook path. + Maximum number of differences to report. - String + Int32 - String + Int32 None - - MaxDifferences + + Path - Maximum number of differences to report. + Workbook path. - Int32 + String - Int32 + String None @@ -60202,18 +61438,6 @@ cells. This keeps existing-document editing simple without forcing callers back None - - InputPath - - Path to an HTML file. - - String - - String - - - None - LineEnding @@ -60302,6 +61526,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + Path + + Path to an HTML file. + + String + + String + + + None + Portable @@ -60488,18 +61724,6 @@ cells. This keeps existing-document editing simple without forcing callers back None - - InputPath - - Path to an HTML file. - - String - - String - - - None - LineEnding @@ -60588,6 +61812,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + Path + + Path to an HTML file. + + String + + String + + + None + Portable @@ -61050,18 +62286,6 @@ cells. This keeps existing-document editing simple without forcing callers back None - - InputPath - - Path to an HTML file. - - String - - String - - - None - Open @@ -61110,6 +62334,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + Path + + Path to an HTML file. + + String + + String + + + None + Profile @@ -61191,18 +62427,6 @@ cells. This keeps existing-document editing simple without forcing callers back None - - InputPath - - Path to an HTML file. - - String - - String - - - None - Open @@ -61251,6 +62475,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + Path + + Path to an HTML file. + + String + + String + + + None + Profile @@ -62306,18 +63542,6 @@ cells. This keeps existing-document editing simple without forcing callers back None - - FilePath - - Path to an HTML file. - - String - - String - - - None - FontFamily @@ -62378,6 +63602,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + Path + + Path to an HTML file. + + String + + String + + + None + RenderPreAsTable @@ -62485,18 +63721,6 @@ cells. This keeps existing-document editing simple without forcing callers back None - - FilePath - - Path to an HTML file. - - String - - String - - - None - FontFamily @@ -62569,6 +63793,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + Path + + Path to an HTML file. + + String + + String + + + None + RenderPreAsTable @@ -63156,18 +64392,6 @@ cells. This keeps existing-document editing simple without forcing callers back None - - FilePath - - Path to a Markdown file. - - String - - String - - - None - FitImagesToContextWidth @@ -63318,6 +64542,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + Path + + Path to a Markdown file. + + String + + String + + + None + PreferNarrativeSingleLineDefinitions @@ -63862,18 +65098,6 @@ cells. This keeps existing-document editing simple without forcing callers back None - - FilePath - - Path to a Markdown file. - - String - - String - - - None - FitImagesToContextWidth @@ -64036,6 +65260,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + Path + + Path to a Markdown file. + + String + + String + + + None + PreferNarrativeSingleLineDefinitions @@ -66767,18 +68003,6 @@ cells. This keeps existing-document editing simple without forcing callers back None - - InputPath - - Path to the Markdown file. - - String - - String - - - None - MaxInputCharacters @@ -66833,6 +68057,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + Path + + Path to the Markdown file. + + String + + String + + + None + Profile @@ -68189,18 +69425,6 @@ cells. This keeps existing-document editing simple without forcing callers back None - - InputPath - - Path to the Markdown file. - - String - - String - - - None - MaxInputCharacters @@ -68255,6 +69479,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + Path + + Path to the Markdown file. + + String + + String + + + None + Profile @@ -73161,6 +74397,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + Open + + Open the PNG after saving. + + SwitchParameter + + SwitchParameter + + + None + OutputPath @@ -73209,18 +74457,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - - Show - - Open the PNG after saving. - - SwitchParameter - - SwitchParameter - - - None - Supersampling @@ -73356,6 +74592,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + Open + + Open the PNG after saving. + + SwitchParameter + + SwitchParameter + + + None + OutputPath @@ -73392,18 +74640,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - - Show - - Open the PNG after saving. - - SwitchParameter - - SwitchParameter - - - None - Supersampling @@ -73539,6 +74775,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + Open + + Open the PNG after saving. + + SwitchParameter + + SwitchParameter + + + None + OutputPath @@ -73587,18 +74835,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - - Show - - Open the PNG after saving. - - SwitchParameter - - SwitchParameter - - - None - Supersampling @@ -73755,6 +74991,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + Open + + Open the SVG after saving. + + SwitchParameter + + SwitchParameter + + + None + OutputPath @@ -73803,18 +75051,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - - Show - - Open the SVG after saving. - - SwitchParameter - - SwitchParameter - - - None - Transparent @@ -73914,6 +75150,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + Open + + Open the SVG after saving. + + SwitchParameter + + SwitchParameter + + + None + OutputPath @@ -73950,18 +75198,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - - Show - - Open the SVG after saving. - - SwitchParameter - - SwitchParameter - - - None - Transparent @@ -74061,6 +75297,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + Open + + Open the SVG after saving. + + SwitchParameter + + SwitchParameter + + + None + OutputPath @@ -74109,18 +75357,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - - Show - - Open the SVG after saving. - - SwitchParameter - - SwitchParameter - - - None - Transparent @@ -74982,18 +76218,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - - FilePath - - Path to a .docx file. - - String - - String - - - None - FontFamily @@ -75090,6 +76314,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + Path + + Path to a .docx file. + + String + + String + + + None + UseImagePaths @@ -75264,18 +76500,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - - FilePath - - Path to a .docx file. - - String - - String - - - None - FontFamily @@ -75372,6 +76596,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + Path + + Path to a .docx file. + + String + + String + + + None + UseImagePaths @@ -75472,18 +76708,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - - FilePath - - Path to a .docx file. - - String - - String - - - None - FontFamily @@ -75548,6 +76772,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + Path + + Path to a .docx file. + + String + + String + + + None + ConvertTo-OfficeWordMarkdown @@ -75690,18 +76926,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - - FilePath - - Path to a .docx file. - - String - - String - - - None - FontFamily @@ -75766,6 +76990,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + Path + + Path to a .docx file. + + String + + String + + + None + @@ -75858,6 +77094,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + SourceDocument @@ -75930,10 +77178,10 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - - InputPath + + NewName - Target workbook path to update. + Name for the copied worksheet. String @@ -75942,10 +77190,22 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - - NewName + + PassThru - Name for the copied worksheet. + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + + + Path + + Target workbook path to update. String @@ -76050,6 +77310,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + SourceDocument @@ -76134,10 +77406,10 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - - InputPath + + NewName - Target workbook path to update. + Name for the copied worksheet. String @@ -76146,10 +77418,22 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - - NewName + + PassThru - Name for the copied worksheet. + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + + + Path + + Target workbook path to update. String @@ -76289,18 +77573,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - - FilePath - - Source workbook or template package path. - - String - - String - - - None - Force @@ -76325,6 +77597,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + Path + + Source workbook or template package path. + + String + + String + + + None + @@ -76340,18 +77624,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - - FilePath - - Source workbook or template package path. - - String - - String - - - None - Force @@ -76376,6 +77648,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + Path + + Source workbook or template package path. + + String + + String + + + None + @@ -76463,6 +77747,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -76526,6 +77822,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -76627,6 +77935,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Presentation @@ -76666,6 +77986,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Presentation @@ -76732,18 +78064,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe Edit-OfficeExcelRow - - InputPath - - Workbook path to update. - - String - - String - - - None - NumericAsDecimal @@ -76768,6 +78088,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + Path + + Workbook path to update. + + String + + String + + + None + Range @@ -76918,18 +78250,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - - InputPath - - Workbook path to update. - - String - - String - - - None - NumericAsDecimal @@ -76954,6 +78274,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + Path + + Workbook path to update. + + String + + String + + + None + Range @@ -79602,6 +80934,431 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe + + + Export-OfficeDocumentPdf + Export + OfficeDocumentPdf + + Exports a Word, Excel, PowerPoint, Markdown, or RTF document to PDF. + + + + Accepts either a live OfficeIMO document from the pipeline or a supported source file. + + + + Export-OfficeDocumentPdf + + Document + + Live Word, Excel, PowerPoint, Markdown, or RTF document to export. + + Object + + Object + + + None + + + ExcelOptions + + Excel-specific PDF options. + + ExcelPdfSaveOptions + + ExcelPdfSaveOptions + + + None + + + MarkdownOptions + + Markdown-specific PDF options. + + MarkdownPdfSaveOptions + + MarkdownPdfSaveOptions + + + None + + + Open + + Open the PDF after exporting it. + + SwitchParameter + + SwitchParameter + + + None + + + PassThru + + Emit the saved PDF file. + + SwitchParameter + + SwitchParameter + + + None + + + Path + + Destination PDF path. + + String + + String + + + None + + + PowerPointOptions + + PowerPoint-specific PDF options. + + PowerPointPdfSaveOptions + + PowerPointPdfSaveOptions + + + None + + + RtfOptions + + RTF-specific PDF options. + + RtfPdfSaveOptions + + RtfPdfSaveOptions + + + None + + + WordOptions + + Word-specific PDF options. + + WordPdfSaveOptions + + WordPdfSaveOptions + + + None + + + + Export-OfficeDocumentPdf + + ExcelOptions + + Excel-specific PDF options. + + ExcelPdfSaveOptions + + ExcelPdfSaveOptions + + + None + + + InputPath + + Source .docx, .xlsx, .pptx, .md, .markdown, or .rtf file. + + String + + String + + + None + + + MarkdownOptions + + Markdown-specific PDF options. + + MarkdownPdfSaveOptions + + MarkdownPdfSaveOptions + + + None + + + Open + + Open the PDF after exporting it. + + SwitchParameter + + SwitchParameter + + + None + + + PassThru + + Emit the saved PDF file. + + SwitchParameter + + SwitchParameter + + + None + + + Password + + Password used to open an encrypted Word, Excel, or PowerPoint source file. + + String + + String + + + None + + + Path + + Destination PDF path. + + String + + String + + + None + + + PowerPointOptions + + PowerPoint-specific PDF options. + + PowerPointPdfSaveOptions + + PowerPointPdfSaveOptions + + + None + + + RtfOptions + + RTF-specific PDF options. + + RtfPdfSaveOptions + + RtfPdfSaveOptions + + + None + + + WordOptions + + Word-specific PDF options. + + WordPdfSaveOptions + + WordPdfSaveOptions + + + None + + + + + + Document + + Live Word, Excel, PowerPoint, Markdown, or RTF document to export. + + Object + + Object + + + None + + + ExcelOptions + + Excel-specific PDF options. + + ExcelPdfSaveOptions + + ExcelPdfSaveOptions + + + None + + + InputPath + + Source .docx, .xlsx, .pptx, .md, .markdown, or .rtf file. + + String + + String + + + None + + + MarkdownOptions + + Markdown-specific PDF options. + + MarkdownPdfSaveOptions + + MarkdownPdfSaveOptions + + + None + + + Open + + Open the PDF after exporting it. + + SwitchParameter + + SwitchParameter + + + None + + + PassThru + + Emit the saved PDF file. + + SwitchParameter + + SwitchParameter + + + None + + + Password + + Password used to open an encrypted Word, Excel, or PowerPoint source file. + + String + + String + + + None + + + Path + + Destination PDF path. + + String + + String + + + None + + + PowerPointOptions + + PowerPoint-specific PDF options. + + PowerPointPdfSaveOptions + + PowerPointPdfSaveOptions + + + None + + + RtfOptions + + RTF-specific PDF options. + + RtfPdfSaveOptions + + RtfPdfSaveOptions + + + None + + + WordOptions + + Word-specific PDF options. + + WordPdfSaveOptions + + WordPdfSaveOptions + + + None + + + + + + System.Object + + + + + + + System.IO.FileInfo + + + + + + + + + + + Export a live Word document. + + PS> + + $document | Export-OfficeDocumentPdf -Path .\Report.pdf + + + + + + Export a supported file without opening it explicitly. + + PS> + + Export-OfficeDocumentPdf -InputPath .\Report.docx -Path .\Report.pdf -PassThru + + + + + + + Export-OfficeExcel @@ -86089,6 +87846,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + Open + + Open the generated VSDX after saving. + + SwitchParameter + + SwitchParameter + + + None + PageName @@ -86137,18 +87906,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - - Show - - Open the generated VSDX after saving. - - SwitchParameter - - SwitchParameter - - - None - UseNaturalPageSize @@ -86224,6 +87981,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + Open + + Open the generated VSDX after saving. + + SwitchParameter + + SwitchParameter + + + None + PageName @@ -86272,18 +88041,6 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - - Show - - Open the generated VSDX after saving. - - SwitchParameter - - SwitchParameter - - - None - UseNaturalPageSize @@ -86903,8 +88660,8 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - - InputPath + + Path Workbook path to inspect. @@ -87113,8 +88870,8 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - - InputPath + + Path Workbook path to inspect. @@ -88085,8 +89842,8 @@ the target shape without reading text content. None - - InputPath + + Path Path to the .docx file. @@ -88136,8 +89893,8 @@ the target shape without reading text content. None - - InputPath + + Path Path to the .docx file. @@ -88289,8 +90046,8 @@ the target shape without reading text content. None - - InputPath + + Path Path to the .docx file. @@ -88410,8 +90167,8 @@ returned list objects can be piped directly to Add-OfficeWordListItem. None - - InputPath + + Path Path to the document to open read-only for searching. @@ -88449,8 +90206,8 @@ returned list objects can be piped directly to Add-OfficeWordListItem. None - - InputPath + + Path Path to the document to open read-only for searching. @@ -88656,8 +90413,8 @@ returned list objects can be piped directly to Add-OfficeWordListItem. None - - InputPath + + Path Path to the document to open read-only for searching. @@ -88804,8 +90561,8 @@ expressions. None - - InputPath + + Path Path to the document to open read-only for searching. @@ -88855,8 +90612,8 @@ expressions. None - - InputPath + + Path Path to the document to open read-only for searching. @@ -89020,8 +90777,8 @@ expressions. None - - InputPath + + Path Path to the document to open read-only for searching. @@ -98675,24 +100432,24 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Password - Path to the workbook to load. + Password used to open an encrypted workbook package. - String + String String None - - Password + + Path - Password used to open an encrypted workbook package. + Path to the workbook to load. - String + String String @@ -98801,24 +100558,24 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Password - Path to the workbook to load. + Password used to open an encrypted workbook package. - String + String String None - - Password + + Path - Password used to open an encrypted workbook package. + Path to the workbook to load. - String + String String @@ -98991,8 +100748,8 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Path Workbook path to inspect. @@ -99177,8 +100934,8 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Path Workbook path to inspect. @@ -99300,8 +101057,8 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Path Workbook path. @@ -99366,8 +101123,8 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Path Workbook path. @@ -99552,8 +101309,8 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Path Workbook path to inspect. @@ -99762,8 +101519,8 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Path Workbook path to inspect. @@ -100062,8 +101819,8 @@ extraction, hashing, and chunk shaping. Get-OfficeExcelDataModel - - InputPath + + Path Workbook path. @@ -100104,8 +101861,8 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Path Workbook path. @@ -100291,8 +102048,8 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Path Workbook path to inspect. @@ -100501,8 +102258,8 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Path Workbook path to inspect. @@ -100647,26 +102404,26 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Name - Path to the workbook. + Property name filter (wildcards supported). - String + String[] - String + String[] None - - Name + + Path - Property name filter (wildcards supported). + Path to the workbook. - String[] + String - String[] + String None @@ -100785,26 +102542,26 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Name - Path to the workbook. + Property name filter (wildcards supported). - String + String[] - String + String[] None - - Name + + Path - Property name filter (wildcards supported). + Path to the workbook. - String[] + String - String[] + String None @@ -100875,8 +102632,8 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Path Workbook path. @@ -100941,8 +102698,8 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Path Workbook path. @@ -101005,24 +102762,24 @@ extraction, hashing, and chunk shaping. Get-OfficeExcelNamedRange - - InputPath + + Name - Path to the workbook. + Optional named range to retrieve. - String + String String None - - Name + + Path - Optional named range to retrieve. + Path to the workbook. - String + String String @@ -101194,24 +102951,24 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Name - Path to the workbook. + Optional named range to retrieve. - String + String String None - - Name + + Path - Optional named range to retrieve. + Path to the workbook. - String + String String @@ -101464,8 +103221,8 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Path Workbook path to inspect. @@ -101602,8 +103359,8 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Path Workbook path to inspect. @@ -101701,24 +103458,24 @@ extraction, hashing, and chunk shaping. Get-OfficeExcelPivotTable - - InputPath + + Name - Path to the workbook. + Optional pivot table name filter. - String + String String None - - Name + + Path - Optional pivot table name filter. + Path to the workbook. - String + String String @@ -101815,24 +103572,24 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Name - Path to the workbook. + Optional pivot table name filter. - String + String String None - - Name + + Path - Optional pivot table name filter. + Path to the workbook. - String + String String @@ -101972,8 +103729,8 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Path Path to the workbook. @@ -102152,8 +103909,8 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Path Path to the workbook. @@ -102268,26 +104025,26 @@ extraction, hashing, and chunk shaping. None - - InputPath + + NumericAsDecimal - Path to the workbook. + Prefer decimals instead of doubles for numeric values. - String + SwitchParameter - String + SwitchParameter None - - NumericAsDecimal + + Path - Prefer decimals instead of doubles for numeric values. + Path to the workbook. - SwitchParameter + String - SwitchParameter + String None @@ -102601,26 +104358,26 @@ extraction, hashing, and chunk shaping. None - - InputPath + + NumericAsDecimal - Path to the workbook. + Prefer decimals instead of doubles for numeric values. - String + SwitchParameter - String + SwitchParameter None - - NumericAsDecimal + + Path - Prefer decimals instead of doubles for numeric values. + Path to the workbook. - SwitchParameter + String - SwitchParameter + String None @@ -102822,8 +104579,8 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Path Workbook path to inspect. @@ -102984,8 +104741,8 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Path Workbook path to inspect. @@ -103129,8 +104886,8 @@ extraction, hashing, and chunk shaping. Get-OfficeExcelStreamingContract - - InputPath + + Path Workbook path. @@ -103171,8 +104928,8 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Path Workbook path. @@ -103261,8 +105018,8 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Path Path to the workbook. @@ -103351,8 +105108,8 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Path Path to the workbook. @@ -103416,24 +105173,24 @@ extraction, hashing, and chunk shaping. Get-OfficeExcelTable - - InputPath + + Name - Path to the workbook. + Optional table name filter. - String + String String None - - Name + + Path - Optional table name filter. + Path to the workbook. - String + String String @@ -103605,24 +105362,24 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Name - Path to the workbook. + Optional table name filter. - String + String String None - - Name + + Path - Optional table name filter. + Path to the workbook. - String + String String @@ -103872,26 +105629,26 @@ extraction, hashing, and chunk shaping. Get-OfficeExcelTemplateMarker - - InputPath + + MissingOnly - Workbook path to inspect. + Only returns markers that are not supplied by -Value. - String + SwitchParameter - String + SwitchParameter None - - MissingOnly + + Path - Only returns markers that are not supplied by -Value. + Workbook path to inspect. - SwitchParameter + String - SwitchParameter + String None @@ -104010,26 +105767,26 @@ extraction, hashing, and chunk shaping. None - - InputPath + + MissingOnly - Workbook path to inspect. + Only returns markers that are not supplied by -Value. - String + SwitchParameter - String + SwitchParameter None - - MissingOnly + + Path - Only returns markers that are not supplied by -Value. + Workbook path to inspect. - SwitchParameter + String - SwitchParameter + String None @@ -104155,26 +105912,26 @@ extraction, hashing, and chunk shaping. None - - InputPath + + NumericAsDecimal - Path to the workbook. + Prefer decimals instead of doubles for numeric values. - String + SwitchParameter - String + SwitchParameter None - - NumericAsDecimal + + Path - Prefer decimals instead of doubles for numeric values. + Path to the workbook. - SwitchParameter + String - SwitchParameter + String None @@ -104452,26 +106209,26 @@ extraction, hashing, and chunk shaping. None - - InputPath + + NumericAsDecimal - Path to the workbook. + Prefer decimals instead of doubles for numeric values. - String + SwitchParameter - String + SwitchParameter None - - NumericAsDecimal + + Path - Prefer decimals instead of doubles for numeric values. + Path to the workbook. - SwitchParameter + String - SwitchParameter + String None @@ -104601,8 +106358,8 @@ extraction, hashing, and chunk shaping. Get-OfficeExcelWorksheetView - - InputPath + + Path Workbook path to inspect. @@ -104691,8 +106448,8 @@ extraction, hashing, and chunk shaping. None - - InputPath + + Path Workbook path to inspect. @@ -105135,18 +106892,6 @@ extraction, hashing, and chunk shaping. None - - InputPath - - Path to the Markdown file. - - String - - String - - - None - MaxInputCharacters @@ -105189,6 +106934,18 @@ extraction, hashing, and chunk shaping. None + + Path + + Path to the Markdown file. + + String + + String + + + None + Profile @@ -105453,18 +107210,6 @@ extraction, hashing, and chunk shaping. None - - InputPath - - Path to the Markdown file. - - String - - String - - - None - MaxInputCharacters @@ -105507,6 +107252,18 @@ extraction, hashing, and chunk shaping. None + + Path + + Path to the Markdown file. + + String + + String + + + None + Profile @@ -105692,18 +107449,6 @@ extraction, hashing, and chunk shaping. None - - InputPath - - Path to the Markdown file. - - String - - String - - - None - Key @@ -105758,6 +107503,18 @@ extraction, hashing, and chunk shaping. None + + Path + + Path to the Markdown file. + + String + + String + + + None + Profile @@ -106253,18 +108010,6 @@ extraction, hashing, and chunk shaping. None - - InputPath - - Path to the Markdown file. - - String - - String - - - None - Key @@ -106319,6 +108064,18 @@ extraction, hashing, and chunk shaping. None + + Path + + Path to the Markdown file. + + String + + String + + + None + Profile @@ -106533,18 +108290,6 @@ extraction, hashing, and chunk shaping. None - - InputPath - - Path to the Markdown file. - - String - - String - - - None - MaxInputCharacters @@ -106611,6 +108356,18 @@ extraction, hashing, and chunk shaping. None + + Path + + Path to the Markdown file. + + String + + String + + + None + Profile @@ -107202,18 +108959,6 @@ extraction, hashing, and chunk shaping. None - - InputPath - - Path to the Markdown file. - - String - - String - - - None - MaxInputCharacters @@ -107280,6 +109025,18 @@ extraction, hashing, and chunk shaping. None + + Path + + Path to the Markdown file. + + String + + String + + + None + Profile @@ -107465,18 +109222,6 @@ extraction, hashing, and chunk shaping. None - - InputPath - - Path to the Markdown file. - - String - - String - - - None - MaxDepth @@ -107543,6 +109288,18 @@ extraction, hashing, and chunk shaping. None + + Path + + Path to the Markdown file. + + String + + String + + + None + Profile @@ -108098,18 +109855,6 @@ extraction, hashing, and chunk shaping. None - - InputPath - - Path to the Markdown file. - - String - - String - - - None - MaxDepth @@ -108176,6 +109921,18 @@ extraction, hashing, and chunk shaping. None + + Path + + Path to the Markdown file. + + String + + String + + + None + Profile @@ -108378,18 +110135,6 @@ extraction, hashing, and chunk shaping. None - - InputPath - - Path to the Markdown file. - - String - - String - - - None - MaxInputCharacters @@ -108432,6 +110177,18 @@ extraction, hashing, and chunk shaping. None + + Path + + Path to the Markdown file. + + String + + String + + + None + Profile @@ -108903,18 +110660,6 @@ extraction, hashing, and chunk shaping. None - - InputPath - - Path to the Markdown file. - - String - - String - - - None - MaxInputCharacters @@ -108957,6 +110702,18 @@ extraction, hashing, and chunk shaping. None + + Path + + Path to the Markdown file. + + String + + String + + + None + Profile @@ -112706,24 +114463,24 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification Get-OfficePowerPoint - - FilePath + + Password - Path to the .pptx file. + Password used to open an encrypted presentation package. - String + String String None - - Password + + Path - Password used to open an encrypted presentation package. + Path to the .pptx file. - String + String String @@ -112733,24 +114490,24 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification - - FilePath + + Password - Path to the .pptx file. + Password used to open an encrypted presentation package. - String + String String None - - Password + + Path - Password used to open an encrypted presentation package. + Path to the .pptx file. - String + String String @@ -112777,7 +114534,7 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification PS> - $ppt = Get-OfficePowerPoint -FilePath .\Quarterly.pptx + $ppt = Get-OfficePowerPoint -Path .\Quarterly.pptx Reads Quarterly.pptx and exposes the presentation object. @@ -113856,7 +115613,7 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification PS> - $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointSectionsRead.pptx + $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSectionsRead.pptx Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null Add-OfficePowerPointSection -Presentation $ppt -Name 'Appendix' -StartSlideIndex 0 | Out-Null Get-OfficePowerPointSection -Presentation $ppt | Select-Object Name, FirstSlideIndex, SlideCount @@ -114488,7 +116245,7 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification PS> - $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointThemeRead.pptx + $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointThemeRead.pptx Set-OfficePowerPointThemeName -Presentation $ppt -Name 'Service Brief' Set-OfficePowerPointThemeFonts -Presentation $ppt -MajorLatin 'Aptos Display' -MinorLatin 'Aptos' Get-OfficePowerPointTheme -Presentation $ppt | Select-Object Name, Master @@ -115637,24 +117394,24 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification None - - InputPath + + Password - Path to the .docx. Accepts PS paths. + Password used to open an encrypted document package. - String + String String None - - Password + + Path - Password used to open an encrypted document package. + Path to the .docx. Accepts PS paths. - String + String String @@ -115700,24 +117457,24 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification None - - InputPath + + Password - Path to the .docx. Accepts PS paths. + Password used to open an encrypted document package. - String + String String None - - Password + + Path - Password used to open an encrypted document package. + Path to the .docx. Accepts PS paths. - String + String String @@ -115789,26 +117546,26 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification Get-OfficeWordBookmark - - InputPath + + Name - Path to the .docx file. + Bookmark name filter (wildcards supported). - String + String[] - String + String[] None - - Name + + Path - Bookmark name filter (wildcards supported). + Path to the .docx file. - String[] + String - String[] + String None @@ -115855,26 +117612,26 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification None - - InputPath + + Name - Path to the .docx file. + Bookmark name filter (wildcards supported). - String + String[] - String + String[] None - - Name + + Path - Bookmark name filter (wildcards supported). + Path to the .docx file. - String[] + String - String[] + String None @@ -115955,8 +117712,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification None - - InputPath + + Path Path to the .docx file. @@ -116093,8 +117850,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification None - - InputPath + + Path Path to the .docx file. @@ -116193,8 +117950,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification None - - InputPath + + Path Path to the .docx file. @@ -116283,8 +118040,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification None - - InputPath + + Path Path to the .docx file. @@ -116371,8 +118128,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification None - - InputPath + + Path Path to the .docx file. @@ -116485,8 +118242,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification None - - InputPath + + Path Path to the .docx file. @@ -116585,8 +118342,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification None - - InputPath + + Path Path to the .docx file. @@ -116675,8 +118432,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification None - - InputPath + + Path Path to the .docx file. @@ -116775,26 +118532,26 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification None - - InputPath + + Name - Path to the document. + Property name filter (wildcards supported). - String + String[] - String + String[] None - - Name + + Path - Property name filter (wildcards supported). + Path to the document. - String[] + String - String[] + String None @@ -116889,26 +118646,26 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification None - - InputPath + + Name - Path to the document. + Property name filter (wildcards supported). - String + String[] - String + String[] None - - Name + + Path - Property name filter (wildcards supported). + Path to the document. - String[] + String - String[] + String None @@ -116980,8 +118737,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification None - - InputPath + + Path Path to the .docx file. @@ -117070,8 +118827,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification None - - InputPath + + Path Path to the .docx file. @@ -117146,8 +118903,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification Get-OfficeWordEndnote - - InputPath + + Path Path to the document. @@ -117203,8 +118960,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification None - - InputPath + + Path Path to the document. @@ -117398,8 +119155,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification None - - InputPath + + Path Path to the .docx file. @@ -117662,8 +119419,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification None - - InputPath + + Path Path to the .docx file. @@ -117726,8 +119483,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification Get-OfficeWordFootnote - - InputPath + + Path Path to the document. @@ -117783,8 +119540,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification None - - InputPath + + Path Path to the document. @@ -117879,8 +119636,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification None - - InputPath + + Path Path to the document. @@ -118095,26 +119852,26 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification None - - InputPath + + Paragraph - Path to the document. + Paragraph to inspect. - String + WordParagraph - String + WordParagraph None - - Paragraph + + Path - Paragraph to inspect. + Path to the document. - WordParagraph + String - WordParagraph + String None @@ -118217,8 +119974,8 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification Get-OfficeWordImage - - InputPath + + Path Path to the document. @@ -118289,26 +120046,26 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification None - - InputPath + + Paragraph - Path to the document. + Paragraph to inspect. - String + WordParagraph - String + WordParagraph None - - Paragraph + + Path - Paragraph to inspect. + Path to the document. - WordParagraph + String - WordParagraph + String None @@ -118401,8 +120158,8 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath + + Path Path to the document to open read-only for list inspection. @@ -118494,8 +120251,8 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath + + Path Path to the document to open read-only for list inspection. @@ -118588,8 +120345,8 @@ the script needs to work with list objects directly instead of using a text sear Get-OfficeWordParagraph - - InputPath + + Path Path to the document. @@ -118645,8 +120402,8 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath + + Path Path to the document. @@ -118739,8 +120496,8 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath + + Path Path to the .docx file. @@ -118829,8 +120586,8 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath + + Path Path to the .docx file. @@ -118917,8 +120674,8 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath + + Path Path to the .docx file. @@ -119007,8 +120764,8 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath + + Path Path to the .docx file. @@ -119198,8 +120955,8 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath + + Path Path to the document. @@ -119264,8 +121021,8 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath + + Path Path to the document. @@ -119328,8 +121085,8 @@ the script needs to work with list objects directly instead of using a text sear Get-OfficeWordShape - - InputPath + + Path Path to the document. @@ -119400,26 +121157,26 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath + + Paragraph - Path to the document. + Paragraph to inspect. - String + WordParagraph - String + WordParagraph None - - Paragraph + + Path - Paragraph to inspect. + Path to the document. - WordParagraph + String - WordParagraph + String None @@ -119498,8 +121255,8 @@ the script needs to work with list objects directly instead of using a text sear Get-OfficeWordStatistics - - InputPath + + Path Path to the Word document. @@ -119540,8 +121297,8 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath + + Path Path to the Word document. @@ -119619,8 +121376,8 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath + + Path Path to the document. @@ -119712,8 +121469,8 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath + + Path Path to the document. @@ -119921,8 +121678,8 @@ the script needs to work with list objects directly instead of using a text sear Get-OfficeWordTableOfContents - - InputPath + + Path Path to the .docx file. @@ -119963,8 +121720,8 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath + + Path Path to the .docx file. @@ -120074,8 +121831,8 @@ the script needs to work with list objects directly instead of using a text sear Get-OfficeWordText - - InputPath + + Path Path to the document. @@ -120101,26 +121858,26 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath + + Paragraph - Path to the document. + Paragraph to enumerate. - String + WordParagraph - String + WordParagraph None - - Paragraph + + Path - Paragraph to enumerate. + Path to the document. - WordParagraph + String - WordParagraph + String None @@ -124909,18 +126666,6 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath - - Workbook path. - - String - - String - - - None - NoHeader @@ -124969,6 +126714,18 @@ the script needs to work with list objects directly instead of using a text sear None + + Path + + Workbook path. + + String + + String + + + None + SheetName @@ -125167,18 +126924,6 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath - - Workbook path. - - String - - String - - - None - NoHeader @@ -125227,6 +126972,18 @@ the script needs to work with list objects directly instead of using a text sear None + + Path + + Workbook path. + + String + + String + + + None + SheetName @@ -127373,18 +129130,6 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath - - Workbook path to update. - - String - - String - - - None - MissingValueBehavior @@ -127414,6 +129159,18 @@ the script needs to work with list objects directly instead of using a text sear None + + Path + + Workbook path to update. + + String + + String + + + None + Sheet @@ -127593,18 +129350,6 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath - - Workbook path to update. - - String - - String - - - None - MissingValueBehavior @@ -127634,6 +129379,18 @@ the script needs to work with list objects directly instead of using a text sear None + + Path + + Workbook path to update. + + String + + String + + + None + Sheet @@ -127883,18 +129640,6 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath - - Workbook path to update. - - String - - String - - - None - MissingValueBehavior @@ -127924,6 +129669,18 @@ the script needs to work with list objects directly instead of using a text sear None + + Path + + Workbook path to update. + + String + + String + + + None + Remove @@ -128175,18 +129932,6 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath - - Workbook path to update. - - String - - String - - - None - MissingValueBehavior @@ -128216,6 +129961,18 @@ the script needs to work with list objects directly instead of using a text sear None + + Path + + Workbook path to update. + + String + + String + + + None + Remove @@ -128465,18 +130222,6 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath - - Workbook path to update. - - String - - String - - - None - MissingValueBehavior @@ -128506,6 +130251,18 @@ the script needs to work with list objects directly instead of using a text sear None + + Path + + Workbook path to update. + + String + + String + + + None + Sheet @@ -128709,18 +130466,6 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath - - Workbook path to update. - - String - - String - - - None - MissingValueBehavior @@ -128750,6 +130495,18 @@ the script needs to work with list objects directly instead of using a text sear None + + Path + + Workbook path to update. + + String + + String + + + None + Sheet @@ -128956,18 +130713,6 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath - - Workbook path to update. - - String - - String - - - None - Item @@ -129009,6 +130754,18 @@ the script needs to work with list objects directly instead of using a text sear None + + Path + + Workbook path to update. + + String + + String + + + None + SheetNameProperty @@ -129176,18 +130933,6 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath - - Workbook path to update. - - String - - String - - - None - Item @@ -129229,6 +130974,18 @@ the script needs to work with list objects directly instead of using a text sear None + + Path + + Workbook path to update. + + String + + String + + + None + SheetNameProperty @@ -129850,18 +131607,6 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath - - Target workbook path to update. - - String - - String - - - None - MatchColumnsByHeader @@ -129898,6 +131643,18 @@ the script needs to work with list objects directly instead of using a text sear None + + Path + + Target workbook path to update. + + String + + String + + + None + SourceDocument @@ -130228,18 +131985,6 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath - - Target workbook path to update. - - String - - String - - - None - MatchColumnsByHeader @@ -130276,6 +132021,18 @@ the script needs to work with list objects directly instead of using a text sear None + + Path + + Target workbook path to update. + + String + + String + + + None + SourceDocument @@ -130451,8 +132208,8 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath + + Path Target workbook path to create or update. @@ -130655,8 +132412,8 @@ the script needs to work with list objects directly instead of using a text sear None - - InputPath + + Path Target workbook path to create or update. @@ -131210,14 +132967,14 @@ This does not discover, bypass, or crack a missing password. None - - InputPath + + Open - Base document path. + Open the saved output with the shell. - String + SwitchParameter - String + SwitchParameter None @@ -131246,14 +133003,14 @@ This does not discover, bypass, or crack a missing password. None - - Show + + Path - Open the saved output with the shell. + Base document path. - SwitchParameter + String - SwitchParameter + String None @@ -131285,34 +133042,34 @@ This does not discover, bypass, or crack a missing password. None - - OutputPath + + Open - Optional output path. When omitted for path input, the base document is updated in place. + Open the saved output with the shell. - String + SwitchParameter - String + SwitchParameter None - PassThru + OutputPath - Emit the merged Word document instead of disposing it. + Optional output path. When omitted for path input, the base document is updated in place. - SwitchParameter + String - SwitchParameter + String None - Show + PassThru - Open the saved output with the shell. + Emit the merged Word document instead of disposing it. SwitchParameter @@ -131348,14 +133105,14 @@ This does not discover, bypass, or crack a missing password. None - - InputPath + + Open - Base document path. + Open the saved output with the shell. - String + SwitchParameter - String + SwitchParameter None @@ -131384,14 +133141,14 @@ This does not discover, bypass, or crack a missing password. None - - Show + + Path - Open the saved output with the shell. + Base document path. - SwitchParameter + String - SwitchParameter + String None @@ -131525,26 +133282,26 @@ This does not discover, bypass, or crack a missing password. None - - InputPath + + PassThru - Workbook path to update. + Emit the moved worksheet. - String + SwitchParameter - String + SwitchParameter None - - PassThru + + Path - Emit the moved worksheet. + Workbook path to update. - SwitchParameter + String - SwitchParameter + String None @@ -131663,26 +133420,26 @@ This does not discover, bypass, or crack a missing password. None - - InputPath + + PassThru - Workbook path to update. + Emit the moved worksheet. - String + SwitchParameter - String + SwitchParameter None - - PassThru + + Path - Emit the moved worksheet. + Workbook path to update. - SwitchParameter + String - SwitchParameter + String None @@ -131808,6 +133565,18 @@ This does not discover, bypass, or crack a missing password. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -131883,6 +133652,18 @@ This does not discover, bypass, or crack a missing password. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -132557,18 +134338,6 @@ This does not discover, bypass, or crack a missing password. None - - AutoSave - - Opt into OfficeIMO automatic saves during operations. - - SwitchParameter - - SwitchParameter - - - None - Category @@ -132683,18 +134452,6 @@ This does not discover, bypass, or crack a missing password. None - - FilePath - - Destination path for the workbook. - - String - - String - - - None - ForceFullCalculationOnOpen @@ -132803,12 +134560,12 @@ This does not discover, bypass, or crack a missing password. None - - PdfPath + + Path - Optional PDF path to create from the same workbook before closing it. + Destination path for the workbook. - String + String String @@ -132902,18 +134659,6 @@ This does not discover, bypass, or crack a missing password. None - - AutoSave - - Opt into OfficeIMO automatic saves during operations. - - SwitchParameter - - SwitchParameter - - - None - Category @@ -133028,18 +134773,6 @@ This does not discover, bypass, or crack a missing password. None - - FilePath - - Destination path for the workbook. - - String - - String - - - None - ForceFullCalculationOnOpen @@ -133148,12 +134881,12 @@ This does not discover, bypass, or crack a missing password. None - - PdfPath + + Path - Optional PDF path to create from the same workbook before closing it. + Destination path for the workbook. - String + String String @@ -133532,18 +135265,6 @@ This does not discover, bypass, or crack a missing password. None - - InputPath - - Workbook path to update. - - String - - String - - - None - NoAutoFilter @@ -133592,6 +135313,18 @@ This does not discover, bypass, or crack a missing password. None + + Path + + Workbook path to update. + + String + + String + + + None + Sheet @@ -133994,18 +135727,6 @@ This does not discover, bypass, or crack a missing password. None - - InputPath - - Workbook path to update. - - String - - String - - - None - NoAutoFilter @@ -134054,6 +135775,18 @@ This does not discover, bypass, or crack a missing password. None + + Path + + Workbook path to update. + + String + + String + + + None + Sheet @@ -134240,18 +135973,6 @@ This does not discover, bypass, or crack a missing password. None - - MarkdownPdfOptions - - Advanced Markdown PDF options. Friendly PDF parameters override matching values. - - MarkdownPdfSaveOptions - - MarkdownPdfSaveOptions - - - None - NoSave @@ -134264,18 +135985,6 @@ This does not discover, bypass, or crack a missing password. None - - OutputPath - - Destination path for the Markdown file. - - String - - String - - - None - PassThru @@ -134288,289 +135997,12 @@ This does not discover, bypass, or crack a missing password. None - - PdfApplyWordLikeTheme - - Apply the built-in Word-like Markdown PDF baseline theme. - - Boolean - - Boolean - - - None - - - PdfAuthor - - PDF author metadata. - - String - - String - - - None - - - PdfBaseDirectory - - Base directory used to resolve local Markdown images during PDF export. - - String - - String - - - None - - - PdfConversionReportVariable - - Variable name that receives the Markdown PDF conversion report. - - String - - String - - - None - - - PdfCreateOutlineFromHeadings - - Create PDF outlines from Markdown headings. - - Boolean - - Boolean - - - None - - - PdfDefaultImageHeight - - Fallback PDF image height in points. - - Double - - Double - - - None - - - PdfDefaultImageWidth - - Fallback PDF image width in points. - - Double - - Double - - - None - - - PdfFontFamily - - Default font family used by Markdown PDF export. - - String - - String - - - None - - - PdfFrontMatterRenderMode - - Controls how YAML front matter appears in the PDF body. - - MarkdownPdfFrontMatterRenderMode - - Hidden - DocumentHeader - Table - - - MarkdownPdfFrontMatterRenderMode - - - None - - - PdfIncludeDataUriImages - - Embed supported data URI images in Markdown PDF output. - - Boolean - - Boolean - - - None - - - PdfIncludeLocalImages - - Embed supported local image files in Markdown PDF output. - - Boolean - - Boolean - - - None - - - PdfKeywords - - PDF keywords metadata. - - String - - String - - - None - - - PdfMaximumDataUriImageBytes - - Maximum decoded bytes for one data URI image in Markdown PDF output. - - Int32 - - Int32 - - - None - - - PdfOptions - - Underlying OfficeIMO.Pdf options used by Markdown PDF export. - - PdfOptions - - PdfOptions - - - None - - - PdfPath - - Optional PDF path to create from the same Markdown document. - - String - - String - - - None - - - PdfRestrictLocalImagesToBaseDirectory - - Require local images to resolve under the base directory. - - Boolean - - Boolean - - - None - - - PdfSubject - - PDF subject metadata. - - String - - String - - - None - - - PdfTheme - - Built-in Markdown PDF visual theme. - - OfficeVisualThemeKind - - Plain - WordLike - TechnicalDocument - GitHubLike - Compact - Report - - - OfficeVisualThemeKind - - - None - - - PdfTitle - - PDF title metadata. - - String - - String - - - None - - - PdfUseFirstHeadingAsTitle - - Use the first Markdown heading as the PDF title when no title is supplied. - - Boolean - - Boolean - - - None - - - PdfUseFrontMatterMetadata - - Use front matter values as PDF metadata. - - Boolean - - Boolean - - - None - - - PdfUseFrontMatterVisualTheme - - Use front matter values to select a visual theme. - - Boolean - - Boolean - - - None - - - PdfWarningVariable + + Path - Variable name that receives Markdown PDF export warnings. + Destination path for the Markdown file. - String + String String @@ -134662,18 +136094,6 @@ This does not discover, bypass, or crack a missing password. None - - MarkdownPdfOptions - - Advanced Markdown PDF options. Friendly PDF parameters override matching values. - - MarkdownPdfSaveOptions - - MarkdownPdfSaveOptions - - - None - NoSave @@ -134686,18 +136106,6 @@ This does not discover, bypass, or crack a missing password. None - - OutputPath - - Destination path for the Markdown file. - - String - - String - - - None - PassThru @@ -134710,289 +136118,12 @@ This does not discover, bypass, or crack a missing password. None - - PdfApplyWordLikeTheme - - Apply the built-in Word-like Markdown PDF baseline theme. - - Boolean - - Boolean - - - None - - - PdfAuthor - - PDF author metadata. - - String - - String - - - None - - - PdfBaseDirectory - - Base directory used to resolve local Markdown images during PDF export. - - String - - String - - - None - - - PdfConversionReportVariable - - Variable name that receives the Markdown PDF conversion report. - - String - - String - - - None - - - PdfCreateOutlineFromHeadings - - Create PDF outlines from Markdown headings. - - Boolean - - Boolean - - - None - - - PdfDefaultImageHeight - - Fallback PDF image height in points. - - Double - - Double - - - None - - - PdfDefaultImageWidth - - Fallback PDF image width in points. - - Double - - Double - - - None - - - PdfFontFamily - - Default font family used by Markdown PDF export. - - String - - String - - - None - - - PdfFrontMatterRenderMode - - Controls how YAML front matter appears in the PDF body. - - MarkdownPdfFrontMatterRenderMode - - Hidden - DocumentHeader - Table - - - MarkdownPdfFrontMatterRenderMode - - - None - - - PdfIncludeDataUriImages - - Embed supported data URI images in Markdown PDF output. - - Boolean - - Boolean - - - None - - - PdfIncludeLocalImages - - Embed supported local image files in Markdown PDF output. - - Boolean - - Boolean - - - None - - - PdfKeywords - - PDF keywords metadata. - - String - - String - - - None - - - PdfMaximumDataUriImageBytes - - Maximum decoded bytes for one data URI image in Markdown PDF output. - - Int32 - - Int32 - - - None - - - PdfOptions - - Underlying OfficeIMO.Pdf options used by Markdown PDF export. - - PdfOptions - - PdfOptions - - - None - - - PdfPath - - Optional PDF path to create from the same Markdown document. - - String - - String - - - None - - - PdfRestrictLocalImagesToBaseDirectory - - Require local images to resolve under the base directory. - - Boolean - - Boolean - - - None - - - PdfSubject - - PDF subject metadata. - - String - - String - - - None - - - PdfTheme - - Built-in Markdown PDF visual theme. - - OfficeVisualThemeKind - - Plain - WordLike - TechnicalDocument - GitHubLike - Compact - Report - - - OfficeVisualThemeKind - - - None - - - PdfTitle - - PDF title metadata. - - String - - String - - - None - - - PdfUseFirstHeadingAsTitle - - Use the first Markdown heading as the PDF title when no title is supplied. - - Boolean - - Boolean - - - None - - - PdfUseFrontMatterMetadata - - Use front matter values as PDF metadata. - - Boolean - - Boolean - - - None - - - PdfUseFrontMatterVisualTheme - - Use front matter values to select a visual theme. - - Boolean - - Boolean - - - None - - - PdfWarningVariable + + Path - Variable name that receives Markdown PDF export warnings. + Destination path for the Markdown file. - String + String String @@ -135126,6 +136257,18 @@ This does not discover, bypass, or crack a missing password. None + + PassThru + + Emit the saved file when a destination path is supplied. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -135158,6 +136301,18 @@ This does not discover, bypass, or crack a missing password. None + + PassThru + + Emit the saved file when a destination path is supplied. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -135184,6 +136339,11 @@ This does not discover, bypass, or crack a missing password. OfficeIMO.OpenDocument.OdfDocument + + + System.IO.FileInfo + + @@ -135456,6 +136616,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + Open + + Open the PDF after saving. + + SwitchParameter + + SwitchParameter + + + None + OpenActionMode @@ -135638,18 +136810,6 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Show - - Open the PDF after saving. - - SwitchParameter - - SwitchParameter - - - None - Theme @@ -135908,6 +137068,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + Open + + Open the PDF after saving. + + SwitchParameter + + SwitchParameter + + + None + OpenActionMode @@ -136078,18 +137250,6 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Show - - Open the PDF after saving. - - SwitchParameter - - SwitchParameter - - - None - Theme @@ -136348,6 +137508,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + Open + + Open the PDF after saving. + + SwitchParameter + + SwitchParameter + + + None + OpenActionMode @@ -136530,18 +137702,6 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Show - - Open the PDF after saving. - - SwitchParameter - - SwitchParameter - - - None - Theme @@ -136591,7 +137751,7 @@ Use -NoSave or omit -Path when a document object should be returned for further PS> - New-OfficePdf -Path .\Report.pdf { PdfHeading 'Report'; PdfParagraph 'Generated by PSWriteOffice' } -Show + New-OfficePdf -Path .\Report.pdf { PdfHeading 'Report'; PdfParagraph 'Generated by PSWriteOffice' } -Open Builds a PDF and opens it after saving. @@ -138242,18 +139402,6 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - FilePath - - Destination path for the new .pptx. - - String - - String - - - None - NoSave @@ -138281,7 +139429,7 @@ Use -NoSave or omit -Path when a document object should be returned for further PassThru - Emit a FileInfo for chaining. + Emit the saved FileInfo for chaining. SwitchParameter @@ -138302,12 +139450,12 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - PdfPath + + Path - Optional PDF path to create from the same presentation before closing it. + Destination path for the new .pptx. - String + String String @@ -138329,18 +139477,6 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - FilePath - - Destination path for the new .pptx. - - String - - String - - - None - NoSave @@ -138368,7 +139504,7 @@ Use -NoSave or omit -Path when a document object should be returned for further PassThru - Emit a FileInfo for chaining. + Emit the saved FileInfo for chaining. SwitchParameter @@ -138389,12 +139525,12 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - PdfPath + + Path - Optional PDF path to create from the same presentation before closing it. + Destination path for the new .pptx. - String + String String @@ -138421,9 +139557,9 @@ Use -NoSave or omit -Path when a document object should be returned for further PS> - $ppt = New-OfficePowerPoint -FilePath .\deck.pptx + $ppt = New-OfficePowerPoint -Path .\deck.pptx -NoSave - Creates deck.pptx and returns the live presentation object for further editing. + Creates a live presentation associated with deck.pptx for incremental composition. @@ -138552,26 +139688,26 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - OutputPath + + PassThru - Destination path for the RTF file. + Emit a FileInfo for chaining. - String + SwitchParameter - String + SwitchParameter None - - PassThru + + Path - Emit a FileInfo for chaining. + Destination path for the RTF file. - SwitchParameter + String - SwitchParameter + String None @@ -138603,26 +139739,26 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - OutputPath + + PassThru - Destination path for the RTF file. + Emit a FileInfo for chaining. - String + SwitchParameter - String + SwitchParameter None - - PassThru + + Path - Emit a FileInfo for chaining. + Destination path for the RTF file. - SwitchParameter + String - SwitchParameter + String None @@ -139202,6 +140338,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + Open + + Open the document after saving. + + SwitchParameter + + SwitchParameter + + + None + PageName @@ -139250,18 +140398,6 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Show - - Open the document after saving. - - SwitchParameter - - SwitchParameter - - - None - Title @@ -139366,6 +140502,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + Open + + Open the document after saving. + + SwitchParameter + + SwitchParameter + + + None + PageName @@ -139414,18 +140562,6 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Show - - Open the document after saving. - - SwitchParameter - - SwitchParameter - - - None - Title @@ -139662,18 +140798,6 @@ Use -NoSave or omit -Path when a document object should be returned for further New-OfficeWord - - AutoSave - - Enable OfficeIMO AutoSave mode. - - SwitchParameter - - SwitchParameter - - - None - Content @@ -139710,18 +140834,6 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - OutputPath - - Destination path for the document. - - String - - String - - - None - PassThru @@ -139746,36 +140858,12 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - PdfAllowSystemFontEmbedding - - Allow the native Word PDF converter to embed installed system fonts used by the document. - - SwitchParameter - - SwitchParameter - - - None - - - PdfFontFamily - - Optional default font family used by the native Word PDF converter. - - String - - String - - - None - - - PdfPath + + Path - Optional PDF path to create from the same Word document before closing it. + Destination path for the document. - String + String String @@ -139797,18 +140885,6 @@ Use -NoSave or omit -Path when a document object should be returned for further - - AutoSave - - Enable OfficeIMO AutoSave mode. - - SwitchParameter - - SwitchParameter - - - None - Content @@ -139845,18 +140921,6 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - OutputPath - - Destination path for the document. - - String - - String - - - None - PassThru @@ -139881,36 +140945,12 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - PdfAllowSystemFontEmbedding - - Allow the native Word PDF converter to embed installed system fonts used by the document. - - SwitchParameter - - SwitchParameter - - - None - - - PdfFontFamily - - Optional default font family used by the native Word PDF converter. - - String - - String - - - None - - - PdfPath + + Path - Optional PDF path to create from the same Word document before closing it. + Destination path for the document. - String + String String @@ -141188,18 +142228,6 @@ Use -NoSave or omit -Path when a document object should be returned for further Protect-OfficeExcelWorkbook - - InputPath - - Workbook path to update. - - String - - String - - - None - LegacyPasswordHash @@ -141248,6 +142276,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + Path + + Workbook path to update. + + String + + String + + + None + ProtectWindows @@ -141350,18 +142390,6 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - InputPath - - Workbook path to update. - - String - - String - - - None - LegacyPasswordHash @@ -141410,6 +142438,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + Path + + Workbook path to update. + + String + + String + + + None + ProtectWindows @@ -142133,6 +143173,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + PassThru + + Return the completed delete plan after a live operation. + + SwitchParameter + + SwitchParameter + + + None + PlanOnly @@ -142196,6 +143248,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + PassThru + + Return the completed delete plan after a live operation. + + SwitchParameter + + SwitchParameter + + + None + PlanOnly @@ -142877,6 +143941,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + PassThruReport @@ -142988,6 +144064,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + PassThruReport @@ -143123,6 +144211,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -143186,6 +144286,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -143275,6 +144387,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Presentation @@ -143302,6 +144426,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Presentation @@ -143334,7 +144470,7 @@ Use -NoSave or omit -Path when a document object should be returned for further PS> - $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointRemoveSlide.pptx + $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRemoveSlide.pptx Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null Remove-OfficePowerPointSlide -Presentation $ppt -Index 0 -Confirm:$false @@ -143956,7 +145092,7 @@ Use -NoSave or omit -Path when a document object should be returned for further PS> - $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointRenameSection.pptx + $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRenameSection.pptx Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null Add-OfficePowerPointSection -Presentation $ppt -Name 'Results' -StartSlideIndex 0 | Out-Null Rename-OfficePowerPointSection -Presentation $ppt -Name 'Results' -NewName 'Deep Dive' -PassThru @@ -143982,18 +145118,6 @@ Use -NoSave or omit -Path when a document object should be returned for further Repair-OfficeExcelWorkbook - - InputPath - - Workbook path to repair. - - String - - String - - - None - NoSave @@ -144018,6 +145142,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + Path + + Workbook path to repair. + + String + + String + + + None + SkipCalculation @@ -144216,18 +145352,6 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - InputPath - - Workbook path to repair. - - String - - String - - - None - NoSave @@ -144252,6 +145376,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + Path + + Workbook path to repair. + + String + + String + + + None + SkipCalculation @@ -144802,6 +145938,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -144862,6 +146010,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -144944,6 +146104,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -144983,6 +146155,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -145131,10 +146315,10 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - PassThru + + Open - Emit the workbook for further processing. + Open the workbook after saving. SwitchParameter @@ -145144,21 +146328,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Password + PassThru - Password used to save the workbook as an encrypted package. + Emit the workbook for further processing. - String + SwitchParameter - String + SwitchParameter None - Path + Password - Optional save-as path. + Password used to save the workbook as an encrypted package. String @@ -145168,9 +146352,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - PdfPath + Path - Optional PDF path to create from the same workbook. + Optional save-as path. String @@ -145203,18 +146387,6 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Show - - Open the workbook after saving. - - SwitchParameter - - SwitchParameter - - - None - ValidateOpenXml @@ -145320,6 +146492,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + Open + + Open the workbook after saving. + + SwitchParameter + + SwitchParameter + + + None + PassThru @@ -145356,18 +146540,6 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - PdfPath - - Optional PDF path to create from the same workbook. - - String - - String - - - None - SafePreflight @@ -145392,18 +146564,6 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Show - - Open the workbook after saving. - - SwitchParameter - - SwitchParameter - - - None - ValidateOpenXml @@ -145601,11 +146761,11 @@ Use -NoSave or omit -Path when a document object should be returned for further Save OfficeMarkdown - Saves a Markdown document and optionally creates a PDF sidecar. + Saves a Markdown document without changing its lifetime. - Saves a Markdown document and optionally creates a PDF sidecar. + Saves a Markdown document without changing its lifetime. @@ -145651,18 +146811,6 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - MarkdownPdfOptions - - Advanced Markdown PDF options. Friendly PDF parameters override matching values. - - MarkdownPdfSaveOptions - - MarkdownPdfSaveOptions - - - None - PassThru @@ -145675,301 +146823,12 @@ Use -NoSave or omit -Path when a document object should be returned for further None - + Path Destination Markdown path. - String - - String - - - None - - - PdfApplyWordLikeTheme - - Apply the built-in Word-like Markdown PDF baseline theme. - - Boolean - - Boolean - - - None - - - PdfAuthor - - PDF author metadata. - - String - - String - - - None - - - PdfBaseDirectory - - Base directory used to resolve local Markdown images during PDF export. - - String - - String - - - None - - - PdfConversionReportVariable - - Variable name that receives the Markdown PDF conversion report. - - String - - String - - - None - - - PdfCreateOutlineFromHeadings - - Create PDF outlines from Markdown headings. - - Boolean - - Boolean - - - None - - - PdfDefaultImageHeight - - Fallback PDF image height in points. - - Double - - Double - - - None - - - PdfDefaultImageWidth - - Fallback PDF image width in points. - - Double - - Double - - - None - - - PdfFontFamily - - Default font family used by Markdown PDF export. - - String - - String - - - None - - - PdfFrontMatterRenderMode - - Controls how YAML front matter appears in the PDF body. - - MarkdownPdfFrontMatterRenderMode - - Hidden - DocumentHeader - Table - - - MarkdownPdfFrontMatterRenderMode - - - None - - - PdfIncludeDataUriImages - - Embed supported data URI images in Markdown PDF output. - - Boolean - - Boolean - - - None - - - PdfIncludeLocalImages - - Embed supported local image files in Markdown PDF output. - - Boolean - - Boolean - - - None - - - PdfKeywords - - PDF keywords metadata. - - String - - String - - - None - - - PdfMaximumDataUriImageBytes - - Maximum decoded bytes for one data URI image in Markdown PDF output. - - Int32 - - Int32 - - - None - - - PdfOptions - - Underlying OfficeIMO.Pdf options used by Markdown PDF export. - - PdfOptions - - PdfOptions - - - None - - - PdfPath - - Optional PDF path to create from the same Markdown document. - - String - - String - - - None - - - PdfRestrictLocalImagesToBaseDirectory - - Require local images to resolve under the base directory. - - Boolean - - Boolean - - - None - - - PdfSubject - - PDF subject metadata. - - String - - String - - - None - - - PdfTheme - - Built-in Markdown PDF visual theme. - - OfficeVisualThemeKind - - Plain - WordLike - TechnicalDocument - GitHubLike - Compact - Report - - - OfficeVisualThemeKind - - - None - - - PdfTitle - - PDF title metadata. - - String - - String - - - None - - - PdfUseFirstHeadingAsTitle - - Use the first Markdown heading as the PDF title when no title is supplied. - - Boolean - - Boolean - - - None - - - PdfUseFrontMatterMetadata - - Use front matter values as PDF metadata. - - Boolean - - Boolean - - - None - - - PdfUseFrontMatterVisualTheme - - Use front matter values to select a visual theme. - - Boolean - - Boolean - - - None - - - PdfWarningVariable - - Variable name that receives Markdown PDF export warnings. - - String + String String @@ -146061,18 +146920,6 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - MarkdownPdfOptions - - Advanced Markdown PDF options. Friendly PDF parameters override matching values. - - MarkdownPdfSaveOptions - - MarkdownPdfSaveOptions - - - None - PassThru @@ -146085,301 +146932,12 @@ Use -NoSave or omit -Path when a document object should be returned for further None - + Path Destination Markdown path. - String - - String - - - None - - - PdfApplyWordLikeTheme - - Apply the built-in Word-like Markdown PDF baseline theme. - - Boolean - - Boolean - - - None - - - PdfAuthor - - PDF author metadata. - - String - - String - - - None - - - PdfBaseDirectory - - Base directory used to resolve local Markdown images during PDF export. - - String - - String - - - None - - - PdfConversionReportVariable - - Variable name that receives the Markdown PDF conversion report. - - String - - String - - - None - - - PdfCreateOutlineFromHeadings - - Create PDF outlines from Markdown headings. - - Boolean - - Boolean - - - None - - - PdfDefaultImageHeight - - Fallback PDF image height in points. - - Double - - Double - - - None - - - PdfDefaultImageWidth - - Fallback PDF image width in points. - - Double - - Double - - - None - - - PdfFontFamily - - Default font family used by Markdown PDF export. - - String - - String - - - None - - - PdfFrontMatterRenderMode - - Controls how YAML front matter appears in the PDF body. - - MarkdownPdfFrontMatterRenderMode - - Hidden - DocumentHeader - Table - - - MarkdownPdfFrontMatterRenderMode - - - None - - - PdfIncludeDataUriImages - - Embed supported data URI images in Markdown PDF output. - - Boolean - - Boolean - - - None - - - PdfIncludeLocalImages - - Embed supported local image files in Markdown PDF output. - - Boolean - - Boolean - - - None - - - PdfKeywords - - PDF keywords metadata. - - String - - String - - - None - - - PdfMaximumDataUriImageBytes - - Maximum decoded bytes for one data URI image in Markdown PDF output. - - Int32 - - Int32 - - - None - - - PdfOptions - - Underlying OfficeIMO.Pdf options used by Markdown PDF export. - - PdfOptions - - PdfOptions - - - None - - - PdfPath - - Optional PDF path to create from the same Markdown document. - - String - - String - - - None - - - PdfRestrictLocalImagesToBaseDirectory - - Require local images to resolve under the base directory. - - Boolean - - Boolean - - - None - - - PdfSubject - - PDF subject metadata. - - String - - String - - - None - - - PdfTheme - - Built-in Markdown PDF visual theme. - - OfficeVisualThemeKind - - Plain - WordLike - TechnicalDocument - GitHubLike - Compact - Report - - - OfficeVisualThemeKind - - - None - - - PdfTitle - - PDF title metadata. - - String - - String - - - None - - - PdfUseFirstHeadingAsTitle - - Use the first Markdown heading as the PDF title when no title is supplied. - - Boolean - - Boolean - - - None - - - PdfUseFrontMatterMetadata - - Use front matter values as PDF metadata. - - Boolean - - Boolean - - - None - - - PdfUseFrontMatterVisualTheme - - Use front matter values to select a visual theme. - - Boolean - - Boolean - - - None - - - PdfWarningVariable - - Variable name that receives Markdown PDF export warnings. - - String + String String @@ -146441,11 +146999,6 @@ Use -NoSave or omit -Path when a document object should be returned for further OfficeIMO.Markdown.MarkdownDoc - - - System.IO.FileInfo - - @@ -146454,13 +147007,13 @@ Use -NoSave or omit -Path when a document object should be returned for further - Save Markdown and PDF outputs. + Save a Markdown document. PS> - $doc | Save-OfficeMarkdown -Path .\Report.md -PdfPath .\Report.pdf + $doc | Save-OfficeMarkdown -Path .\Report.md - Writes both artifacts from the same Markdown document model. + Writes the Markdown artifact and keeps the document available for further changes. @@ -146517,6 +147070,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + PassThru + + Emit the save result, including preservation diagnostics. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -146568,6 +147133,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + PassThru + + Emit the save result, including preservation diagnostics. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -146639,6 +147216,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + Open + + Open the PDF after saving. + + SwitchParameter + + SwitchParameter + + + None + OwnerPassword @@ -146654,7 +147243,7 @@ The document is saved through the normal OfficeIMO.Pdf save path. PassThru - Emit the document instead of the saved file. + Emit the document for further processing. SwitchParameter @@ -146699,18 +147288,6 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - Show - - Open the PDF after saving. - - SwitchParameter - - SwitchParameter - - - None - @@ -146726,6 +147303,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + Open + + Open the PDF after saving. + + SwitchParameter + + SwitchParameter + + + None + OwnerPassword @@ -146741,7 +147330,7 @@ The document is saved through the normal OfficeIMO.Pdf save path. PassThru - Emit the document instead of the saved file. + Emit the document for further processing. SwitchParameter @@ -146786,18 +147375,6 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - Show - - Open the PDF after saving. - - SwitchParameter - - SwitchParameter - - - None - @@ -146812,11 +147389,6 @@ The document is saved through the normal OfficeIMO.Pdf save path. OfficeIMO.Pdf.PdfDocument - - - System.IO.FileInfo - - @@ -146853,6 +147425,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. Save-OfficePowerPoint + + Open + + Launch the saved file in the default viewer. + + SwitchParameter + + SwitchParameter + + + None + PassThru @@ -146889,18 +147473,6 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - PdfPath - - Optional PDF path to create from the same presentation. - - String - - String - - - None - Presentation @@ -146913,21 +147485,21 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - Show - - Launch the saved file in the default viewer. - - SwitchParameter - - SwitchParameter - - - None - + + Open + + Launch the saved file in the default viewer. + + SwitchParameter + + SwitchParameter + + + None + PassThru @@ -146964,18 +147536,6 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - PdfPath - - Optional PDF path to create from the same presentation. - - String - - String - - - None - Presentation @@ -146988,18 +147548,6 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - Show - - Launch the saved file in the default viewer. - - SwitchParameter - - SwitchParameter - - - None - @@ -147026,12 +147574,12 @@ The document is saved through the normal OfficeIMO.Pdf save path. PS> - $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointSave.pptx + $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSave.pptx $slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Saved later' - Save-OfficePowerPoint -Presentation $ppt -PdfPath .\Examples\Documents\PowerPointSave.pdf + Save-OfficePowerPoint -Presentation $ppt - Saves the current presentation and exports a PDF sidecar. + Saves the current presentation without closing it. @@ -147064,10 +147612,10 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - PassThru + + Open - Emit the document object instead of the saved file. + Open the document after saving. SwitchParameter @@ -147076,26 +147624,26 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - Path + + PassThru - Optional save-as path. + Emit the document object for further processing. - String + SwitchParameter - String + SwitchParameter None - - Show + + Path - Open the document after saving. + Optional save-as path. - SwitchParameter + String - SwitchParameter + String None @@ -147115,10 +147663,10 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - PassThru + + Open - Emit the document object instead of the saved file. + Open the document after saving. SwitchParameter @@ -147127,26 +147675,26 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - Path + + PassThru - Optional save-as path. + Emit the document object for further processing. - String + SwitchParameter - String + SwitchParameter None - - Show + + Path - Open the document after saving. + Optional save-as path. - SwitchParameter + String - SwitchParameter + String None @@ -147165,11 +147713,6 @@ The document is saved through the normal OfficeIMO.Pdf save path. OfficeIMO.Visio.VisioDocument - - - System.IO.FileInfo - - @@ -147218,10 +147761,10 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - PassThru + + Open - Emit the document object for further processing. + Open the document after saving. SwitchParameter @@ -147231,33 +147774,9 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - Password - - Password used to save the document as an encrypted package. - - String - - String - - - None - - - Path - - Optional save-as path. - - String - - String - - - None - - - PdfAllowSystemFontEmbedding + PassThru - Allow the native Word PDF converter to embed installed system fonts used by the document. + Emit the document object for further processing. SwitchParameter @@ -147267,9 +147786,9 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - PdfFontFamily + Password - Optional default font family used by the native Word PDF converter. + Password used to save the document as an encrypted package. String @@ -147278,10 +147797,10 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - PdfPath + + Path - Optional PDF path to create from the same Word document. + Optional save-as path. String @@ -147290,18 +147809,6 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - Show - - Open the document after saving. - - SwitchParameter - - SwitchParameter - - - None - @@ -147317,10 +147824,10 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - PassThru + + Open - Emit the document object for further processing. + Open the document after saving. SwitchParameter @@ -147330,33 +147837,9 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - Password - - Password used to save the document as an encrypted package. - - String - - String - - - None - - - Path - - Optional save-as path. - - String - - String - - - None - - - PdfAllowSystemFontEmbedding + PassThru - Allow the native Word PDF converter to embed installed system fonts used by the document. + Emit the document object for further processing. SwitchParameter @@ -147366,9 +147849,9 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - PdfFontFamily + Password - Optional default font family used by the native Word PDF converter. + Password used to save the document as an encrypted package. String @@ -147377,10 +147860,10 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - PdfPath + + Path - Optional PDF path to create from the same Word document. + Optional save-as path. String @@ -147389,18 +147872,6 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - Show - - Open the document after saving. - - SwitchParameter - - SwitchParameter - - - None - @@ -148384,26 +148855,26 @@ The document is saved through the normal OfficeIMO.Pdf save path. Set-OfficeExcelActiveSheet - - InputPath + + PassThru - Workbook path to update. + Emit the activated worksheet. - String + SwitchParameter - String + SwitchParameter None - - PassThru + + Path - Emit the activated worksheet. + Workbook path to update. - SwitchParameter + String - SwitchParameter + String None @@ -148498,26 +148969,26 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - InputPath + + PassThru - Workbook path to update. + Emit the activated worksheet. - String + SwitchParameter - String + SwitchParameter None - - PassThru + + Path - Emit the activated worksheet. + Workbook path to update. - SwitchParameter + String - SwitchParameter + String None @@ -149287,6 +149758,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Row @@ -149446,6 +149929,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Sheet @@ -149605,6 +150100,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Row @@ -149842,6 +150349,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + ShowCategoryMajorGridlines @@ -150113,6 +150632,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + ShowCategoryMajorGridlines @@ -150461,6 +150992,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Position @@ -150703,6 +151246,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Position @@ -150943,6 +151498,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Position @@ -151061,6 +151628,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Position @@ -151177,6 +151756,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + PointIndex @@ -151264,6 +151855,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + PointIndex @@ -151351,6 +151954,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + PointIndex @@ -151544,137 +152159,161 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - SeriesIndex - - Zero-based series index. - - Int32 - - Int32 - - - None - - - - Set-OfficeExcelChartSeries - - Chart - - Chart to update. - - ExcelChart - - ExcelChart - - - None - - - FillColor - - Series fill color in hex format. - - String - - String - - - None - - IgnoreCase - - Ignore case when matching series name. - - Boolean - - Boolean - - - None - - - LineColor - - Series line color in hex format. - - String - - String - - - None - - - LineWidthPoints - - Series line width in points. - - Double - - Double - - - None - - - MarkerFillColor - - Marker fill color in hex format. - - String - - String - - - None - - - MarkerLineColor - - Marker line color in hex format. - - String - - String - - - None - - - MarkerLineWidthPoints - - Marker line width in points. - - Double - - Double - - - None - - - MarkerSize - - Marker size. - - Int32 - - Int32 - - - None - - - MarkerStyle + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + + + SeriesIndex + + Zero-based series index. + + Int32 + + Int32 + + + None + + + + Set-OfficeExcelChartSeries + + Chart + + Chart to update. + + ExcelChart + + ExcelChart + + + None + + + FillColor + + Series fill color in hex format. + + String + + String + + + None + + + IgnoreCase + + Ignore case when matching series name. + + Boolean + + Boolean + + + None + + + LineColor + + Series line color in hex format. + + String + + String + + + None + + + LineWidthPoints + + Series line width in points. + + Double + + Double + + + None + + + MarkerFillColor + + Marker fill color in hex format. + + String + + String + + + None + + + MarkerLineColor + + Marker line color in hex format. + + String + + String + + + None + + + MarkerLineWidthPoints + + Marker line width in points. + + Double + + Double + + + None + + + MarkerSize + + Marker size. + + Int32 + + Int32 + + + None + + + MarkerStyle + + Marker style name. + + String + + String + + + None + + + PassThru - Marker style name. + Emit the object created or changed by the command. - String + SwitchParameter - String + SwitchParameter None @@ -151814,6 +152453,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + SeriesIndex @@ -151911,6 +152562,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + StyleId @@ -151950,6 +152613,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + StyleId @@ -152119,6 +152794,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Period @@ -152278,6 +152965,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Period @@ -152437,6 +153136,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Period @@ -152582,6 +153293,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + StartRow @@ -152669,6 +153392,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + StartRow @@ -152832,6 +153567,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + StartColumn @@ -152955,6 +153702,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + StartColumn @@ -153219,6 +153978,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Pattern @@ -153467,6 +154238,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Pattern @@ -153739,6 +154522,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Pattern @@ -154088,26 +154883,26 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - InputPath + + PassThru - Workbook path to update. + Returns matching validation rules after updating them. - String + SwitchParameter - String + SwitchParameter None - - PassThru + + Path - Returns matching validation rules after updating them. + Workbook path to update. - SwitchParameter + String - SwitchParameter + String None @@ -154466,26 +155261,26 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - InputPath + + PassThru - Workbook path to update. + Returns matching validation rules after updating them. - String + SwitchParameter - String + SwitchParameter None - - PassThru + + Path - Returns matching validation rules after updating them. + Workbook path to update. - SwitchParameter + String - SwitchParameter + String None @@ -155336,6 +156131,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Row @@ -155375,6 +156182,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + @@ -155414,6 +156233,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Row @@ -155481,6 +156312,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + TopRows @@ -155520,6 +156363,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Sheet @@ -155583,6 +156438,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Sheet @@ -160259,26 +161126,26 @@ The document is saved through the normal OfficeIMO.Pdf save path. Set-OfficeExcelPrintArea - - InputPath + + PassThru - Workbook path to update. + Emit the worksheet after setting the print area. - String + SwitchParameter - String + SwitchParameter None - - PassThru + + Path - Emit the worksheet after setting the print area. + Workbook path to update. - SwitchParameter + String - SwitchParameter + String None @@ -160397,26 +161264,26 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - InputPath + + PassThru - Workbook path to update. + Emit the worksheet after setting the print area. - String + SwitchParameter - String + SwitchParameter None - - PassThru + + Path - Emit the worksheet after setting the print area. + Workbook path to update. - SwitchParameter + String - SwitchParameter + String None @@ -160743,18 +161610,6 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - InputPath - - Workbook path to update. - - String - - String - - - None - Margins @@ -160829,6 +161684,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + Path + + Workbook path to update. + + String + + String + + + None + Preset @@ -161209,18 +162076,6 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - InputPath - - Workbook path to update. - - String - - String - - - None - Margins @@ -161295,6 +162150,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + Path + + Workbook path to update. + + String + + String + + + None + Preset @@ -161598,18 +162465,6 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - InputPath - - Workbook path to update. - - String - - String - - - None - LastColumn @@ -161646,6 +162501,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + Path + + Workbook path to update. + + String + + String + + + None + Sheet @@ -161832,18 +162699,6 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - InputPath - - Workbook path to update. - - String - - String - - - None - LastColumn @@ -161880,6 +162735,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + Path + + Workbook path to update. + + String + + String + + + None + Sheet @@ -162051,18 +162918,6 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - InputPath - - Workbook path to update. - - String - - String - - - None - NoSavePivotSourceData @@ -162087,6 +162942,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + Path + + Workbook path to update. + + String + + String + + + None + PivotTables @@ -162237,18 +163104,6 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - InputPath - - Workbook path to update. - - String - - String - - - None - NoSavePivotSourceData @@ -162273,6 +163128,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + Path + + Workbook path to update. + + String + + String + + + None + PivotTables @@ -162459,26 +163326,26 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - InputPath + + PassThru - Workbook path to update. + Emit written rich text runs. - String + SwitchParameter - String + SwitchParameter None - - PassThru + + Path - Emit written rich text runs. + Workbook path to update. - SwitchParameter + String - SwitchParameter + String None @@ -162669,26 +163536,26 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - InputPath + + PassThru - Workbook path to update. + Emit written rich text runs. - String + SwitchParameter - String + SwitchParameter None - - PassThru + + Path - Emit written rich text runs. + Workbook path to update. - SwitchParameter + String - SwitchParameter + String None @@ -162906,6 +163773,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Row @@ -163089,6 +163968,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Row @@ -163264,6 +164155,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + StartRow @@ -163363,6 +164266,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + StartRow @@ -164336,18 +165251,6 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - InputPath - - Workbook path to update. - - String - - String - - - None - Name @@ -164372,6 +165275,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + Path + + Workbook path to update. + + String + + String + + + None + Xml @@ -164498,18 +165413,6 @@ The document is saved through the normal OfficeIMO.Pdf save path. None - - InputPath - - Workbook path to update. - - String - - String - - - None - Name @@ -164534,6 +165437,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + Path + + Workbook path to update. + + String + + String + + + None + Xml @@ -166468,6 +167383,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + PassThruReport @@ -166615,6 +167542,18 @@ The document is saved through the normal OfficeIMO.Pdf save path. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + PassThruReport @@ -168279,6 +169218,18 @@ default, first-page, and even-page text, zones, images, shapes, rich text, and p None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -168402,6 +169353,18 @@ default, first-page, and even-page text, zones, images, shapes, rich text, and p None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -169363,6 +170326,18 @@ With -Path and -OutputPath, it rewrites an existing PDF with updated metadata un None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -169588,6 +170563,18 @@ With -Path and -OutputPath, it rewrites an existing PDF with updated metadata un None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -170570,6 +171557,18 @@ With -Path and -OutputPath, it rewrites an existing PDF with updated metadata un None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + PassThruReport @@ -170645,6 +171644,18 @@ With -Path and -OutputPath, it rewrites an existing PDF with updated metadata un None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + PassThruReport @@ -170934,6 +171945,18 @@ Apply a theme near the start of a New-OfficePdf script block so later content in None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Slide @@ -170961,6 +171984,18 @@ Apply a theme near the start of a New-OfficePdf script block so later content in None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Slide @@ -170988,6 +172023,18 @@ Apply a theme near the start of a New-OfficePdf script block so later content in None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Slide @@ -171039,6 +172086,18 @@ Apply a theme near the start of a New-OfficePdf script block so later content in None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Slide @@ -172265,6 +173324,18 @@ Apply a theme near the start of a New-OfficePdf script block so later content in Set-OfficePowerPointNotes + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Slide @@ -172292,6 +173363,18 @@ Apply a theme near the start of a New-OfficePdf script block so later content in + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Slide @@ -173444,6 +174527,18 @@ contents, then save or close the presentation. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Slide @@ -173495,6 +174590,18 @@ contents, then save or close the presentation. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Slide @@ -173572,6 +174679,18 @@ contents, then save or close the presentation. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Slide @@ -173685,6 +174804,18 @@ contents, then save or close the presentation. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Slide @@ -173746,6 +174877,18 @@ contents, then save or close the presentation. Set-OfficePowerPointSlideSize + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Portrait @@ -173802,6 +174945,18 @@ contents, then save or close the presentation. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Presentation @@ -173841,6 +174996,18 @@ contents, then save or close the presentation. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Presentation @@ -173880,6 +175047,18 @@ contents, then save or close the presentation. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Presentation @@ -173919,6 +175098,18 @@ contents, then save or close the presentation. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Presentation @@ -173994,6 +175185,18 @@ contents, then save or close the presentation. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Portrait @@ -174122,7 +175325,7 @@ contents, then save or close the presentation. PS> - $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointCustomSize.pptx + $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointCustomSize.pptx Set-OfficePowerPointSlideSize -Presentation $ppt -WidthCm 25.4 -HeightCm 14.0 Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Custom size' @@ -174147,6 +175350,18 @@ contents, then save or close the presentation. Set-OfficePowerPointSlideTitle + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Slide @@ -174174,6 +175389,18 @@ contents, then save or close the presentation. + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Slide @@ -174241,6 +175468,18 @@ contents, then save or close the presentation. Set-OfficePowerPointSlideTransition + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Slide @@ -174336,6 +175575,18 @@ contents, then save or close the presentation. + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Slide @@ -180403,8 +181654,8 @@ cell inside a deck that already exists. Test-OfficeExcelAccessibility - - InputPath + + Path Workbook path. @@ -180469,8 +181720,8 @@ cell inside a deck that already exists. None - - InputPath + + Path Workbook path. @@ -180569,8 +181820,8 @@ cell inside a deck that already exists. None - - InputPath + + Path Workbook path. @@ -180707,8 +181958,8 @@ cell inside a deck that already exists. None - - InputPath + + Path Workbook path. @@ -180808,8 +182059,8 @@ cell inside a deck that already exists. Test-OfficeExcelWorkbook - - InputPath + + Path Workbook path. @@ -180922,8 +182173,8 @@ cell inside a deck that already exists. None - - InputPath + + Path Workbook path. @@ -181437,26 +182688,26 @@ cell inside a deck that already exists. Unprotect-OfficeExcelWorkbook - - InputPath + + PassThru - Workbook path to update. + Emit the workbook after removing protection. - String + SwitchParameter - String + SwitchParameter None - - PassThru + + Path - Emit the workbook after removing protection. + Workbook path to update. - SwitchParameter + String - SwitchParameter + String None @@ -181503,26 +182754,26 @@ cell inside a deck that already exists. None - - InputPath + + PassThru - Workbook path to update. + Emit the workbook after removing protection. - String + SwitchParameter - String + SwitchParameter None - - PassThru + + Path - Emit the workbook after removing protection. + Workbook path to update. - SwitchParameter + String - SwitchParameter + String None @@ -181778,18 +183029,6 @@ cell inside a deck that already exists. None - - InputPath - - Workbook path to update. - - String - - String - - - None - MatchAuthor @@ -181814,6 +183053,18 @@ cell inside a deck that already exists. None + + Path + + Workbook path to update. + + String + + String + + + None + Range @@ -182108,18 +183359,6 @@ cell inside a deck that already exists. None - - InputPath - - Workbook path to update. - - String - - String - - - None - MatchAuthor @@ -182144,6 +183383,18 @@ cell inside a deck that already exists. None + + Path + + Workbook path to update. + + String + + String + + + None + Range @@ -182279,10 +183530,10 @@ cell inside a deck that already exists. None - - InputPath + + NewValue - Workbook path to update. + Replacement text. String @@ -182292,9 +183543,9 @@ cell inside a deck that already exists. None - NewValue + OldValue - Replacement text. + Text or pattern to replace. String @@ -182303,10 +183554,34 @@ cell inside a deck that already exists. None - - OldValue + + Open - Text or pattern to replace. + Open the file after saving when using -System.IO.Path. + + SwitchParameter + + SwitchParameter + + + None + + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + + + Path + + Workbook path to update. String @@ -182363,18 +183638,6 @@ cell inside a deck that already exists. None - - Show - - Open the file after saving when using -Path. - - SwitchParameter - - SwitchParameter - - - None - Update-OfficeExcelText @@ -182426,6 +183689,18 @@ cell inside a deck that already exists. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Range @@ -182501,10 +183776,10 @@ cell inside a deck that already exists. None - - InputPath + + NewValue - Workbook path to update. + Replacement text. String @@ -182514,9 +183789,9 @@ cell inside a deck that already exists. None - NewValue + OldValue - Replacement text. + Text or pattern to replace. String @@ -182525,10 +183800,34 @@ cell inside a deck that already exists. None - - OldValue + + Open - Text or pattern to replace. + Open the file after saving when using -System.IO.Path. + + SwitchParameter + + SwitchParameter + + + None + + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + + + Path + + Workbook path to update. String @@ -182585,18 +183884,6 @@ cell inside a deck that already exists. None - - Show - - Open the file after saving when using -Path. - - SwitchParameter - - SwitchParameter - - - None - @@ -182698,6 +183985,18 @@ cell inside a deck that already exists. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Update-OfficePowerPointText @@ -182749,6 +184048,18 @@ cell inside a deck that already exists. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Presentation @@ -182812,6 +184123,18 @@ cell inside a deck that already exists. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Slide @@ -182875,6 +184198,18 @@ cell inside a deck that already exists. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Presentation @@ -182930,7 +184265,7 @@ cell inside a deck that already exists. PS> - $ppt = New-OfficePowerPoint -FilePath .\Examples\Documents\PowerPointUpdateText.pptx + $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointUpdateText.pptx $slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 Add-OfficePowerPointTextBox -Slide $slide -Text 'FY24 summary' | Out-Null Set-OfficePowerPointNotes -Slide $slide -Text 'Mention FY24 assumptions.' | Out-Null @@ -183629,6 +184964,18 @@ cell inside a deck that already exists. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Update-OfficeWordText @@ -183728,6 +185075,18 @@ cell inside a deck that already exists. None + + PassThru + + Emit the object created or changed by the command. + + SwitchParameter + + SwitchParameter + + + None + Update-OfficeWordText @@ -183791,10 +185150,10 @@ cell inside a deck that already exists. None - - InputPath + + NewValue - Path to the .docx file to update in place. + Replacement text. String @@ -183804,9 +185163,9 @@ cell inside a deck that already exists. None - NewValue + OldValue - Replacement text. + Text to find. String @@ -183815,22 +185174,22 @@ cell inside a deck that already exists. None - - OldValue + + Open - Text to find. + Open the file after saving when using -Path. - String + SwitchParameter - String + SwitchParameter None - Show + PassThru - Open the file after saving when using -Path. + Emit the object created or changed by the command. SwitchParameter @@ -183839,6 +185198,18 @@ cell inside a deck that already exists. None + + Path + + Path to the .docx file to update in place. + + String + + String + + + None + @@ -183914,10 +185285,10 @@ cell inside a deck that already exists. None - - InputPath + + NewValue - Path to the .docx file to update in place. + Replacement text. String @@ -183927,9 +185298,9 @@ cell inside a deck that already exists. None - NewValue + OldValue - Replacement text. + Text to find. String @@ -183938,22 +185309,22 @@ cell inside a deck that already exists. None - - OldValue + + Open - Text to find. + Open the file after saving when using -Path. - String + SwitchParameter - String + SwitchParameter None - Show + PassThru - Open the file after saving when using -Path. + Emit the object created or changed by the command. SwitchParameter @@ -183962,6 +185333,18 @@ cell inside a deck that already exists. None + + Path + + Path to the .docx file to update in place. + + String + + String + + + None + diff --git a/WebsiteArtifacts/apidocs/powershell/PSWriteOffice.psd1 b/WebsiteArtifacts/apidocs/powershell/PSWriteOffice.psd1 index 02aba850..257436ca 100644 --- a/WebsiteArtifacts/apidocs/powershell/PSWriteOffice.psd1 +++ b/WebsiteArtifacts/apidocs/powershell/PSWriteOffice.psd1 @@ -1,7 +1,7 @@ @{ AliasesToExport = @('Compare-OfficeExcelSheet', 'ConvertFrom-MarkdownHtml', 'ConvertFrom-PdfHtml', 'ConvertFrom-Rtf', 'ConvertFrom-WordHtml', 'ConvertFrom-WordMarkdown', 'ConvertTo-ExcelHtml', 'ConvertTo-MarkdownHtml', 'ConvertTo-PdfExcel', 'ConvertTo-PdfHtml', 'ConvertTo-PdfPowerPoint', 'ConvertTo-PdfWord', 'ConvertTo-PowerPointHtml', 'ConvertTo-Rtf', 'ConvertTo-VisioPng', 'ConvertTo-VisioSvg', 'ConvertTo-WordHtml', 'ConvertTo-WordMarkdown', 'Edit-ExcelRow', 'ExcelAccessibility', 'ExcelActiveSheet', 'ExcelAutoFilter', 'ExcelAutoFilterClear', 'ExcelAutoFilterSet', 'ExcelAutoFit', 'ExcelCell', 'ExcelChart', 'ExcelChartAxis', 'ExcelChartPoint', 'ExcelChartSeries', 'ExcelChartTrendline', 'ExcelColumn', 'ExcelColumnGroup', 'ExcelColumnStyle', 'ExcelColumnStyleByHeader', 'ExcelComment', 'ExcelCommentAudit', 'ExcelCommentClear', 'ExcelCommentRemove', 'ExcelComments', 'ExcelCommentsAudit', 'ExcelCommentUpdate', 'ExcelCompare', 'ExcelConditionalColorScale', 'ExcelConditionalDataBar', 'ExcelConditionalFormatting', 'ExcelConditionalFormattingClear', 'ExcelConditionalIconSet', 'ExcelConditionalRule', 'ExcelConnectionMetadata', 'ExcelCsvImport', 'ExcelDashboard', 'ExcelDashboardChart', 'ExcelDataModel', 'ExcelDataSet', 'ExcelDataValidation', 'ExcelDataValidationClear', 'ExcelDataValidationMessage', 'ExcelDateSystem', 'ExcelDelimitedImport', 'ExcelDoctor', 'ExcelExecutionPolicy', 'ExcelExport', 'ExcelFormula', 'ExcelFormulaAnalysis', 'ExcelFormulaAudit', 'ExcelFreeze', 'ExcelGridlines', 'ExcelHeaderFooter', 'ExcelHyperlink', 'ExcelHyperlinkHost', 'ExcelHyperlinkSmart', 'ExcelImage', 'ExcelImageFromUrl', 'ExcelImport', 'ExcelInternalLinks', 'ExcelInternalLinksByHeader', 'ExcelMargins', 'ExcelNamedRange', 'ExcelNamedRangeRemove', 'ExcelNamedRangeRename', 'ExcelNew', 'ExcelNumberFormatPreset', 'ExcelOrientation', 'ExcelPackageCopy', 'ExcelPackageMetadata', 'ExcelPageBreak', 'ExcelPageBreakClear', 'ExcelPageBreaks', 'ExcelPageSetup', 'ExcelPivotTable', 'ExcelPivotTables', 'ExcelPowerQuery', 'ExcelPowerQueryMetadata', 'ExcelPreflight', 'ExcelPrintArea', 'ExcelPrintLayout', 'ExcelPrintTitles', 'ExcelProtect', 'ExcelQueryMetadata', 'ExcelRangeClear', 'ExcelRefreshOnOpen', 'ExcelRepair', 'ExcelReportCallout', 'ExcelReportKpiRow', 'ExcelReportLegend', 'ExcelReportParagraph', 'ExcelReportSection', 'ExcelReportSheet', 'ExcelReportSpacer', 'ExcelReportTable', 'ExcelReportTitle', 'ExcelRichText', 'ExcelRichTextRuns', 'ExcelRow', 'ExcelRowEdit', 'ExcelRowGroup', 'ExcelRuntimePreflight', 'ExcelSheet', 'ExcelSheetCopy', 'ExcelSheetJoin', 'ExcelSheetMerge', 'ExcelSheetOrder', 'ExcelSheetTabColor', 'ExcelSheetView', 'ExcelSheetVisibility', 'ExcelSlicer', 'ExcelSort', 'ExcelSparkline', 'ExcelStreamingContract', 'ExcelSubtotals', 'ExcelSubtotalSummary', 'ExcelSummary', 'ExcelTable', 'ExcelTableOfContents', 'ExcelTableStyle', 'ExcelTemplate', 'ExcelTemplateApply', 'ExcelTemplateBinding', 'ExcelTemplateMarkers', 'ExcelTemplateOptionalRow', 'ExcelTemplateOptionalRows', 'ExcelTemplateRow', 'ExcelTemplateRows', 'ExcelTemplateSheet', 'ExcelTemplateSheets', 'ExcelTemplateValidate', 'ExcelTextRun', 'ExcelTheme', 'ExcelThreadedComment', 'ExcelTimeline', 'ExcelUnprotect', 'ExcelUrlLinks', 'ExcelUrlLinksByHeader', 'ExcelValidationCustomFormula', 'ExcelValidationDate', 'ExcelValidationDecimal', 'ExcelValidationList', 'ExcelValidationTextLength', 'ExcelValidationTime', 'ExcelValidationWholeNumber', 'ExcelVisual', 'ExcelWorkbookCompare', 'ExcelWorkbookCopy', 'ExcelWorkbookDoctor', 'ExcelWorkbookJoin', 'ExcelWorkbookMerge', 'ExcelWorkbookProtect', 'ExcelWorkbookRepair', 'ExcelWorkbookUnprotect', 'ExcelWorksheetView', 'ExcelWriteReservation', 'ExcelWriteReservationClear', 'ExcelWriteReservationSet', 'Export-OfficeDocumentAsset', 'Export-VisioStencilPreviewGallery', 'Find-VisioStencil', 'Get-OfficeReaderCapability', 'Import-VisioStencil', 'MarkdownCallout', 'MarkdownCode', 'MarkdownDefinitionList', 'MarkdownDetails', 'MarkdownFrontMatter', 'MarkdownHeading', 'MarkdownHorizontalRule', 'MarkdownHr', 'MarkdownImage', 'MarkdownList', 'MarkdownNew', 'MarkdownParagraph', 'MarkdownQuote', 'MarkdownTable', 'MarkdownTableOfContents', 'MarkdownTaskList', 'MarkdownToc', 'Merge-OfficeExcelSheet', 'Merge-OfficeExcelWorkbook', 'Merge-OfficeWordDocument', 'New-VisioGallery', 'OfficeVisual', 'PdfAttachment', 'PdfBackground', 'PdfBackgroundImage', 'PdfBackgroundShape', 'PdfBookmark', 'PdfCanvasStamp', 'PdfCanvasText', 'PdfCompliance', 'PdfElectronicInvoice', 'PdfFooter', 'PdfFormField', 'PdfHeader', 'PdfHeading', 'PdfHorizontalRule', 'PdfHr', 'PdfImage', 'PdfList', 'PdfMetadata', 'PdfNativeTextRun', 'PdfNew', 'PdfPageBorder', 'PdfPageBreak', 'PdfPageOverlay', 'PdfPageSetup', 'PdfPanel', 'PdfParagraph', 'PdfRow', 'PdfSpace', 'PdfSpacer', 'PdfStamp', 'PdfTable', 'PdfTableCell', 'PdfTableCellCheckBox', 'PdfTableCellField', 'PdfTableCellImage', 'PdfText', 'PdfTextRun', 'PdfTheme', 'PdfVisual', 'PdfWatermark', 'PowerPointNew', 'PowerPointTextRun', 'PptArrange', 'PptBackground', 'PptBullets', 'PptChart', 'PptDeckPlan', 'PptDesignerDeck', 'PptImage', 'PptLayoutBox', 'PptLayoutPlaceholderBounds', 'PptLayoutPlaceholderMargins', 'PptLayoutPlaceholders', 'PptLayoutPlaceholderTextStyle', 'PptNew', 'PptNotes', 'PptPlaceholderText', 'PptPlanCapability', 'PptPlanCardGrid', 'PptPlanCaseStudy', 'PptPlanCoverage', 'PptPlanLogoWall', 'PptPlanProcess', 'PptPlanSection', 'PptSection', 'PptShape', 'PptShapeLayout', 'PptSlide', 'PptSlideLayout', 'PptSlideSize', 'PptTable', 'PptTextBox', 'PptTextRun', 'PptTheme', 'PptThemeColor', 'PptThemeFonts', 'PptThemeName', 'PptTitle', 'PptTransition', 'PptVisual', 'Read-OfficeDocument', 'Read-OfficeDocumentAsset', 'Read-OfficeDocumentChunk', 'Read-OfficeDocumentTable', 'Read-OfficeDocumentVisual', 'Replace-OfficeExcelText', 'Replace-OfficePowerPointText', 'Replace-OfficeRtfText', 'Replace-OfficeWordText', 'RtfNew', 'RtfOpen', 'RtfText', 'Set-OfficeExcelSheetOrder', 'TextRun', 'VisioArrange', 'VisioConnector', 'VisioContainer', 'VisioDiamond', 'VisioEllipse', 'VisioInfo', 'VisioLayout', 'VisioNew', 'VisioOpen', 'VisioPage', 'VisioRect', 'VisioRectangle', 'VisioSave', 'VisioStencil', 'VisioStencilCatalog', 'VisioText', 'VisioTextBox', 'WordBold', 'WordBookmark', 'WordBreak', 'WordChart', 'WordCheckBox', 'WordCheckBoxes', 'WordComboBox', 'WordComboBoxes', 'WordContentControl', 'WordContentControls', 'WordCoverPage', 'WordDatePicker', 'WordDatePickers', 'WordDocumentJoin', 'WordDropDownList', 'WordDropDownLists', 'WordEndnote', 'WordEndnotes', 'WordEquation', 'WordField', 'WordFooter', 'WordFootnote', 'WordFootnotes', 'WordHeader', 'WordHyperlink', 'WordImage', 'WordImages', 'WordImageStyle', 'WordItalic', 'WordList', 'WordListItem', 'WordNew', 'WordPageNumber', 'WordPageSetup', 'WordParagraph', 'WordParagraphStyle', 'WordPictureControl', 'WordPictureControls', 'WordRepeatingSection', 'WordRepeatingSections', 'WordSection', 'WordShape', 'WordShapes', 'WordShapeStyle', 'WordStatistics', 'WordTable', 'WordTableCell', 'WordTableCells', 'WordTableCellSpec', 'WordTableCellStyle', 'WordTableCondition', 'WordTableOfContents', 'WordTabStop', 'WordText', 'WordTextBox', 'WordTextRun', 'WordTextStyle', 'WordVisual', 'WordWatermark') Author = 'Przemyslaw Klys' - CmdletsToExport = @('Add-OfficeExcelAutoFilter', 'Add-OfficeExcelChart', 'Add-OfficeExcelComment', 'Add-OfficeExcelConditionalColorScale', 'Add-OfficeExcelConditionalDataBar', 'Add-OfficeExcelConditionalIconSet', 'Add-OfficeExcelConditionalRule', 'Add-OfficeExcelDashboardChart', 'Add-OfficeExcelDataSet', 'Add-OfficeExcelImage', 'Add-OfficeExcelImageFromUrl', 'Add-OfficeExcelPackageMetadata', 'Add-OfficeExcelPageBreak', 'Add-OfficeExcelPivotTable', 'Add-OfficeExcelPowerQueryMetadata', 'Add-OfficeExcelReportCallout', 'Add-OfficeExcelReportKpiRow', 'Add-OfficeExcelReportLegend', 'Add-OfficeExcelReportParagraph', 'Add-OfficeExcelReportSection', 'Add-OfficeExcelReportSheet', 'Add-OfficeExcelReportSpacer', 'Add-OfficeExcelReportTable', 'Add-OfficeExcelReportTitle', 'Add-OfficeExcelSheet', 'Add-OfficeExcelSlicer', 'Add-OfficeExcelSparkline', 'Add-OfficeExcelSubtotalSummary', 'Add-OfficeExcelTable', 'Add-OfficeExcelTableOfContents', 'Add-OfficeExcelTableRow', 'Add-OfficeExcelThreadedComment', 'Add-OfficeExcelTimeline', 'Add-OfficeExcelValidationCustomFormula', 'Add-OfficeExcelValidationDate', 'Add-OfficeExcelValidationDecimal', 'Add-OfficeExcelValidationList', 'Add-OfficeExcelValidationTextLength', 'Add-OfficeExcelValidationTime', 'Add-OfficeExcelValidationWholeNumber', 'Add-OfficeExcelVisual', 'Add-OfficeMarkdownCallout', 'Add-OfficeMarkdownCode', 'Add-OfficeMarkdownDefinitionList', 'Add-OfficeMarkdownDetails', 'Add-OfficeMarkdownFrontMatter', 'Add-OfficeMarkdownHeading', 'Add-OfficeMarkdownHorizontalRule', 'Add-OfficeMarkdownImage', 'Add-OfficeMarkdownList', 'Add-OfficeMarkdownParagraph', 'Add-OfficeMarkdownQuote', 'Add-OfficeMarkdownTable', 'Add-OfficeMarkdownTableOfContents', 'Add-OfficeMarkdownTaskList', 'Add-OfficePdfAttachment', 'Add-OfficePdfBackgroundShape', 'Add-OfficePdfBookmark', 'Add-OfficePdfCanvas', 'Add-OfficePdfCanvasText', 'Add-OfficePdfFormField', 'Add-OfficePdfHeading', 'Add-OfficePdfHorizontalRule', 'Add-OfficePdfImage', 'Add-OfficePdfList', 'Add-OfficePdfPageBreak', 'Add-OfficePdfPageOverlay', 'Add-OfficePdfPanel', 'Add-OfficePdfParagraph', 'Add-OfficePdfRow', 'Add-OfficePdfSpacer', 'Add-OfficePdfStamp', 'Add-OfficePdfTable', 'Add-OfficePdfText', 'Add-OfficePdfVisual', 'Add-OfficePdfWatermark', 'Add-OfficePowerPointBullets', 'Add-OfficePowerPointChart', 'Add-OfficePowerPointDesignerDeck', 'Add-OfficePowerPointImage', 'Add-OfficePowerPointPlanCapability', 'Add-OfficePowerPointPlanCardGrid', 'Add-OfficePowerPointPlanCaseStudy', 'Add-OfficePowerPointPlanCoverage', 'Add-OfficePowerPointPlanLogoWall', 'Add-OfficePowerPointPlanProcess', 'Add-OfficePowerPointPlanSection', 'Add-OfficePowerPointSection', 'Add-OfficePowerPointShape', 'Add-OfficePowerPointSlide', 'Add-OfficePowerPointTable', 'Add-OfficePowerPointTableRow', 'Add-OfficePowerPointTextBox', 'Add-OfficePowerPointVisual', 'Add-OfficeVisioConnector', 'Add-OfficeVisioContainer', 'Add-OfficeVisioDiamond', 'Add-OfficeVisioEllipse', 'Add-OfficeVisioPage', 'Add-OfficeVisioRectangle', 'Add-OfficeVisioStencilShape', 'Add-OfficeVisioTextBox', 'Add-OfficeWordBookmark', 'Add-OfficeWordBreak', 'Add-OfficeWordChart', 'Add-OfficeWordCheckBox', 'Add-OfficeWordComboBox', 'Add-OfficeWordContentControl', 'Add-OfficeWordCoverPage', 'Add-OfficeWordDatePicker', 'Add-OfficeWordDropDownList', 'Add-OfficeWordEndnote', 'Add-OfficeWordEquation', 'Add-OfficeWordField', 'Add-OfficeWordFooter', 'Add-OfficeWordFootnote', 'Add-OfficeWordHeader', 'Add-OfficeWordHyperlink', 'Add-OfficeWordImage', 'Add-OfficeWordList', 'Add-OfficeWordListItem', 'Add-OfficeWordPageNumber', 'Add-OfficeWordParagraph', 'Add-OfficeWordPictureControl', 'Add-OfficeWordRepeatingSection', 'Add-OfficeWordSection', 'Add-OfficeWordShape', 'Add-OfficeWordTable', 'Add-OfficeWordTableCell', 'Add-OfficeWordTableCondition', 'Add-OfficeWordTableOfContents', 'Add-OfficeWordTableRow', 'Add-OfficeWordTabStop', 'Add-OfficeWordText', 'Add-OfficeWordTextBox', 'Add-OfficeWordVisual', 'Add-OfficeWordWatermark', 'Clear-OfficeExcelAutoFilter', 'Clear-OfficeExcelComment', 'Clear-OfficeExcelConditionalFormatting', 'Clear-OfficeExcelDataValidation', 'Clear-OfficeExcelPageBreak', 'Clear-OfficeExcelRange', 'Clear-OfficeExcelWriteReservation', 'Clear-OfficePdfBackgroundShape', 'Close-OfficeExcel', 'Close-OfficePowerPoint', 'Close-OfficeWord', 'Compare-OfficeExcelRange', 'Compare-OfficeExcelWorkbook', 'Compare-OfficePdfVisual', 'Compare-OfficeWordDocument', 'ConvertFrom-OfficeAsciiDocMarkdown', 'ConvertFrom-OfficeCsv', 'ConvertFrom-OfficeLatexMarkdown', 'ConvertFrom-OfficeMarkdownHtml', 'ConvertFrom-OfficeOpenDocument', 'ConvertFrom-OfficePdfHtml', 'ConvertFrom-OfficeRtf', 'ConvertFrom-OfficeWordHtml', 'ConvertFrom-OfficeWordMarkdown', 'ConvertTo-OfficeAsciiDocMarkdown', 'ConvertTo-OfficeCsv', 'ConvertTo-OfficeExcelHtml', 'ConvertTo-OfficeExcelWorkbook', 'ConvertTo-OfficeLatexMarkdown', 'ConvertTo-OfficeMarkdown', 'ConvertTo-OfficeMarkdownHtml', 'ConvertTo-OfficeOpenDocument', 'ConvertTo-OfficePdfExcel', 'ConvertTo-OfficePdfFlatAnnotation', 'ConvertTo-OfficePdfFlatForm', 'ConvertTo-OfficePdfHtml', 'ConvertTo-OfficePdfMarkdown', 'ConvertTo-OfficePdfOptimized', 'ConvertTo-OfficePdfPowerPoint', 'ConvertTo-OfficePdfRedacted', 'ConvertTo-OfficePdfSanitized', 'ConvertTo-OfficePdfTextRun', 'ConvertTo-OfficePdfWord', 'ConvertTo-OfficePowerPointHtml', 'ConvertTo-OfficeRtf', 'ConvertTo-OfficeVisioPng', 'ConvertTo-OfficeVisioSvg', 'ConvertTo-OfficeVisioVisual', 'ConvertTo-OfficeVisual', 'ConvertTo-OfficeWordDocument', 'ConvertTo-OfficeWordHtml', 'ConvertTo-OfficeWordMarkdown', 'Copy-OfficeExcelSheet', 'Copy-OfficeExcelWorkbook', 'Copy-OfficePdfPage', 'Copy-OfficePowerPointSlide', 'Edit-OfficeExcelRow', 'Export-OfficeCsv', 'Export-OfficeExcel', 'Export-OfficeExcelChartImage', 'Export-OfficeExcelGoogleSpreadsheet', 'Export-OfficeExcelImage', 'Export-OfficeExcelRangeImage', 'Export-OfficeHtmlImage', 'Export-OfficePdfImage', 'Export-OfficePdfLayoutOverlay', 'Export-OfficePdfXfdf', 'Export-OfficePowerPointImage', 'Export-OfficeVisioImage', 'Export-OfficeVisioStencilPreviewGallery', 'Export-OfficeVisioVisual', 'Export-OfficeWordGoogleDocument', 'Export-OfficeWordImage', 'Find-OfficeExcel', 'Find-OfficePowerPointShape', 'Find-OfficeVisioStencil', 'Find-OfficeWord', 'Find-OfficeWordList', 'Find-OfficeWordTable', 'Get-OfficeAsciiDoc', 'Get-OfficeConfluenceAttachment', 'Get-OfficeConfluencePage', 'Get-OfficeCsv', 'Get-OfficeDocument', 'Get-OfficeDocumentAsset', 'Get-OfficeDocumentBatch', 'Get-OfficeDocumentCapability', 'Get-OfficeDocumentChunk', 'Get-OfficeDocumentDetection', 'Get-OfficeDocumentHierarchy', 'Get-OfficeDocumentIngest', 'Get-OfficeDocumentPageMarkdown', 'Get-OfficeDocumentStructured', 'Get-OfficeDocumentTable', 'Get-OfficeDocumentVisual', 'Get-OfficeEmail', 'Get-OfficeEmailMailbox', 'Get-OfficeExcel', 'Get-OfficeExcelComment', 'Get-OfficeExcelCommentAudit', 'Get-OfficeExcelConditionalFormatting', 'Get-OfficeExcelData', 'Get-OfficeExcelDataModel', 'Get-OfficeExcelDataValidation', 'Get-OfficeExcelDocumentProperty', 'Get-OfficeExcelFormulaAnalysis', 'Get-OfficeExcelNamedRange', 'Get-OfficeExcelNumberFormatPreset', 'Get-OfficeExcelPageBreak', 'Get-OfficeExcelPivotTable', 'Get-OfficeExcelPreflight', 'Get-OfficeExcelRange', 'Get-OfficeExcelRichText', 'Get-OfficeExcelRuntimePreflight', 'Get-OfficeExcelStreamingContract', 'Get-OfficeExcelSummary', 'Get-OfficeExcelTable', 'Get-OfficeExcelTableStyle', 'Get-OfficeExcelTemplateMarker', 'Get-OfficeExcelUsedRange', 'Get-OfficeExcelWorksheetView', 'Get-OfficeExcelWriteReservation', 'Get-OfficeLatex', 'Get-OfficeMarkdown', 'Get-OfficeMarkdownFrontMatter', 'Get-OfficeMarkdownHeading', 'Get-OfficeMarkdownNode', 'Get-OfficeMarkdownTable', 'Get-OfficeOpenDocument', 'Get-OfficePdf', 'Get-OfficePdfAnnotation', 'Get-OfficePdfAppendOnlyMutation', 'Get-OfficePdfAttachment', 'Get-OfficePdfCompliance', 'Get-OfficePdfDiagnostic', 'Get-OfficePdfFont', 'Get-OfficePdfFormField', 'Get-OfficePdfImage', 'Get-OfficePdfInfo', 'Get-OfficePdfInteractionMap', 'Get-OfficePdfOptimization', 'Get-OfficePdfPreflight', 'Get-OfficePdfRedactionPlan', 'Get-OfficePdfSignature', 'Get-OfficePdfText', 'Get-OfficePdfTextDiagnostic', 'Get-OfficePowerPoint', 'Get-OfficePowerPointInspection', 'Get-OfficePowerPointLayout', 'Get-OfficePowerPointLayoutBox', 'Get-OfficePowerPointLayoutPlaceholder', 'Get-OfficePowerPointNotes', 'Get-OfficePowerPointPlaceholder', 'Get-OfficePowerPointSection', 'Get-OfficePowerPointShape', 'Get-OfficePowerPointSlide', 'Get-OfficePowerPointSlideSummary', 'Get-OfficePowerPointTheme', 'Get-OfficeProtectionCapability', 'Get-OfficeRtf', 'Get-OfficeVisio', 'Get-OfficeVisioInfo', 'Get-OfficeVisioStencilCatalog', 'Get-OfficeWord', 'Get-OfficeWordBookmark', 'Get-OfficeWordCheckBox', 'Get-OfficeWordComboBox', 'Get-OfficeWordContentControl', 'Get-OfficeWordDatePicker', 'Get-OfficeWordDocumentProperty', 'Get-OfficeWordDropDownList', 'Get-OfficeWordEndnote', 'Get-OfficeWordField', 'Get-OfficeWordFootnote', 'Get-OfficeWordHyperlink', 'Get-OfficeWordImage', 'Get-OfficeWordList', 'Get-OfficeWordParagraph', 'Get-OfficeWordPictureControl', 'Get-OfficeWordRepeatingSection', 'Get-OfficeWordReview', 'Get-OfficeWordSection', 'Get-OfficeWordShape', 'Get-OfficeWordStatistics', 'Get-OfficeWordTable', 'Get-OfficeWordTableCell', 'Get-OfficeWordTableOfContents', 'Get-OfficeWordText', 'Import-OfficeCsv', 'Import-OfficeExcel', 'Import-OfficeExcelDelimitedText', 'Import-OfficePdfXfdf', 'Import-OfficePowerPointSlide', 'Import-OfficeVisioStencil', 'Invoke-OfficeExcelAutoFit', 'Invoke-OfficeExcelSort', 'Invoke-OfficeExcelTemplate', 'Invoke-OfficeExcelTemplateOptionalRow', 'Invoke-OfficeExcelTemplateRow', 'Invoke-OfficeExcelTemplateSheet', 'Invoke-OfficePdfOcrMerge', 'Invoke-OfficeWordMailMerge', 'Join-OfficeExcelSheet', 'Join-OfficeExcelWorkbook', 'Join-OfficePdf', 'Join-OfficeWordDocument', 'Move-OfficeExcelSheet', 'Move-OfficePdfPage', 'New-OfficeConfluenceSession', 'New-OfficeDocumentReader', 'New-OfficeExcel', 'New-OfficeExcelDashboard', 'New-OfficeMarkdown', 'New-OfficeOpenDocument', 'New-OfficePdf', 'New-OfficePdfSignature', 'New-OfficePdfTableCell', 'New-OfficePdfTableCellCheckBox', 'New-OfficePdfTableCellField', 'New-OfficePdfTableCellImage', 'New-OfficePowerPoint', 'New-OfficePowerPointDeckPlan', 'New-OfficeRtf', 'New-OfficeTextRun', 'New-OfficeVisio', 'New-OfficeVisioGallery', 'New-OfficeWord', 'New-OfficeWordTableCell', 'Protect-OfficeExcelSheet', 'Protect-OfficeExcelWorkbook', 'Protect-OfficeWordDocument', 'Publish-OfficeConfluencePage', 'Remove-OfficeConfluencePage', 'Remove-OfficeExcelComment', 'Remove-OfficeExcelNamedRange', 'Remove-OfficePdfAnnotation', 'Remove-OfficePdfPage', 'Remove-OfficePowerPointSlide', 'Remove-OfficeWordTableOfContents', 'Rename-OfficeExcelNamedRange', 'Rename-OfficePowerPointSection', 'Repair-OfficeExcelWorkbook', 'Resolve-OfficeWordRevision', 'Save-OfficeAsciiDoc', 'Save-OfficeEmail', 'Save-OfficeEmailMailbox', 'Save-OfficeExcel', 'Save-OfficeLatex', 'Save-OfficeMarkdown', 'Save-OfficeOpenDocument', 'Save-OfficePdf', 'Save-OfficePowerPoint', 'Save-OfficeVisio', 'Save-OfficeWord', 'Search-OfficeDocument', 'Send-OfficeConfluenceAttachment', 'Set-OfficeConfluenceManagedSection', 'Set-OfficeExcelActiveSheet', 'Set-OfficeExcelAutoFilter', 'Set-OfficeExcelCell', 'Set-OfficeExcelChartAxis', 'Set-OfficeExcelChartDataLabels', 'Set-OfficeExcelChartLegend', 'Set-OfficeExcelChartPoint', 'Set-OfficeExcelChartSeries', 'Set-OfficeExcelChartStyle', 'Set-OfficeExcelChartTrendline', 'Set-OfficeExcelColumn', 'Set-OfficeExcelColumnGroup', 'Set-OfficeExcelColumnStyleByHeader', 'Set-OfficeExcelDataValidationMessage', 'Set-OfficeExcelDateSystem', 'Set-OfficeExcelDocumentProperty', 'Set-OfficeExcelExecutionPolicy', 'Set-OfficeExcelFormula', 'Set-OfficeExcelFreeze', 'Set-OfficeExcelGridlines', 'Set-OfficeExcelHeaderFooter', 'Set-OfficeExcelHostHyperlink', 'Set-OfficeExcelHyperlink', 'Set-OfficeExcelInternalLinks', 'Set-OfficeExcelInternalLinksByHeader', 'Set-OfficeExcelMargins', 'Set-OfficeExcelNamedRange', 'Set-OfficeExcelOrientation', 'Set-OfficeExcelPageSetup', 'Set-OfficeExcelPrintArea', 'Set-OfficeExcelPrintLayout', 'Set-OfficeExcelPrintTitles', 'Set-OfficeExcelRefreshOnOpen', 'Set-OfficeExcelRichText', 'Set-OfficeExcelRow', 'Set-OfficeExcelRowGroup', 'Set-OfficeExcelSheetTabColor', 'Set-OfficeExcelSheetVisibility', 'Set-OfficeExcelSmartHyperlink', 'Set-OfficeExcelTheme', 'Set-OfficeExcelUrlLinks', 'Set-OfficeExcelUrlLinksByHeader', 'Set-OfficeExcelWorksheetView', 'Set-OfficeExcelWriteReservation', 'Set-OfficePdfAnnotation', 'Set-OfficePdfBackground', 'Set-OfficePdfBackgroundImage', 'Set-OfficePdfCompliance', 'Set-OfficePdfElectronicInvoice', 'Set-OfficePdfFooter', 'Set-OfficePdfForm', 'Set-OfficePdfHeader', 'Set-OfficePdfMetadata', 'Set-OfficePdfPage', 'Set-OfficePdfPageBorder', 'Set-OfficePdfPageSetup', 'Set-OfficePdfSignature', 'Set-OfficePdfTheme', 'Set-OfficePowerPointBackground', 'Set-OfficePowerPointLayoutPlaceholderBounds', 'Set-OfficePowerPointLayoutPlaceholderTextMargins', 'Set-OfficePowerPointLayoutPlaceholderTextStyle', 'Set-OfficePowerPointNotes', 'Set-OfficePowerPointPlaceholderText', 'Set-OfficePowerPointShapeLayout', 'Set-OfficePowerPointShapeText', 'Set-OfficePowerPointSlideLayout', 'Set-OfficePowerPointSlideSize', 'Set-OfficePowerPointSlideTitle', 'Set-OfficePowerPointSlideTransition', 'Set-OfficePowerPointTableCell', 'Set-OfficePowerPointThemeColor', 'Set-OfficePowerPointThemeFonts', 'Set-OfficePowerPointThemeName', 'Set-OfficeVisioShapeLayout', 'Set-OfficeWordBackground', 'Set-OfficeWordDocumentProperty', 'Set-OfficeWordImage', 'Set-OfficeWordPageSetup', 'Set-OfficeWordParagraphStyle', 'Set-OfficeWordShape', 'Set-OfficeWordTableCell', 'Set-OfficeWordTableOfContents', 'Set-OfficeWordTextStyle', 'Split-OfficePdf', 'Test-OfficeExcelAccessibility', 'Test-OfficeExcelTemplateBinding', 'Test-OfficeExcelWorkbook', 'Test-OfficePdfRewrite', 'Unprotect-OfficeExcelSheet', 'Unprotect-OfficeExcelWorkbook', 'Update-OfficeExcelComment', 'Update-OfficeExcelText', 'Update-OfficePowerPointText', 'Update-OfficeRtfText', 'Update-OfficeWordFields', 'Update-OfficeWordTableOfContents', 'Update-OfficeWordText') + CmdletsToExport = @('Add-OfficeExcelAutoFilter', 'Add-OfficeExcelChart', 'Add-OfficeExcelComment', 'Add-OfficeExcelConditionalColorScale', 'Add-OfficeExcelConditionalDataBar', 'Add-OfficeExcelConditionalIconSet', 'Add-OfficeExcelConditionalRule', 'Add-OfficeExcelDashboardChart', 'Add-OfficeExcelDataSet', 'Add-OfficeExcelImage', 'Add-OfficeExcelImageFromUrl', 'Add-OfficeExcelPackageMetadata', 'Add-OfficeExcelPageBreak', 'Add-OfficeExcelPivotTable', 'Add-OfficeExcelPowerQueryMetadata', 'Add-OfficeExcelReportCallout', 'Add-OfficeExcelReportKpiRow', 'Add-OfficeExcelReportLegend', 'Add-OfficeExcelReportParagraph', 'Add-OfficeExcelReportSection', 'Add-OfficeExcelReportSheet', 'Add-OfficeExcelReportSpacer', 'Add-OfficeExcelReportTable', 'Add-OfficeExcelReportTitle', 'Add-OfficeExcelSheet', 'Add-OfficeExcelSlicer', 'Add-OfficeExcelSparkline', 'Add-OfficeExcelSubtotalSummary', 'Add-OfficeExcelTable', 'Add-OfficeExcelTableOfContents', 'Add-OfficeExcelTableRow', 'Add-OfficeExcelThreadedComment', 'Add-OfficeExcelTimeline', 'Add-OfficeExcelValidationCustomFormula', 'Add-OfficeExcelValidationDate', 'Add-OfficeExcelValidationDecimal', 'Add-OfficeExcelValidationList', 'Add-OfficeExcelValidationTextLength', 'Add-OfficeExcelValidationTime', 'Add-OfficeExcelValidationWholeNumber', 'Add-OfficeExcelVisual', 'Add-OfficeMarkdownCallout', 'Add-OfficeMarkdownCode', 'Add-OfficeMarkdownDefinitionList', 'Add-OfficeMarkdownDetails', 'Add-OfficeMarkdownFrontMatter', 'Add-OfficeMarkdownHeading', 'Add-OfficeMarkdownHorizontalRule', 'Add-OfficeMarkdownImage', 'Add-OfficeMarkdownList', 'Add-OfficeMarkdownParagraph', 'Add-OfficeMarkdownQuote', 'Add-OfficeMarkdownTable', 'Add-OfficeMarkdownTableOfContents', 'Add-OfficeMarkdownTaskList', 'Add-OfficePdfAttachment', 'Add-OfficePdfBackgroundShape', 'Add-OfficePdfBookmark', 'Add-OfficePdfCanvas', 'Add-OfficePdfCanvasText', 'Add-OfficePdfFormField', 'Add-OfficePdfHeading', 'Add-OfficePdfHorizontalRule', 'Add-OfficePdfImage', 'Add-OfficePdfList', 'Add-OfficePdfPageBreak', 'Add-OfficePdfPageOverlay', 'Add-OfficePdfPanel', 'Add-OfficePdfParagraph', 'Add-OfficePdfRow', 'Add-OfficePdfSpacer', 'Add-OfficePdfStamp', 'Add-OfficePdfTable', 'Add-OfficePdfText', 'Add-OfficePdfVisual', 'Add-OfficePdfWatermark', 'Add-OfficePowerPointBullets', 'Add-OfficePowerPointChart', 'Add-OfficePowerPointDesignerDeck', 'Add-OfficePowerPointImage', 'Add-OfficePowerPointPlanCapability', 'Add-OfficePowerPointPlanCardGrid', 'Add-OfficePowerPointPlanCaseStudy', 'Add-OfficePowerPointPlanCoverage', 'Add-OfficePowerPointPlanLogoWall', 'Add-OfficePowerPointPlanProcess', 'Add-OfficePowerPointPlanSection', 'Add-OfficePowerPointSection', 'Add-OfficePowerPointShape', 'Add-OfficePowerPointSlide', 'Add-OfficePowerPointTable', 'Add-OfficePowerPointTableRow', 'Add-OfficePowerPointTextBox', 'Add-OfficePowerPointVisual', 'Add-OfficeVisioConnector', 'Add-OfficeVisioContainer', 'Add-OfficeVisioDiamond', 'Add-OfficeVisioEllipse', 'Add-OfficeVisioPage', 'Add-OfficeVisioRectangle', 'Add-OfficeVisioStencilShape', 'Add-OfficeVisioTextBox', 'Add-OfficeWordBookmark', 'Add-OfficeWordBreak', 'Add-OfficeWordChart', 'Add-OfficeWordCheckBox', 'Add-OfficeWordComboBox', 'Add-OfficeWordContentControl', 'Add-OfficeWordCoverPage', 'Add-OfficeWordDatePicker', 'Add-OfficeWordDropDownList', 'Add-OfficeWordEndnote', 'Add-OfficeWordEquation', 'Add-OfficeWordField', 'Add-OfficeWordFooter', 'Add-OfficeWordFootnote', 'Add-OfficeWordHeader', 'Add-OfficeWordHyperlink', 'Add-OfficeWordImage', 'Add-OfficeWordList', 'Add-OfficeWordListItem', 'Add-OfficeWordPageNumber', 'Add-OfficeWordParagraph', 'Add-OfficeWordPictureControl', 'Add-OfficeWordRepeatingSection', 'Add-OfficeWordSection', 'Add-OfficeWordShape', 'Add-OfficeWordTable', 'Add-OfficeWordTableCell', 'Add-OfficeWordTableCondition', 'Add-OfficeWordTableOfContents', 'Add-OfficeWordTableRow', 'Add-OfficeWordTabStop', 'Add-OfficeWordText', 'Add-OfficeWordTextBox', 'Add-OfficeWordVisual', 'Add-OfficeWordWatermark', 'Clear-OfficeExcelAutoFilter', 'Clear-OfficeExcelComment', 'Clear-OfficeExcelConditionalFormatting', 'Clear-OfficeExcelDataValidation', 'Clear-OfficeExcelPageBreak', 'Clear-OfficeExcelRange', 'Clear-OfficeExcelWriteReservation', 'Clear-OfficePdfBackgroundShape', 'Close-OfficeExcel', 'Close-OfficePowerPoint', 'Close-OfficeWord', 'Compare-OfficeExcelRange', 'Compare-OfficeExcelWorkbook', 'Compare-OfficePdfVisual', 'Compare-OfficeWordDocument', 'ConvertFrom-OfficeAsciiDocMarkdown', 'ConvertFrom-OfficeCsv', 'ConvertFrom-OfficeLatexMarkdown', 'ConvertFrom-OfficeMarkdownHtml', 'ConvertFrom-OfficeOpenDocument', 'ConvertFrom-OfficePdfHtml', 'ConvertFrom-OfficeRtf', 'ConvertFrom-OfficeWordHtml', 'ConvertFrom-OfficeWordMarkdown', 'ConvertTo-OfficeAsciiDocMarkdown', 'ConvertTo-OfficeCsv', 'ConvertTo-OfficeExcelHtml', 'ConvertTo-OfficeExcelWorkbook', 'ConvertTo-OfficeLatexMarkdown', 'ConvertTo-OfficeMarkdown', 'ConvertTo-OfficeMarkdownHtml', 'ConvertTo-OfficeOpenDocument', 'ConvertTo-OfficePdfExcel', 'ConvertTo-OfficePdfFlatAnnotation', 'ConvertTo-OfficePdfFlatForm', 'ConvertTo-OfficePdfHtml', 'ConvertTo-OfficePdfMarkdown', 'ConvertTo-OfficePdfOptimized', 'ConvertTo-OfficePdfPowerPoint', 'ConvertTo-OfficePdfRedacted', 'ConvertTo-OfficePdfSanitized', 'ConvertTo-OfficePdfTextRun', 'ConvertTo-OfficePdfWord', 'ConvertTo-OfficePowerPointHtml', 'ConvertTo-OfficeRtf', 'ConvertTo-OfficeVisioPng', 'ConvertTo-OfficeVisioSvg', 'ConvertTo-OfficeVisioVisual', 'ConvertTo-OfficeVisual', 'ConvertTo-OfficeWordDocument', 'ConvertTo-OfficeWordHtml', 'ConvertTo-OfficeWordMarkdown', 'Copy-OfficeExcelSheet', 'Copy-OfficeExcelWorkbook', 'Copy-OfficePdfPage', 'Copy-OfficePowerPointSlide', 'Edit-OfficeExcelRow', 'Export-OfficeCsv', 'Export-OfficeDocumentPdf', 'Export-OfficeExcel', 'Export-OfficeExcelChartImage', 'Export-OfficeExcelGoogleSpreadsheet', 'Export-OfficeExcelImage', 'Export-OfficeExcelRangeImage', 'Export-OfficeHtmlImage', 'Export-OfficePdfImage', 'Export-OfficePdfLayoutOverlay', 'Export-OfficePdfXfdf', 'Export-OfficePowerPointImage', 'Export-OfficeVisioImage', 'Export-OfficeVisioStencilPreviewGallery', 'Export-OfficeVisioVisual', 'Export-OfficeWordGoogleDocument', 'Export-OfficeWordImage', 'Find-OfficeExcel', 'Find-OfficePowerPointShape', 'Find-OfficeVisioStencil', 'Find-OfficeWord', 'Find-OfficeWordList', 'Find-OfficeWordTable', 'Get-OfficeAsciiDoc', 'Get-OfficeConfluenceAttachment', 'Get-OfficeConfluencePage', 'Get-OfficeCsv', 'Get-OfficeDocument', 'Get-OfficeDocumentAsset', 'Get-OfficeDocumentBatch', 'Get-OfficeDocumentCapability', 'Get-OfficeDocumentChunk', 'Get-OfficeDocumentDetection', 'Get-OfficeDocumentHierarchy', 'Get-OfficeDocumentIngest', 'Get-OfficeDocumentPageMarkdown', 'Get-OfficeDocumentStructured', 'Get-OfficeDocumentTable', 'Get-OfficeDocumentVisual', 'Get-OfficeEmail', 'Get-OfficeEmailMailbox', 'Get-OfficeExcel', 'Get-OfficeExcelComment', 'Get-OfficeExcelCommentAudit', 'Get-OfficeExcelConditionalFormatting', 'Get-OfficeExcelData', 'Get-OfficeExcelDataModel', 'Get-OfficeExcelDataValidation', 'Get-OfficeExcelDocumentProperty', 'Get-OfficeExcelFormulaAnalysis', 'Get-OfficeExcelNamedRange', 'Get-OfficeExcelNumberFormatPreset', 'Get-OfficeExcelPageBreak', 'Get-OfficeExcelPivotTable', 'Get-OfficeExcelPreflight', 'Get-OfficeExcelRange', 'Get-OfficeExcelRichText', 'Get-OfficeExcelRuntimePreflight', 'Get-OfficeExcelStreamingContract', 'Get-OfficeExcelSummary', 'Get-OfficeExcelTable', 'Get-OfficeExcelTableStyle', 'Get-OfficeExcelTemplateMarker', 'Get-OfficeExcelUsedRange', 'Get-OfficeExcelWorksheetView', 'Get-OfficeExcelWriteReservation', 'Get-OfficeLatex', 'Get-OfficeMarkdown', 'Get-OfficeMarkdownFrontMatter', 'Get-OfficeMarkdownHeading', 'Get-OfficeMarkdownNode', 'Get-OfficeMarkdownTable', 'Get-OfficeOpenDocument', 'Get-OfficePdf', 'Get-OfficePdfAnnotation', 'Get-OfficePdfAppendOnlyMutation', 'Get-OfficePdfAttachment', 'Get-OfficePdfCompliance', 'Get-OfficePdfDiagnostic', 'Get-OfficePdfFont', 'Get-OfficePdfFormField', 'Get-OfficePdfImage', 'Get-OfficePdfInfo', 'Get-OfficePdfInteractionMap', 'Get-OfficePdfOptimization', 'Get-OfficePdfPreflight', 'Get-OfficePdfRedactionPlan', 'Get-OfficePdfSignature', 'Get-OfficePdfText', 'Get-OfficePdfTextDiagnostic', 'Get-OfficePowerPoint', 'Get-OfficePowerPointInspection', 'Get-OfficePowerPointLayout', 'Get-OfficePowerPointLayoutBox', 'Get-OfficePowerPointLayoutPlaceholder', 'Get-OfficePowerPointNotes', 'Get-OfficePowerPointPlaceholder', 'Get-OfficePowerPointSection', 'Get-OfficePowerPointShape', 'Get-OfficePowerPointSlide', 'Get-OfficePowerPointSlideSummary', 'Get-OfficePowerPointTheme', 'Get-OfficeProtectionCapability', 'Get-OfficeRtf', 'Get-OfficeVisio', 'Get-OfficeVisioInfo', 'Get-OfficeVisioStencilCatalog', 'Get-OfficeWord', 'Get-OfficeWordBookmark', 'Get-OfficeWordCheckBox', 'Get-OfficeWordComboBox', 'Get-OfficeWordContentControl', 'Get-OfficeWordDatePicker', 'Get-OfficeWordDocumentProperty', 'Get-OfficeWordDropDownList', 'Get-OfficeWordEndnote', 'Get-OfficeWordField', 'Get-OfficeWordFootnote', 'Get-OfficeWordHyperlink', 'Get-OfficeWordImage', 'Get-OfficeWordList', 'Get-OfficeWordParagraph', 'Get-OfficeWordPictureControl', 'Get-OfficeWordRepeatingSection', 'Get-OfficeWordReview', 'Get-OfficeWordSection', 'Get-OfficeWordShape', 'Get-OfficeWordStatistics', 'Get-OfficeWordTable', 'Get-OfficeWordTableCell', 'Get-OfficeWordTableOfContents', 'Get-OfficeWordText', 'Import-OfficeCsv', 'Import-OfficeExcel', 'Import-OfficeExcelDelimitedText', 'Import-OfficePdfXfdf', 'Import-OfficePowerPointSlide', 'Import-OfficeVisioStencil', 'Invoke-OfficeExcelAutoFit', 'Invoke-OfficeExcelSort', 'Invoke-OfficeExcelTemplate', 'Invoke-OfficeExcelTemplateOptionalRow', 'Invoke-OfficeExcelTemplateRow', 'Invoke-OfficeExcelTemplateSheet', 'Invoke-OfficePdfOcrMerge', 'Invoke-OfficeWordMailMerge', 'Join-OfficeExcelSheet', 'Join-OfficeExcelWorkbook', 'Join-OfficePdf', 'Join-OfficeWordDocument', 'Move-OfficeExcelSheet', 'Move-OfficePdfPage', 'New-OfficeConfluenceSession', 'New-OfficeDocumentReader', 'New-OfficeExcel', 'New-OfficeExcelDashboard', 'New-OfficeMarkdown', 'New-OfficeOpenDocument', 'New-OfficePdf', 'New-OfficePdfSignature', 'New-OfficePdfTableCell', 'New-OfficePdfTableCellCheckBox', 'New-OfficePdfTableCellField', 'New-OfficePdfTableCellImage', 'New-OfficePowerPoint', 'New-OfficePowerPointDeckPlan', 'New-OfficeRtf', 'New-OfficeTextRun', 'New-OfficeVisio', 'New-OfficeVisioGallery', 'New-OfficeWord', 'New-OfficeWordTableCell', 'Protect-OfficeExcelSheet', 'Protect-OfficeExcelWorkbook', 'Protect-OfficeWordDocument', 'Publish-OfficeConfluencePage', 'Remove-OfficeConfluencePage', 'Remove-OfficeExcelComment', 'Remove-OfficeExcelNamedRange', 'Remove-OfficePdfAnnotation', 'Remove-OfficePdfPage', 'Remove-OfficePowerPointSlide', 'Remove-OfficeWordTableOfContents', 'Rename-OfficeExcelNamedRange', 'Rename-OfficePowerPointSection', 'Repair-OfficeExcelWorkbook', 'Resolve-OfficeWordRevision', 'Save-OfficeAsciiDoc', 'Save-OfficeEmail', 'Save-OfficeEmailMailbox', 'Save-OfficeExcel', 'Save-OfficeLatex', 'Save-OfficeMarkdown', 'Save-OfficeOpenDocument', 'Save-OfficePdf', 'Save-OfficePowerPoint', 'Save-OfficeVisio', 'Save-OfficeWord', 'Search-OfficeDocument', 'Send-OfficeConfluenceAttachment', 'Set-OfficeConfluenceManagedSection', 'Set-OfficeExcelActiveSheet', 'Set-OfficeExcelAutoFilter', 'Set-OfficeExcelCell', 'Set-OfficeExcelChartAxis', 'Set-OfficeExcelChartDataLabels', 'Set-OfficeExcelChartLegend', 'Set-OfficeExcelChartPoint', 'Set-OfficeExcelChartSeries', 'Set-OfficeExcelChartStyle', 'Set-OfficeExcelChartTrendline', 'Set-OfficeExcelColumn', 'Set-OfficeExcelColumnGroup', 'Set-OfficeExcelColumnStyleByHeader', 'Set-OfficeExcelDataValidationMessage', 'Set-OfficeExcelDateSystem', 'Set-OfficeExcelDocumentProperty', 'Set-OfficeExcelExecutionPolicy', 'Set-OfficeExcelFormula', 'Set-OfficeExcelFreeze', 'Set-OfficeExcelGridlines', 'Set-OfficeExcelHeaderFooter', 'Set-OfficeExcelHostHyperlink', 'Set-OfficeExcelHyperlink', 'Set-OfficeExcelInternalLinks', 'Set-OfficeExcelInternalLinksByHeader', 'Set-OfficeExcelMargins', 'Set-OfficeExcelNamedRange', 'Set-OfficeExcelOrientation', 'Set-OfficeExcelPageSetup', 'Set-OfficeExcelPrintArea', 'Set-OfficeExcelPrintLayout', 'Set-OfficeExcelPrintTitles', 'Set-OfficeExcelRefreshOnOpen', 'Set-OfficeExcelRichText', 'Set-OfficeExcelRow', 'Set-OfficeExcelRowGroup', 'Set-OfficeExcelSheetTabColor', 'Set-OfficeExcelSheetVisibility', 'Set-OfficeExcelSmartHyperlink', 'Set-OfficeExcelTheme', 'Set-OfficeExcelUrlLinks', 'Set-OfficeExcelUrlLinksByHeader', 'Set-OfficeExcelWorksheetView', 'Set-OfficeExcelWriteReservation', 'Set-OfficePdfAnnotation', 'Set-OfficePdfBackground', 'Set-OfficePdfBackgroundImage', 'Set-OfficePdfCompliance', 'Set-OfficePdfElectronicInvoice', 'Set-OfficePdfFooter', 'Set-OfficePdfForm', 'Set-OfficePdfHeader', 'Set-OfficePdfMetadata', 'Set-OfficePdfPage', 'Set-OfficePdfPageBorder', 'Set-OfficePdfPageSetup', 'Set-OfficePdfSignature', 'Set-OfficePdfTheme', 'Set-OfficePowerPointBackground', 'Set-OfficePowerPointLayoutPlaceholderBounds', 'Set-OfficePowerPointLayoutPlaceholderTextMargins', 'Set-OfficePowerPointLayoutPlaceholderTextStyle', 'Set-OfficePowerPointNotes', 'Set-OfficePowerPointPlaceholderText', 'Set-OfficePowerPointShapeLayout', 'Set-OfficePowerPointShapeText', 'Set-OfficePowerPointSlideLayout', 'Set-OfficePowerPointSlideSize', 'Set-OfficePowerPointSlideTitle', 'Set-OfficePowerPointSlideTransition', 'Set-OfficePowerPointTableCell', 'Set-OfficePowerPointThemeColor', 'Set-OfficePowerPointThemeFonts', 'Set-OfficePowerPointThemeName', 'Set-OfficeVisioShapeLayout', 'Set-OfficeWordBackground', 'Set-OfficeWordDocumentProperty', 'Set-OfficeWordImage', 'Set-OfficeWordPageSetup', 'Set-OfficeWordParagraphStyle', 'Set-OfficeWordShape', 'Set-OfficeWordTableCell', 'Set-OfficeWordTableOfContents', 'Set-OfficeWordTextStyle', 'Split-OfficePdf', 'Test-OfficeExcelAccessibility', 'Test-OfficeExcelTemplateBinding', 'Test-OfficeExcelWorkbook', 'Test-OfficePdfRewrite', 'Unprotect-OfficeExcelSheet', 'Unprotect-OfficeExcelWorkbook', 'Update-OfficeExcelComment', 'Update-OfficeExcelText', 'Update-OfficePowerPointText', 'Update-OfficeRtfText', 'Update-OfficeWordFields', 'Update-OfficeWordTableOfContents', 'Update-OfficeWordText') CompanyName = 'Evotec' CompatiblePSEditions = @('Desktop', 'Core') Copyright = '(c) 2011 - 2026 Przemyslaw Klys @ Evotec. All rights reserved.' diff --git a/WebsiteArtifacts/apidocs/powershell/command-metadata.json b/WebsiteArtifacts/apidocs/powershell/command-metadata.json index 90549691..9ed6a2c3 100644 --- a/WebsiteArtifacts/apidocs/powershell/command-metadata.json +++ b/WebsiteArtifacts/apidocs/powershell/command-metadata.json @@ -784,8 +784,8 @@ "PptChart" ], "sourcePath": "Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointChartCommand.cs", - "sourceLine": 59, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointChartCommand.cs#L59" + "sourceLine": 58, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointChartCommand.cs#L58" }, { "name": "Add-OfficePowerPointDesignerDeck", @@ -1906,6 +1906,14 @@ "sourceLine": 29, "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Csv/ExportOfficeCsvCommand.cs#L29" }, + { + "name": "Export-OfficeDocumentPdf", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs", + "sourceLine": 36, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs#L36" + }, { "name": "Export-OfficeExcel", "kind": "Cmdlet", @@ -3264,8 +3272,8 @@ "ExcelNew" ], "sourcePath": "Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelCommand.cs", - "sourceLine": 31, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelCommand.cs#L31" + "sourceLine": 30, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelCommand.cs#L30" }, { "name": "New-OfficeExcelDashboard", @@ -3284,8 +3292,8 @@ "MarkdownNew" ], "sourcePath": "Sources/PSWriteOffice/Cmdlets/Markdown/NewOfficeMarkdownCommand.cs", - "sourceLine": 35, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Markdown/NewOfficeMarkdownCommand.cs#L35" + "sourceLine": 33, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Markdown/NewOfficeMarkdownCommand.cs#L33" }, { "name": "New-OfficeOpenDocument", @@ -3361,8 +3369,8 @@ "PptNew" ], "sourcePath": "Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointCommand.cs", - "sourceLine": 28, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointCommand.cs#L28" + "sourceLine": 27, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointCommand.cs#L27" }, { "name": "New-OfficePowerPointDeckPlan", @@ -3426,8 +3434,8 @@ "WordNew" ], "sourcePath": "Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordCommand.cs", - "sourceLine": 35, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordCommand.cs#L35" + "sourceLine": 34, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordCommand.cs#L34" }, { "name": "New-OfficeWordTableCell", @@ -3601,8 +3609,8 @@ "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/Excel/SaveOfficeExcelCommand.cs", - "sourceLine": 20, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Excel/SaveOfficeExcelCommand.cs#L20" + "sourceLine": 19, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Excel/SaveOfficeExcelCommand.cs#L19" }, { "name": "Save-OfficeLatex", @@ -3617,8 +3625,8 @@ "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/Markdown/SaveOfficeMarkdownCommand.cs", - "sourceLine": 21, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Markdown/SaveOfficeMarkdownCommand.cs#L21" + "sourceLine": 19, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Markdown/SaveOfficeMarkdownCommand.cs#L19" }, { "name": "Save-OfficeOpenDocument", @@ -3641,8 +3649,8 @@ "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/PowerPoint/SaveOfficePowerPointCommand.cs", - "sourceLine": 23, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/SaveOfficePowerPointCommand.cs#L23" + "sourceLine": 21, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/SaveOfficePowerPointCommand.cs#L21" }, { "name": "Save-OfficeVisio", @@ -3659,8 +3667,8 @@ "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/Word/SaveOfficeWordCommand.cs", - "sourceLine": 22, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Word/SaveOfficeWordCommand.cs#L22" + "sourceLine": 21, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Word/SaveOfficeWordCommand.cs#L21" }, { "name": "Search-OfficeDocument", diff --git a/WebsiteArtifacts/documentation/command-catalog.json b/WebsiteArtifacts/documentation/command-catalog.json index 04472bb1..5ce683f7 100644 --- a/WebsiteArtifacts/documentation/command-catalog.json +++ b/WebsiteArtifacts/documentation/command-catalog.json @@ -1 +1 @@ -{"schemaVersion":1,"format":"pswriteoffice.documentation-catalog","module":{"name":"PSWriteOffice","version":"3.0.6","commandCount":492,"aliasCount":371,"familyCount":18,"sourceManifest":"PSWriteOffice.psd1"},"families":[{"id":"word","title":"Word","description":"Create, inspect, update, review, merge, protect, and convert DOC and DOCX documents.","commandCount":92,"docsUrl":"/docs/pswriteoffice/word/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Word","featuredCommands":["New-OfficeWord","Add-OfficeWordTable","Get-OfficeWordReview","Invoke-OfficeWordMailMerge","ConvertTo-OfficeWordDocument"]},{"id":"excel","title":"Excel","description":"Build, read, convert, validate, repair, compare, and publish XLS and XLSX workbook workflows.","commandCount":158,"docsUrl":"/docs/pswriteoffice/excel/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Excel","featuredCommands":["New-OfficeExcel","Add-OfficeExcelTable","Add-OfficeExcelPivotTable","Test-OfficeExcelWorkbook","ConvertTo-OfficeExcelWorkbook"]},{"id":"powerpoint","title":"PowerPoint","description":"Compose, inspect, update, import, theme, and render repeatable presentation decks.","commandCount":58,"docsUrl":"/docs/pswriteoffice/powerpoint/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/PowerPoint","featuredCommands":["New-OfficePowerPoint","Add-OfficePowerPointSlide","Add-OfficePowerPointChart","Get-OfficePowerPointInspection"]},{"id":"pdf","title":"PDF","description":"Author, inspect, transform, sign, annotate, extract, preflight, and combine PDF files.","commandCount":85,"docsUrl":"/docs/pswriteoffice/pdf/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Pdf","featuredCommands":["New-OfficePdf","Join-OfficePdf","Get-OfficePdfPreflight","Set-OfficePdfSignature"]},{"id":"reader","title":"Reader and extraction","description":"Detect formats and extract normalized documents, chunks, tables, visuals, assets, and ingest results.","commandCount":13,"docsUrl":"/docs/pswriteoffice/reader/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Reader","featuredCommands":["New-OfficeDocumentReader","Get-OfficeDocumentChunk","Get-OfficeDocumentTable","Search-OfficeDocument"]},{"id":"confluence","title":"Confluence Cloud","description":"Plan and publish pages, preserve managed sections, and transfer attachments through OfficeIMO.Confluence.","commandCount":7,"docsUrl":"/docs/pswriteoffice/confluence/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Confluence","featuredCommands":["New-OfficeConfluenceSession","Publish-OfficeConfluencePage","Set-OfficeConfluenceManagedSection","Send-OfficeConfluenceAttachment"]},{"id":"visio","title":"Visio","description":"Create, inspect, arrange, and export VSDX diagrams with built-in and imported stencils.","commandCount":23,"docsUrl":"/docs/pswriteoffice/visio/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Visio","featuredCommands":["New-OfficeVisio","Add-OfficeVisioStencilShape","Get-OfficeVisioInfo","ConvertTo-OfficeVisioSvg"]},{"id":"markdown","title":"Markdown","description":"Compose typed Markdown, parse documents, and convert between Markdown and HTML or Word.","commandCount":25,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Markdown","featuredCommands":["New-OfficeMarkdown","Add-OfficeMarkdownTable","ConvertTo-OfficeMarkdownHtml","ConvertFrom-OfficeWordMarkdown"]},{"id":"rtf","title":"RTF","description":"Create, open, edit, inspect, and bridge Rich Text Format documents.","commandCount":5,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Rtf","featuredCommands":["New-OfficeRtf","Get-OfficeRtf","Update-OfficeRtfText","ConvertTo-OfficeRtf"]},{"id":"csv","title":"CSV","description":"Create, import, inspect, and export delimited data with typed options.","commandCount":5,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Csv","featuredCommands":["ConvertTo-OfficeCsv","Import-OfficeCsv","Export-OfficeCsv","Get-OfficeCsv"]},{"id":"open-document","title":"OpenDocument","description":"Create, read, and save ODT, ODS, and ODP workflows.","commandCount":5,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["New-OfficeOpenDocument","Get-OfficeOpenDocument","Save-OfficeOpenDocument"]},{"id":"email","title":"Email","description":"Read and write messages and mailbox artifacts through the managed OfficeIMO.Email engine.","commandCount":4,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeEmail","Get-OfficeEmailMailbox","Save-OfficeEmail","Save-OfficeEmailMailbox"]},{"id":"asciidoc","title":"AsciiDoc","description":"Read, create, update, and save bounded AsciiDoc workflows.","commandCount":4,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeAsciiDoc","ConvertFrom-OfficeAsciiDocMarkdown","ConvertTo-OfficeAsciiDocMarkdown","Save-OfficeAsciiDoc"]},{"id":"latex","title":"LaTeX","description":"Read, create, update, and save bounded LaTeX interoperability workflows.","commandCount":4,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeLatex","ConvertFrom-OfficeLatexMarkdown","ConvertTo-OfficeLatexMarkdown","Save-OfficeLatex"]},{"id":"html","title":"HTML assets","description":"Export images and review surfaces used by document-to-HTML workflows.","commandCount":1,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Export-OfficeHtmlImage"]},{"id":"visuals","title":"Cross-format visuals","description":"Convert reusable visual artifacts for Word, Excel, PowerPoint, and PDF placement.","commandCount":1,"docsUrl":"/docs/pswriteoffice/automation-patterns/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["ConvertTo-OfficeVisual"]},{"id":"protection","title":"Protection capabilities","description":"Discover the machine-readable protected-content support contract shared across OfficeIMO formats.","commandCount":1,"docsUrl":"/docs/pswriteoffice/automation-patterns/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeProtectionCapability"]},{"id":"shared","title":"Shared authoring primitives","description":"Create reusable text runs shared by document DSLs.","commandCount":1,"docsUrl":"/docs/pswriteoffice/automation-patterns/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["New-OfficeTextRun"]}]} +{"schemaVersion":1,"format":"pswriteoffice.documentation-catalog","module":{"name":"PSWriteOffice","version":"3.0.6","commandCount":493,"aliasCount":371,"familyCount":18,"sourceManifest":"PSWriteOffice.psd1"},"families":[{"id":"word","title":"Word","description":"Create, inspect, update, review, merge, protect, and convert DOC and DOCX documents.","commandCount":92,"docsUrl":"/docs/pswriteoffice/word/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Word","featuredCommands":["New-OfficeWord","Add-OfficeWordTable","Get-OfficeWordReview","Invoke-OfficeWordMailMerge","ConvertTo-OfficeWordDocument"]},{"id":"excel","title":"Excel","description":"Build, read, convert, validate, repair, compare, and publish XLS and XLSX workbook workflows.","commandCount":158,"docsUrl":"/docs/pswriteoffice/excel/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Excel","featuredCommands":["New-OfficeExcel","Add-OfficeExcelTable","Add-OfficeExcelPivotTable","Test-OfficeExcelWorkbook","ConvertTo-OfficeExcelWorkbook"]},{"id":"powerpoint","title":"PowerPoint","description":"Compose, inspect, update, import, theme, and render repeatable presentation decks.","commandCount":58,"docsUrl":"/docs/pswriteoffice/powerpoint/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/PowerPoint","featuredCommands":["New-OfficePowerPoint","Add-OfficePowerPointSlide","Add-OfficePowerPointChart","Get-OfficePowerPointInspection"]},{"id":"pdf","title":"PDF","description":"Author, inspect, transform, sign, annotate, extract, preflight, and combine PDF files.","commandCount":86,"docsUrl":"/docs/pswriteoffice/pdf/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Pdf","featuredCommands":["New-OfficePdf","Join-OfficePdf","Get-OfficePdfPreflight","Set-OfficePdfSignature"]},{"id":"reader","title":"Reader and extraction","description":"Detect formats and extract normalized documents, chunks, tables, visuals, assets, and ingest results.","commandCount":13,"docsUrl":"/docs/pswriteoffice/reader/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Reader","featuredCommands":["New-OfficeDocumentReader","Get-OfficeDocumentChunk","Get-OfficeDocumentTable","Search-OfficeDocument"]},{"id":"confluence","title":"Confluence Cloud","description":"Plan and publish pages, preserve managed sections, and transfer attachments through OfficeIMO.Confluence.","commandCount":7,"docsUrl":"/docs/pswriteoffice/confluence/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Confluence","featuredCommands":["New-OfficeConfluenceSession","Publish-OfficeConfluencePage","Set-OfficeConfluenceManagedSection","Send-OfficeConfluenceAttachment"]},{"id":"visio","title":"Visio","description":"Create, inspect, arrange, and export VSDX diagrams with built-in and imported stencils.","commandCount":23,"docsUrl":"/docs/pswriteoffice/visio/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Visio","featuredCommands":["New-OfficeVisio","Add-OfficeVisioStencilShape","Get-OfficeVisioInfo","ConvertTo-OfficeVisioSvg"]},{"id":"markdown","title":"Markdown","description":"Compose typed Markdown, parse documents, and convert between Markdown and HTML or Word.","commandCount":25,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Markdown","featuredCommands":["New-OfficeMarkdown","Add-OfficeMarkdownTable","ConvertTo-OfficeMarkdownHtml","ConvertFrom-OfficeWordMarkdown"]},{"id":"rtf","title":"RTF","description":"Create, open, edit, inspect, and bridge Rich Text Format documents.","commandCount":5,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Rtf","featuredCommands":["New-OfficeRtf","Get-OfficeRtf","Update-OfficeRtfText","ConvertTo-OfficeRtf"]},{"id":"csv","title":"CSV","description":"Create, import, inspect, and export delimited data with typed options.","commandCount":5,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Csv","featuredCommands":["ConvertTo-OfficeCsv","Import-OfficeCsv","Export-OfficeCsv","Get-OfficeCsv"]},{"id":"open-document","title":"OpenDocument","description":"Create, read, and save ODT, ODS, and ODP workflows.","commandCount":5,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["New-OfficeOpenDocument","Get-OfficeOpenDocument","Save-OfficeOpenDocument"]},{"id":"email","title":"Email","description":"Read and write messages and mailbox artifacts through the managed OfficeIMO.Email engine.","commandCount":4,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeEmail","Get-OfficeEmailMailbox","Save-OfficeEmail","Save-OfficeEmailMailbox"]},{"id":"asciidoc","title":"AsciiDoc","description":"Read, create, update, and save bounded AsciiDoc workflows.","commandCount":4,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeAsciiDoc","ConvertFrom-OfficeAsciiDocMarkdown","ConvertTo-OfficeAsciiDocMarkdown","Save-OfficeAsciiDoc"]},{"id":"latex","title":"LaTeX","description":"Read, create, update, and save bounded LaTeX interoperability workflows.","commandCount":4,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeLatex","ConvertFrom-OfficeLatexMarkdown","ConvertTo-OfficeLatexMarkdown","Save-OfficeLatex"]},{"id":"html","title":"HTML assets","description":"Export images and review surfaces used by document-to-HTML workflows.","commandCount":1,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Export-OfficeHtmlImage"]},{"id":"visuals","title":"Cross-format visuals","description":"Convert reusable visual artifacts for Word, Excel, PowerPoint, and PDF placement.","commandCount":1,"docsUrl":"/docs/pswriteoffice/automation-patterns/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["ConvertTo-OfficeVisual"]},{"id":"protection","title":"Protection capabilities","description":"Discover the machine-readable protected-content support contract shared across OfficeIMO formats.","commandCount":1,"docsUrl":"/docs/pswriteoffice/automation-patterns/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeProtectionCapability"]},{"id":"shared","title":"Shared authoring primitives","description":"Create reusable text runs shared by document DSLs.","commandCount":1,"docsUrl":"/docs/pswriteoffice/automation-patterns/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["New-OfficeTextRun"]}]} From 83232d8d7da2c960d36fa4b741f69f38eb3221a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20K=C5=82ys?= Date: Fri, 21 Aug 2026 13:14:04 +0200 Subject: [PATCH 2/8] Document email module ownership --- README.MD | 2 ++ Website/content/project-docs/docs/open-text-formats.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/README.MD b/README.MD index 83ff92dd..d4be43bb 100644 --- a/README.MD +++ b/README.MD @@ -93,6 +93,8 @@ $docsPlan = Export-OfficeWordGoogleDocument -Path .\Report.docx -PlanOnly $sheetsBatch = Export-OfficeExcelGoogleSpreadsheet -Path .\Data.xlsx -AsBatch ``` +PSWriteOffice owns the document-workflow side of email: reading or writing standalone message and mailbox artifacts, and searching supported mail sources through the normalized `OfficeIMO.Reader` model. [Mailozaurr](https://github.com/EvotecIT/Mailozaurr) owns operational email and mailbox management, including transport, authentication, mailbox/store lifecycle, PST/OST import and conversion, querying, export, and delivery. Use PSWriteOffice when mail is an input to a report or mixed-document search; use Mailozaurr to acquire, manage, convert, or send the mail, then pass ordinary paths and attachments between the modules. + Confluence writes can be reviewed before a session or tenant is involved: ```powershell diff --git a/Website/content/project-docs/docs/open-text-formats.md b/Website/content/project-docs/docs/open-text-formats.md index fb49bcd5..3cd79070 100644 --- a/Website/content/project-docs/docs/open-text-formats.md +++ b/Website/content/project-docs/docs/open-text-formats.md @@ -42,6 +42,8 @@ Five commands create, read, convert, and save ODT, ODS, and ODP artifacts throug Four commands load and save messages and mailbox artifacts through OfficeIMO.Email. The underlying engine covers multiple message, personal-information, store, and address-book families; exact support and diagnostics belong to the generated command/API reference. +The module boundary is deliberate. PSWriteOffice treats email as document content: it reads or writes supported artifacts and lets OfficeIMO.Reader normalize mail sources for mixed-format search and reporting. [Mailozaurr](https://github.com/EvotecIT/Mailozaurr) owns transport, authentication, mailbox/store lifecycle, PST/OST import and conversion, querying, export, and delivery. Workflows can use Mailozaurr to acquire or deliver content and pass ordinary paths or attachments to PSWriteOffice without either module duplicating the other's operational responsibilities. + ## AsciiDoc and LaTeX Each family provides four bounded interoperability commands for reading, saving, and bridging through Markdown. These are explicit profiles, not a claim to implement every extension or package in the wider AsciiDoc or TeX ecosystems. From 0cc28df2e43e752af1f21b1bb2e8ed1c2b4b59b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20K=C5=82ys?= Date: Fri, 21 Aug 2026 13:56:16 +0200 Subject: [PATCH 3/8] Fix API lifecycle review findings --- Build/Export-WebsiteArtifacts.ps1 | 16 ++ Docs/Add-OfficePowerPointBullets.md | 2 +- Docs/Add-OfficePowerPointChart.md | 4 +- Docs/Add-OfficePowerPointImage.md | 2 +- Docs/Add-OfficePowerPointSection.md | 4 +- Docs/Add-OfficePowerPointShape.md | 2 +- Docs/Add-OfficePowerPointSlide.md | 4 +- Docs/Add-OfficePowerPointTextBox.md | 2 +- Docs/Close-OfficeExcel.md | 4 +- Docs/Close-OfficePowerPoint.md | 20 ++- Docs/Close-OfficeWord.md | 8 +- Docs/Copy-OfficePowerPointSlide.md | 4 +- Docs/Generated/PSWriteOffice-help.xml | 141 +++++++++++------- Docs/Get-OfficePowerPointLayoutBox.md | 4 +- Docs/Get-OfficePowerPointSection.md | 7 +- Docs/Get-OfficePowerPointTheme.md | 3 +- Docs/Import-OfficePowerPointSlide.md | 2 +- Docs/New-OfficeWord.md | 2 +- Docs/Remove-OfficePowerPointSlide.md | 8 +- Docs/Rename-OfficePowerPointSection.md | 7 +- Docs/Save-OfficePowerPoint.md | 4 +- Docs/Set-OfficePowerPointNotes.md | 2 +- Docs/Set-OfficePowerPointPlaceholderText.md | 2 +- Docs/Set-OfficePowerPointSlideSize.md | 7 +- Docs/Set-OfficePowerPointThemeFonts.md | 2 +- Docs/Set-OfficePowerPointThemeName.md | 2 +- Docs/Update-OfficeExcelText.md | 4 +- Docs/Update-OfficePowerPointText.md | 11 +- Docs/Update-OfficeWordText.md | 2 +- .../Excel/Example-ExcelChartFormatting.ps1 | 4 +- .../Showcase-Excel-OperationalDashboard.ps1 | 18 +-- README.MD | 5 +- .../Cmdlets/Excel/CloseOfficeExcelCommand.cs | 18 ++- .../Excel/UpdateOfficeExcelTextCommand.cs | 6 +- .../Pdf/ExportOfficeDocumentPdfCommand.cs | 20 +-- .../AddOfficePowerPointBulletsCommand.cs | 4 +- .../AddOfficePowerPointChartCommand.cs | 6 +- .../AddOfficePowerPointImageCommand.cs | 4 +- .../AddOfficePowerPointSectionCommand.cs | 6 +- .../AddOfficePowerPointShapeCommand.cs | 4 +- .../AddOfficePowerPointSlideCommand.cs | 6 +- .../AddOfficePowerPointTextBoxCommand.cs | 4 +- .../CloseOfficePowerPointCommand.cs | 21 ++- .../CopyOfficePowerPointSlideCommand.cs | 6 +- .../GetOfficePowerPointLayoutBoxCommand.cs | 4 +- .../GetOfficePowerPointSectionCommand.cs | 11 +- .../GetOfficePowerPointThemeCommand.cs | 7 +- .../ImportOfficePowerPointSlideCommand.cs | 2 +- .../RemoveOfficePowerPointSlideCommand.cs | 10 +- .../RenameOfficePowerPointSectionCommand.cs | 11 +- .../PowerPoint/SaveOfficePowerPointCommand.cs | 6 +- .../SetOfficePowerPointNotesCommand.cs | 4 +- ...tOfficePowerPointPlaceholderTextCommand.cs | 2 +- .../SetOfficePowerPointSlideSizeCommand.cs | 9 +- .../SetOfficePowerPointThemeFontsCommand.cs | 2 +- .../SetOfficePowerPointThemeNameCommand.cs | 2 +- .../UpdateOfficePowerPointTextCommand.cs | 13 +- .../Cmdlets/Word/CloseOfficeWordCommand.cs | 18 ++- .../Cmdlets/Word/NewOfficeWordCommand.cs | 4 +- .../Word/UpdateOfficeWordTextCommand.cs | 4 +- .../PowerPoint/PowerPointDocumentService.cs | 8 +- Tests/OfficePdfExport.Tests.ps1 | 50 ++++++- Tests/PowerPoint.Tests.ps1 | 27 ++++ Tests/PublicApiConsistency.Tests.ps1 | 138 +++++++++++++++++ Tests/WebsiteDocumentation.Tests.ps1 | 24 +++ .../examples/create-powerpoint-deck.md | 8 +- .../content/project-docs/docs/powerpoint.md | 5 +- .../apidocs/powershell/PSWriteOffice-help.xml | 141 +++++++++++------- .../apidocs/powershell/command-metadata.json | 24 +-- .../Example-ConfluenceAzureTableReport.ps1 | 93 ++++++++++++ .../examples/Csv/Example-CsvAdvanced.ps1 | 3 +- .../examples/Csv/Example-CsvBasic.ps1 | 3 +- .../Csv/Example-CsvDbaClientXRoundTrip.ps1 | 138 +++++++++++++++++ .../examples/Csv/Recipe-Csv-SafeExport.ps1 | 8 + .../examples/Documents/BasicDocument.docx | Bin 0 -> 15068 bytes .../powershell/examples/Documents/Doc1.docx | Bin 0 -> 20234 bytes .../examples/Documents/Doc1Updated.docx | Bin 0 -> 15545 bytes .../examples/Documents/DocList.docx | Bin 0 -> 14223 bytes .../powershell/examples/Documents/Excel2.xlsx | Bin 0 -> 7005 bytes .../examples/Documents/ExportToExcel.xlsx | Bin 0 -> 17820 bytes .../powershell/examples/Documents/Test.html | 41 +++++ .../powershell/examples/Documents/Test5.docx | Bin 0 -> 14646 bytes .../examples/Documents/TestHTML.docx | Bin 0 -> 14446 bytes .../ExamplePowerPoint01-AddSlides.ps1 | 19 ++- .../examples/ExamplePowerPoint02-Basic.ps1 | 7 +- .../examples/ExamplePowerPoint04-Text.ps1 | 11 +- .../examples/ExamplePowerPoint05-Load.ps1 | 9 +- .../ExamplePowerPoint06-RemoveSlide.ps1 | 9 +- .../examples/ExamplePowerPoint07-WhatIf.ps1 | 7 +- .../ExamplePowerPoint08-TablesAndShapes.ps1 | 15 +- .../ExamplePowerPoint09-Placeholders.ps1 | 21 ++- .../examples/ExamplePowerPoint10-Dsl.ps1 | 3 +- .../ExamplePowerPoint11-InspectionDsl.ps1 | 3 +- .../ExamplePowerPoint12-LayoutDsl.ps1 | 3 +- ...ePowerPoint13-LayoutPlaceholderAliases.ps1 | 3 +- .../examples/Excel/Example-ExcelAdvanced.ps1 | 5 +- .../examples/Excel/Example-ExcelAliasDsl.ps1 | 5 +- .../examples/Excel/Example-ExcelBasic.ps1 | 5 +- .../Excel/Example-ExcelChartFormatting.ps1 | 11 +- .../Example-ExcelDbaClientXRoundTrip.ps1 | 2 +- .../Excel/Example-ExcelHtmlReview.ps1 | 9 +- .../Example-ExcelHtmlTablesViaPSParseHTML.ps1 | 3 +- .../Excel/Example-ExcelInternalLinks.ps1 | 5 +- .../Excel/Example-ExcelLinksAndImages.ps1 | 5 +- .../Example-ExcelModifyExistingTables.ps1 | 11 +- .../Example-ExcelNavigationAndRanges.ps1 | 5 +- .../examples/Excel/Example-ExcelPictures.ps1 | 5 +- .../Excel/Example-ExcelReadObjects.ps1 | 5 +- .../Excel/Example-ExcelTablesAndRanges.ps1 | 5 +- .../examples/Excel/Example-ExcelUrlLinks.ps1 | 5 +- .../Excel/Recipe-Excel-AppendAndReplace.ps1 | 17 +++ .../Excel/Recipe-Excel-BudgetDashboard.ps1 | 35 +++++ .../Excel/Recipe-Excel-CompareWorkbooks.ps1 | 18 +++ .../Excel/Recipe-Excel-ImportDelimited.ps1 | 14 ++ .../Excel/Recipe-Excel-MergeWorkbooks.ps1 | 25 ++++ .../Excel/Recipe-Excel-ObjectComposition.ps1 | 13 ++ .../Excel/Recipe-Excel-PivotAndSparklines.ps1 | 15 ++ .../Excel/Recipe-Excel-ProjectTracker.ps1 | 31 ++++ .../Excel/Recipe-Excel-QuickExport.ps1 | 13 ++ .../Excel/Recipe-Excel-ReadAndFilter.ps1 | 16 ++ .../Excel/Recipe-Excel-TemplateInvoice.ps1 | 19 +++ .../Excel/Recipe-Excel-UpdateExisting.ps1 | 21 +++ .../Markdown/Example-MarkdownAdvanced.ps1 | 5 +- .../examples/Markdown/Example-MarkdownDsl.ps1 | 5 +- .../Recipe-Markdown-DefinitionGuide.ps1 | 13 ++ .../Recipe-Markdown-InspectContent.ps1 | 12 ++ .../Recipe-Markdown-ObjectComposition.ps1 | 11 ++ .../Recipe-Markdown-OperationsRunbook.ps1 | 28 ++++ .../Markdown/Recipe-Markdown-PublishHtml.ps1 | 15 ++ .../Markdown/Recipe-Markdown-ReleaseNotes.ps1 | 25 ++++ .../Recipe-Markdown-WordRoundTrip.ps1 | 11 ++ .../examples/Pdf/Example-OfficePdfExports.ps1 | 53 +++++++ .../Pdf/Example-OfficePdfSidecars.ps1 | 50 ------- .../examples/Pdf/Example-PdfOperations.ps1 | 16 +- .../examples/Pdf/Example-PdfReportDsl.ps1 | 5 +- .../Pdf/Recipe-Pdf-AttachEvidence.ps1 | 14 ++ .../examples/Pdf/Recipe-Pdf-AuditReport.ps1 | 41 +++++ .../examples/Pdf/Recipe-Pdf-ExtractText.ps1 | 10 ++ .../Pdf/Recipe-Pdf-FormDataExchange.ps1 | 14 ++ .../examples/Pdf/Recipe-Pdf-Forms.ps1 | 11 ++ .../Pdf/Recipe-Pdf-InspectAndPreflight.ps1 | 13 ++ .../examples/Pdf/Recipe-Pdf-MergeAndSplit.ps1 | 17 +++ .../Pdf/Recipe-Pdf-PositionedCanvas.ps1 | 18 +++ .../Pdf/Recipe-Pdf-RedactDetectedText.ps1 | 14 ++ .../examples/Pdf/Recipe-Pdf-ReorderPages.ps1 | 15 ++ .../Pdf/Recipe-Pdf-SanitizeAndOptimize.ps1 | 11 ++ .../Pdf/Recipe-Pdf-ServiceInvoice.ps1 | 44 ++++++ ...Example-PowerPointBackgroundsAndLayout.ps1 | 23 ++- .../PowerPoint/Example-PowerPointCharts.ps1 | 25 ++-- .../Example-PowerPointCopySlides.ps1 | 13 +- .../Example-PowerPointHtmlReview.ps1 | 25 ++-- ...Example-PowerPointModifyExistingShapes.ps1 | 29 ++-- .../Example-PowerPointSectionsAndImport.ps1 | 31 ++-- .../Example-PowerPointThemeAndLayout.ps1 | 17 +-- ...Example-PowerPointTransitionsAndSizing.ps1 | 19 ++- .../Recipe-PowerPoint-CopyAndRemoveSlides.ps1 | 17 +++ .../Recipe-PowerPoint-InspectDeck.ps1 | 26 ++++ .../Recipe-PowerPoint-ObjectComposition.ps1 | 17 +++ .../Recipe-PowerPoint-QuarterlyReview.ps1 | 36 +++++ .../Recipe-PowerPoint-ReuseSlides.ps1 | 22 +++ .../Recipe-PowerPoint-SectionsAndNotes.ps1 | 16 ++ .../Recipe-PowerPoint-TrainingWorkshop.ps1 | 35 +++++ .../Recipe-PowerPoint-UpdateExisting.ps1 | 16 ++ .../apidocs/powershell/examples/README.md | 59 ++++++++ .../Reader/Example-MixedDocumentSearch.ps1 | 48 ++++++ .../Reader/Recipe-Reader-BoundedChunks.ps1 | 11 ++ .../Reader/Recipe-Reader-ExportTables.ps1 | 13 ++ .../Reader/Recipe-Reader-ExtractTables.ps1 | 15 ++ .../Reader/Recipe-Reader-IngestFolder.ps1 | 3 + .../Reader/Recipe-Reader-SearchFolder.ps1 | 6 + .../Rtf/Example-RtfMarkdownRoundTrip.ps1 | 7 +- .../Rtf/Recipe-Rtf-UpdateAndConvert.ps1 | 7 + .../Showcase-Excel-OperationalDashboard.ps1 | 27 ++-- .../Showcase-PowerPoint-ServiceBrief.ps1 | 53 +++---- .../Showcase/Showcase-RichTextRuns.ps1 | 121 +++++++++++++++ .../Showcase-Word-ExecutiveReport.ps1 | 7 +- .../Visio/Example-Visio-ArchitectureMap.ps1 | 17 +-- .../Visio/Example-Visio-NetworkTopology.ps1 | 13 +- .../Visio/Example-Visio-PackageStencil.ps1 | 11 +- .../Visio/Example-Visio-StencilFlow.ps1 | 11 +- .../Visio/Recipe-Visio-ServiceFlow.ps1 | 10 ++ .../Visuals/Example-ChartForgeXVisuals.ps1 | 40 +++++ .../examples/Word/Example-WordAdvanced.ps1 | 3 +- .../examples/Word/Example-WordAliasDsl.ps1 | 5 +- .../Word/Example-WordBackgroundMailMerge.ps1 | 4 +- .../examples/Word/Example-WordBasic.ps1 | 5 +- .../examples/Word/Example-WordCharts.ps1 | 15 +- .../examples/Word/Example-WordFind.ps1 | 11 +- .../examples/Word/Example-WordHtmlConvert.ps1 | 9 +- .../examples/Word/Example-WordLineBreaks.ps1 | 23 ++- .../Word/Example-WordLinksAndProperties.ps1 | 2 +- .../Word/Example-WordMarkdownConvert.ps1 | 9 +- .../Example-WordModifyExistingObjects.ps1 | 20 +-- .../Word/Example-WordProtectionWatermark.ps1 | 5 +- .../examples/Word/Example-WordReplaceText.ps1 | 2 +- .../Example-WordTableCalculatedColumns.ps1 | 5 +- .../examples/Word/Example-WordTableCells.ps1 | 2 +- .../Word/Example-WordTableConditions.ps1 | 5 +- .../Word/Recipe-Word-ApprovalChecklist.ps1 | 44 ++++++ .../Word/Recipe-Word-CompareDocuments.ps1 | 16 ++ .../Word/Recipe-Word-HtmlToDocument.ps1 | 9 ++ .../Word/Recipe-Word-InspectExisting.ps1 | 20 +++ .../Word/Recipe-Word-MailMergeLetters.ps1 | 27 ++++ .../Word/Recipe-Word-MergeDocuments.ps1 | 26 ++++ .../Word/Recipe-Word-ObjectComposition.ps1 | 20 +++ .../Word/Recipe-Word-ProjectStatus.ps1 | 56 +++++++ .../Word/Recipe-Word-UpdateExisting.ps1 | 18 +++ .../Recipe-Markdown-Word-PdfDelivery.ps1 | 14 ++ .../Recipe-MultiFormat-StatusPack.ps1 | 66 ++++++++ 209 files changed, 2713 insertions(+), 712 deletions(-) create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Confluence/Example-ConfluenceAzureTableReport.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Csv/Example-CsvDbaClientXRoundTrip.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Csv/Recipe-Csv-SafeExport.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Documents/BasicDocument.docx create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Documents/Doc1.docx create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Documents/Doc1Updated.docx create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Documents/DocList.docx create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Documents/Excel2.xlsx create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Documents/ExportToExcel.xlsx create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Documents/Test.html create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Documents/Test5.docx create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Documents/TestHTML.docx create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Excel/Recipe-Excel-AppendAndReplace.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Excel/Recipe-Excel-BudgetDashboard.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Excel/Recipe-Excel-CompareWorkbooks.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Excel/Recipe-Excel-ImportDelimited.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Excel/Recipe-Excel-MergeWorkbooks.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Excel/Recipe-Excel-ObjectComposition.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Excel/Recipe-Excel-PivotAndSparklines.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Excel/Recipe-Excel-ProjectTracker.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Excel/Recipe-Excel-QuickExport.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Excel/Recipe-Excel-ReadAndFilter.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Excel/Recipe-Excel-TemplateInvoice.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Excel/Recipe-Excel-UpdateExisting.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Markdown/Recipe-Markdown-DefinitionGuide.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Markdown/Recipe-Markdown-InspectContent.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Markdown/Recipe-Markdown-ObjectComposition.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Markdown/Recipe-Markdown-OperationsRunbook.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Markdown/Recipe-Markdown-PublishHtml.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Markdown/Recipe-Markdown-ReleaseNotes.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Markdown/Recipe-Markdown-WordRoundTrip.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Pdf/Example-OfficePdfExports.ps1 delete mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Pdf/Example-OfficePdfSidecars.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Pdf/Recipe-Pdf-AttachEvidence.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Pdf/Recipe-Pdf-AuditReport.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Pdf/Recipe-Pdf-ExtractText.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Pdf/Recipe-Pdf-FormDataExchange.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Pdf/Recipe-Pdf-Forms.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Pdf/Recipe-Pdf-InspectAndPreflight.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Pdf/Recipe-Pdf-MergeAndSplit.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Pdf/Recipe-Pdf-PositionedCanvas.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Pdf/Recipe-Pdf-RedactDetectedText.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Pdf/Recipe-Pdf-ReorderPages.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Pdf/Recipe-Pdf-SanitizeAndOptimize.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Pdf/Recipe-Pdf-ServiceInvoice.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/PowerPoint/Recipe-PowerPoint-CopyAndRemoveSlides.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/PowerPoint/Recipe-PowerPoint-InspectDeck.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/PowerPoint/Recipe-PowerPoint-ObjectComposition.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/PowerPoint/Recipe-PowerPoint-QuarterlyReview.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/PowerPoint/Recipe-PowerPoint-ReuseSlides.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/PowerPoint/Recipe-PowerPoint-SectionsAndNotes.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/PowerPoint/Recipe-PowerPoint-TrainingWorkshop.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/PowerPoint/Recipe-PowerPoint-UpdateExisting.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/README.md create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Reader/Example-MixedDocumentSearch.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Reader/Recipe-Reader-BoundedChunks.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Reader/Recipe-Reader-ExportTables.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Reader/Recipe-Reader-ExtractTables.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Reader/Recipe-Reader-IngestFolder.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Reader/Recipe-Reader-SearchFolder.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Rtf/Recipe-Rtf-UpdateAndConvert.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Showcase/Showcase-RichTextRuns.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Visio/Recipe-Visio-ServiceFlow.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Visuals/Example-ChartForgeXVisuals.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-ApprovalChecklist.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-CompareDocuments.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-HtmlToDocument.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-InspectExisting.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-MailMergeLetters.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-MergeDocuments.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-ObjectComposition.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-ProjectStatus.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-UpdateExisting.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Workflows/Recipe-Markdown-Word-PdfDelivery.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Workflows/Recipe-MultiFormat-StatusPack.ps1 diff --git a/Build/Export-WebsiteArtifacts.ps1 b/Build/Export-WebsiteArtifacts.ps1 index 8d999c90..3d404226 100644 --- a/Build/Export-WebsiteArtifacts.ps1 +++ b/Build/Export-WebsiteArtifacts.ps1 @@ -181,6 +181,22 @@ try { $apiRoot = Join-Path $ArtifactsRoot 'apidocs\powershell' New-Item -ItemType Directory -Path $apiRoot -Force | Out-Null +$sourceExamplesRoot = Join-Path $RepositoryRoot 'Examples' +$apiExamplesRoot = Join-Path $apiRoot 'examples' +$artifactsBoundary = [System.IO.Path]::GetFullPath($ArtifactsRoot).TrimEnd( + [System.IO.Path]::DirectorySeparatorChar, + [System.IO.Path]::AltDirectorySeparatorChar) + [System.IO.Path]::DirectorySeparatorChar +$resolvedExamplesRoot = [System.IO.Path]::GetFullPath($apiExamplesRoot) +if (-not $resolvedExamplesRoot.StartsWith($artifactsBoundary, [System.StringComparison]::OrdinalIgnoreCase)) { + throw "Refusing to refresh examples outside the website artifacts root: $resolvedExamplesRoot" +} +if (Test-Path -LiteralPath $apiExamplesRoot -PathType Container) { + [System.IO.Directory]::Delete($resolvedExamplesRoot, $true) +} +New-Item -ItemType Directory -Path $apiExamplesRoot -Force | Out-Null +Get-ChildItem -LiteralPath $sourceExamplesRoot -Force | + Copy-Item -Destination $apiExamplesRoot -Recurse -Force + $apiHelpPath = Join-Path $apiRoot "$moduleName-help.xml" $docsHelpPath = Join-Path $RepositoryRoot "Docs\Generated\$moduleName-help.xml" New-Item -ItemType Directory -Path (Split-Path -Parent $docsHelpPath) -Force | Out-Null diff --git a/Docs/Add-OfficePowerPointBullets.md b/Docs/Add-OfficePowerPointBullets.md index 5d92e429..4c4863e7 100644 --- a/Docs/Add-OfficePowerPointBullets.md +++ b/Docs/Add-OfficePowerPointBullets.md @@ -22,7 +22,7 @@ Creates a textbox and populates it with bullet paragraphs. ### EXAMPLE 1 ```powershell PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointBullets.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Delivery update' Add-OfficePowerPointBullets -Slide $slide -Bullets 'Wins','Risks','Next steps' -X 60 -Y 120 -Width 420 -Height 180 } diff --git a/Docs/Add-OfficePowerPointChart.md b/Docs/Add-OfficePowerPointChart.md index 4b700cd4..2d5bbcab 100644 --- a/Docs/Add-OfficePowerPointChart.md +++ b/Docs/Add-OfficePowerPointChart.md @@ -36,7 +36,7 @@ PS> $rows = @( [pscustomobject]@{ Month = 'Feb'; Sales = 55; Profit = 13 } ) New-OfficePowerPoint -Path .\Examples\Documents\PowerPointChart.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru Add-OfficePowerPointChart -Slide $slide -InputObject $rows -CategoryProperty Month -SeriesProperty Sales,Profit -Title 'Monthly performance' } ``` @@ -50,7 +50,7 @@ PS> $rows = @( [pscustomobject]@{ Quarter = 2; Revenue = 34 } ) New-OfficePowerPoint -Path .\Examples\Documents\PowerPointScatter.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru Add-OfficePowerPointChart -Slide $slide -Type Scatter -InputObject $rows -XProperty Quarter -YProperty Revenue -Title 'Revenue trend' } ``` diff --git a/Docs/Add-OfficePowerPointImage.md b/Docs/Add-OfficePowerPointImage.md index c4c8a20f..3675d3e5 100644 --- a/Docs/Add-OfficePowerPointImage.md +++ b/Docs/Add-OfficePowerPointImage.md @@ -23,7 +23,7 @@ Places the picture at the requested coordinates using point measurements. ```powershell PS> $image = '.\Tests\Assets\CellImage.png' New-OfficePowerPoint -Path .\Examples\Documents\PowerPointImage.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Evidence' Add-OfficePowerPointImage -Slide $slide -Path $image -X 60 -Y 130 -Width 180 -Height 120 } diff --git a/Docs/Add-OfficePowerPointSection.md b/Docs/Add-OfficePowerPointSection.md index 0ff8fb76..9016dc87 100644 --- a/Docs/Add-OfficePowerPointSection.md +++ b/Docs/Add-OfficePowerPointSection.md @@ -22,8 +22,8 @@ Creates a new section starting at the requested slide index or at the current sl ### EXAMPLE 1 ```powershell PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSections.pptx { - Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Overview' - Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Results' + Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Overview' + Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Results' Add-OfficePowerPointSection -Name 'Results' -StartSlideIndex 1 } ``` diff --git a/Docs/Add-OfficePowerPointShape.md b/Docs/Add-OfficePowerPointShape.md index a916189d..39b87f3b 100644 --- a/Docs/Add-OfficePowerPointShape.md +++ b/Docs/Add-OfficePowerPointShape.md @@ -22,7 +22,7 @@ Creates an auto shape at the requested coordinates and applies optional fill and ### EXAMPLE 1 ```powershell PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointShape.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru Add-OfficePowerPointShape -Slide $slide -ShapeType Rectangle -X 60 -Y 120 -Width 220 -Height 90 -FillColor '#DDEEFF' -OutlineColor '#2563EB' -OutlineWidth 1 Add-OfficePowerPointTextBox -Slide $slide -Text 'Highlighted status' -X 80 -Y 145 -Width 180 -Height 32 } diff --git a/Docs/Add-OfficePowerPointSlide.md b/Docs/Add-OfficePowerPointSlide.md index cbac41da..f2043555 100644 --- a/Docs/Add-OfficePowerPointSlide.md +++ b/Docs/Add-OfficePowerPointSlide.md @@ -31,7 +31,9 @@ Creates a slide using OfficeIMO master/layout indexes and can execute nested DSL ### EXAMPLE 1 ```powershell -PS> $ppt = New-OfficePowerPoint -Path .\deck.pptx; Add-OfficePowerPointSlide -Presentation $ppt +PS> $ppt = New-OfficePowerPoint -Path .\deck.pptx -NoSave +Add-OfficePowerPointSlide -Presentation $ppt +$ppt | Close-OfficePowerPoint -Save ``` Creates a deck and appends a new slide at the end. diff --git a/Docs/Add-OfficePowerPointTextBox.md b/Docs/Add-OfficePowerPointTextBox.md index 3c05f899..26cfb5b8 100644 --- a/Docs/Add-OfficePowerPointTextBox.md +++ b/Docs/Add-OfficePowerPointTextBox.md @@ -27,7 +27,7 @@ Creates a rectangle at the requested coordinates and assigns the supplied text. ### EXAMPLE 1 ```powershell PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointTextBox.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru Add-OfficePowerPointTextBox -Slide $slide -Text 'Quarterly overview' -X 80 -Y 150 -Width 320 -Height 50 Add-OfficePowerPointTextBox -Slide $slide -Text 'Generated by PSWriteOffice' -X 80 -Y 210 -Width 320 -Height 35 } diff --git a/Docs/Close-OfficeExcel.md b/Docs/Close-OfficeExcel.md index 2653d6a0..efe05ad0 100644 --- a/Docs/Close-OfficeExcel.md +++ b/Docs/Close-OfficeExcel.md @@ -11,7 +11,7 @@ Closes an Excel workbook and optionally saves it. ## SYNTAX ### __AllParameterSets ```powershell -Close-OfficeExcel -Document [-Save] [-Path ] [-Open] [-Password ] [-SafePreflight] [-SafeRepairDefinedNames] [-ValidateOpenXml] [-DisableFastPackageWriter] [-EvaluateFormulas] [-ClearCachedFormulaResults] [-MarkFormulasDirty] [-ForceFullCalculationOnOpen] [-DateSystem ] [] +Close-OfficeExcel -Document [-Save] [-Path ] [-Open] [-Password ] [-SafePreflight] [-SafeRepairDefinedNames] [-ValidateOpenXml] [-DisableFastPackageWriter] [-EvaluateFormulas] [-ClearCachedFormulaResults] [-MarkFormulasDirty] [-ForceFullCalculationOnOpen] [-DateSystem ] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -148,7 +148,7 @@ Accept wildcard characters: False ``` ### -Open -Open the workbook in Excel after saving. +Open the workbook after saving. Requires -Save or -Path. ```yaml Type: SwitchParameter diff --git a/Docs/Close-OfficePowerPoint.md b/Docs/Close-OfficePowerPoint.md index a56cb850..a861adb9 100644 --- a/Docs/Close-OfficePowerPoint.md +++ b/Docs/Close-OfficePowerPoint.md @@ -11,7 +11,7 @@ Closes a PowerPoint presentation and optionally saves it. ## SYNTAX ### __AllParameterSets ```powershell -Close-OfficePowerPoint -Presentation [-Save] [-Open] [-Password ] [-WhatIf] [-Confirm] [] +Close-OfficePowerPoint -Presentation [-Save] [-Path ] [-Open] [-Password ] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -36,7 +36,7 @@ Saves the presentation, opens it in PowerPoint, and releases the object. ## PARAMETERS ### -Open -Open the presentation in PowerPoint after saving. +Open the presentation after saving. Requires -Save or -Path. ```yaml Type: SwitchParameter @@ -67,6 +67,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -Path +Optional target path when saving. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: FilePath +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Presentation Presentation to close. diff --git a/Docs/Close-OfficeWord.md b/Docs/Close-OfficeWord.md index 1593853b..1ea3a349 100644 --- a/Docs/Close-OfficeWord.md +++ b/Docs/Close-OfficeWord.md @@ -11,17 +11,17 @@ Closes one or more tracked Word documents, optionally saving them. ## SYNTAX ### Current (Default) ```powershell -Close-OfficeWord [-Current] [-Save] [-Path ] [-Open] [-Password ] [] +Close-OfficeWord [-Current] [-Save] [-Path ] [-Open] [-Password ] [-WhatIf] [-Confirm] [] ``` ### Document ```powershell -Close-OfficeWord [-Document] [-Save] [-Path ] [-Open] [-Password ] [] +Close-OfficeWord [-Document] [-Save] [-Path ] [-Open] [-Password ] [-WhatIf] [-Confirm] [] ``` ### All ```powershell -Close-OfficeWord -All [-Save] [-Open] [-Password ] [] +Close-OfficeWord -All [-Save] [-Open] [-Password ] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -101,7 +101,7 @@ Accept wildcard characters: False ``` ### -Open -Open the file after saving. +Open the file after saving. Requires -Save or -Path. ```yaml Type: SwitchParameter diff --git a/Docs/Copy-OfficePowerPointSlide.md b/Docs/Copy-OfficePowerPointSlide.md index f96c765e..042645b2 100644 --- a/Docs/Copy-OfficePowerPointSlide.md +++ b/Docs/Copy-OfficePowerPointSlide.md @@ -22,9 +22,9 @@ Uses OfficeIMO slide duplication so charts, notes, and shapes are preserved. ### EXAMPLE 1 ```powershell PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointCopySlide.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Original' - $copy = Copy-OfficePowerPointSlide -Index 0 + $copy = Copy-OfficePowerPointSlide -Index 0 -PassThru Set-OfficePowerPointSlideTitle -Slide $copy -Title 'Copied appendix' } ``` diff --git a/Docs/Generated/PSWriteOffice-help.xml b/Docs/Generated/PSWriteOffice-help.xml index 2943eb8c..3249fb9c 100644 --- a/Docs/Generated/PSWriteOffice-help.xml +++ b/Docs/Generated/PSWriteOffice-help.xml @@ -35493,7 +35493,7 @@ URI links and bookmark links are supported; a single run cannot target both.PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointBullets.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Delivery update' Add-OfficePowerPointBullets -Slide $slide -Bullets 'Wins','Risks','Next steps' -X 60 -Y 120 -Width 420 -Height 180 } @@ -36103,7 +36103,7 @@ URI links and bookmark links are supported; a single run cannot target both. @@ -36120,7 +36120,7 @@ URI links and bookmark links are supported; a single run cannot target both. @@ -36770,7 +36770,7 @@ URI links and bookmark links are supported; a single run cannot target both. $image = '.\Tests\Assets\CellImage.png' New-OfficePowerPoint -Path .\Examples\Documents\PowerPointImage.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Evidence' Add-OfficePowerPointImage -Slide $slide -Path $image -X 60 -Y 130 -Width 180 -Height 120 } @@ -38316,8 +38316,8 @@ URI links and bookmark links are supported; a single run cannot target both.PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSections.pptx { - Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Overview' - Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Results' + Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Overview' + Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Results' Add-OfficePowerPointSection -Name 'Results' -StartSlideIndex 1 } @@ -38630,7 +38630,7 @@ URI links and bookmark links are supported; a single run cannot target both.PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointShape.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru Add-OfficePowerPointShape -Slide $slide -ShapeType Rectangle -X 60 -Y 120 -Width 220 -Height 90 -FillColor '#DDEEFF' -OutlineColor '#2563EB' -OutlineWidth 1 Add-OfficePowerPointTextBox -Slide $slide -Text 'Highlighted status' -X 80 -Y 145 -Width 180 -Height 32 } @@ -39049,7 +39049,9 @@ URI links and bookmark links are supported; a single run cannot target both. PS> - $ppt = New-OfficePowerPoint -Path .\deck.pptx; Add-OfficePowerPointSlide -Presentation $ppt + $ppt = New-OfficePowerPoint -Path .\deck.pptx -NoSave + Add-OfficePowerPointSlide -Presentation $ppt + $ppt | Close-OfficePowerPoint -Save Creates a deck and appends a new slide at the end. @@ -40137,7 +40139,7 @@ table formatting, borders, and style choices are preserved. PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointTextBox.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru Add-OfficePowerPointTextBox -Slide $slide -Text 'Quarterly overview' -X 80 -Y 150 -Width 320 -Height 50 Add-OfficePowerPointTextBox -Slide $slide -Text 'Generated by PSWriteOffice' -X 80 -Y 210 -Width 320 -Height 35 } @@ -57233,7 +57235,7 @@ cells. This keeps existing-document editing simple without forcing callers back Open - Open the workbook in Excel after saving. + Open the workbook after saving. Requires -Save or -Path. SwitchParameter @@ -57410,7 +57412,7 @@ cells. This keeps existing-document editing simple without forcing callers back Open - Open the workbook in Excel after saving. + Open the workbook after saving. Requires -Save or -Path. SwitchParameter @@ -57544,7 +57546,7 @@ cells. This keeps existing-document editing simple without forcing callers back Open - Open the presentation in PowerPoint after saving. + Open the presentation after saving. Requires -Save or -Path. SwitchParameter @@ -57565,6 +57567,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + Path + + Optional target path when saving. + + String + + String + + + None + Presentation @@ -57595,7 +57609,7 @@ cells. This keeps existing-document editing simple without forcing callers back Open - Open the presentation in PowerPoint after saving. + Open the presentation after saving. Requires -Save or -Path. SwitchParameter @@ -57616,6 +57630,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + Path + + Optional target path when saving. + + String + + String + + + None + Presentation @@ -57708,7 +57734,7 @@ cells. This keeps existing-document editing simple without forcing callers back Open - Open the file after saving. + Open the file after saving. Requires -Save or -Path. SwitchParameter @@ -57771,7 +57797,7 @@ cells. This keeps existing-document editing simple without forcing callers back Open - Open the file after saving. + Open the file after saving. Requires -Save or -Path. SwitchParameter @@ -57834,7 +57860,7 @@ cells. This keeps existing-document editing simple without forcing callers back Open - Open the file after saving. + Open the file after saving. Requires -Save or -Path. SwitchParameter @@ -57909,7 +57935,7 @@ cells. This keeps existing-document editing simple without forcing callers back Open - Open the file after saving. + Open the file after saving. Requires -Save or -Path. SwitchParameter @@ -78037,9 +78063,9 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointCopySlide.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Original' - $copy = Copy-OfficePowerPointSlide -Index 0 + $copy = Copy-OfficePowerPointSlide -Index 0 -PassThru Set-OfficePowerPointSlideTitle -Slide $copy -Title 'Copied appendix' } @@ -115022,7 +115048,7 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointLayoutBox.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru $box = Get-OfficePowerPointLayoutBox -MarginCm 1.5 Add-OfficePowerPointTextBox -Slide $slide -Text 'Inside the content box' -X ($box.LeftPoints) -Y ($box.TopPoints) -Width ($box.WidthPoints) -Height 60 } @@ -115036,7 +115062,7 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointColumns.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru $columns = Get-OfficePowerPointLayoutBox -ColumnCount 2 -MarginCm 1.5 -GutterCm 1.0 Add-OfficePowerPointTextBox -Slide $slide -Text 'Left column' -X ($columns[0].LeftPoints) -Y ($columns[0].TopPoints) -Width ($columns[0].WidthPoints) -Height 80 Add-OfficePowerPointTextBox -Slide $slide -Text 'Right column' -X ($columns[1].LeftPoints) -Y ($columns[1].TopPoints) -Width ($columns[1].WidthPoints) -Height 80 @@ -115613,10 +115639,11 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification PS> - $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSectionsRead.pptx - Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null - Add-OfficePowerPointSection -Presentation $ppt -Name 'Appendix' -StartSlideIndex 0 | Out-Null - Get-OfficePowerPointSection -Presentation $ppt | Select-Object Name, FirstSlideIndex, SlideCount + $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSectionsRead.pptx -NoSave + Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 + Add-OfficePowerPointSection -Presentation $ppt -Name 'Appendix' -StartSlideIndex 0 + Get-OfficePowerPointSection -Presentation $ppt | Select-Object Name, FirstSlideIndex, SlideCount + $ppt | Close-OfficePowerPoint Returns section information including section names and slide indexes. @@ -116245,10 +116272,11 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification PS> - $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointThemeRead.pptx + $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointThemeRead.pptx -NoSave Set-OfficePowerPointThemeName -Presentation $ppt -Name 'Service Brief' Set-OfficePowerPointThemeFonts -Presentation $ppt -MajorLatin 'Aptos Display' -MinorLatin 'Aptos' - Get-OfficePowerPointTheme -Presentation $ppt | Select-Object Name, Master + Get-OfficePowerPointTheme -Presentation $ppt | Select-Object Name, Master + $ppt | Close-OfficePowerPoint Returns theme information after updating the deck theme metadata. @@ -127659,7 +127687,7 @@ the script needs to work with list objects directly instead of using a text sear PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointImportTarget.pptx { - Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Target deck' + Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Target deck' Import-OfficePowerPointSlide -SourcePath .\Examples\Documents\SourceDeck.pptx -SourceIndex 0 -InsertAt 1 } @@ -140793,7 +140821,7 @@ Use -NoSave or omit -Path when a document object should be returned for further - Handles file creation or template cloning, scriptblock execution, optional autosave, and emits the document path when -PassThru is used. + Handles file creation or template cloning, scriptblock execution, explicit save or live-document composition, and emits the document path when -PassThru is used. @@ -144470,11 +144498,11 @@ Use -NoSave or omit -Path when a document object should be returned for further PS> - $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRemoveSlide.pptx - Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null - Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null + $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRemoveSlide.pptx -NoSave + Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 + Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 Remove-OfficePowerPointSlide -Presentation $ppt -Index 0 -Confirm:$false - Save-OfficePowerPoint -Presentation $ppt + Close-OfficePowerPoint -Presentation $ppt -Save Removes the first slide and saves the updated deck. @@ -145092,10 +145120,11 @@ Use -NoSave or omit -Path when a document object should be returned for further PS> - $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRenameSection.pptx - Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null - Add-OfficePowerPointSection -Presentation $ppt -Name 'Results' -StartSlideIndex 0 | Out-Null - Rename-OfficePowerPointSection -Presentation $ppt -Name 'Results' -NewName 'Deep Dive' -PassThru + $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRenameSection.pptx -NoSave + Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 + Add-OfficePowerPointSection -Presentation $ppt -Name 'Results' -StartSlideIndex 0 + Rename-OfficePowerPointSection -Presentation $ppt -Name 'Results' -NewName 'Deep Dive' -PassThru + $ppt | Close-OfficePowerPoint -Save Renames the first matching section and returns the updated section metadata. @@ -147574,8 +147603,8 @@ The document is saved through the normal OfficeIMO.Pdf save path. PS> - $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSave.pptx - $slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 + $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSave.pptx -NoSave + $slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Saved later' Save-OfficePowerPoint -Presentation $ppt @@ -173426,7 +173455,7 @@ Apply a theme near the start of a New-OfficePdf script block so later content in PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointNotes.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Executive summary' Set-OfficePowerPointNotes -Slide $slide -Text 'Keep this slide under five minutes and focus on decisions.' } @@ -173626,7 +173655,7 @@ Apply a theme near the start of a New-OfficePdf script block so later content in PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointPlaceholderText.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru Set-OfficePowerPointPlaceholderText -Slide $slide -PlaceholderType Title -Text 'Agenda' Set-OfficePowerPointPlaceholderText -Slide $slide -PlaceholderType Body -Text 'Review signals and decisions' -IgnoreMissing } @@ -175314,7 +175343,7 @@ contents, then save or close the presentation. New-OfficePowerPoint -Path .\Examples\Documents\PowerPointWidescreen.pptx { Set-OfficePowerPointSlideSize -Preset Screen16x9 - Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Widescreen deck' + Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Widescreen deck' } Applies the 16:9 widescreen preset before adding slides. @@ -175325,9 +175354,10 @@ contents, then save or close the presentation. PS> - $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointCustomSize.pptx + $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointCustomSize.pptx -NoSave Set-OfficePowerPointSlideSize -Presentation $ppt -WidthCm 25.4 -HeightCm 14.0 - Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Custom size' + Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Custom size' + $ppt | Close-OfficePowerPoint -Save Sets the presentation slide size to a custom 25.4 x 14.0 cm layout. @@ -176594,7 +176624,7 @@ cell inside a deck that already exists. New-OfficePowerPoint -Path .\Examples\Documents\PowerPointThemeFonts.pptx { Set-OfficePowerPointThemeFonts -MajorLatin 'Aptos Display' -MinorLatin 'Aptos' -AllMasters - Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Theme fonts' + Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Theme fonts' } Updates theme fonts before creating slides. @@ -176745,7 +176775,7 @@ cell inside a deck that already exists. New-OfficePowerPoint -Path .\Examples\Documents\PowerPointThemeName.pptx { Set-OfficePowerPointThemeName -Name 'Service Brief' -AllMasters - Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Named theme' + Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Named theme' } Applies a friendly theme name across every master before saving. @@ -183557,7 +183587,7 @@ cell inside a deck that already exists. Open - Open the file after saving when using -System.IO.Path. + Open the file after saving when using -Path. SwitchParameter @@ -183803,7 +183833,7 @@ cell inside a deck that already exists. Open - Open the file after saving when using -System.IO.Path. + Open the file after saving when using -Path. SwitchParameter @@ -183910,7 +183940,7 @@ cell inside a deck that already exists. PS> - $count = Update-OfficeExcelText -Path .\Report.xlsx -Sheet Summary -OldValue Draft -NewValue Ready + $count = Update-OfficeExcelText -Path .\Report.xlsx -Sheet Summary -OldValue Draft -NewValue Ready -PassThru [pscustomobject]@{ Path = '.\Report.xlsx' Replacements = $count @@ -184265,11 +184295,12 @@ cell inside a deck that already exists. PS> - $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointUpdateText.pptx - $slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 - Add-OfficePowerPointTextBox -Slide $slide -Text 'FY24 summary' | Out-Null - Set-OfficePowerPointNotes -Slide $slide -Text 'Mention FY24 assumptions.' | Out-Null - Update-OfficePowerPointText -Presentation $ppt -OldValue 'FY24' -NewValue 'FY25' -IncludeNotes + $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointUpdateText.pptx -NoSave + $slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 -PassThru + Add-OfficePowerPointTextBox -Slide $slide -Text 'FY24 summary' + Set-OfficePowerPointNotes -Slide $slide -Text 'Mention FY24 assumptions.' + $count = Update-OfficePowerPointText -Presentation $ppt -OldValue 'FY24' -NewValue 'FY25' -IncludeNotes -PassThru + $ppt | Close-OfficePowerPoint -Save Replaces matching text throughout the presentation and notes, returning the replacement count. @@ -185371,7 +185402,7 @@ cell inside a deck that already exists. PS> - $doc | Update-OfficeWordText -OldValue 'FY24' -NewValue 'FY25' + $count = $doc | Update-OfficeWordText -OldValue 'FY24' -NewValue 'FY25' -PassThru Updates matching text in the loaded document and returns the number of replacements. diff --git a/Docs/Get-OfficePowerPointLayoutBox.md b/Docs/Get-OfficePowerPointLayoutBox.md index 4c59b406..bf6ce039 100644 --- a/Docs/Get-OfficePowerPointLayoutBox.md +++ b/Docs/Get-OfficePowerPointLayoutBox.md @@ -32,7 +32,7 @@ Returns the content box for a slide or equal column/row boxes derived from the c ### EXAMPLE 1 ```powershell PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointLayoutBox.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru $box = Get-OfficePowerPointLayoutBox -MarginCm 1.5 Add-OfficePowerPointTextBox -Slide $slide -Text 'Inside the content box' -X ($box.LeftPoints) -Y ($box.TopPoints) -Width ($box.WidthPoints) -Height 60 } @@ -43,7 +43,7 @@ Returns a content box and uses it to position slide text. ### EXAMPLE 2 ```powershell PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointColumns.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru $columns = Get-OfficePowerPointLayoutBox -ColumnCount 2 -MarginCm 1.5 -GutterCm 1.0 Add-OfficePowerPointTextBox -Slide $slide -Text 'Left column' -X ($columns[0].LeftPoints) -Y ($columns[0].TopPoints) -Width ($columns[0].WidthPoints) -Height 80 Add-OfficePowerPointTextBox -Slide $slide -Text 'Right column' -X ($columns[1].LeftPoints) -Y ($columns[1].TopPoints) -Width ($columns[1].WidthPoints) -Height 80 diff --git a/Docs/Get-OfficePowerPointSection.md b/Docs/Get-OfficePowerPointSection.md index 02b879bf..9392dbd0 100644 --- a/Docs/Get-OfficePowerPointSection.md +++ b/Docs/Get-OfficePowerPointSection.md @@ -21,10 +21,11 @@ Returns OfficeIMO section metadata so scripts can inspect section names and slid ### EXAMPLE 1 ```powershell -PS> $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSectionsRead.pptx -Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null -Add-OfficePowerPointSection -Presentation $ppt -Name 'Appendix' -StartSlideIndex 0 | Out-Null +PS> $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSectionsRead.pptx -NoSave +Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 +Add-OfficePowerPointSection -Presentation $ppt -Name 'Appendix' -StartSlideIndex 0 Get-OfficePowerPointSection -Presentation $ppt | Select-Object Name, FirstSlideIndex, SlideCount +$ppt | Close-OfficePowerPoint ``` Returns section information including section names and slide indexes. diff --git a/Docs/Get-OfficePowerPointTheme.md b/Docs/Get-OfficePowerPointTheme.md index 1e7fde9b..21685596 100644 --- a/Docs/Get-OfficePowerPointTheme.md +++ b/Docs/Get-OfficePowerPointTheme.md @@ -21,10 +21,11 @@ Gets theme information for a PowerPoint presentation master. ### EXAMPLE 1 ```powershell -PS> $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointThemeRead.pptx +PS> $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointThemeRead.pptx -NoSave Set-OfficePowerPointThemeName -Presentation $ppt -Name 'Service Brief' Set-OfficePowerPointThemeFonts -Presentation $ppt -MajorLatin 'Aptos Display' -MinorLatin 'Aptos' Get-OfficePowerPointTheme -Presentation $ppt | Select-Object Name, Master +$ppt | Close-OfficePowerPoint ``` Returns theme information after updating the deck theme metadata. diff --git a/Docs/Import-OfficePowerPointSlide.md b/Docs/Import-OfficePowerPointSlide.md index a0aa9abe..1fb9c180 100644 --- a/Docs/Import-OfficePowerPointSlide.md +++ b/Docs/Import-OfficePowerPointSlide.md @@ -27,7 +27,7 @@ Can import from an open presentation or directly from a source file path. ### EXAMPLE 1 ```powershell PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointImportTarget.pptx { - Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Target deck' + Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Target deck' Import-OfficePowerPointSlide -SourcePath .\Examples\Documents\SourceDeck.pptx -SourceIndex 0 -InsertAt 1 } ``` diff --git a/Docs/New-OfficeWord.md b/Docs/New-OfficeWord.md index f4c88bbb..8c7ac84c 100644 --- a/Docs/New-OfficeWord.md +++ b/Docs/New-OfficeWord.md @@ -15,7 +15,7 @@ New-OfficeWord [-Path] [[-Content] ] [-TemplatePath $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRemoveSlide.pptx -Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null -Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null +PS> $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRemoveSlide.pptx -NoSave +Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 +Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 Remove-OfficePowerPointSlide -Presentation $ppt -Index 0 -Confirm:$false -Save-OfficePowerPoint -Presentation $ppt +Close-OfficePowerPoint -Presentation $ppt -Save ``` Removes the first slide and saves the updated deck. diff --git a/Docs/Rename-OfficePowerPointSection.md b/Docs/Rename-OfficePowerPointSection.md index e4d9f485..82cbdbdb 100644 --- a/Docs/Rename-OfficePowerPointSection.md +++ b/Docs/Rename-OfficePowerPointSection.md @@ -21,10 +21,11 @@ Renames a PowerPoint section. ### EXAMPLE 1 ```powershell -PS> $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRenameSection.pptx -Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null -Add-OfficePowerPointSection -Presentation $ppt -Name 'Results' -StartSlideIndex 0 | Out-Null +PS> $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRenameSection.pptx -NoSave +Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 +Add-OfficePowerPointSection -Presentation $ppt -Name 'Results' -StartSlideIndex 0 Rename-OfficePowerPointSection -Presentation $ppt -Name 'Results' -NewName 'Deep Dive' -PassThru +$ppt | Close-OfficePowerPoint -Save ``` Renames the first matching section and returns the updated section metadata. diff --git a/Docs/Save-OfficePowerPoint.md b/Docs/Save-OfficePowerPoint.md index 7eb76363..1cb33968 100644 --- a/Docs/Save-OfficePowerPoint.md +++ b/Docs/Save-OfficePowerPoint.md @@ -21,8 +21,8 @@ Use Close-OfficePowerPoint -Save when the presentation should be saved and close ### EXAMPLE 1 ```powershell -PS> $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSave.pptx -$slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 +PS> $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSave.pptx -NoSave +$slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Saved later' Save-OfficePowerPoint -Presentation $ppt ``` diff --git a/Docs/Set-OfficePowerPointNotes.md b/Docs/Set-OfficePowerPointNotes.md index 7d227b29..f275b397 100644 --- a/Docs/Set-OfficePowerPointNotes.md +++ b/Docs/Set-OfficePowerPointNotes.md @@ -22,7 +22,7 @@ Sets speaker notes for a PowerPoint slide. ### EXAMPLE 1 ```powershell PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointNotes.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Executive summary' Set-OfficePowerPointNotes -Slide $slide -Text 'Keep this slide under five minutes and focus on decisions.' } diff --git a/Docs/Set-OfficePowerPointPlaceholderText.md b/Docs/Set-OfficePowerPointPlaceholderText.md index a8a454b3..bc850a49 100644 --- a/Docs/Set-OfficePowerPointPlaceholderText.md +++ b/Docs/Set-OfficePowerPointPlaceholderText.md @@ -22,7 +22,7 @@ Sets text in a slide placeholder. ### EXAMPLE 1 ```powershell PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointPlaceholderText.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru Set-OfficePowerPointPlaceholderText -Slide $slide -PlaceholderType Title -Text 'Agenda' Set-OfficePowerPointPlaceholderText -Slide $slide -PlaceholderType Body -Text 'Review signals and decisions' -IgnoreMissing } diff --git a/Docs/Set-OfficePowerPointSlideSize.md b/Docs/Set-OfficePowerPointSlideSize.md index 7430c620..8958c5e0 100644 --- a/Docs/Set-OfficePowerPointSlideSize.md +++ b/Docs/Set-OfficePowerPointSlideSize.md @@ -43,7 +43,7 @@ Supports common presets as well as explicit width and height in centimeters, inc ```powershell PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointWidescreen.pptx { Set-OfficePowerPointSlideSize -Preset Screen16x9 - Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Widescreen deck' + Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Widescreen deck' } ``` @@ -51,9 +51,10 @@ Applies the 16:9 widescreen preset before adding slides. ### EXAMPLE 2 ```powershell -PS> $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointCustomSize.pptx +PS> $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointCustomSize.pptx -NoSave Set-OfficePowerPointSlideSize -Presentation $ppt -WidthCm 25.4 -HeightCm 14.0 -Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Custom size' +Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Custom size' +$ppt | Close-OfficePowerPoint -Save ``` Sets the presentation slide size to a custom 25.4 x 14.0 cm layout. diff --git a/Docs/Set-OfficePowerPointThemeFonts.md b/Docs/Set-OfficePowerPointThemeFonts.md index b2d8dadf..66145d23 100644 --- a/Docs/Set-OfficePowerPointThemeFonts.md +++ b/Docs/Set-OfficePowerPointThemeFonts.md @@ -23,7 +23,7 @@ Sets PowerPoint theme fonts. ```powershell PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointThemeFonts.pptx { Set-OfficePowerPointThemeFonts -MajorLatin 'Aptos Display' -MinorLatin 'Aptos' -AllMasters - Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Theme fonts' + Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Theme fonts' } ``` diff --git a/Docs/Set-OfficePowerPointThemeName.md b/Docs/Set-OfficePowerPointThemeName.md index 0276eba3..a36104c8 100644 --- a/Docs/Set-OfficePowerPointThemeName.md +++ b/Docs/Set-OfficePowerPointThemeName.md @@ -23,7 +23,7 @@ Sets the PowerPoint theme name. ```powershell PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointThemeName.pptx { Set-OfficePowerPointThemeName -Name 'Service Brief' -AllMasters - Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Named theme' + Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Named theme' } ``` diff --git a/Docs/Update-OfficeExcelText.md b/Docs/Update-OfficeExcelText.md index cfac004e..6c66df8c 100644 --- a/Docs/Update-OfficeExcelText.md +++ b/Docs/Update-OfficeExcelText.md @@ -26,7 +26,7 @@ Replaces text in worksheet values. ### EXAMPLE 1 ```powershell -PS> $count = Update-OfficeExcelText -Path .\Report.xlsx -Sheet Summary -OldValue Draft -NewValue Ready +PS> $count = Update-OfficeExcelText -Path .\Report.xlsx -Sheet Summary -OldValue Draft -NewValue Ready -PassThru [pscustomobject]@{ Path = '.\Report.xlsx' Replacements = $count @@ -102,7 +102,7 @@ Accept wildcard characters: False ``` ### -Open -Open the file after saving when using -System.IO.Path. +Open the file after saving when using -Path. ```yaml Type: SwitchParameter diff --git a/Docs/Update-OfficePowerPointText.md b/Docs/Update-OfficePowerPointText.md index 538a2710..c7a42069 100644 --- a/Docs/Update-OfficePowerPointText.md +++ b/Docs/Update-OfficePowerPointText.md @@ -31,11 +31,12 @@ Can replace text in text boxes, tables, and optionally notes using the OfficeIMO ### EXAMPLE 1 ```powershell -PS> $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointUpdateText.pptx -$slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 -Add-OfficePowerPointTextBox -Slide $slide -Text 'FY24 summary' | Out-Null -Set-OfficePowerPointNotes -Slide $slide -Text 'Mention FY24 assumptions.' | Out-Null -Update-OfficePowerPointText -Presentation $ppt -OldValue 'FY24' -NewValue 'FY25' -IncludeNotes +PS> $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointUpdateText.pptx -NoSave +$slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 -PassThru +Add-OfficePowerPointTextBox -Slide $slide -Text 'FY24 summary' +Set-OfficePowerPointNotes -Slide $slide -Text 'Mention FY24 assumptions.' +$count = Update-OfficePowerPointText -Presentation $ppt -OldValue 'FY24' -NewValue 'FY25' -IncludeNotes -PassThru +$ppt | Close-OfficePowerPoint -Save ``` Replaces matching text throughout the presentation and notes, returning the replacement count. diff --git a/Docs/Update-OfficeWordText.md b/Docs/Update-OfficeWordText.md index 38e83fbd..e088c9b1 100644 --- a/Docs/Update-OfficeWordText.md +++ b/Docs/Update-OfficeWordText.md @@ -31,7 +31,7 @@ Supports direct document objects, file paths, and the active DSL document. Hyper ### EXAMPLE 1 ```powershell -PS> $doc | Update-OfficeWordText -OldValue 'FY24' -NewValue 'FY25' +PS> $count = $doc | Update-OfficeWordText -OldValue 'FY24' -NewValue 'FY25' -PassThru ``` Updates matching text in the loaded document and returns the number of replacements. diff --git a/Examples/Excel/Example-ExcelChartFormatting.ps1 b/Examples/Excel/Example-ExcelChartFormatting.ps1 index 519e2f33..e18cd28c 100644 --- a/Examples/Excel/Example-ExcelChartFormatting.ps1 +++ b/Examples/Excel/Example-ExcelChartFormatting.ps1 @@ -14,8 +14,8 @@ New-OfficeExcel -Path $path { $chart = Add-OfficeExcelChart -TableName 'Sales' -Row 6 -Column 1 -Type Pie -Title 'Revenue Mix' -PassThru $chart | - Set-OfficeExcelChartLegend -Position Right | - Set-OfficeExcelChartDataLabels -ShowValue $true -ShowPercent $true -Position OutsideEnd -NumberFormat '0.0%' -SourceLinked:$false | + Set-OfficeExcelChartLegend -Position Right -PassThru | + Set-OfficeExcelChartDataLabels -ShowValue $true -ShowPercent $true -Position OutsideEnd -NumberFormat '0.0%' -SourceLinked:$false -PassThru | Set-OfficeExcelChartStyle -StyleId 251 -ColorStyleId 10 } } diff --git a/Examples/Showcase/Showcase-Excel-OperationalDashboard.ps1 b/Examples/Showcase/Showcase-Excel-OperationalDashboard.ps1 index 3bed4b07..481466de 100644 --- a/Examples/Showcase/Showcase-Excel-OperationalDashboard.ps1 +++ b/Examples/Showcase/Showcase-Excel-OperationalDashboard.ps1 @@ -73,9 +73,9 @@ New-OfficeExcel -Path $path { ExcelTable -Data $legend -TableName 'StatusLegend' -StartRow 7 -StartColumn 1 -TableStyle 'TableStyleMedium4' -AutoFit ExcelTable -Data $statusMix -TableName 'StatusMix' -StartRow 7 -StartColumn 6 -TableStyle 'TableStyleMedium4' -AutoFit - ExcelChart -Range 'F7:G10' -Row 7 -Column 9 -Type Doughnut -Title 'Status Mix' -WidthPixels 440 -HeightPixels 260 | - Set-OfficeExcelChartLegend -Position Right | - Set-OfficeExcelChartDataLabels -ShowValue $true -ShowCategoryName $true -Position OutsideEnd | + ExcelChart -Range 'F7:G10' -Row 7 -Column 9 -Type Doughnut -Title 'Status Mix' -WidthPixels 440 -HeightPixels 260 -PassThru | + Set-OfficeExcelChartLegend -Position Right -PassThru | + Set-OfficeExcelChartDataLabels -ShowValue $true -ShowCategoryName $true -Position OutsideEnd -PassThru | Set-OfficeExcelChartStyle -StyleId 251 -ColorStyleId 10 if (Test-Path $logoPath) { @@ -97,9 +97,9 @@ New-OfficeExcel -Path $path { ExcelConditionalIconSet -Range 'B2:B9' -IconSet ThreeTrafficLights1 -Reverse $true ExcelUrlLinksByHeader -Header 'Evidence' -TableName 'ServiceHealth' -UrlScript { param($text) "https://evotec.xyz/docs/$text" } -TitleScript { param($text) "Open $text" } ExcelPivotTable -SourceRange 'A1:F9' -DestinationCell 'J1' -Name 'ServiceStatusPivot' -RowField Status -DataField Incidents -DataDisplayName 'Total Incidents' -PivotStyle PivotStyleMedium9 -RefreshOnOpen - ExcelChart -Range 'A1:C9' -Row 12 -Column 1 -Type BarClustered -Title 'Health Score and Incidents' -WidthPixels 760 -HeightPixels 340 | - Set-OfficeExcelChartLegend -Position Bottom | - Set-OfficeExcelChartDataLabels -ShowValue $true -Position OutsideEnd | + ExcelChart -Range 'A1:C9' -Row 12 -Column 1 -Type BarClustered -Title 'Health Score and Incidents' -WidthPixels 760 -HeightPixels 340 -PassThru | + Set-OfficeExcelChartLegend -Position Bottom -PassThru | + Set-OfficeExcelChartDataLabels -ShowValue $true -Position OutsideEnd -PassThru | Set-OfficeExcelChartStyle -StyleId 251 -ColorStyleId 10 ExcelHeaderFooter -HeaderCenter 'Service details' -FooterRight 'Page &P of &N' } @@ -113,9 +113,9 @@ New-OfficeExcel -Path $path { ExcelSparkline -DataRange 'B5:D5' -LocationRange 'E5' ExcelSparkline -DataRange 'B6:D6' -LocationRange 'E6' ExcelSparkline -DataRange 'B7:D7' -LocationRange 'E7' - ExcelChart -TableName 'TrendData' -Row 10 -Column 1 -Type Line -Title 'Availability, Incidents, and Automation' -WidthPixels 780 -HeightPixels 340 | - Set-OfficeExcelChartLegend -Position Bottom | - Set-OfficeExcelChartDataLabels -ShowValue $true -Position Top | + ExcelChart -TableName 'TrendData' -Row 10 -Column 1 -Type Line -Title 'Availability, Incidents, and Automation' -WidthPixels 780 -HeightPixels 340 -PassThru | + Set-OfficeExcelChartLegend -Position Bottom -PassThru | + Set-OfficeExcelChartDataLabels -ShowValue $true -Position Top -PassThru | Set-OfficeExcelChartStyle -StyleId 251 -ColorStyleId 10 ExcelHeaderFooter -HeaderCenter 'Trend and automation' -FooterRight 'Page &P of &N' } diff --git a/README.MD b/README.MD index d4be43bb..eaccf62d 100644 --- a/README.MD +++ b/README.MD @@ -145,7 +145,10 @@ and `-SignaturePath` are reserved for files with a distinct role. Older Commands that create, save, or mutate a document are quiet by default. Use `-PassThru` only when the next pipeline step needs the result. Use `-NoSave` when you want a live OfficeIMO document for incremental composition, and -`-Open` when the completed file should be opened after it is written. +`-Open` when the completed file should be opened after it is written. On +`Close-OfficeWord`, `Close-OfficeExcel`, and `Close-OfficePowerPoint`, combine +`-Open` with `-Save` or `-Path`; opening never silently decides whether changes +should be persisted. ```powershell # One-shot DSL: save and finish without Out-Null. diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/CloseOfficeExcelCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/CloseOfficeExcelCommand.cs index 67cb51be..7daae4c5 100644 --- a/Sources/PSWriteOffice/Cmdlets/Excel/CloseOfficeExcelCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Excel/CloseOfficeExcelCommand.cs @@ -19,7 +19,7 @@ namespace PSWriteOffice.Cmdlets.Excel; /// $workbook | Close-OfficeExcel -Save -Path .\report-final.xlsx -SafePreflight -ValidateOpenXml /// Saves pending changes through OfficeIMO's normal save path, validates the package, and releases the workbook. /// -[Cmdlet(VerbsCommon.Close, "OfficeExcel")] +[Cmdlet(VerbsCommon.Close, "OfficeExcel", SupportsShouldProcess = true)] public sealed class CloseOfficeExcelCommand : PSCmdlet { /// Workbook to close. [Parameter(Mandatory = true, ValueFromPipeline = true)] @@ -33,7 +33,7 @@ public sealed class CloseOfficeExcelCommand : PSCmdlet { [Parameter] public string? Path { get; set; } - /// Open the workbook in Excel after saving. + /// Open the workbook after saving. Requires -Save or -Path. [Parameter] [Alias("Show")] public SwitchParameter Open { get; set; } @@ -85,7 +85,17 @@ protected override void ProcessRecord() { return; } - if (Save.IsPresent || !string.IsNullOrEmpty(Path)) { + if (Open.IsPresent && !Save.IsPresent && string.IsNullOrWhiteSpace(Path)) { + throw new PSArgumentException("Use -Save or -Path with -Open so the workbook is persisted before it is opened.", nameof(Open)); + } + + var shouldSave = Save.IsPresent || !string.IsNullOrWhiteSpace(Path); + var action = shouldSave ? "Save and close" : "Close"; + if (!ShouldProcess("Excel workbook", action)) { + return; + } + + if (shouldSave) { ExcelDateSystemService.ApplyIfSpecified(Document, DateSystem, nameof(DateSystem)); var resolvedPath = !string.IsNullOrWhiteSpace(Path) ? SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path) @@ -104,4 +114,4 @@ protected override void ProcessRecord() { ExcelDocumentService.CloseDocument(Document); } } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/UpdateOfficeExcelTextCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/UpdateOfficeExcelTextCommand.cs index c6bfe475..b31122de 100644 --- a/Sources/PSWriteOffice/Cmdlets/Excel/UpdateOfficeExcelTextCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Excel/UpdateOfficeExcelTextCommand.cs @@ -11,7 +11,7 @@ namespace PSWriteOffice.Cmdlets.Excel; /// /// Replace status text and verify the update count. /// PS> -/// $count = Update-OfficeExcelText -Path .\Report.xlsx -Sheet Summary -OldValue Draft -NewValue Ready +/// $count = Update-OfficeExcelText -Path .\Report.xlsx -Sheet Summary -OldValue Draft -NewValue Ready -PassThru /// [pscustomobject]@{ /// Path = '.\Report.xlsx' /// Replacements = $count @@ -64,7 +64,7 @@ public sealed class UpdateOfficeExcelTextCommand : PSWriteOffice.Cmdlets.OfficeM [Parameter] public SwitchParameter Regex { get; set; } - /// Open the file after saving when using -System.IO.Path. + /// Open the file after saving when using -Path. [Parameter(ParameterSetName = ParameterSetPath)] [Alias("Show")] public SwitchParameter Open { get; set; } @@ -156,4 +156,4 @@ private string ReplaceString(string value, out int replacements) { return result; } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs index 615b1faa..ff1e563a 100644 --- a/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs @@ -93,16 +93,16 @@ protected override void ProcessRecord() { PdfCommandUtilities.EnsureDirectory(outputPath); object document = UnwrapDocument(Document); - IDisposable? ownedDocument = null; + Action? closeOwnedDocument = null; try { if (ParameterSetName == ParameterSetPath) { - document = LoadDocument(out ownedDocument); + document = LoadDocument(out closeOwnedDocument); } SaveDocument(document, outputPath); } finally { - ownedDocument?.Dispose(); + closeOwnedDocument?.Invoke(); } if (Open.IsPresent) { @@ -114,30 +114,30 @@ protected override void ProcessRecord() { } } - private object LoadDocument(out IDisposable? ownedDocument) { + private object LoadDocument(out Action? closeOwnedDocument) { var sourcePath = PdfCommandUtilities.ResolveExistingFilePath(this, InputPath); switch (System.IO.Path.GetExtension(sourcePath).ToLowerInvariant()) { case ".docx": { var document = WordDocumentService.LoadDocument(sourcePath, readOnly: true, autoSave: false, Password); - ownedDocument = document; + closeOwnedDocument = () => WordDocumentService.CloseDocument(document); return document; } case ".xlsx": { var document = ExcelDocumentService.LoadDocument(sourcePath, readOnly: true, autoSave: false, Password); - ownedDocument = document; + closeOwnedDocument = () => ExcelDocumentService.CloseDocument(document); return document; } case ".pptx": { var document = PowerPointDocumentService.LoadPresentation(sourcePath, Password, readOnly: true); - ownedDocument = document; + closeOwnedDocument = () => PowerPointDocumentService.ClosePresentation(document, save: false, show: false); return document; } case ".md": case ".markdown": - ownedDocument = null; + closeOwnedDocument = null; return MarkdownDoc.Load(sourcePath); case ".rtf": - ownedDocument = null; + closeOwnedDocument = null; return RtfDocument.Load(sourcePath); default: throw new PSArgumentException("Supported PDF source extensions are .docx, .xlsx, .pptx, .md, .markdown, and .rtf.", nameof(InputPath)); @@ -175,4 +175,4 @@ private static object UnwrapDocument(object document) { return document; } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointBulletsCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointBulletsCommand.cs index e9bfea2d..02a4b713 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointBulletsCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointBulletsCommand.cs @@ -13,7 +13,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint; /// Add a bullet list. /// PS> /// New-OfficePowerPoint -Path .\Examples\Documents\PowerPointBullets.pptx { -/// $slide = Add-OfficePowerPointSlide -Layout 1 +/// $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru /// Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Delivery update' /// Add-OfficePowerPointBullets -Slide $slide -Bullets 'Wins','Risks','Next steps' -X 60 -Y 120 -Width 420 -Height 180 /// } @@ -101,4 +101,4 @@ private char ResolveBulletChar() { return BulletChar!.Trim()[0]; } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointChartCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointChartCommand.cs index abd673f3..420aabb3 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointChartCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointChartCommand.cs @@ -34,7 +34,7 @@ public enum PowerPointChartType { /// [pscustomobject]@{ Month = 'Feb'; Sales = 55; Profit = 13 } /// ) /// New-OfficePowerPoint -Path .\Examples\Documents\PowerPointChart.pptx { -/// $slide = Add-OfficePowerPointSlide -Layout 1 +/// $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru /// Add-OfficePowerPointChart -Slide $slide -InputObject $rows -CategoryProperty Month -SeriesProperty Sales,Profit -Title 'Monthly performance' /// } /// Creates a clustered column chart using Month for categories and Sales/Profit as series. @@ -47,7 +47,7 @@ public enum PowerPointChartType { /// [pscustomobject]@{ Quarter = 2; Revenue = 34 } /// ) /// New-OfficePowerPoint -Path .\Examples\Documents\PowerPointScatter.pptx { -/// $slide = Add-OfficePowerPointSlide -Layout 1 +/// $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru /// Add-OfficePowerPointChart -Slide $slide -Type Scatter -InputObject $rows -XProperty Quarter -YProperty Revenue -Title 'Revenue trend' /// } /// Creates a scatter chart using Quarter on the X axis and Revenue on the Y axis. @@ -269,4 +269,4 @@ private static double ConvertToDouble(object? value, string propertyName) { throw new PSArgumentException($"Property '{propertyName}' must be numeric.", propertyName); } } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointImageCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointImageCommand.cs index a9decb0b..f164d3e3 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointImageCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointImageCommand.cs @@ -12,7 +12,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint; /// PS> /// $image = '.\Tests\Assets\CellImage.png' /// New-OfficePowerPoint -Path .\Examples\Documents\PowerPointImage.pptx { -/// $slide = Add-OfficePowerPointSlide -Layout 1 +/// $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru /// Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Evidence' /// Add-OfficePowerPointImage -Slide $slide -Path $image -X 60 -Y 130 -Width 180 -Height 120 /// } @@ -65,4 +65,4 @@ protected override void ProcessRecord() { WriteError(new ErrorRecord(ex, "PowerPointAddImageFailed", ErrorCategory.InvalidOperation, Slide)); } } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointSectionCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointSectionCommand.cs index ddc5bc52..48a4cb8b 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointSectionCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointSectionCommand.cs @@ -12,8 +12,8 @@ namespace PSWriteOffice.Cmdlets.PowerPoint; /// Create a section that starts at slide 3. /// PS> /// New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSections.pptx { -/// Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Overview' -/// Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Results' +/// Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Overview' +/// Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Results' /// Add-OfficePowerPointSection -Name 'Results' -StartSlideIndex 1 /// } /// Creates a section named Results starting at the second slide. @@ -63,4 +63,4 @@ private int ResolveStartSlideIndex(PowerPointPresentation presentation, PowerPoi throw new PSArgumentException("Specify -StartSlideIndex or run inside a slide scope within New-OfficePowerPoint."); } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointShapeCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointShapeCommand.cs index ee4cd135..c1646902 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointShapeCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointShapeCommand.cs @@ -14,7 +14,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint; /// Create a rectangle highlight. /// PS> /// New-OfficePowerPoint -Path .\Examples\Documents\PowerPointShape.pptx { -/// $slide = Add-OfficePowerPointSlide -Layout 1 +/// $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru /// Add-OfficePowerPointShape -Slide $slide -ShapeType Rectangle -X 60 -Y 120 -Width 220 -Height 90 -FillColor '#DDEEFF' -OutlineColor '#2563EB' -OutlineWidth 1 /// Add-OfficePowerPointTextBox -Slide $slide -Text 'Highlighted status' -X 80 -Y 145 -Width 180 -Height 32 /// } @@ -121,4 +121,4 @@ private static OfficePresetShapeType ResolveShapeType(string? shapeType) { return parsed; } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointSlideCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointSlideCommand.cs index f4a08831..7d2b08dc 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointSlideCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointSlideCommand.cs @@ -10,7 +10,9 @@ namespace PSWriteOffice.Cmdlets.PowerPoint; /// /// Append a slide with the default layout. /// PS> -/// $ppt = New-OfficePowerPoint -Path .\deck.pptx; Add-OfficePowerPointSlide -Presentation $ppt +/// $ppt = New-OfficePowerPoint -Path .\deck.pptx -NoSave +/// Add-OfficePowerPointSlide -Presentation $ppt +/// $ppt | Close-OfficePowerPoint -Save /// Creates a deck and appends a new slide at the end. /// /// @@ -94,4 +96,4 @@ protected override void ProcessRecord() { WriteError(new ErrorRecord(ex, "PowerPointAddSlideFailed", ErrorCategory.InvalidOperation, presentation ?? Presentation)); } } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointTextBoxCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointTextBoxCommand.cs index c19b3ec3..63bce3f0 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointTextBoxCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointTextBoxCommand.cs @@ -11,7 +11,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint; /// Insert a caption. /// PS> /// New-OfficePowerPoint -Path .\Examples\Documents\PowerPointTextBox.pptx { -/// $slide = Add-OfficePowerPointSlide -Layout 1 +/// $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru /// Add-OfficePowerPointTextBox -Slide $slide -Text 'Quarterly overview' -X 80 -Y 150 -Width 320 -Height 50 /// Add-OfficePowerPointTextBox -Slide $slide -Text 'Generated by PSWriteOffice' -X 80 -Y 210 -Width 320 -Height 35 /// } @@ -70,4 +70,4 @@ protected override void ProcessRecord() { WriteError(new ErrorRecord(ex, "PowerPointAddTextBoxFailed", ErrorCategory.InvalidOperation, Slide)); } } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/CloseOfficePowerPointCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/CloseOfficePowerPointCommand.cs index 945f3fbb..19878202 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/CloseOfficePowerPointCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/CloseOfficePowerPointCommand.cs @@ -30,7 +30,12 @@ public sealed class CloseOfficePowerPointCommand : PSCmdlet { [Parameter] public SwitchParameter Save { get; set; } - /// Open the presentation in PowerPoint after saving. + /// Optional target path when saving. + [Parameter] + [Alias("FilePath")] + public string? Path { get; set; } + + /// Open the presentation after saving. Requires -Save or -Path. [Parameter] [Alias("Show")] public SwitchParameter Open { get; set; } @@ -46,13 +51,21 @@ protected override void ProcessRecord() { return; } + if (Open.IsPresent && !Save.IsPresent && string.IsNullOrWhiteSpace(Path)) { + throw new PSArgumentException("Use -Save or -Path with -Open so the presentation is persisted before it is opened.", nameof(Open)); + } + try { - var action = Save.IsPresent || Open.IsPresent ? "Save and close" : "Close"; + var shouldSave = Save.IsPresent || !string.IsNullOrWhiteSpace(Path); + var action = shouldSave ? "Save and close" : "Close"; if (ShouldProcess("PowerPoint presentation", action)) { - PowerPointDocumentService.ClosePresentation(Presentation, Save.IsPresent, Open.IsPresent, Password); + var resolvedPath = !string.IsNullOrWhiteSpace(Path) + ? SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path) + : null; + PowerPointDocumentService.ClosePresentation(Presentation, shouldSave, Open.IsPresent, Password, resolvedPath); } } catch (Exception ex) { WriteError(new ErrorRecord(ex, "PowerPointCloseFailed", ErrorCategory.InvalidOperation, Presentation)); } } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/CopyOfficePowerPointSlideCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/CopyOfficePowerPointSlideCommand.cs index 009dd409..86fc4b4e 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/CopyOfficePowerPointSlideCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/CopyOfficePowerPointSlideCommand.cs @@ -11,9 +11,9 @@ namespace PSWriteOffice.Cmdlets.PowerPoint; /// Duplicate the first slide and insert the copy after it. /// PS> /// New-OfficePowerPoint -Path .\Examples\Documents\PowerPointCopySlide.pptx { -/// $slide = Add-OfficePowerPointSlide -Layout 1 +/// $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru /// Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Original' -/// $copy = Copy-OfficePowerPointSlide -Index 0 +/// $copy = Copy-OfficePowerPointSlide -Index 0 -PassThru /// Set-OfficePowerPointSlideTitle -Slide $copy -Title 'Copied appendix' /// } /// Duplicates a slide and updates the copied slide title. @@ -44,4 +44,4 @@ protected override void ProcessRecord() { WriteError(new ErrorRecord(ex, "PowerPointCopySlideFailed", ErrorCategory.InvalidOperation, Presentation)); } } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointLayoutBoxCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointLayoutBoxCommand.cs index 94d85443..9be41195 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointLayoutBoxCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointLayoutBoxCommand.cs @@ -11,7 +11,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint; /// Get the content area for a deck. /// PS> /// New-OfficePowerPoint -Path .\Examples\Documents\PowerPointLayoutBox.pptx { -/// $slide = Add-OfficePowerPointSlide -Layout 1 +/// $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru /// $box = Get-OfficePowerPointLayoutBox -MarginCm 1.5 /// Add-OfficePowerPointTextBox -Slide $slide -Text 'Inside the content box' -X ($box.LeftPoints) -Y ($box.TopPoints) -Width ($box.WidthPoints) -Height 60 /// } @@ -21,7 +21,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint; /// Split the slide into two columns. /// PS> /// New-OfficePowerPoint -Path .\Examples\Documents\PowerPointColumns.pptx { -/// $slide = Add-OfficePowerPointSlide -Layout 1 +/// $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru /// $columns = Get-OfficePowerPointLayoutBox -ColumnCount 2 -MarginCm 1.5 -GutterCm 1.0 /// Add-OfficePowerPointTextBox -Slide $slide -Text 'Left column' -X ($columns[0].LeftPoints) -Y ($columns[0].TopPoints) -Width ($columns[0].WidthPoints) -Height 80 /// Add-OfficePowerPointTextBox -Slide $slide -Text 'Right column' -X ($columns[1].LeftPoints) -Y ($columns[1].TopPoints) -Width ($columns[1].WidthPoints) -Height 80 diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointSectionCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointSectionCommand.cs index 2069de62..1175e934 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointSectionCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointSectionCommand.cs @@ -10,10 +10,11 @@ namespace PSWriteOffice.Cmdlets.PowerPoint; /// /// List all sections in a deck. /// PS> -/// $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSectionsRead.pptx -/// Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null -/// Add-OfficePowerPointSection -Presentation $ppt -Name 'Appendix' -StartSlideIndex 0 | Out-Null -/// Get-OfficePowerPointSection -Presentation $ppt | Select-Object Name, FirstSlideIndex, SlideCount +/// $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSectionsRead.pptx -NoSave +/// Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 +/// Add-OfficePowerPointSection -Presentation $ppt -Name 'Appendix' -StartSlideIndex 0 +/// Get-OfficePowerPointSection -Presentation $ppt | Select-Object Name, FirstSlideIndex, SlideCount +/// $ppt | Close-OfficePowerPoint /// Returns section information including section names and slide indexes. /// [Cmdlet(VerbsCommon.Get, "OfficePowerPointSection")] @@ -50,4 +51,4 @@ protected override void ProcessRecord() { WriteError(new ErrorRecord(ex, "PowerPointGetSectionFailed", ErrorCategory.InvalidOperation, Presentation)); } } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointThemeCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointThemeCommand.cs index 4df38060..d975abc5 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointThemeCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointThemeCommand.cs @@ -9,10 +9,11 @@ namespace PSWriteOffice.Cmdlets.PowerPoint; /// /// Inspect the default master theme. /// PS> -/// $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointThemeRead.pptx +/// $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointThemeRead.pptx -NoSave /// Set-OfficePowerPointThemeName -Presentation $ppt -Name 'Service Brief' /// Set-OfficePowerPointThemeFonts -Presentation $ppt -MajorLatin 'Aptos Display' -MinorLatin 'Aptos' -/// Get-OfficePowerPointTheme -Presentation $ppt | Select-Object Name, Master +/// Get-OfficePowerPointTheme -Presentation $ppt | Select-Object Name, Master +/// $ppt | Close-OfficePowerPoint /// Returns theme information after updating the deck theme metadata. /// [Cmdlet(VerbsCommon.Get, "OfficePowerPointTheme")] @@ -42,4 +43,4 @@ protected override void ProcessRecord() { WriteError(new ErrorRecord(ex, "PowerPointGetThemeFailed", ErrorCategory.InvalidOperation, Presentation)); } } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/ImportOfficePowerPointSlideCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/ImportOfficePowerPointSlideCommand.cs index 4562a262..2c066d49 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/ImportOfficePowerPointSlideCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/ImportOfficePowerPointSlideCommand.cs @@ -12,7 +12,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint; /// Import the first slide from another deck. /// PS> /// New-OfficePowerPoint -Path .\Examples\Documents\PowerPointImportTarget.pptx { -/// Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Target deck' +/// Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Target deck' /// Import-OfficePowerPointSlide -SourcePath .\Examples\Documents\SourceDeck.pptx -SourceIndex 0 -InsertAt 1 /// } /// Imports the first slide from another deck into the target presentation. diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/RemoveOfficePowerPointSlideCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/RemoveOfficePowerPointSlideCommand.cs index 36d3c936..6b21255e 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/RemoveOfficePowerPointSlideCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/RemoveOfficePowerPointSlideCommand.cs @@ -9,11 +9,11 @@ namespace PSWriteOffice.Cmdlets.PowerPoint; /// /// Delete the first slide. /// PS> -/// $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRemoveSlide.pptx -/// Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null -/// Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null +/// $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRemoveSlide.pptx -NoSave +/// Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 +/// Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 /// Remove-OfficePowerPointSlide -Presentation $ppt -Index 0 -Confirm:$false -/// Save-OfficePowerPoint -Presentation $ppt +/// Close-OfficePowerPoint -Presentation $ppt -Save /// Removes the first slide and saves the updated deck. /// [Cmdlet(VerbsCommon.Remove, "OfficePowerPointSlide", SupportsShouldProcess = true)] @@ -37,4 +37,4 @@ protected override void ProcessRecord() { WriteError(new ErrorRecord(ex, "PowerPointRemoveSlideFailed", ErrorCategory.InvalidOperation, Presentation)); } } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/RenameOfficePowerPointSectionCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/RenameOfficePowerPointSectionCommand.cs index 1259ad34..d5d44133 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/RenameOfficePowerPointSectionCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/RenameOfficePowerPointSectionCommand.cs @@ -10,10 +10,11 @@ namespace PSWriteOffice.Cmdlets.PowerPoint; /// /// Rename a section in a presentation. /// PS> -/// $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRenameSection.pptx -/// Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null -/// Add-OfficePowerPointSection -Presentation $ppt -Name 'Results' -StartSlideIndex 0 | Out-Null -/// Rename-OfficePowerPointSection -Presentation $ppt -Name 'Results' -NewName 'Deep Dive' -PassThru +/// $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRenameSection.pptx -NoSave +/// Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 +/// Add-OfficePowerPointSection -Presentation $ppt -Name 'Results' -StartSlideIndex 0 +/// Rename-OfficePowerPointSection -Presentation $ppt -Name 'Results' -NewName 'Deep Dive' -PassThru +/// $ppt | Close-OfficePowerPoint -Save /// Renames the first matching section and returns the updated section metadata. /// [Cmdlet(VerbsCommon.Rename, "OfficePowerPointSection")] @@ -68,4 +69,4 @@ protected override void ProcessRecord() { WriteError(new ErrorRecord(ex, "PowerPointRenameSectionFailed", ErrorCategory.InvalidOperation, Presentation)); } } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SaveOfficePowerPointCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SaveOfficePowerPointCommand.cs index cfca72bf..3f25a9a2 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SaveOfficePowerPointCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SaveOfficePowerPointCommand.cs @@ -10,8 +10,8 @@ namespace PSWriteOffice.Cmdlets.PowerPoint; /// /// Save and open the deck. /// PS> -/// $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSave.pptx -/// $slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 +/// $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSave.pptx -NoSave +/// $slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 -PassThru /// Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Saved later' /// Save-OfficePowerPoint -Presentation $ppt /// Saves the current presentation without closing it. @@ -69,4 +69,4 @@ protected override void ProcessRecord() { } } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointNotesCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointNotesCommand.cs index 120fd1d3..2b8ea79c 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointNotesCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointNotesCommand.cs @@ -10,7 +10,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint; /// Attach speaker notes. /// PS> /// New-OfficePowerPoint -Path .\Examples\Documents\PowerPointNotes.pptx { -/// $slide = Add-OfficePowerPointSlide -Layout 1 +/// $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru /// Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Executive summary' /// Set-OfficePowerPointNotes -Slide $slide -Text 'Keep this slide under five minutes and focus on decisions.' /// } @@ -39,4 +39,4 @@ protected override void ProcessRecord() { WriteError(new ErrorRecord(ex, "PowerPointSetNotesFailed", ErrorCategory.InvalidOperation, Slide)); } } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointPlaceholderTextCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointPlaceholderTextCommand.cs index 4c1cc5cf..af3b9561 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointPlaceholderTextCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointPlaceholderTextCommand.cs @@ -12,7 +12,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint; /// Set the title placeholder text. /// PS> /// New-OfficePowerPoint -Path .\Examples\Documents\PowerPointPlaceholderText.pptx { -/// $slide = Add-OfficePowerPointSlide -Layout 1 +/// $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru /// Set-OfficePowerPointPlaceholderText -Slide $slide -PlaceholderType Title -Text 'Agenda' /// Set-OfficePowerPointPlaceholderText -Slide $slide -PlaceholderType Body -Text 'Review signals and decisions' -IgnoreMissing /// } diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointSlideSizeCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointSlideSizeCommand.cs index 44e588ef..677b41f9 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointSlideSizeCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointSlideSizeCommand.cs @@ -12,16 +12,17 @@ namespace PSWriteOffice.Cmdlets.PowerPoint; /// PS> /// New-OfficePowerPoint -Path .\Examples\Documents\PowerPointWidescreen.pptx { /// Set-OfficePowerPointSlideSize -Preset Screen16x9 -/// Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Widescreen deck' +/// Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Widescreen deck' /// } /// Applies the 16:9 widescreen preset before adding slides. /// /// /// Set a custom size in centimeters. /// PS> -/// $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointCustomSize.pptx +/// $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointCustomSize.pptx -NoSave /// Set-OfficePowerPointSlideSize -Presentation $ppt -WidthCm 25.4 -HeightCm 14.0 -/// Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Custom size' +/// Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Custom size' +/// $ppt | Close-OfficePowerPoint -Save /// Sets the presentation slide size to a custom 25.4 x 14.0 cm layout. /// [Cmdlet(VerbsCommon.Set, "OfficePowerPointSlideSize", DefaultParameterSetName = ParameterSetPreset)] @@ -110,4 +111,4 @@ protected override void ProcessRecord() { WriteError(new ErrorRecord(ex, "PowerPointSetSlideSizeFailed", ErrorCategory.InvalidOperation, Presentation)); } } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointThemeFontsCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointThemeFontsCommand.cs index 01ec96e8..0afbdb8d 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointThemeFontsCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointThemeFontsCommand.cs @@ -11,7 +11,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint; /// PS> /// New-OfficePowerPoint -Path .\Examples\Documents\PowerPointThemeFonts.pptx { /// Set-OfficePowerPointThemeFonts -MajorLatin 'Aptos Display' -MinorLatin 'Aptos' -AllMasters -/// Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Theme fonts' +/// Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Theme fonts' /// } /// Updates theme fonts before creating slides. /// diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointThemeNameCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointThemeNameCommand.cs index 38a53991..3df8e3e0 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointThemeNameCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointThemeNameCommand.cs @@ -11,7 +11,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint; /// PS> /// New-OfficePowerPoint -Path .\Examples\Documents\PowerPointThemeName.pptx { /// Set-OfficePowerPointThemeName -Name 'Service Brief' -AllMasters -/// Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Named theme' +/// Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Named theme' /// } /// Applies a friendly theme name across every master before saving. /// diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/UpdateOfficePowerPointTextCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/UpdateOfficePowerPointTextCommand.cs index 2d0358ca..ef96fdad 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/UpdateOfficePowerPointTextCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/UpdateOfficePowerPointTextCommand.cs @@ -10,11 +10,12 @@ namespace PSWriteOffice.Cmdlets.PowerPoint; /// /// Replace fiscal year text across the whole deck. /// PS> -/// $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointUpdateText.pptx -/// $slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 -/// Add-OfficePowerPointTextBox -Slide $slide -Text 'FY24 summary' | Out-Null -/// Set-OfficePowerPointNotes -Slide $slide -Text 'Mention FY24 assumptions.' | Out-Null -/// Update-OfficePowerPointText -Presentation $ppt -OldValue 'FY24' -NewValue 'FY25' -IncludeNotes +/// $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointUpdateText.pptx -NoSave +/// $slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 -PassThru +/// Add-OfficePowerPointTextBox -Slide $slide -Text 'FY24 summary' +/// Set-OfficePowerPointNotes -Slide $slide -Text 'Mention FY24 assumptions.' +/// $count = Update-OfficePowerPointText -Presentation $ppt -OldValue 'FY24' -NewValue 'FY25' -IncludeNotes -PassThru +/// $ppt | Close-OfficePowerPoint -Save /// Replaces matching text throughout the presentation and notes, returning the replacement count. /// [Cmdlet(VerbsData.Update, "OfficePowerPointText", DefaultParameterSetName = ParameterSetAuto)] @@ -84,4 +85,4 @@ private int ReplaceUsingDslContext() { return context.Presentation.ReplaceText(OldValue, NewValue ?? string.Empty, IncludeTables, IncludeNotes.IsPresent); } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/Word/CloseOfficeWordCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/CloseOfficeWordCommand.cs index dfb6181e..eef66ac8 100644 --- a/Sources/PSWriteOffice/Cmdlets/Word/CloseOfficeWordCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Word/CloseOfficeWordCommand.cs @@ -24,7 +24,7 @@ namespace PSWriteOffice.Cmdlets.Word; /// Close-OfficeWord -Document $doc -Save -Path .\Report-final.docx -Open /// Saves updates to Report-final.docx, opens it, and disposes the document. /// -[Cmdlet(VerbsCommon.Close, "OfficeWord", DefaultParameterSetName = ParameterSetCurrent)] +[Cmdlet(VerbsCommon.Close, "OfficeWord", DefaultParameterSetName = ParameterSetCurrent, SupportsShouldProcess = true)] public sealed class CloseOfficeWordCommand : PSCmdlet { private const string ParameterSetDocument = "Document"; private const string ParameterSetCurrent = "Current"; @@ -51,7 +51,7 @@ public sealed class CloseOfficeWordCommand : PSCmdlet { [Parameter(ParameterSetName = ParameterSetCurrent)] public string? Path { get; set; } - /// Open the file after saving. + /// Open the file after saving. Requires -Save or -Path. [Parameter] [Alias("Show")] public SwitchParameter Open { get; set; } @@ -62,6 +62,10 @@ public sealed class CloseOfficeWordCommand : PSCmdlet { /// protected override void ProcessRecord() { + if (Open.IsPresent && !Save.IsPresent && string.IsNullOrWhiteSpace(Path)) { + throw new PSArgumentException("Use -Save or -Path with -Open so the document is persisted before it is opened.", nameof(Open)); + } + if (All.IsPresent) { var documents = WordDocumentService.GetTrackedDocuments(); for (var index = documents.Count - 1; index >= 0; index--) { @@ -88,7 +92,13 @@ protected override void ProcessRecord() { } private void CloseSingleDocument(WordDocument document) { - if (Save.IsPresent || !string.IsNullOrEmpty(Path)) { + var shouldSave = Save.IsPresent || !string.IsNullOrWhiteSpace(Path); + var action = shouldSave ? "Save and close" : "Close"; + if (!ShouldProcess("Word document", action)) { + return; + } + + if (shouldSave) { var resolvedPath = !string.IsNullOrWhiteSpace(Path) ? SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path) : null; @@ -98,4 +108,4 @@ private void CloseSingleDocument(WordDocument document) { WordDocumentService.CloseDocument(document); } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordCommand.cs index b7d85ba9..e33d28a8 100644 --- a/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordCommand.cs @@ -7,7 +7,7 @@ namespace PSWriteOffice.Cmdlets.Word; /// Creates a Word document using the DSL. -/// Handles file creation or template cloning, scriptblock execution, optional autosave, and emits the document path when -PassThru is used. +/// Handles file creation or template cloning, scriptblock execution, explicit save or live-document composition, and emits the document path when -PassThru is used. /// /// Create a document inline. /// PS> @@ -146,4 +146,4 @@ private string ResolveFileSystemPath(string path) { : System.IO.Path.Combine(SessionState.Path.CurrentFileSystemLocation.Path, providerPath); } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/Word/UpdateOfficeWordTextCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/UpdateOfficeWordTextCommand.cs index 73900cab..657980d2 100644 --- a/Sources/PSWriteOffice/Cmdlets/Word/UpdateOfficeWordTextCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Word/UpdateOfficeWordTextCommand.cs @@ -10,7 +10,7 @@ namespace PSWriteOffice.Cmdlets.Word; /// /// Replace text in an open document. /// PS> -/// $doc | Update-OfficeWordText -OldValue 'FY24' -NewValue 'FY25' +/// $count = $doc | Update-OfficeWordText -OldValue 'FY24' -NewValue 'FY25' -PassThru /// Updates matching text in the loaded document and returns the number of replacements. /// /// @@ -230,4 +230,4 @@ private static string ReplaceString(string source, string oldValue, string newVa return result; } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Services/PowerPoint/PowerPointDocumentService.cs b/Sources/PSWriteOffice/Services/PowerPoint/PowerPointDocumentService.cs index 25b47b72..0328c7fc 100644 --- a/Sources/PSWriteOffice/Services/PowerPoint/PowerPointDocumentService.cs +++ b/Sources/PSWriteOffice/Services/PowerPoint/PowerPointDocumentService.cs @@ -129,14 +129,18 @@ public static string SavePresentation(PowerPointPresentation presentation, bool } /// Closes a presentation, optionally saving and opening it first. - public static void ClosePresentation(PowerPointPresentation presentation, bool save, bool show, string? password = null) + public static void ClosePresentation(PowerPointPresentation presentation, bool save, bool show, string? password = null) => + ClosePresentation(presentation, save, show, password, filePath: null); + + /// Closes a presentation, optionally saving to a new path and opening it first. + public static void ClosePresentation(PowerPointPresentation presentation, bool save, bool show, string? password, string? filePath) { if (presentation == null) throw new ArgumentNullException(nameof(presentation)); EnsureExternalPresentationUsesExplicitPersistence(presentation); string? savedPath = null; if (save || show) { - savedPath = SavePresentation(presentation, show: false, password, filePath: null); + savedPath = SavePresentation(presentation, show: false, password, filePath); } try diff --git a/Tests/OfficePdfExport.Tests.ps1 b/Tests/OfficePdfExport.Tests.ps1 index 17251f71..cacba487 100644 --- a/Tests/OfficePdfExport.Tests.ps1 +++ b/Tests/OfficePdfExport.Tests.ps1 @@ -5,6 +5,22 @@ BeforeAll { Join-Path $PSScriptRoot '..\PSWriteOffice.psd1' } Import-Module $ModuleManifest -Global -ErrorAction Stop + + function Get-OfficePrivateRegistryCount { + param( + [Parameter(Mandatory)] + [string] $TypeName, + [Parameter(Mandatory)] + [string] $FieldName + ) + + $type = [AppDomain]::CurrentDomain.GetAssemblies() | + ForEach-Object { $_.GetType($TypeName, $false) } | + Where-Object { $null -ne $_ } | + Select-Object -First 1 + $field = $type.GetField($FieldName, [Reflection.BindingFlags]'NonPublic,Static') + $field.GetValue($null).Count + } } Describe 'Office document PDF exports' { @@ -75,6 +91,34 @@ Describe 'Office document PDF exports' { Get-OfficePdfText -Path $pdf | Should -Match 'Word PDF export smoke' } + It 'releases encrypted path sources through their owning document services' { + $password = 'pdf-export-secret' + $wordPath = Join-Path $TestDrive 'encrypted-word.docx' + $wordPdf = Join-Path $TestDrive 'encrypted-word.pdf' + $excelPath = Join-Path $TestDrive 'encrypted-excel.xlsx' + $excelPdf = Join-Path $TestDrive 'encrypted-excel.pdf' + + New-OfficeWord -Path $wordPath -Password $password { + WordParagraph -Text 'Encrypted Word PDF export' + } + New-OfficeExcel -Path $excelPath -Password $password { + ExcelSheet 'Data' { + ExcelCell -Address A1 -Value 'Encrypted Excel PDF export' + } + } + + $wordBefore = Get-OfficePrivateRegistryCount -TypeName 'PSWriteOffice.Services.Word.WordDocumentService' -FieldName 'EncryptedSourcePaths' + $excelBefore = Get-OfficePrivateRegistryCount -TypeName 'PSWriteOffice.Services.Excel.ExcelDocumentService' -FieldName 'EncryptedSourcePaths' + + Export-OfficeDocumentPdf -InputPath $wordPath -Path $wordPdf -Password $password + Export-OfficeDocumentPdf -InputPath $excelPath -Path $excelPdf -Password $password + + Get-OfficePrivateRegistryCount -TypeName 'PSWriteOffice.Services.Word.WordDocumentService' -FieldName 'EncryptedSourcePaths' | Should -Be $wordBefore + Get-OfficePrivateRegistryCount -TypeName 'PSWriteOffice.Services.Excel.ExcelDocumentService' -FieldName 'EncryptedSourcePaths' | Should -Be $excelBefore + Test-Path -LiteralPath $wordPdf | Should -BeTrue + Test-Path -LiteralPath $excelPdf | Should -BeTrue + } + It 'exports an open Excel workbook to PDF' { $xlsx = Join-Path $TestDrive 'excel-report.xlsx' $pdf = Join-Path $TestDrive 'excel-report.pdf' @@ -125,7 +169,11 @@ Describe 'Office document PDF exports' { } $presentation = Get-OfficePowerPoint -Path $pptx - $presentation | Export-OfficeDocumentPdf -Path $pdf + try { + $presentation | Export-OfficeDocumentPdf -Path $pdf + } finally { + $presentation | Close-OfficePowerPoint + } Test-Path $pptx | Should -BeTrue Test-Path $pdf | Should -BeTrue diff --git a/Tests/PowerPoint.Tests.ps1 b/Tests/PowerPoint.Tests.ps1 index 4ffbe72f..5d0475e7 100644 --- a/Tests/PowerPoint.Tests.ps1 +++ b/Tests/PowerPoint.Tests.ps1 @@ -68,6 +68,23 @@ Describe 'PowerPoint cmdlets' { } } + It 'saves to a new path while closing a presentation' { + $sourcePath = Join-Path $TestDrive 'PowerPointCloseSource.pptx' + $savedAsPath = Join-Path (Join-Path $TestDrive 'close-save-as') 'PowerPointClose.Copy.pptx' + $presentation = New-OfficePowerPoint -Path $sourcePath -NoSave + Add-OfficePowerPointSlide -Presentation $presentation + + Close-OfficePowerPoint -Presentation $presentation -Path $savedAsPath + + Test-Path -LiteralPath $savedAsPath | Should -BeTrue + $reloaded = Get-OfficePowerPoint -Path $savedAsPath + try { + $reloaded.Slides.Count | Should -Be 1 + } finally { + Close-OfficePowerPoint -Presentation $reloaded + } + } + It 'saves an external OfficeIMO presentation without closing it and supports save as' { $savedAsPath = Join-Path (Join-Path $TestDrive 'save-as-output') 'PowerPointExternal.Copy.pptx' $seedPath = Join-Path $TestDrive 'PowerPointTypeSeed.pptx' @@ -310,10 +327,20 @@ Describe 'PowerPoint cmdlets' { $_.GetParameters()[1].ParameterType -eq [bool] -and $_.GetParameters()[2].ParameterType -eq [string] } + $close = $serviceType.GetMethods() | Where-Object { + $_.Name -eq 'ClosePresentation' -and + $_.GetParameters().Count -eq 4 + } + $closeWithPath = $serviceType.GetMethods() | Where-Object { + $_.Name -eq 'ClosePresentation' -and + $_.GetParameters().Count -eq 5 + } $load | Should -HaveCount 1 $save | Should -HaveCount 1 $save.ReturnType | Should -Be ([void]) + $close | Should -HaveCount 1 + $closeWithPath | Should -HaveCount 1 } It 'round-trips encrypted presentations through lifecycle cmdlets' { diff --git a/Tests/PublicApiConsistency.Tests.ps1 b/Tests/PublicApiConsistency.Tests.ps1 index a9405990..6db30a17 100644 --- a/Tests/PublicApiConsistency.Tests.ps1 +++ b/Tests/PublicApiConsistency.Tests.ps1 @@ -78,6 +78,30 @@ Describe 'PSWriteOffice public API consistency' { $command.Parameters['DestinationPath'].Aliases | Should -Contain 'OutputPath' } + It 'uses one explicit persistence contract when closing Office documents' { + foreach ($name in 'Close-OfficeWord', 'Close-OfficeExcel', 'Close-OfficePowerPoint') { + $command = Get-Command $name + $command.Parameters.Keys | Should -Contain 'Save' -Because "$name should make persistence explicit" + $command.Parameters.Keys | Should -Contain 'Path' -Because "$name should support save-as while closing" + $command.Parameters.Keys | Should -Contain 'Open' -Because "$name should use the common viewer switch" + $command.Parameters.Keys | Should -Contain 'WhatIf' -Because "$name can save or dispose a live document" + $command.Parameters.Keys | Should -Contain 'Confirm' -Because "$name can save or dispose a live document" + } + + $word = New-OfficeWord -Path (Join-Path $TestDrive 'close-word.docx') -NoSave + $excel = New-OfficeExcel -Path (Join-Path $TestDrive 'close-excel.xlsx') -NoSave + $powerPoint = New-OfficePowerPoint -Path (Join-Path $TestDrive 'close-powerpoint.pptx') -NoSave + try { + { $word | Close-OfficeWord -Open -ErrorAction Stop } | Should -Throw '*Use -Save or -Path with -Open*' + { $excel | Close-OfficeExcel -Open -ErrorAction Stop } | Should -Throw '*Use -Save or -Path with -Open*' + { $powerPoint | Close-OfficePowerPoint -Open -ErrorAction Stop } | Should -Throw '*Use -Save or -Path with -Open*' + } finally { + if ($word) { $word | Close-OfficeWord -Confirm:$false } + if ($excel) { $excel | Close-OfficeExcel -Confirm:$false } + if ($powerPoint) { $powerPoint | Close-OfficePowerPoint -Confirm:$false } + } + } + It 'keeps saved New commands quiet unless PassThru is requested' { $cases = @( @{ Name = 'Word'; Extension = 'docx' } @@ -120,6 +144,7 @@ Describe 'PSWriteOffice public API consistency' { $publicRoots = @( Join-Path $PSScriptRoot '..\Examples' Join-Path $PSScriptRoot '..\Website\content' + Join-Path $PSScriptRoot '..\WebsiteArtifacts\apidocs\powershell\examples' ) $offenders = [System.Collections.Generic.List[string]]::new() @@ -181,4 +206,117 @@ Describe 'PSWriteOffice public API consistency' { $offenders | Should -BeNullOrEmpty } + + It 'teaches PassThru whenever a quiet command feeds another expression' { + $roots = @( + Join-Path $PSScriptRoot '..\Examples' + Join-Path $PSScriptRoot '..\Website\content' + Join-Path $PSScriptRoot '..\WebsiteArtifacts\apidocs\powershell\examples' + Join-Path $PSScriptRoot '..\Sources\PSWriteOffice\Cmdlets' + ) + $mutationVerbs = @('Add', 'Clear', 'Copy', 'Edit', 'Move', 'Protect', 'Remove', 'Rename', 'Save', 'Set', 'Unprotect', 'Update') + $savedNewCommands = @( + 'New-OfficeExcel' + 'New-OfficeMarkdown' + 'New-OfficePdf' + 'New-OfficePowerPoint' + 'New-OfficeRtf' + 'New-OfficeVisio' + 'New-OfficeWord' + ) + $offenders = [System.Collections.Generic.List[string]]::new() + + $files = @( + foreach ($root in $roots) { + Get-ChildItem -LiteralPath $root -Recurse -File | Where-Object { $_.Extension -in '.ps1', '.md', '.cs' } + } + ) + foreach ($file in $files) { + $content = [System.IO.File]::ReadAllText($file.FullName) + $snippets = switch ($file.Extension) { + '.ps1' { @([pscustomobject]@{ Text = $content; LineOffset = 0 }) } + '.md' { + @( + [regex]::Matches($content, '(?ms)^```powershell\s*\r?\n(?.*?)^```\s*$') | ForEach-Object { + [pscustomobject]@{ + Text = $_.Groups['code'].Value + LineOffset = @($content.Substring(0, $_.Groups['code'].Index) -split '\r?\n').Count - 1 + } + } + ) + } + '.cs' { + @( + [regex]::Matches($content, '(?ms)///\s*(?.*?)') | ForEach-Object { + $code = [Net.WebUtility]::HtmlDecode(($_.Groups['code'].Value -replace '(?m)^\s*///\s?', '')) + [pscustomobject]@{ + Text = $code + LineOffset = @($content.Substring(0, $_.Groups['code'].Index) -split '\r?\n').Count - 1 + } + } + ) + } + } + + foreach ($snippet in $snippets) { + $tokens = $null + $errors = $null + $ast = [System.Management.Automation.Language.Parser]::ParseInput($snippet.Text, [ref] $tokens, [ref] $errors) + + foreach ($assignment in $ast.FindAll({ + param($node) + $node -is [System.Management.Automation.Language.AssignmentStatementAst] + }, $true)) { + if ($assignment.Right -isnot [System.Management.Automation.Language.PipelineAst]) { continue } + $command = $assignment.Right.PipelineElements[0] + if ($command -isnot [System.Management.Automation.Language.CommandAst]) { continue } + + $commandName = $command.GetCommandName() + if ([string]::IsNullOrWhiteSpace($commandName)) { continue } + $commandInfo = Get-Command $commandName -ErrorAction SilentlyContinue + if ($commandInfo -is [System.Management.Automation.AliasInfo]) { + $commandInfo = $commandInfo.ResolvedCommand + } + if ($commandInfo.ModuleName -ne 'PSWriteOffice') { continue } + + $text = $command.Extent.Text + $isSavedNew = $commandInfo.Name -in $savedNewCommands -and $text -match '(?i)(?:^|\s)-Path(?:\s|$)' + $isQuietValue = ($commandInfo.Verb -in $mutationVerbs -and $commandInfo.Name -ne 'Set-OfficeConfluenceManagedSection') -or $isSavedNew + $hasExplicitOutput = $text -match '(?i)(?:^|\s)-PassThru(?:\s|$)' -or + ($commandInfo.Verb -eq 'New' -and $text -match '(?i)(?:^|\s)-NoSave(?:\s|$)') + if ($isQuietValue -and -not $hasExplicitOutput) { + $line = $snippet.LineOffset + $command.Extent.StartLineNumber + $offenders.Add(('{0}:{1} assignment from {2}' -f $file.FullName, $line, $commandInfo.Name)) + } + } + + foreach ($pipeline in $ast.FindAll({ + param($node) + $node -is [System.Management.Automation.Language.PipelineAst] + }, $true)) { + if ($pipeline.PipelineElements.Count -lt 2) { continue } + foreach ($element in $pipeline.PipelineElements[0..($pipeline.PipelineElements.Count - 2)]) { + if ($element -isnot [System.Management.Automation.Language.CommandAst]) { continue } + $commandName = $element.GetCommandName() + if ([string]::IsNullOrWhiteSpace($commandName)) { continue } + $commandInfo = Get-Command $commandName -ErrorAction SilentlyContinue + if ($commandInfo -is [System.Management.Automation.AliasInfo]) { + $commandInfo = $commandInfo.ResolvedCommand + } + if ($commandInfo.ModuleName -ne 'PSWriteOffice' -or + -not $commandInfo.Parameters.ContainsKey('PassThru') -or + $commandInfo.Verb -notin $mutationVerbs) { + continue + } + if ($element.Extent.Text -notmatch '(?i)(?:^|\s)-PassThru(?:\s|$)') { + $line = $snippet.LineOffset + $element.Extent.StartLineNumber + $offenders.Add(('{0}:{1} pipeline from {2}' -f $file.FullName, $line, $commandInfo.Name)) + } + } + } + } + } + + $offenders | Should -BeNullOrEmpty + } } diff --git a/Tests/WebsiteDocumentation.Tests.ps1 b/Tests/WebsiteDocumentation.Tests.ps1 index 2c4af289..09531395 100644 --- a/Tests/WebsiteDocumentation.Tests.ps1 +++ b/Tests/WebsiteDocumentation.Tests.ps1 @@ -7,6 +7,8 @@ BeforeAll { $script:apiRoot = Join-Path $script:repoRoot 'WebsiteArtifacts\apidocs\powershell' $script:generatedHelpPath = Join-Path $script:repoRoot 'Docs\Generated\PSWriteOffice-help.xml' $script:sourceSnapshotManifestPath = Join-Path $script:apiRoot 'PSWriteOffice.psd1' + $script:sourceExamplesRoot = Join-Path $script:repoRoot 'Examples' + $script:snapshotExamplesRoot = Join-Path $script:apiRoot 'examples' $script:commandFamiliesGuidePath = Join-Path $script:repoRoot 'Website\content\project-docs\docs\command-families.md' $script:overviewGuidePath = Join-Path $script:repoRoot 'Website\content\project-docs\docs\overview.md' $script:projectDocsRoot = Join-Path $script:repoRoot 'Website\content\project-docs\docs' @@ -14,6 +16,28 @@ BeforeAll { } Describe 'PSWriteOffice website documentation catalog' { + It 'keeps the website example snapshot identical to the repository examples' { + $sourceFiles = @(Get-ChildItem -LiteralPath $script:sourceExamplesRoot -Recurse -File) + $snapshotFiles = @(Get-ChildItem -LiteralPath $script:snapshotExamplesRoot -Recurse -File) + + $sourceByPath = @{} + foreach ($file in $sourceFiles) { + $relative = $file.FullName.Substring($script:sourceExamplesRoot.Length).TrimStart('\', '/') + $sourceByPath[$relative] = $file.FullName + } + $snapshotByPath = @{} + foreach ($file in $snapshotFiles) { + $relative = $file.FullName.Substring($script:snapshotExamplesRoot.Length).TrimStart('\', '/') + $snapshotByPath[$relative] = $file.FullName + } + + @($sourceByPath.Keys | Sort-Object) | Should -Be @($snapshotByPath.Keys | Sort-Object) + foreach ($relative in $sourceByPath.Keys) { + (Get-FileHash -LiteralPath $sourceByPath[$relative] -Algorithm SHA256).Hash | + Should -Be (Get-FileHash -LiteralPath $snapshotByPath[$relative] -Algorithm SHA256).Hash -Because $relative + } + } + It 'covers every exported cmdlet exactly once' { $outputPath = Join-Path $TestDrive 'command-catalog.json' & $script:catalogScript -RepositoryRoot $script:repoRoot -OutputPath $outputPath | Out-Null diff --git a/Website/content/examples/create-powerpoint-deck.md b/Website/content/examples/create-powerpoint-deck.md index c1cdd49e..9a654501 100644 --- a/Website/content/examples/create-powerpoint-deck.md +++ b/Website/content/examples/create-powerpoint-deck.md @@ -13,9 +13,9 @@ It is adapted from `Examples/PowerPoint/Example-PowerPointTransitionsAndSizing.p ```powershell Import-Module PSWriteOffice -$outputPath = Join-Path $PSScriptRoot 'Output\ServiceBrief.pptx' -$null = New-Item -ItemType Directory -Path (Split-Path $outputPath) -Force -$deck = New-OfficePowerPoint -Path $outputPath { +$outputDirectory = (New-Item -ItemType Directory -Path (Join-Path $PSScriptRoot 'Output') -Force).FullName +$outputPath = Join-Path $outputDirectory 'ServiceBrief.pptx' +$deck = New-OfficePowerPoint -Path $outputPath -NoSave { PptSlide { PptTitle -Title 'Service Brief' PptTextBox -Text 'Generated with PSWriteOffice' -X 80 -Y 145 -Width 360 -Height 50 @@ -29,7 +29,7 @@ Get-OfficePowerPointSlide -Presentation $deck -Index 0 | Set-OfficePowerPointSlideTransition -Transition Fade Set-OfficePowerPointSlideSize -Presentation $deck -Preset Screen16x9 -Save-OfficePowerPoint -Presentation $deck +Close-OfficePowerPoint -Presentation $deck -Save ``` ## What this demonstrates diff --git a/Website/content/project-docs/docs/powerpoint.md b/Website/content/project-docs/docs/powerpoint.md index a3e399e1..ac9ee4ac 100644 --- a/Website/content/project-docs/docs/powerpoint.md +++ b/Website/content/project-docs/docs/powerpoint.md @@ -12,11 +12,10 @@ Create with `-NoSave`, add slides through an explicit presentation target, then ```powershell $presentation = New-OfficePowerPoint -Path '.\Briefing.pptx' -NoSave -$slide = Add-OfficePowerPointSlide -Presentation $presentation -LayoutType Text +$slide = Add-OfficePowerPointSlide -Presentation $presentation -LayoutType Text -PassThru Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Actions' Add-OfficePowerPointTextBox -Slide $slide -Text 'Confirm the production date.' -X 90 -Y 170 -Width 700 -Height 60 -$presentation | Save-OfficePowerPoint -$presentation | Close-OfficePowerPoint +$presentation | Close-OfficePowerPoint -Save ``` ## Choose direct authoring or a deck plan diff --git a/WebsiteArtifacts/apidocs/powershell/PSWriteOffice-help.xml b/WebsiteArtifacts/apidocs/powershell/PSWriteOffice-help.xml index 2943eb8c..3249fb9c 100644 --- a/WebsiteArtifacts/apidocs/powershell/PSWriteOffice-help.xml +++ b/WebsiteArtifacts/apidocs/powershell/PSWriteOffice-help.xml @@ -35493,7 +35493,7 @@ URI links and bookmark links are supported; a single run cannot target both.PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointBullets.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Delivery update' Add-OfficePowerPointBullets -Slide $slide -Bullets 'Wins','Risks','Next steps' -X 60 -Y 120 -Width 420 -Height 180 } @@ -36103,7 +36103,7 @@ URI links and bookmark links are supported; a single run cannot target both. @@ -36120,7 +36120,7 @@ URI links and bookmark links are supported; a single run cannot target both. @@ -36770,7 +36770,7 @@ URI links and bookmark links are supported; a single run cannot target both. $image = '.\Tests\Assets\CellImage.png' New-OfficePowerPoint -Path .\Examples\Documents\PowerPointImage.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Evidence' Add-OfficePowerPointImage -Slide $slide -Path $image -X 60 -Y 130 -Width 180 -Height 120 } @@ -38316,8 +38316,8 @@ URI links and bookmark links are supported; a single run cannot target both.PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSections.pptx { - Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Overview' - Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Results' + Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Overview' + Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Results' Add-OfficePowerPointSection -Name 'Results' -StartSlideIndex 1 } @@ -38630,7 +38630,7 @@ URI links and bookmark links are supported; a single run cannot target both.PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointShape.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru Add-OfficePowerPointShape -Slide $slide -ShapeType Rectangle -X 60 -Y 120 -Width 220 -Height 90 -FillColor '#DDEEFF' -OutlineColor '#2563EB' -OutlineWidth 1 Add-OfficePowerPointTextBox -Slide $slide -Text 'Highlighted status' -X 80 -Y 145 -Width 180 -Height 32 } @@ -39049,7 +39049,9 @@ URI links and bookmark links are supported; a single run cannot target both. PS> - $ppt = New-OfficePowerPoint -Path .\deck.pptx; Add-OfficePowerPointSlide -Presentation $ppt + $ppt = New-OfficePowerPoint -Path .\deck.pptx -NoSave + Add-OfficePowerPointSlide -Presentation $ppt + $ppt | Close-OfficePowerPoint -Save Creates a deck and appends a new slide at the end. @@ -40137,7 +40139,7 @@ table formatting, borders, and style choices are preserved. PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointTextBox.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru Add-OfficePowerPointTextBox -Slide $slide -Text 'Quarterly overview' -X 80 -Y 150 -Width 320 -Height 50 Add-OfficePowerPointTextBox -Slide $slide -Text 'Generated by PSWriteOffice' -X 80 -Y 210 -Width 320 -Height 35 } @@ -57233,7 +57235,7 @@ cells. This keeps existing-document editing simple without forcing callers back Open - Open the workbook in Excel after saving. + Open the workbook after saving. Requires -Save or -Path. SwitchParameter @@ -57410,7 +57412,7 @@ cells. This keeps existing-document editing simple without forcing callers back Open - Open the workbook in Excel after saving. + Open the workbook after saving. Requires -Save or -Path. SwitchParameter @@ -57544,7 +57546,7 @@ cells. This keeps existing-document editing simple without forcing callers back Open - Open the presentation in PowerPoint after saving. + Open the presentation after saving. Requires -Save or -Path. SwitchParameter @@ -57565,6 +57567,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + Path + + Optional target path when saving. + + String + + String + + + None + Presentation @@ -57595,7 +57609,7 @@ cells. This keeps existing-document editing simple without forcing callers back Open - Open the presentation in PowerPoint after saving. + Open the presentation after saving. Requires -Save or -Path. SwitchParameter @@ -57616,6 +57630,18 @@ cells. This keeps existing-document editing simple without forcing callers back None + + Path + + Optional target path when saving. + + String + + String + + + None + Presentation @@ -57708,7 +57734,7 @@ cells. This keeps existing-document editing simple without forcing callers back Open - Open the file after saving. + Open the file after saving. Requires -Save or -Path. SwitchParameter @@ -57771,7 +57797,7 @@ cells. This keeps existing-document editing simple without forcing callers back Open - Open the file after saving. + Open the file after saving. Requires -Save or -Path. SwitchParameter @@ -57834,7 +57860,7 @@ cells. This keeps existing-document editing simple without forcing callers back Open - Open the file after saving. + Open the file after saving. Requires -Save or -Path. SwitchParameter @@ -57909,7 +57935,7 @@ cells. This keeps existing-document editing simple without forcing callers back Open - Open the file after saving. + Open the file after saving. Requires -Save or -Path. SwitchParameter @@ -78037,9 +78063,9 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointCopySlide.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Original' - $copy = Copy-OfficePowerPointSlide -Index 0 + $copy = Copy-OfficePowerPointSlide -Index 0 -PassThru Set-OfficePowerPointSlideTitle -Slide $copy -Title 'Copied appendix' } @@ -115022,7 +115048,7 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointLayoutBox.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru $box = Get-OfficePowerPointLayoutBox -MarginCm 1.5 Add-OfficePowerPointTextBox -Slide $slide -Text 'Inside the content box' -X ($box.LeftPoints) -Y ($box.TopPoints) -Width ($box.WidthPoints) -Height 60 } @@ -115036,7 +115062,7 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointColumns.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru $columns = Get-OfficePowerPointLayoutBox -ColumnCount 2 -MarginCm 1.5 -GutterCm 1.0 Add-OfficePowerPointTextBox -Slide $slide -Text 'Left column' -X ($columns[0].LeftPoints) -Y ($columns[0].TopPoints) -Width ($columns[0].WidthPoints) -Height 80 Add-OfficePowerPointTextBox -Slide $slide -Text 'Right column' -X ($columns[1].LeftPoints) -Y ($columns[1].TopPoints) -Width ($columns[1].WidthPoints) -Height 80 @@ -115613,10 +115639,11 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification PS> - $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSectionsRead.pptx - Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null - Add-OfficePowerPointSection -Presentation $ppt -Name 'Appendix' -StartSlideIndex 0 | Out-Null - Get-OfficePowerPointSection -Presentation $ppt | Select-Object Name, FirstSlideIndex, SlideCount + $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSectionsRead.pptx -NoSave + Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 + Add-OfficePowerPointSection -Presentation $ppt -Name 'Appendix' -StartSlideIndex 0 + Get-OfficePowerPointSection -Presentation $ppt | Select-Object Name, FirstSlideIndex, SlideCount + $ppt | Close-OfficePowerPoint Returns section information including section names and slide indexes. @@ -116245,10 +116272,11 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification PS> - $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointThemeRead.pptx + $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointThemeRead.pptx -NoSave Set-OfficePowerPointThemeName -Presentation $ppt -Name 'Service Brief' Set-OfficePowerPointThemeFonts -Presentation $ppt -MajorLatin 'Aptos Display' -MinorLatin 'Aptos' - Get-OfficePowerPointTheme -Presentation $ppt | Select-Object Name, Master + Get-OfficePowerPointTheme -Presentation $ppt | Select-Object Name, Master + $ppt | Close-OfficePowerPoint Returns theme information after updating the deck theme metadata. @@ -127659,7 +127687,7 @@ the script needs to work with list objects directly instead of using a text sear PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointImportTarget.pptx { - Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Target deck' + Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Target deck' Import-OfficePowerPointSlide -SourcePath .\Examples\Documents\SourceDeck.pptx -SourceIndex 0 -InsertAt 1 } @@ -140793,7 +140821,7 @@ Use -NoSave or omit -Path when a document object should be returned for further - Handles file creation or template cloning, scriptblock execution, optional autosave, and emits the document path when -PassThru is used. + Handles file creation or template cloning, scriptblock execution, explicit save or live-document composition, and emits the document path when -PassThru is used. @@ -144470,11 +144498,11 @@ Use -NoSave or omit -Path when a document object should be returned for further PS> - $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRemoveSlide.pptx - Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null - Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null + $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRemoveSlide.pptx -NoSave + Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 + Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 Remove-OfficePowerPointSlide -Presentation $ppt -Index 0 -Confirm:$false - Save-OfficePowerPoint -Presentation $ppt + Close-OfficePowerPoint -Presentation $ppt -Save Removes the first slide and saves the updated deck. @@ -145092,10 +145120,11 @@ Use -NoSave or omit -Path when a document object should be returned for further PS> - $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRenameSection.pptx - Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Out-Null - Add-OfficePowerPointSection -Presentation $ppt -Name 'Results' -StartSlideIndex 0 | Out-Null - Rename-OfficePowerPointSection -Presentation $ppt -Name 'Results' -NewName 'Deep Dive' -PassThru + $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointRenameSection.pptx -NoSave + Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 + Add-OfficePowerPointSection -Presentation $ppt -Name 'Results' -StartSlideIndex 0 + Rename-OfficePowerPointSection -Presentation $ppt -Name 'Results' -NewName 'Deep Dive' -PassThru + $ppt | Close-OfficePowerPoint -Save Renames the first matching section and returns the updated section metadata. @@ -147574,8 +147603,8 @@ The document is saved through the normal OfficeIMO.Pdf save path. PS> - $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSave.pptx - $slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 + $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointSave.pptx -NoSave + $slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Saved later' Save-OfficePowerPoint -Presentation $ppt @@ -173426,7 +173455,7 @@ Apply a theme near the start of a New-OfficePdf script block so later content in PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointNotes.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru Set-OfficePowerPointSlideTitle -Slide $slide -Title 'Executive summary' Set-OfficePowerPointNotes -Slide $slide -Text 'Keep this slide under five minutes and focus on decisions.' } @@ -173626,7 +173655,7 @@ Apply a theme near the start of a New-OfficePdf script block so later content in PS> New-OfficePowerPoint -Path .\Examples\Documents\PowerPointPlaceholderText.pptx { - $slide = Add-OfficePowerPointSlide -Layout 1 + $slide = Add-OfficePowerPointSlide -Layout 1 -PassThru Set-OfficePowerPointPlaceholderText -Slide $slide -PlaceholderType Title -Text 'Agenda' Set-OfficePowerPointPlaceholderText -Slide $slide -PlaceholderType Body -Text 'Review signals and decisions' -IgnoreMissing } @@ -175314,7 +175343,7 @@ contents, then save or close the presentation. New-OfficePowerPoint -Path .\Examples\Documents\PowerPointWidescreen.pptx { Set-OfficePowerPointSlideSize -Preset Screen16x9 - Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Widescreen deck' + Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Widescreen deck' } Applies the 16:9 widescreen preset before adding slides. @@ -175325,9 +175354,10 @@ contents, then save or close the presentation. PS> - $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointCustomSize.pptx + $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointCustomSize.pptx -NoSave Set-OfficePowerPointSlideSize -Presentation $ppt -WidthCm 25.4 -HeightCm 14.0 - Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Custom size' + Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Custom size' + $ppt | Close-OfficePowerPoint -Save Sets the presentation slide size to a custom 25.4 x 14.0 cm layout. @@ -176594,7 +176624,7 @@ cell inside a deck that already exists. New-OfficePowerPoint -Path .\Examples\Documents\PowerPointThemeFonts.pptx { Set-OfficePowerPointThemeFonts -MajorLatin 'Aptos Display' -MinorLatin 'Aptos' -AllMasters - Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Theme fonts' + Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Theme fonts' } Updates theme fonts before creating slides. @@ -176745,7 +176775,7 @@ cell inside a deck that already exists. New-OfficePowerPoint -Path .\Examples\Documents\PowerPointThemeName.pptx { Set-OfficePowerPointThemeName -Name 'Service Brief' -AllMasters - Add-OfficePowerPointSlide -Layout 1 | Set-OfficePowerPointSlideTitle -Title 'Named theme' + Add-OfficePowerPointSlide -Layout 1 -PassThru | Set-OfficePowerPointSlideTitle -Title 'Named theme' } Applies a friendly theme name across every master before saving. @@ -183557,7 +183587,7 @@ cell inside a deck that already exists. Open - Open the file after saving when using -System.IO.Path. + Open the file after saving when using -Path. SwitchParameter @@ -183803,7 +183833,7 @@ cell inside a deck that already exists. Open - Open the file after saving when using -System.IO.Path. + Open the file after saving when using -Path. SwitchParameter @@ -183910,7 +183940,7 @@ cell inside a deck that already exists. PS> - $count = Update-OfficeExcelText -Path .\Report.xlsx -Sheet Summary -OldValue Draft -NewValue Ready + $count = Update-OfficeExcelText -Path .\Report.xlsx -Sheet Summary -OldValue Draft -NewValue Ready -PassThru [pscustomobject]@{ Path = '.\Report.xlsx' Replacements = $count @@ -184265,11 +184295,12 @@ cell inside a deck that already exists. PS> - $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointUpdateText.pptx - $slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 - Add-OfficePowerPointTextBox -Slide $slide -Text 'FY24 summary' | Out-Null - Set-OfficePowerPointNotes -Slide $slide -Text 'Mention FY24 assumptions.' | Out-Null - Update-OfficePowerPointText -Presentation $ppt -OldValue 'FY24' -NewValue 'FY25' -IncludeNotes + $ppt = New-OfficePowerPoint -Path .\Examples\Documents\PowerPointUpdateText.pptx -NoSave + $slide = Add-OfficePowerPointSlide -Presentation $ppt -Layout 1 -PassThru + Add-OfficePowerPointTextBox -Slide $slide -Text 'FY24 summary' + Set-OfficePowerPointNotes -Slide $slide -Text 'Mention FY24 assumptions.' + $count = Update-OfficePowerPointText -Presentation $ppt -OldValue 'FY24' -NewValue 'FY25' -IncludeNotes -PassThru + $ppt | Close-OfficePowerPoint -Save Replaces matching text throughout the presentation and notes, returning the replacement count. @@ -185371,7 +185402,7 @@ cell inside a deck that already exists. PS> - $doc | Update-OfficeWordText -OldValue 'FY24' -NewValue 'FY25' + $count = $doc | Update-OfficeWordText -OldValue 'FY24' -NewValue 'FY25' -PassThru Updates matching text in the loaded document and returns the number of replacements. diff --git a/WebsiteArtifacts/apidocs/powershell/command-metadata.json b/WebsiteArtifacts/apidocs/powershell/command-metadata.json index 9ed6a2c3..1c869cd7 100644 --- a/WebsiteArtifacts/apidocs/powershell/command-metadata.json +++ b/WebsiteArtifacts/apidocs/powershell/command-metadata.json @@ -904,8 +904,8 @@ "PptSlide" ], "sourcePath": "Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointSlideCommand.cs", - "sourceLine": 24, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointSlideCommand.cs#L24" + "sourceLine": 26, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/AddOfficePowerPointSlideCommand.cs#L26" }, { "name": "Add-OfficePowerPointTable", @@ -2741,8 +2741,8 @@ "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointSectionCommand.cs", - "sourceLine": 21, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointSectionCommand.cs#L21" + "sourceLine": 22, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointSectionCommand.cs#L22" }, { "name": "Get-OfficePowerPointShape", @@ -2775,8 +2775,8 @@ "PptTheme" ], "sourcePath": "Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointThemeCommand.cs", - "sourceLine": 21, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointThemeCommand.cs#L21" + "sourceLine": 22, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/GetOfficePowerPointThemeCommand.cs#L22" }, { "name": "Get-OfficeProtectionCapability", @@ -3558,8 +3558,8 @@ "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/PowerPoint/RenameOfficePowerPointSectionCommand.cs", - "sourceLine": 21, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/RenameOfficePowerPointSectionCommand.cs#L21" + "sourceLine": 22, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/RenameOfficePowerPointSectionCommand.cs#L22" }, { "name": "Repair-OfficeExcelWorkbook", @@ -4355,8 +4355,8 @@ "PptSlideSize" ], "sourcePath": "Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointSlideSizeCommand.cs", - "sourceLine": 30, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointSlideSizeCommand.cs#L30" + "sourceLine": 31, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/SetOfficePowerPointSlideSizeCommand.cs#L31" }, { "name": "Set-OfficePowerPointSlideTitle", @@ -4606,8 +4606,8 @@ "Replace-OfficePowerPointText" ], "sourcePath": "Sources/PSWriteOffice/Cmdlets/PowerPoint/UpdateOfficePowerPointTextCommand.cs", - "sourceLine": 23, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/UpdateOfficePowerPointTextCommand.cs#L23" + "sourceLine": 24, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/UpdateOfficePowerPointTextCommand.cs#L24" }, { "name": "Update-OfficeRtfText", diff --git a/WebsiteArtifacts/apidocs/powershell/examples/Confluence/Example-ConfluenceAzureTableReport.ps1 b/WebsiteArtifacts/apidocs/powershell/examples/Confluence/Example-ConfluenceAzureTableReport.ps1 new file mode 100644 index 00000000..578217c7 --- /dev/null +++ b/WebsiteArtifacts/apidocs/powershell/examples/Confluence/Example-ConfluenceAzureTableReport.ps1 @@ -0,0 +1,93 @@ +param( + [Parameter(Mandatory)] + [string] $AzureTableConnectionString, + + [Parameter(Mandatory)] + [string] $AzureTableName, + + [Parameter(Mandatory)] + [string] $ConfluenceSpaceId, + + [Parameter(Mandatory)] + [string] $ConfluenceTitle, + + [string] $AzureTableFilter, + + [object] $ConfluenceSession, + + [switch] $Publish +) + +Import-Module DbaClientX -ErrorAction Stop +Import-Module PSWriteOffice -ErrorAction Stop + +if ($null -ne $ConfluenceSession -and $ConfluenceSession -isnot [OfficeIMO.Confluence.ConfluenceSession]) { + throw '-ConfluenceSession must be an OfficeIMO.Confluence.ConfluenceSession created by New-OfficeConfluenceSession.' +} + +$entities = @( + Get-DbaXAzureTableEntity ` + -ConnectionString $AzureTableConnectionString ` + -TableName $AzureTableName ` + -Filter $AzureTableFilter +) + +if ($entities.Count -eq 0) { + $markdown = "# $ConfluenceTitle`n`n_No Azure Table entities matched the query._" +} else { + $propertyNames = @( + $entities | + ForEach-Object { $_.Properties.Keys } | + Sort-Object -Unique + ) + $columns = @('PartitionKey', 'RowKey') + $propertyNames + + function ConvertTo-MarkdownCell { + param([AllowNull()] $Value) + + if ($null -eq $Value) { + return '' + } + + return $Value.ToString().Replace('|', '\|').Replace("`r", ' ').Replace("`n", ' ') + } + + $lines = [Collections.Generic.List[string]]::new() + $lines.Add("# $ConfluenceTitle") + $lines.Add('') + $lines.Add('| ' + (($columns | ForEach-Object { ConvertTo-MarkdownCell $_ }) -join ' | ') + ' |') + $lines.Add('| ' + (($columns | ForEach-Object { '---' }) -join ' | ') + ' |') + foreach ($entity in $entities) { + $values = foreach ($column in $columns) { + if ($column -eq 'PartitionKey') { + $entity.PartitionKey + } elseif ($column -eq 'RowKey') { + $entity.RowKey + } else { + $entity.Properties[$column] + } + } + $lines.Add('| ' + (($values | ForEach-Object { ConvertTo-MarkdownCell $_ }) -join ' | ') + ' |') + } + + $markdown = $lines -join [Environment]::NewLine +} + +$publishParameters = @{ + SpaceId = $ConfluenceSpaceId + Title = $ConfluenceTitle + Content = $markdown + FailOnLoss = $true +} + +if ($Publish) { + if ($null -eq $ConfluenceSession) { + throw 'Provide -ConfluenceSession when -Publish is used.' + } + + $publishParameters.Session = $ConfluenceSession +} else { + $publishParameters.PlanOnly = $true +} + +Publish-OfficeConfluencePage @publishParameters diff --git a/WebsiteArtifacts/apidocs/powershell/examples/Csv/Example-CsvAdvanced.ps1 b/WebsiteArtifacts/apidocs/powershell/examples/Csv/Example-CsvAdvanced.ps1 index fec653ec..c9830c15 100644 --- a/WebsiteArtifacts/apidocs/powershell/examples/Csv/Example-CsvAdvanced.ps1 +++ b/WebsiteArtifacts/apidocs/powershell/examples/Csv/Example-CsvAdvanced.ps1 @@ -1,7 +1,6 @@ Import-Module PSWriteOffice -ErrorAction Stop $documents = Join-Path $PSScriptRoot '..\Documents' -New-Item -Path $documents -ItemType Directory -Force | Out-Null - +$null = New-Item -Path $documents -ItemType Directory -Force $path = Join-Path $documents 'Csv-Advanced.csv' $rows = @( [PSCustomObject]@{ Name = 'Alpha'; Score = 92; Active = $true } diff --git a/WebsiteArtifacts/apidocs/powershell/examples/Csv/Example-CsvBasic.ps1 b/WebsiteArtifacts/apidocs/powershell/examples/Csv/Example-CsvBasic.ps1 index 1256b196..90af1840 100644 --- a/WebsiteArtifacts/apidocs/powershell/examples/Csv/Example-CsvBasic.ps1 +++ b/WebsiteArtifacts/apidocs/powershell/examples/Csv/Example-CsvBasic.ps1 @@ -1,7 +1,6 @@ Import-Module PSWriteOffice -ErrorAction Stop $documents = Join-Path $PSScriptRoot '..\Documents' -New-Item -Path $documents -ItemType Directory -Force | Out-Null - +$null = New-Item -Path $documents -ItemType Directory -Force $path = Join-Path $documents 'Data.csv' $rows = @( [PSCustomObject]@{ Name = 'Alpha'; Value = 1 } diff --git a/WebsiteArtifacts/apidocs/powershell/examples/Csv/Example-CsvDbaClientXRoundTrip.ps1 b/WebsiteArtifacts/apidocs/powershell/examples/Csv/Example-CsvDbaClientXRoundTrip.ps1 new file mode 100644 index 00000000..1248caef --- /dev/null +++ b/WebsiteArtifacts/apidocs/powershell/examples/Csv/Example-CsvDbaClientXRoundTrip.ps1 @@ -0,0 +1,138 @@ +param( + [string] $Server = $(if ($env:DBACLIENTX_SQLSERVER) { $env:DBACLIENTX_SQLSERVER } else { 'localhost' }), + [string] $Database = $(if ($env:DBACLIENTX_SQLDATABASE) { $env:DBACLIENTX_SQLDATABASE } else { 'tempdb' }), + [string] $SourceTable = 'dbo.PSWriteOfficeCsvSource', + [string] $DestinationTable = 'dbo.PSWriteOfficeCsvRoundTrip', + [string] $Path, + [int] $RowCount = 100, + [switch] $KeepArtifacts +) + +Import-Module PSWriteOffice -ErrorAction Stop +Import-Module DbaClientX -ErrorAction Stop + +if ($RowCount -lt 1) { + throw 'RowCount must be greater than zero.' +} + +if (-not $Path) { + $outputDirectory = Join-Path $PSScriptRoot '..\Documents' + if (-not (Test-Path -LiteralPath $outputDirectory)) { + $null = New-Item -Path $outputDirectory -ItemType Directory -Force + } + + $Path = Join-Path $outputDirectory 'Csv-DbaClientXRoundTrip.csv' +} + +$connectionString = "Server=$Server;Database=$Database;Encrypt=True;TrustServerCertificate=True;Integrated Security=True" + +Invoke-DbaXNonQuery -Server $Server -Database $Database -TrustServerCertificate -Query @" +IF OBJECT_ID(N'$SourceTable', N'U') IS NOT NULL DROP TABLE $SourceTable; +IF OBJECT_ID(N'$DestinationTable', N'U') IS NOT NULL DROP TABLE $DestinationTable; + +CREATE TABLE $SourceTable +( + Id int NOT NULL, + Department nvarchar(100) NOT NULL, + Amount decimal(18,2) NOT NULL, + CreatedUtc datetime2 NOT NULL +); + +WITH numbers AS +( + SELECT TOP ($RowCount) + ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS Id + FROM sys.all_objects AS a + CROSS JOIN sys.all_objects AS b +) +INSERT INTO $SourceTable (Id, Department, Amount, CreatedUtc) +SELECT + Id, + CONCAT(N'Department ', ((Id - 1) % 5) + 1), + CONVERT(decimal(18,2), Id * 10.25), + SYSUTCDATETIME() +FROM numbers; +"@ -ErrorAction Stop | Out-Null + +try { + $rows = @( + Invoke-DbaXQuery ` + -Server $Server ` + -Database $Database ` + -TrustServerCertificate ` + -Query "SELECT Id, Department, Amount, CreatedUtc FROM $SourceTable ORDER BY Id;" ` + -ReturnType PSObject ` + -ErrorAction Stop + ) + + if (Test-Path -LiteralPath $Path) { + Remove-Item -LiteralPath $Path -Force + } + + $rows | + Export-OfficeCsv ` + -Path $Path ` + -ErrorAction Stop + + $table = Import-OfficeCsv ` + -Path $Path ` + -AsDataTable ` + -ErrorAction Stop + + $writeResult = $table | + Write-DbaXTableData ` + -Provider SqlServer ` + -ConnectionString $connectionString ` + -DestinationTable $DestinationTable ` + -AutoCreateTable ` + -TableLock ` + -BatchSize 5000 ` + -PassThru ` + -ErrorAction Stop + + $verification = Invoke-DbaXQuery ` + -Server $Server ` + -Database $Database ` + -TrustServerCertificate ` + -Query "SELECT COUNT(*) AS SourceRows FROM $SourceTable; SELECT COUNT(*) AS DestinationRows FROM $DestinationTable;" ` + -ReturnType DataSet ` + -ErrorAction Stop + + $sourceRows = [int] $verification.Tables[0].Rows[0]['SourceRows'] + $destinationRows = [int] $verification.Tables[1].Rows[0]['DestinationRows'] + + $hasMismatch = $rows.Count -ne $RowCount -or + $table.Rows.Count -ne $RowCount -or + $writeResult.Rows -ne $RowCount -or + $sourceRows -ne $RowCount -or + $destinationRows -ne $RowCount + + if ($hasMismatch) { + throw "Round-trip row count mismatch. Exported=$($rows.Count), Imported=$($table.Rows.Count), Written=$($writeResult.Rows), Source=$sourceRows, Destination=$destinationRows, Expected=$RowCount." + } + + [pscustomobject]@{ + Server = $Server + Database = $Database + Path = $Path + SourceTable = $SourceTable + DestinationTable = $DestinationTable + ExportedRows = $rows.Count + ImportedRows = $table.Rows.Count + WrittenRows = $writeResult.Rows + SourceRows = $sourceRows + DestinationRows = $destinationRows + } +} +finally { + if (-not $KeepArtifacts) { + Invoke-DbaXNonQuery -Server $Server -Database $Database -TrustServerCertificate -Query @" +IF OBJECT_ID(N'$DestinationTable', N'U') IS NOT NULL DROP TABLE $DestinationTable; +IF OBJECT_ID(N'$SourceTable', N'U') IS NOT NULL DROP TABLE $SourceTable; +"@ -ErrorAction SilentlyContinue | Out-Null + + if (Test-Path -LiteralPath $Path) { + Remove-Item -LiteralPath $Path -Force + } + } +} diff --git a/WebsiteArtifacts/apidocs/powershell/examples/Csv/Recipe-Csv-SafeExport.ps1 b/WebsiteArtifacts/apidocs/powershell/examples/Csv/Recipe-Csv-SafeExport.ps1 new file mode 100644 index 00000000..0d94fc13 --- /dev/null +++ b/WebsiteArtifacts/apidocs/powershell/examples/Csv/Recipe-Csv-SafeExport.ps1 @@ -0,0 +1,8 @@ +$path = '.\Review-Queue.csv' +$rows = @( + [pscustomobject]@{ Id = 1001; Owner = 'Platform'; Comment = '=HYPERLINK("https://example.org")' } + [pscustomobject]@{ Id = 1002; Owner = 'Security'; Comment = 'Ready for review' } +) + +$rows | Export-OfficeCsv -Path $path -FormulaInjectionPolicy Escape -UseQuotes AsNeeded +Import-OfficeCsv -Path $path -InferSchema | Select-Object Id, Owner, Comment diff --git a/WebsiteArtifacts/apidocs/powershell/examples/Documents/BasicDocument.docx b/WebsiteArtifacts/apidocs/powershell/examples/Documents/BasicDocument.docx new file mode 100644 index 0000000000000000000000000000000000000000..0dbec08a63e8fc3d779ae2f2d80303e905e4e665 GIT binary patch literal 15068 zcmbt*1yo$iwk=K|!6kTbcXxtAkf6aKNaHl_uEE_kxVu{j!6CT2ySoMWO>)k?C+EET z?;HO&gH_#Kd(OFPRoAYyYgEZeK|-N}fq}gMtIBcz&|2pukp&J0HVFj=h608M=4feS zz+hmhZ*Ktr+R-~%m=k7Ufl+>b2K@6?t28gW!T9PSj&hi`FU#~Z2EO0h^U#sUxAedm zWn6Jd?v5XPCOlg75K1|@MQdWRL#NgjI?KG5__M-+m|8NP8Mg1fQcX65J$=D zsZkV#EdKDR_XEO&=09GHpD`wR;}x~;m==k$+Few8exZt{cFFvl$N$!^0=DTv-<FTv3oBf=^2Ii9htNP})4L5uu;=3D!P3mbBzl=x^4kBOe;xnF^ z4R*4q5WXiz(h~#yeo>j07g-43QX(h?gcWwqHo^J7t3kzWy?ylpVHG8rwvVb;Fh6@( z0tbi5uF*jVU@!9~u8EdDhxX-Ah)^u9i|JTJo@Av-iO;>F>o6V8XEZ7#KjV@JJ76db zQz=|t?B=AHnYIrleCY)eREKtSXFSt4ZLx_fY&lS8!~g8K=gyXOr$(X%b@ucBOHgO) z*Z|CJ8R(zw|E-&ko7;E=o_`7s02^BqOCTRH6Fnm_ApodvXDPmU|?osWM=?*^KTB~-#H1DoUH)=8%9e*Llb>~$REGs|ACm{_bZ4Am2_>40Cs%D z4F4Db#DtOte8dU{%xo-N226}>jJj;B%q+UZgbe(=48OIQ|2f?M9$SuA4KkC|U|^N* zP+&-ZjxAd|XLEq+Lvn1Qre*83bM(Kb~Gcxjc<7yX$ay(A?~YJ*~T(t{&OfyWXEZF6p#zo6SF^TyL5C zFzB=#&MiT=0o#_!4-e}f=8;}nJ{TS^7&&epeOcB(LV9S1NSsDmww#r-5Yja?4 z-nqLkt%j#{!F`%^KYu^9bgt@pT{lo)T5shhfVJvkUr}GTI5;caJbb)$i4| zK&RthqMGmAid0_fcvXDZrmbPu$vw%Fa{mQ!+qm`SG`}3z(oCQnLdttu!+TvlYIRC? z>)TTe;*fD#fYs|V|J?dSZiXw5+Vc*b`i%M>orpHkrzF>uv}I6Wu3nejuO5XoBgPLi z47u*BSX#i2UOlewuXn$H?5=!R%s!qA(xLz17jc};cBgW3`Q~b`BMp!ykbLv~6OHTn zy0&@_Tmr@7H&Z*7ZF?o-o-S3>g**i0%Q~P-d-*o-azv z7GxM#KUmt`ZBD!IfV;Mx%a*p_Yc$rm4u5xzg!BnLv6GN)uOAwqusj`9<3IFa;9qE+ zp;>O^aXX!VpHW{{kAOPzsd;qgW;LeTL7-_Mw>s$IbZb(J`^m$ez3q1B?5g=GO}uYo zufxB78LG_@=7Ey^!=ugB_BZF3}1rt#+izVNX2R3l`TyeFBo~ z+W0)u{iO~I-zEA(QklT1QphnbCZ2kk4inpAE1N*ej67QoDafov35)4N*^OFpG?_yx{+HoAi>%J63C zg%Yag(wFVYM$`yXyo$;dTS@RfY{N<~Q*R-?%pcHcrv?!L7hUHLxR%>B4nrA?*;nL@ z*ip6xvlYZV8XLXVQ;1X-f!K0luN^LU&=h=>Wx>1;gvb}pwAC4orXQwGmBJvnKP z2Tf)N03R_e9rq8e<`LYK&C^~R?VDrDf=fXHc{WB%2R$A_U+#0<)6C^mt6{R#Qgrmj z+G-w~9LMy_U_i*uIcr6)vCEXGQ<`j)q?m(Z%#!!Ye46z~O- zj2K6TNGS)n*((4S_7JTCqw1Ml7xtGLB?7RlL?Rh)GE0t4o?4{7Ls(?eo*0y0!D1n4 z)L$WD#wW0`I@a^MkdbNhh(0k81wI9KRVDCuG&wWDX?#9iP!TbTh_`mvb`G%|fj>FD zPpL*|IN*qFZ>(2$J|02^-k8*1A~Lz8y`z<)jQc)iSzdR17mCfKX)}j6emCnO9Cm!( z@4z9qJmjG|e^dl5&iAJ6$B)9xF4vcZE}Z&u&H9%0=TpYxJ@buErp82z(V_#Zov9PaUVij+cfY-y22ET0xKPt{UH5&wC(F#>x#7T)hJ6Wx2V}I!hH?_;4>d zCqGHb%FTha#?XM&Td)=7<9=q&59PESX3K`#CCe?PtqIm{Mk%#6{V^~>V3Tsu*}Rz zCt<_?OIP!ek%Cb%1%BOQn-yKi0j;tgD- zY=5KA7{Z3;yImN+DWxXt%&s^f`4hENeY+O0joY)qW6#$wbP!{^l~>w*2Oco_wCMUt zoStJCyK5-?5q+g5?6?Ni!oD+IZE554MbKbI=$OUE@Vj01v;2HJ+}ksyy-Phfnnmfy z?{Pp9Pk5<%qV$28BBI0rRY;%4P&UH20aX@-MrmlKocUfP{4t9_292qJn<`~Nj9vE5 zcskqGg(|?{A728VYcVU~=ryLiR;mC95_B3+J=w0c z!yufirtWNB3i1`Fnb6RBC_Z#Vb=?Nv&|LHdX9|r!-%v90RfABsEC7p|#nLFGK%6qoUG3Qd~R$*qw}nQ*-HR zl8)Bax|anR9(j;)RgBhV0> zrF7l3SRfTp9C_*)jeYlUKX?z@L7t_O12cW#bNj=}$^ESX`;VLa&C~Bko624TzUt?r zhQ@>kO8Yn3-5TIk#xD{WxgJJ$YOv_F1Ri%~>X9-I(^WpbW`TJ+A2-CFaT56Ador@R znQ^sv%Rn(?dRgs$V|yHSUQe?PaJ*@HV3fY|-S+j-Yx1{xU)V~& z-;n^gWtG4G_=ejYR`F_haPXRQu&qL6eNc(y&whftTM?ntX_h-$t9IR_7vR!4 zGId1zUVkosdgm#r?diD>)%Z1(T}Xs!%20@2a?$;&AY+?_r;} z=!$GW#1l1EWGG`J^z@YXM^LnQK@cOC+nqVX7xzV%`@t&rN9u*pEx*?i3~*K&*fcK| za6H?+aR<~h{8)2exE;~rca zmo`3Asn|1F!|72Yp{*ok`J{Q^MhDC@i*jrj-GDA#Cr2_o;Of;p^yHdf)ap05FW-)B zR^_^4&unUGC|;Rw#CS|KvLkR$WSw5+=($bTNGQbEI~BLQPYCCWFHXg*w^4_W8!z(Q z#QWZnaYKxxljC5$@|we~>-I!2GgLR3ih9>@yKgLjB8en~3hpj!d_&!eWk549NIllA zMx~LZ1H0O|J94slBd$bQFIE@{pWbDM^7E(gq#eP=BAB82<>U`K02udLevYG}n=#69 z@j)~_L+AwTbNgIy&HxF$Q@$n6RWt})Jn)mFEk4Hq4l~ITlg7EJ&8fOFA&Y(XnmP=d zl(M5v@n-W(dyg26J-#D_V=CH9ZTHxA1>4ZxhThgG1((~*S$KhTZi;K}Sp zAZVGhJ=*0$>;7(F_OzPP?Z@IIhrZ)(I)Mh>lkGQ}N1c3c)raQ&+5)m*Of{NOfhBbm ztsXe+DW^B_?)Rk%uuDp{`j|KF)_a3jR$d$A;uBqio99LSDyFZju#Uf>0wqj01cjVC z^_11j^~OB_zE`!`N2~mu9l(l?)jrO=_tE81Fjo&EA1(P1yJNm|e|^+i*}bB?OQ3jp zeczIgx1bbZN($MUoxDndq(r0U+E#IxV|n+jCi}44*W-d=_yjQq8L`|V?#=+J8e7Kj z^N97HHKc52;twlM+iyoKTkz)c_NxcnN3wU-g1qF1>#QAnFUyijTDvO(nCq}R=K2*5SKUENZ{&k;sW)JZs$irC>M0~S*TFs`#rW3(-{eEZhdNx7)$GBvwP z*&7U*QQ^yoJZjr(W0WmM=yFwXm89lAq&PeNU_98s{k%FU1}sprKrKROPKcqQeK$$o zIw#$;`rby#!OsS}er_eXPlB=`;ARqLTJ}S&V12B%g&duUh6Q={3B@uPLOHvQaIR^L zoW;yyoTj{f5j!4`CF63Y`Qpkt*?IwHN*dG6pDniC;^U!#4X%|G9uU%0a^93BbzAk!k&m{`)GRg$ z{5U{{NDIHAT^p(K0#!4Q(CUkKpDk^`n5k zio*>k1ZjVm@zL+ej(X#mNMKrD!RxBuop^c1fLQ}SgP(xawl#d_n`b@&TSPTtfw!`) z<2nJWyI$mke|Y% zhX@6K2Gxm(|f45oT#H)GxEugr);?el+ zmS5}%my;3+G+qgs0Az$|ZXih_^Y${+p)rhc^wPV_^dH@n+51GuF{JO+Z~_XJmEN^o zpIu%0`$GW{qBJ3{d}Ix5Aris|Fh`ZWuleI4q=1mJ=9IU~g$4I=P}Z=BSnlF9c+rdK}Ocy0cQD$EN9Fm2$QI%>}wW=@5!DEu_00u zZ1hPrJV)X9+5XuS7+>&H4ty~mU8~J-k)RIiI05b#n-MTpoLm6#)B3%y$y6foLTjbm z6%N5D%uz1Ihy`S8R-LQg)89Q8p{bInsZ>SPoQR)jtK)1r5nv$Kthhs=I#&DfgHS)M zTgHj>vaoq|^!2p`w(-4~k|vrHM72cnsZ|V}i=CMFeM^V(i3HK;N(uG3*pQBAi@h`9n29-QrJ9Yh5oJvxitAQO!d~weOHdjnexrUOFH6EgxAE>M}K*I5hT#4GxH%mf+! zL(I@WtsiA7&2n=U2>`NHU;?ArTmWyeSr2Dg70dNkwr2XE>`1~765*T!A9G~`C*UJ% zl2A^fKirv<~3wT5CPN?}ZjvD+Ce65i~O8A|!eR}yr`y0SqlM329dE3&~b(jv=` zTR~S5sSiOOwE#;cM$tkYozxPk7vf|~LCi~IH+q-z!MA2IbS0r~Aj00HI=8)06-l2s zIr$q^p9vYKa^vTsvc2+mR>8$av!Xj{>|nA{>14ZVdu2vyM5!(Z{sO5~QS(u>W^87{ zp(Tr<58YKDFBCyuTpY0aD}ubRDzdQ<*7C;!dEu#nE~H)tZWWxfDWNXwXwnG3I^o7I zIWud+MiyNxIA&^iA~iP{Y%f_&mX45E;hHyuKY=bQDNEB{*bnHon-o#>QPhmfrx)5R z1d%AEOKeIy#^uAWDp~U4ymwY4uEohIHH2!b(efyfN})rL?Q+3VbRPYa0mIWSjzR&% z&>lxGWR(kIfKrjL5_N2k1G%xXYCVT3jLdm9$m8b3}K+b2S|8AE3 zAXE~)7U+~~jZ)-TgIqnqw7Y{t#|h+m&Js30P2N>XnH$C3lBqE4$LmlB8ltq70Jw-f z)F|7OCcKF}Of(ax#a@NnkaeM)O05$s9UBvQ6zY$SvZ;IZRKv#f^lYFFOLCT|djuVp zFt=^MzgRkxg2oVBOQ@w4?__wnnGpOUTFJ6ol{_pR!|7OwXpl#buv(e2kPLw&U6ufc`Ah;6J9pzvz`#MbfBAB zQl046QM8#bGxY9szyn>3;T|JG<4R+@EjmArBK`w!DQ{k2$`4dUZhrc7+`{$!?+VaV zhvH8PO-?`LZndlm#F)nji?BV!L~5f&KUN;**s4kM@T$`YGoQa+gz(9-APawghObH1 zs`+YL++|u-kYSgqaRjot=)=~zM3+uKpAh|*xhBg&*F}_S^mUxz_vKg26h;X#Mc^h{E2q1*$zC;g4(PVH65_$M>o1NeS3Ax{9oB(?B~%zIToK1D91u- zZ3pF8UcTyMm~VO!MkL(4F347Wzim`W@oz!>V#Il7oK~gd#|rJp*noCc%b#2I?W6qh zC!0Kk6~gH$cv%{)n-`D@|IO#WbIA^L!Ojc`oq(&DhIGMF+h|O#`JTFQ8eL;_4u3ZL zgtT?O8|W^CeO!0<0IAB7G+!o%061(Hs*PziA(%(CgyqX4vpDr$01NAcmC!-ur<5)$ z+qj1v`N>G_|IA2*aV(IC(6p|7=F{RP!=HZ3g%_m!=)2e!eX>IA$g z*Urt$R8qr@kmD`MDfn1|9};{FF17O$cuh63+gHB5p*6_3^&^mf+D0=+IkdeYQlQvH zbnJFmB~Mxa+`P=lv!PaS*4804dDL#e78SVp-`3{P@kio*j=BNcmHGzj-zOUT!wq~+ zjmnLYQ`wDx9*Z!XNwCSs=(}^XKA!&Y4Tsv{jaM) z(qAe-(r5mpIw12m>4fTnA&3le&|>gQw`A3ak8vHs@sOz5b$pUfD1rApX>98g!m0*>J^tQ&6nfS;^m|V~y!N^*<5cSrWSmk?aZVTT$*M;ZBF1YJ z)61foWe-$Enbtro56_K&!>N4Rq_{QTMYM#LP2Y1}OJ0}GGeJsM8Wj5dG9AtDA)Xhw zMkLzz<8qC5{uhZw5QBM=UQn!?Qj>0l-Y>Kzu@!xz*olqURmGL~EUT&lcbydl(W1`s z&cY}5ly%?rr{ILvpg32ze^cLcj+umeH=F`bEEvn7e4Yo>lOy%7>UU_MYCg`4bPf#J zLB%Dd?v%+4Tj!97tAOv=mx}hMwh_E=_zSv5<8BDQ?MrL+j(R zWKjPhe_O`ieexGOkJP`#Q_geF$gkxi`>Qj&lNy=sViX*EVryn8?>V7?)$dWn@jf@E zj*(gLp}voEcEDE)d=NwEO@sN;*jmC-qzJ=C^2fAlM$|BYH8KPexBUBLR zK9jm$@YCh{WTeqHrvR?wib#d}xSFIWd$Q6qd$ZiotZEZ!ZZ2|PrvpVFM7=x2$%SGL z_Q#Y5wk)pPM44L9GEb;=5_xj$t(58&FB!FiDeKe%G`nkoz(M z=|+$iu$A6*;Kr@<_^L6$g>4nr+nkdoQ0|9EW09cKPdYgDqPEA7ur6CsaiMI5U51f> z$WiF1i*)Q8s`loNR`Z9y(+*dA1hx!lDf8%{A4>+i>*yLT{7aTW)nKC#12d|9!Kw@X^=r{ z5vNR-b7KmssqjjLk{M^?h*!zsOTT=JL#@ADOCKcx zgx7`OX`-Jzaqu>LfgLggHNxA|cDZiF^tr&FbWtX`hi4(lIkPyKH#4s~(fL?KPvL>% zP{%026zDqA#B{W)%HeCZ#dLmaGGeF5U^z&^J*1(i^1Lcvi+zz#Ou>TR@bbzEXI7Dx zU+2oVfI39_xkDzNJERNLA$gR!RKY4%DdbKOa=e*0dZ;G4aOF1W5?_5U%B10wS6AZsH1^mA%!l~!$dF*RWcAM zqlRF=sB>a%SPc%dN72(q0OM##XgKHCOSx9K3nhW5aA4Nqgf}e|TM0lvQ~I9O9u_5J z->WRT5^&z@!n>b$&{zlLp9EicUMc`K;7Duv!6-t09W+3HBxN`Y|4KYei3dttsNp~> zQ6`|3C}^M@-QGZqBN0K>X z&;aIA_sg8H0XS8jQh!8Q)?OlCQ;GOT<Y`evz;`Vd1^&L_=DQGThHjZ}fj3A|~&BwwvQV}N16tiAp!e7g2Zc!_pRwFPP* zvNmJ``!=EzZJaPqP+B;D6y@g|-$WQD1ouQ36@<-r6H19J@NjuV zX0Q8L&-N9O{{t#{2ZY)|Lm3C_@A`#m$NCc$()FKE6bB$wpg#y@$`SNa>yrFW6b;8O z$NuSI%`pf?d5tpOn~-5+68H;9#r7v~px{3N1A6lHS}597S-?jtdxgu-m|QuUAyH{`+5rSGIl1E57(Rx6LjwdK zNR$RCM%%FXc!vu=ByaVW6~%e;GW#XictsMI)X}S+YdglC+4K%<2(-=(eBE*?lPc{c z>s5*M`Yd=Uq|57~5_$$Z6`0I~KUm^S5g)id`!=D-`;ayVXeF9E)09a}t8B6OocpuC z&zBf(ijvYUq~xOX-3$2UbWw)8iBy7Oug{-uugKo2HaCf2ZbW47OM~)l3IQW2(saN3 zBi&f2!>;^1d2}4Zb`5UO}Cpy)ekt>9A*4o0u|&>9)KDd2x3XI4aWoClHQK`RafL zc&o)Xx83F=_~){IyU$1in!S~@-;qDp20N7&#>;>od0rOcE_7g-FUoO6%3Cb%*asZS z_TTOAYk;6qlzUkIzeB4H&vz-AFs^HhaY4^_lVO7C7PXL_b?U`q%<`jk>Omq+X`l^G zZxEMs8jcbw>fanqT^%o7t*>`Gb`Z4$JjL9Ep_TNDFV~j0rQ!>Od>dKTa%XW!II<=^ zIu-a-i))y{!n98z6X_-fYfglbeK8G-hbTq6+K{K<&bS0PSzN-o1>Gg_SvrqH6fLv# zU-jK~IF+A8h$bCPLxJhF^fZWXNIPO#Br;?b+r^hn2)@Kip}F^4!0zAX!eR0v2rIyx zH?w2)Iq_hkz@-+)vA0zRH*#P-!_s|ha;dW}SawSo&CJi@mYT_^@MON)Ca~16Z0kR* zGp%eB>zRLX|Js(j)TTwABOk-+NP#2*<*K~c2=~*&pd&WECS6gr-vit|g}&zz3IOxI z7*DSl-J@N-?|#%QBm`+mKr6Q_ z>%1u>{Px&I`JfcevA0zN!CLa%uzzd40Ifg%skOQEtabh2S?eeaq-ARHhZerj?^+wG z&srSt_ieKp_xn>GuC47)6y}eQ>toK9*TsbK4)d)YUQf8Mo;=S_>K7|jgbv;94girk zs$`kd9j{HY1UU{ZQw1D@bf8wA=66FBrDCS7l5(vgP>2xSGcbqr2(?1GEt;W=J- zuF2aK+j=xybMf8Yz-QGDztIxBU?-jsE6ikv_%v6boyk5yHF1NiRX_65QQM8*6D^|6 zSf_h)|A5fIx6n2#Ays1cg8NXAR$)Qr26i>62cJUzVKX7lEvlEKHS z{7>MBMvJJAI~ls|Fxm zV6!!t?fPeSV9Cl5-gK$3bv>dk5Pzz>v}qw@<<5olXdmVKboShhdV;HB{?qx>ZU`S9Bf#Yd7uV5uKU z8>OHkDlOA}Y*hzVs-Ro?)!{;hyf>%JB*S^bh1Ap~=-(M;yq@FWA%`CEWi@-ub&_z{ zueY)7z{`YUK27Y$`|RR<+4Y$5PvCTmlw01id@vt*HgR)MZ$_QZ)5t3kX1ZfnILM*9 zjTG@JUBt2)x@h{ljMo}7#?c9cZKW zf8BMQHr{6n3MJTx4oVY+jgY=iA4G1=g#!EogeXBz7EV~?2KVl?ibH(U2I_TAnDcj^ z5A%>XSJ3>%Rc8DthN<4lN~X;^=j0z^$d-X0EJnW_LF!3Qd*>qK!Yi3+_w2wE`4oWz z5~Cqg2x!hI^||j_-|h)D1inWf5^<*a+sSOQ>wuxsJjlri&u)ScvI{oG=NjxiO z_L^SZHDW57A&ml>D92?al{a=yJ88B9!B5>8Ua8B3dMj1_eeQ|c)bYp z@Vc=Fs)-afMn*R|DcZQ3@Hn5O48i=E<1Z-z9=pXmdVtv4SC?{r){=B(3nxC#crv$f~i~gi)G6i}0C4?4S$CXHCw8Z$7 zX2H_)RlAej^-o$Qfm0t95pNQxw`LbVk2D2~lf+^8k=T<^D?lW^?28I`--vBZsBhTrYpJ*+*kEjiHj|AzOx-BUuTzz=j-NG&#vAl-v~`&T8nfs`q#; zMBE!+ycZTRaj9QiFBsZuIy>QeKLrr>_wL){jfd+)MfLEa>-3=EJ5lnl-8Sllzd)aA zXbA4A-{xknl*ooCTuY47R8eyJJb(Teiry^3Mt32i7_{-I%FG+`h9ftU5+H{t(c?Yu zn7o&Ibu$<-zEq$;tozZWlY^+CI)sLp#ffr6MstUp#Mg^oG~GDIo8$wAZpkhKHpvTx zqqQ&*yyUL-F(}>W?BrdeSaNlxm0Hn?+8|5GY6!_#6XFC#2igNl+J>l1$F*+o?NzBs7!) znajN;of&4iRC4SH`>)^K=tAeP7Pfh@re9;Iq2!ox7GC#HEp!Kun#$y&pH+4eMqLkx zou^9lz7@1FLq>_yo5s6@6vWC~bR{dpxP@(5wGPh^Ol7dmtX)C6FY;P{terOp2ykOE zNn4a0tQ8~Qt?b_od}K?puf@3`rc91_Ep<)H8blr<>4ez?-M_m*Yxl-!VD^TW^)f-; z4pY5!VfSI?sD7R-VsPX^YA(*10nt(zGcZ4z*l00yGs;?Wb09T-iim9FM=xCLM4{-X z4n%o8raGUH>cDyM#3ED4vn$`ysD+D#De-g;VcdJS6_&85UV)r~V#Fm$rP}iLJ14=9 z`X+@Ll=WUk;~U5-Ld*Q$_E0@%`>%TMV&=MVHYRK0DJFVrtjRY|jyv}f`#OyyOXQVn z6=XS<7QIGgGWoLk5p=K~qs{oo!j^SCd~fNd+&+IdM`~#nwLC99?6owvSYN_a)fkx< zGJEN&VPFwei80bfDjoaUN!h{Vpz)*h!3&R_Q;xhNbR}=om69lvc)8)1+fol6$AGJ>DT*N&mZeE5f9%J)xKPKpXcKbR^ef1t z`Z5PGjEhY8fK1FWpSJqXuRB!@A`A^-7k_Bd30pSp5Tw6m*H_{ggaK15w~PV01^^o-rvG-r1R+!qzJm}Mtc}>!a_UMhxO0OpiyYoMPD}CrhYOxz zqWx2xlsk!3nZatKv0RiJLXzxDM*)I2Gxhd~=&FOUov&UNUK=8J<*TOB)`}({6=-T^ z^iqWPXIfv%8>IL9Gn6i?YLd$}Jb?f1Ga&i(x-JAzjFi|k|PcG`2?Xm4cj?2Xt=n2)Y>{yKx0u*nC43@ zRsK}48VVQ>GRs*-m71M<%T-Z*pv);UX-)n5ONqPwEVFm}=HKq=EgcVin4oF(05q+l zfu>arVN0ML=y;sY^Jyeot^XG3+8CL4oo|u-%TZluBq``cNc(6fO5t6+>l7t%?jy?j zf20oji=V+epu!P<3uRPuP-(sXLR~O?9br?=!96SVcGJ8onAQkRbr%QF9E>oLH*Kz% zzyOPs*!dv@V?XEz!ZxKVBLvHKd-uD29~AVA%ysQvj#2Qo@8>l1X=D|#V>|78XNc-d z#_x`qY~mM&-1U{Z{I1m{1uMVT*WF@7H`OVl;!wb%k&FxO*y#ha7~JNlL~_?+eYP!F8?wlTiXtTWNd_~Dd}oD?_&9VkorpARB} zzW(j?k3(6%;Q#4p+h4JVpq~57LASr_{(ea7uRu*ucmLG=_mQo?gMZIq{|a`Y{{#FV zGTOg0{hqr0m1&US52n8*a(`#|J@fc0gB;VJ4f#tR@^|>}HG8LTDrTtke- zrAw!4u48Ma2eP4cFf%2{!~i4z{3Q6#e+LTfpgDT@d$jjk)iV2^l|nfLrf{9e{XW6g zR8o(XGbl5Xye)WitI~VZKb*Os{R0skUL+I0S15?U#`;!`sseJ4GE26hZau~$j;!pA zHK&A*mS=QsVt}VN)YN1+jX+2oSjrFWK4P<@0dR*p}##Rg&GXlou*E>J{!nEj2i zllcq3_tEpN+pfVjohbse5hv@rN5k*oz4)4o2z8kigYGPbn`SSX1p}p}pKmOCw0|)x zk<^Yp^cde;yesa9Vo4^yRKsx5SMj!)jB3m1M8g?RH9xfR@Q*9gI4r@ar3u^*E0v=80qO*>40ed^dS1XCxM)!h2H<-Xs)ks zq@&0G``z#l#&mzbgNQ&*+sZ)ChMS1)Ki)?~1Rr&|iDVe`^w?P0m{^(h+31;BbQp;U z=y?T#5BbGQ8|P{#y@+Nr1jwy0Y#+YXV20_1UX1O?&-L1yWzW~ zv)J3S_xO+J-D5Y0mm8qgS&*B<)YaU5W8;Q?i+VAurklg1mBUr(;)bpQAq=LNd)IKrPC9V6ucY9n} z*|Bd~nwTOJ)Wk!H~AnYG~?97E2IsTsLi>SiQO_h!-4#oC#%NsU~_$J$@$oz=E8yF ze%#UMKjYNuVt>=l>wc$KJ9`**vgL1o|8Sk09w%9ZRMh#YKJfl@)3RFW;nuSLddsc8 z?tbP`EKAAieBk;*&-%{2axO5g%c(WtjzN>he`M!sY=GKkd}zgga>cy0c#-4PK-Z%N zJf0n0f3SO$DHpAQwpfeFw}G>d`d<7@w?!0hl{p?{OgU(m*gzG^F3}~c$)>NDbn~vr z8avr$s9Jj6EX7M%gLUGJ5@v=NUuzAply9miS(_EtBTlNlHYxRIF{mpY8^EoxX8FL9 zu^Ic_m!(XXqS%p?SbKnK2F66Ams#nDh(ddkBIEPPrYIVVO-ZoR!|pZx1so|s{F=EA zeP^Xb+&K5PkU>_VXk<43Bm|~YD}S7~gR>MqX$+8k+b-z$n#wYM%7b8@IDAAdwXSu} zO0JGGG?)32)NHMEQ*&Dz3#R4lNu6^GG)Q!f2ri2IaY+3OR!o{4(^wXBgyAi7OHH!Iw`_U8YaoWNT&S*Gd>b=unOn6Qg2#2`DZTjO2yeE4pgFlm zI=MbHoP(L@bCT186+$a8sbxx00ZlBbxCkY=G(&EOJ|tKk?Z_IGIyQC+J+uS7A_2T& z?ZgU~Jf^AWf6f?|i=`i~CA4>dhoQ?`(qgJFv<=bkwdKEN-}>FIlCE*)$C~;TA|EDm zVf~8T$<{(yTga{POEH^FC>9QhPU9aC$@|z@%Vsym=#A2v1D|Slii{{cWKCs|JP+aP zUEjI3tkFC`W74l%w_@Eq%$s2{c4;j(C_)&ojXp}#FFMD?Id{1_&kMJ21*Lx|#2dsI zKeTXWH%%YT9SXO89BPeEf26Bw^uD%~e+W$V0>3C%*R`(ts@D|VegI)|9FU`!jK
Sy~J`NRCx?NaOF!2Sx%VY0CTUZY4c zZl&JbT8W3-+`e)lU8z6%{Innb^6XakEPmmFuo!O+BteS%4*v1P&tyol9krk&h*Mi@sPlVc7EwyMcP1o_}uxY`Z0Lv+n1|j1?yBi zsFjx{_==i%NcQP?nwk*m$#9}Q6+BLks8&Df1uwRunucL*(r=CGm72NKZwm2Tj+ha6 zN>WUYs;pdY5O(KXs!}hrjEhon@Lh?)*zgZF@AGGk>5hbAe_Z1p2x1P|X`(3dD>g=H z^n&_0_Kl~;_VQ4$Cus|&!pTayO6|B8Oj8=$UGQ37$)v_u!{lK1)W?n@U>p?KFbO78 zEr>m+$ALaHE`tyT@VImR0n z8C?vXl0oN4nm%a7fQa4YL~0{>xpL-uUgyd1nxlUi9as-n+hINR|6+r^SuQq!qUj?r>o!e z>&)aK{eYL>&DIoRj@HNzB$%sC_+8h?oBj2Kl1liV%WSSt|9fqTafi!XAuDhqQ()Tg zKdC4DW@_YlBPd47jK3ch^rbQ1)Tv0)cBiWsq%FltgHzIuY{kf&Wg$Om*W&6>ty3@2+QuOUHjW zk5?syLLVp_8^Z=@OV1WqKh~iu)H!mP=pT+Y+Boa`(smqN?5Tf(1yvg98=gBh&k7=a zdz2Gfk#M_nwNdxg&)U(Uud(hGKhsxqRGS?=jNA*S3^!GoEwQ|p_GPW9;#|GSg0nF* zT01`%ianbd_1iIgp*gsT6P<8sWG2;cV?(_0V;0Q)+|f3(TKj%CdY8+@`+DNdgwdqm zagk)r(N_n&M+eR$U0aQzM@q6Psvmv)YzsbizJ;`+t_2ZG_B&)&oD2*6AoJX0dTWzH zTrc-AvqVmg1@w`%-880)y3QJLHtl`OiDv_ALAWo%i)yy<6wQ#iOS?pL!i&g4xIxI} zW8%YHrPJldb;iMmmJ@)`I1CUPf1O?{gw+Y3BiobXLIOt@Y=NO4D;=lSG55;uEGmX8&MiADjLFGttyhlBHIHR!TlmhneB;* z?t-)3zGtx-1+>JYMJ7wgI}_C?foHq3$^1?^b+N)_ukJ;&6$8V_MvH91u}6zY!c|RG ziJC=D>j;}g&VgpsX+A>3h#MqaHu}^=as6tL%LC6SC)WJVMD{E{IOROuDRTML{1pCf z%qqx6sY<#Lc48-iJ1G~Qn%=)R|ChyoMB&Eartcd~a(l)+hkLj@8-TBW+uZ?AwtPJ_ z0IFXqb=RalObK};*4sX6U6|*^U`1YtaJu`x!k*5XQi>Gt-EZl^(z0~MwGqz3QpSX5 z4j#cLwSjY~-+}5KI>L%sqMBQQ`wYCfI`8AIc&+3Tr;A29tv=VoTKB-J;o96a;#XP! z*Y4jJn;$j}>op#kIqz>Slz%ktZFH=ht#!H5?Y!nmM@1c@+0Sf?1+Ctj`7gGHt=~I> ztcP6XWH8gW_u%$r{SCS)Zf`d?w_ca!T&+|qIM*VXBXGO^cxah2f@$u(7BZ^+q_Gq@ z<8&|Cmzq$kfdjG+-T*yrX6G+RW!^F0IAWO6DujtY+QO%g@P@f63DRgbMqI2YUXJp( zS@Il=6%AOn#N$)*KGLmjEiG|)*3f5pzZ}6bAs1z`Bk*b9&;l?$yUN4f7~AT@R)-NM3`=qMw1@JV`}HD=E{w5i#;UqhEHuy!uAqFtqT1%4U_ zRvTOH-Bz;0hErEwe7}=je|7+GMr(W7TC%TcSBCva7$eFH@-qxiHxGDlxp*{mud%OJ zyFU0qF*#Y8(lwaMag=*~t@>kKyn4FD#g0?+NAgb67A}a{v3t@o8iwiO8lxWTQRNWv zNQTV$@e0doYj49eK0+N&VQ)<`@BP&|N7mSO@<(gjhjp%{v1K#kP^UZX#@k?>aHB+~ zVg122B5UZ0p_B!qE3~Ec6#-*-Fw4a>#GT49|8eKn|seRk#P;{b+Hagk*MU)I_N!4=@Go&S~%Cx z4a^k35IGa7RTR6lHuaCDb~U{k&?d^QVpRRrOuoerkXXFjjb77`GdLR^hIf6ab?#R zKgKZ3j@e!=ZFtZ}>pG0_S94-x$?(u?+AZKtX(omrVojqX%*HG0RV;aXS$AgiXK@jr zv)1J?F*+H|YT8+%k)1D+NF{M^b5J ztp8OH*`o5^wwE>Ol6B3}fbpY7teM(V@aK!rlTuyI*h-v53W1=t_FRY{xMlS$pQ~+Oyoyb*G&kaaaqu`OM&lZu+IS%V4B#)e(2eTY!lS5s13IlXp+|s!>zOL*W+6Jk)(r!5jv7zVY0&d|6Gd-x% z4r%sY-h(`+5S;5>tQtF|PDUG~jVP9xj8=0H?=hG{#Ja8VX)%e&vS-<`7FQyCZt8SZ z=WDRnzx!2ag9@0f1^Sf>4asUChU0oy8-s`x0VVj*2B`#<_>?aet0zp$SMQJXiD9?p zM!|Gow8vm`%CESF)82l0Ydl=UgY{WX7;~yU3(HbU$v^`#+_+N!mMrH1cMOr~U9=6= zMD03uR@0#WJFzG(JtK@vC)tlJm!}sud~aUVdI{5lJHLNZ!Sh0~Pfy)uVtKKfPpkL9 ziwRrgffKDBsdM?0$YuVNKF+oJS3MkN{47d zmQ&P8KjV)M$;Yg%c`{E2Is=(1cr{z}?u7`W8k>tQEqa27E^QJFXvKZuV)hh;>#RVj zhkS7VEQ%KiONEdoU4hh4D+;(uoFE@D;o4mfl~;&wa0ZVGP@fL{iKy+Eim9EJ?7B%b zsT~X$@Btl`7_fdFXq>O85c7B`10xIy0k7WHgeAOZfS29Nl?wvEYdlxD7RK}6z2xct zyVu092@&&|aodU^mip$=iq-%-vIB9GzjyVT;H!u;JjC%R3-%QYH_4o*gT`RCFk8be z^)WXN{XpE{3I;s%IbK-1@VlcGINU%q|1r2!R%E_BmSqcOLIE8_e;_irytn=xfLU$q z*A*!mSbr46txGw$r^AL=P)lji;3_)~<8QBTE9@c9I#z;yS`|vOAsdfBSyik4vXZO# zWu=z<4_40`{@DsPu)}CbY8EGTUopL+Hx@isSG*LS+$%S=(SFAkem;dW(F627GL@0= zawL5mmhb>9b07ptvZ_#Xi9gGCWnSqK^zEytZheF5XJJ|6$Qu*OavAaS1Ec2@;a2u9 zGUnAGdr0~gGUo@>>l^v6#*J;grA3)YvlrggB$Z$F+MS!En%2-`pzUdk)yGpr5J?oh zD;SkesTYw@ZKo&+0KFj0RE1{sWn_`Y8lVul3QSg+_c~NL3?_TXCtHRxn&Noy6Z6R_-Eie?-n5GwKVLXi3$}G#r z87WqsWJ};@%(m9VF!9?V4fhWR6KpHAPgP#BH#*YKjq0)5C?exfjNTrOT9JM&*s+PR zsMs(T325{*WU)R$InXb$&76TSffU?LESN%M^p*W)gvKu4@Et=@oSBL}N8ZtxP%h0F zERTQVqg+~D5m)TPDNjgP_M+tiV1zCOFb18#l={OU!?ib7oZK> z8e>axH`<8S=Un}~bsfW|t`uF%(axS3gG7<*&B_<6Ytov^$vYV;0*8J&8o6h_nhK1# zu&p+IbTq!@KAKLo->I??$?s$)BacOo6v&Szi0-0vhF2O?Je<%vj;YuXsp2(1aheR! zRRuF%t%dNy$ggx2uIhLWX#N&7)PEB~l#HUro zdUe_0D4gDk8XA;b=O}!-iPKcs7JJcJtjqDrZ6`)kMI;Zd^$e7#D9EdFl~YU%*)MgpLIZ8ARR-_+KVj8rRcjL-5lqK+1T$t=RA$;)=eL^IJ+o?P&A#CU zIFN?+Gs3W_uE$x97No%x4XPU1 ziv#Ls_=Y)d@-AA$m#VZp7}c})g2av=T8y;HJ7C5pk6Wg`@7A#Jv;no$G%8R_G06e7 z6kT&WP)m7ut9%MZGK4&Pg-_s0an+WnX4kGKF+9k3?5R*F-3h~L6}qwNeMo;NvKV20 z8-vS(ao$l@3{qW#RAa)V0Go=y!(X25{R-3(qbJ~nq%~I_tncVfz(?b~kWzY6(Swn` zr1~yHmW;;*A(^h%^mW2?7?~HQQ3XtWt^`8csVi&A2(h1gxCSpy{H~*z?^iLXl`-4P z!yIn*(cTMh?3Jp^JM7Q#S71A$?J$GuyKru9V861Jkpr@gmpQ%m{#eUm`o_Gc)*NuW zA0bcBwVT7j2dX|{@H)S3#j6&!!QUen2?3PQC*Y;2)Gi(%3S4}kg#P=u@wXqn z{+vp>;(bWEwrBDFwRA2<3>-|h81h^|424KyCM|eNpt%}dckR(4J8S8z@?O61v;sWpwx^Z$gFVaf0{#szQt{)NO1l zacHLYs@xiAWBjeY4Al0)>!mMI9ZHuCu%9;i^t10LXrzgp(^knetL?st-IXbzjosx# z@WoQlqV&arV>z=T6Yy%6H?Ta5@C-t6koC@F&UirlQ^&&5Hm-5#-WChJ&DPl#ALt3y9xz>xV8`wH^^tIk~YZy zn>b?NmpGf?KgE5o3juM<7eIXKOQZ=j|0a$flQ-}*N9k9LgK80{cBjv;4TKkja7tF% z7A9bpF8Wk7%8!jU7iEGX(5WD23N(h9!~BnVGEWDf+FDOkw?!91!F(RFW=Q1S?qNve zAE{;dshrqzn7<^UUIfML+xPyQKq7tGPn$r)EN%D+D)$eu+|4iXJdyEC4?kQ%`Rqv7)@l6}vV;auW_*&NlG0kYt zzoIi+BZWk6@**Phj+`XYpHvbW=K&Q~ z1ngLj@u5hs=AH+RpUP{)1tr4^ssz_5>uA&5))nkN%jp(>5lIl3Tw@viKGEjAWpul+ z2{M~WF|#&4+r-!FvpOSb7COr@Eb}-`HaXNqYWM8wfMgch=Bn^yV^U?O`6_ba=sF{8 zHcXss8gdXLh7rxGey9oZ{#ve66$dv+C8a3t=j9Y?iho^3+KODwy^xO>XiP6nFK4)k z<&*42wV5VwOo6bU?iL7yWR4T9i^&q&%wQZU$O5xm%!e)?>qwppZje?d%9lizLnIo> z%*S&elE9xJ2y${LHsqJlb+CJgt|Akz4y0C&@6QT}ZmNze_dz(&L? znjqt$H&6l5A6Wu2@ic;^$8FJG3AhGjTImL&3smRDLVSChgT*h6B%c*5V;x7nD~lQn zDON>Z$lZuaAVKrg6?vgj%yb67bb4k!jsatE=ImAmYxsNT38W;TpmXqX+cr%imFT1+jty{X7bL-y9H3Ew`U3DRWWO@&% zaom!DL8&2KNu2HaNGu=kV@HIUD&2Rr5@0x1>wk!OMBcvSE;5bE^fh6ShUP0IgXm%9 z&MeH(Cx=zF3CuML`iSeu7e1pUT#=jKu2km-J@^CXvl$WM@FZACt;&Mdc+lC=7S4!ffl9$He1Ml|v-^k8`R#?d}BqJIL?AbiWmD{Lrn=AWiyp~-Bk6(g) zgXz$L5cDM1P;DFGN3|FS>y+$Tu&j*SKlcb(?NwkRqM0e>DL@`jc;4BqPoN;(hT5rG z7Ye(Gf=WleC{AFDek>w%vTqgq*&$t;>lxU|`;!C@X@a0B{Dk+YFDJn|k!DvEE2ffl zQ6+1VZ1p378gkJfX$CIiY8w6<%>_G^P9r84F5Hji!Q;t2K9cmexlo8Q0Ib)C2@DG?_w#LLH zPthS80Y&!5P{SHNavoMl1_7j8^2M)aV#jHp9p0aSAPOoy6gh$n;#Hq@-iE9af(0N2 zbw3M%kZw|FD++vhTnHX?1k{-sQp!(Nu$f>dh*g;>+Ki0QWS!6ltai>(t464DfEp32-zNA(|u&E&A zqVstdKric$Beh1cIgV*X8;~FZH9+FCsR*8Gpay_o%a5ac2I6P`-bIZy?@+MhJ1-9b zvgu*F6H&$a-iA<9sjw{Q{u!E3To%&e=kky0R*{VUa5T0OQz8T;F!g`Kl{(PnsR#cV zl9R~KkYtsK=bu8NVSOI+f%?Q~6XJI~onh#FuQhdxW-u&ulG6q0wxP-9Td8 zr~W{xga`(dN}}LOoXX446EePSq50<12?E~ObOQ7djUsKKo8ppB3l2uX-k5dmc5%-@ zvuiVlMTpZ?N100m-boj(+MhR@;19<5G26(6V2zhEpRtYPyCQ%xmG_9|pA~T=XgA>h zm|S{=EcPH4bqyl3mQLR+8u>u>lC2<$ry;6B=VH4;!!wqFN2ozUOc177(US`-Ee&al zETTR`yPhZ$op$lVR+r3TU+%^okto-C;o^FwQjhri@uqDXqHwT|Km{;43?EIf;MD<4 z=mqLb>a;e-e7i_4V)u_t^a$EmUzyoMB@+C8o%$FZYh$Uf#Hi+K69y8ALFP+o4>E7- zBV(aG%Y9!Rtc!JhPT^zpeC%azyOGUT=3l3TV%|t&!y+gPj0i7WiL|la)ni!azGn-5 z8A3>pP^eBa)H8to}%+HvcO9HBf95f%N@*BnXa{B9enkY34$$GF`^&7rx*`EbjpMsM z7nVgY_Vgg%sb7tY{wO#MSge@C33*U=c%- z%-iS<18VKe27;*pq2mYDkc>@)WUmmbAA*fDCd{%In*QdCJ@RqOg&|-6o}gE+&AcRh zC+^QsWfr$L-zv-r;1nTt$?>9w={gWav z&i|$eTam?s?x`0b3|EanUKI0*yny=YYYLxiubLHKR7xj+E7DMiAqb~-L zS8K0x*rYK(Slt~j7Tr{kFWo1By=%HmsNo;9_wV&|e61d<(!d8}CdH~~<2z3kGbD>O z;u|Lz6MTRfEBJiTUUo)`V>CZ$3}<|w{xm`Bq0p(uE`P~A{^Lk=(IDK#>;3eQ`|1rd z%8ObGbE?<3OqAv*`$xGPB{ogcEO~G98+F$i+8^Z4O%J}bKGH^il~+tf+ozl6#k@5U zjgj9sm(5h8y)cl=q@G?9_qE({$TF6&mf{@h(eb)3+MSuzc7IeSTZJs;pqkeF;?8(6 z)hCuey(FlgskT2Ptk3tQ6+1Ry^h9tXW%J#mPh|JATg8dW>W+tpMzLqQYPJerTD2Z^ z_se48WXfAZ<)nJI?yrTRU@z>m&SW_jpOP|EVgQnQd`fB>NGkAo!k_F&+s#fI(OX0hADHsY;rTH3U~bxwHqM%kw&bQIwuCp=2QmGiY6z1V9mJv?sCoQ$B<5? z0CibPQIYh_1e(n&1x0vaWW{)u8yjVH3VDh3iHYyk4Hx}+6aEvQ%I6~#R4*Ug7!iY% z%)sX+CKFg2Q}qWYCdHM^O0p*=`HET3zZ~dQ=cE*omenX!E2u_~83#vm?kO467mn-T z#LLH8ee!N9oSjgSr;#Ws+?UU8d0AJS8DsFcEFxb&rlC{^Vk9Um%}0chgtHSV5$6!PG{F zO0OE$ozO+f4W6|9evfC-C;FUG)t!Sbj;cE^+|^C(u=3gxZ6U6??XUg$1AbMrCpP_**%Jy~DWrMpb(ITFSM< zS9rn33$v{DCfJ*kc6#$FHQ1b+p#8S_>4IGB1+K3n4do_>U9{gr7y9bTeco8B)LwjF znDwr&R>Z8ea^%T4w_Tc_a!n|^jXhzRGLSVs83sP=6rBGx?}UM?Ji$p+>&khnFQZHS ztjL23LN$Kgd9VA49n$hb#3H;8cFEN2RTgD14dsZAS(~$Tw`bm}XOak9OX|(vY-hts(6hHV!na z!944_Y_|Lt^tA3{eV?{w2);_7!p6{Pb9*^3nNLIkZL8HeLijn`ui_IUpiBtiI*^qR zYf-^^{kCs4%$lOqWslEvGdhQ{HMWF(f5fw*PH|24AP32Tq?});Em`~~T5C2$Tou4) z(rjIJlW=&3LrBm8(cVwY4@EFc!c6)n^V=g|KB0bMes`%)3=GBNzc9axHUkg#U1dlI z4~|!x+X=W(c%M~AxkjMU@_xYJwIPZ*r6zH4R!|(bDLT+&`fCPaUdH8Gd;9`-2e1oZ zmaMhV$6&U8LnHOVqhpX3q75Czb&wGNeVc|=d;*3BrciiSa7ba+=pllC(l;uH&)hP& z1cl5|ZJYtkB>!ivjkx3g#L({wCexgwQ$ch!d}vs;ryoms*_H7DY%z3A8?@RWN%< zHy1Ru<8HmY|Fr;D4(66Nt!nA?gaPU4z!QEgz`^OO+1mYDfJhDXtb=gObO$G_UF#iAScfn@PU-YdF9Zt|X-GA|tB8U5b-|O@yI2AlSitKe)5q*r z|Lzr&*7#q&N~AuZ5ROYd#r5osTBe_IS6~p>#w!*%PLRzT!}xsde`kTNFBMavTKpk% zXGY)Rc(;FE1n45{Hn&;^arvr+3QH;(pLiZLPFU`w_V*QFs3V;iwk+!G<^v$5*>MU< zS1i7++@*;;9hy=;B3oKbDC78l`0eGvjsq;gv8$E;wCb%S<2x+|tjG#+N&OaI^QnZs?)PIKk#f@2k|zB!l=5T zJwGS$-+>cG7yz6^6^Sq>DWXvFCLoB%`8FH7yn+-gM5vIb_=LYrfJp@MrwD(uj1Qnf zmJokhMalRNmnUpRhTQoFwzASzs~&j5RwV_#QYM7}wyGwRHd!s5lp{*Ps_LK{h#4N7 zlPb|~KFpXMU>Ed#7Yoa`j}O{tK>ayRnW0i$BSip@sb27XSewc%$=md^Eiiwa;$(ka~J>5#*_5vj&9hUE6E2x$#P!h2kLxa^Hh}_LyPISw^jY7Si@blgHK81~5Q>kI8lrZS#ZD6K$IT~iF=I;Yn zs&azl%&@@M3BazH!?zmzuV{)+q7~ty#SQBp+fP@XTD=*sa__I|W<&@Jn?gi*-;XBe`a8G!PM4 zgVoby2?Wx69zQ&&@cA&-#$QiFg~7-w89h)R=vp#+eM5dFKlLIiTIfdRY$J7t{>#Y2~-s);AS2gtB~1rQ26X)Bh*)S zOjVUHT|Q4($eehFhRN1nedYv88@Ba19zA~~!TV#XqPa-`CW#5cwXtM(!vJ-`@e`4A zc_MN=PejfIAacu)1{{W+tH6hC2(R81wP&nCV&jHcowQrbCTpNwEtvMyt}@$QX>s6Q za#EBDs6bni{3zilO#FUX4lI9Z3}yo4OWYqIUsZ_zM!sxJ|3$t`@`03Ph1CBa$d~`; ze~~X}34narTKqqdFJ)Y#Kgbsd9^Y{9b;IzD?`Js|g7X(Ltw2M%=3Nx~pwQ*~d$x5L zFem)f#Wvxcr<5wCsSJ1eguY6i(3dCc*5}9H=!-)8ujuRc_snbkmzlRL(_5zYKd0Sy zhM6@X;yHn=dZrtr{1iITjI0zoC`shZg(wnPw!jf=~GC zhBx-<;Pf_{Xm+Epl0B*CogE?ovEZTkQQn3;`+yRR3+qE>OnNAnWJqkONGpyS$QfCO z63Cem$cI8j|A#npVf&ZZ74`4pKv?m+x>aa&M+&gB!sSQhDLKjrC$Ej~>sjLm0B6Yp?W$VZP z1)zcf0Hs1130&SKApy;Hi9^5X{1^LL>!`V~l;!4304^gUip&?ci7tDs{^Vw$$*VJ1 z3J|oTMh;9s{I)u;x84~QRO=nhamzsFVY`bvXZRP?X9y>+1U3#DGE5<;l|3pnqv3Ua02QRL{PAFTTrN=)|q-2s9|LO_1SsB%A z(@|)NzbWfTo;RrG3H68|zC}={9_x#VEYbJ*RH5Gd9CL)4<9k=k@ux!8Ee+D1+3fW0 zzUC4grkBn}rdXhP93oXyO`fdzE`EJ-cennu0)AvNL7jnA*Gm5+lI>2z?8IRLTY9`_ zT&qU?V$Y&(x5*plqlm2a8I+;1l*wl801^eKt{3o4*(Q)o(N~1X(JNxcLO4mjZbhlC z8?Mu2D1Zgo;2Qu_-mD$g%?MvOy%RjqEy9e9GgV9<574LbSp`Djtorspf}=EP5YZs{ z)ZfX`xk?N`j`&{wL5>gy7zIwyK{{TS&pKZO*`o-jLN$#_b2ZKrkuMscB7whik>VoL zLJe50W?>ZP4;4d@y0hVEXl<3ea0>p3wO*J7`~~)uXCnMha7MbRMzAt4f20^Zh!;_h zeG-j1N{Va7STLJ(ZsH9~=5MSO1fBT5VJ($V4>CUD&(P#8&b%1@D$hS^97Ra~gWu%; z#z#=R^@beJzB!l`+tEQiln1G=n%!Y=MI)EbC-yWG5fWoRrv=$cv6s}* zsu=}q-Y|z#<@rt+mIwBHiRg`v`NINHtmSg)MXh}7a}d9I*H3OkaqIQOZPq7QnCnI; zv8rAML9>9d)%6co1$K1wFPs$!&_+@r&j-N!hblAIoyZ_S))zgS@6ih|1R%{Bh!C#X z1Po+hkE)MK?PS08NufY@;mD2}5O8?@6v&Z))jkPua{xh!yBXoG=956t-x$T;Uom4> zHdw7*g{Uqv(+s=P&|*#RfZ0kBwl1>Bdt_Nq6@8j725J&)ei?K&!Fzgn z=VQuAk_5)fNwA<%D@dj%R*=R*lUn_JpMy@{Bz~V_P3*sA)(OR9tgY+KJR6CPVXqX5 zKesCmIeGg^N{f*r--E#sjEft8P@KT}gSVpqKaE^#r`bHeb_@+?Qcn zj~;y`CIqwVRhqFc`P!(t;M5dM23R(g0hx>tW1nXQ7(?%%^qzPJ06CaBexZ+_q{ZLJ z&?L}2(NExgIX!}wYu?+j&&dLE4zCiRCupOL*2@l2e=-&5ypdnr<0on15&NJz?cUE! zU3lwj1QuK}koW|D=9Ai(0r(?E>|Rj)U*Jz{=o9>@CIsM*i`Gy0GYj(v{INy)Z}4Yv z9)Ld!*Z};&eDw?d5d91O@Dcq3{Mld(m8fFH*O+uX%j2+*UlKHwQs+@cT>A+}1iBte zE-rr;idHN5-$C!D+OK7hYdam3Jk12YeE}c`U!@f7``UhN6&7R`^J(&+m}EA=61&z6 zl>FsHwgh$B0akOR5P$ncayPB&9&D@DD)q(TNxvta!P7L~G=l4=*?U{o%VtjBSQ~G) z_yq&$s7d;+%{Y>6eOIHgDWl{}_J^N%wPwAe4*P+4b*B#359mrN>6uN0CqRS!1ZW&} zC~GrSHW17f{F2yAjoC!pS{Zg~{1Vx&%lomvgOYWV|AJN!>McfT%?%}23LQH(NkH|E zSqu9tNfftb9ZwX8ODK6c93Py1Rm1RH2~sITnuwTuNA542MT{ zgHG4pTHUd>o{@2EC*deIT~aMGichAAw^1(Met-C?Fi9I79R=V5`PaUPv!B~Cw^f4J zFQ(E0<;z3IKYI?EeH5dsuP+pqP?+0u)mO z0H9Fj`wb{8I{pSI&_w?P6qC6H(@VLmB>>Js4ahsFVM>4Pe6f%3;>Fe0CE6Oj0U^}0L5y?FY5A= zPW!La1?BwpPe5U`?|wb?!28Ji_e~QPdOOp4fgLMoAi#hv6Mk=N@@u1tziw{we{Nb) z9myRA!2mB<_Nv~1%fsg-(eUtag&Kh_7w;#sz)zKJGd0u1mQY0e?aw0&$q$CyoGR$t zAAf8Vm`u)W8nFw%P55fXuq0(dB5twpOu?wL+)st%`^%Zham+y% zg7~P>?m=Nn9pCop=7Q%!jy&yGJsv!=W<#Dlgf|tY)Fn;aHtXw97|Me*4EZI2Xo1jN zH%jx3%9)-jud!AeFucB&DdQMjejwTjlB7hE9x}KS$9E&{C=(N8L)qtcwS@Zn@R(lr z$+H04cbGwffua5}Job8@Wc6%pfW0{W&y6Kg$9j!B=wE^jYa%zivEtM5>V?RuI+KCB zhY-N)&cq6hSm)T8QnZU}Sbuey9qRbqOJNQY>jH|$u)>5VSwF>7Ue35t^9PwiH0csZ z!EEH~A>=2qDbJjj*l=ZeOlv z3f?0Ot>bf7gL9!QG&B3nUe?ARl04ic4k)Zi+yaL00#Ulyg7xKm zq>Dqm%hg$5VkN1JwDclE6SnHJ$2)8O>cs(*TC#{&@syi03!jG@ zf`o`;(R_$)i790u5?=I1`bpMfT9Rn)8YjSN0G}x7%U=w4nF@u*4fVjO2;mGO%u7TS zS)cX!Ml@t3*np2sNY^{(M=hXWEwf9uCj1JTB|rwPN+vG!ks8~>mvrXA5Jh#ccxlj@ zZu(F{*d?GYn+rwiVu&y$giipX9 zd{|s&(737GB~nsrEGH(Q<3v#EcFzBOE<}(kYYvHdo6OM4VBGY(CWdQ zc8R8poNdBhaM?FG-xV}sES`gUTKM~ZOIyZ2TmFOg$EP2rqFzQ@R2a3(E9 zyM}36u?$OppF(GyQN4_GTj;U&P(5d=$IF4vAZAv)zgqP2W_jIz;mi z=mB|AL3Vexh>=b7=+67TdqsoIPLu|GAG{* zLNhH+Q21g#)Wn8JWMX%^D~4kFVnP{_Ij3Df9@duH38I~4!1-mMk9xJ%et!K;NjF?y zA7m*;lBL+OJ>xELgXNib$EZnx4VOs->ILFG{ZcqF-THB{5ADp;@DYM%x zqlLx8`1Fyw_to3}eEb%-cH6m4rYa@}um6deGNXx~IEAXM5F} zpTLEJOI>Umf;F62=4;1#_yyK2i*s8VAIkq}k&gaSzIg|N9VfHruZn(gC8P6h?&t4K zXN%6|P20yAS}eNQG%8T<^wxZS1=kl=ix=`%l|(9;DQ-1n0a{2p8H|Augmj!1 zy1l4JK_P2g1gyxx_9703Lf4GiBtq7F-36){M*|7nB-GXevPs`up(dfVCD2Vkt^ANp osC0*U1gR=S*N&Q=k+nbdX26!Z1H4(;K+4#G@E|ZF82f^F0QgREPXGV_ literal 0 HcmV?d00001 diff --git a/WebsiteArtifacts/apidocs/powershell/examples/Documents/Doc1Updated.docx b/WebsiteArtifacts/apidocs/powershell/examples/Documents/Doc1Updated.docx new file mode 100644 index 0000000000000000000000000000000000000000..ef624420bcf7cb1230b0adc9694ba76f94a7ef85 GIT binary patch literal 15545 zcmbt*1ymec7A+DyxO;F9E=KH zTAZT$*53P^+jXmU7x&7DgTF!p0Re#qu~#uy>T(vJ`~U_5GKmZVf((KO;%seaKyP5J z?`Uag`nHa+V-1+C5@sm9QQ&!Inf?FGLo@{qCpO9 z1W5hpaRr@xrq~iE&t(?oPrX*&5g0T76r0m@v22;WwDicXwJm^yO(fkW1kg!24}K5mDX+4rkvx1 z^hVJ5^|+PbV>UzZ;+RQyP6Lw&=vIpm3>_%;u9-%Av+c(WS-%|7_nK;@OKFCi=^r}c z0Aqrv@(SY%f{7j6=wmsXIq1AgrpD9WO_$ltfEI^SzIc*l&!zY* zO&=c21Hwy(><-eBgn~m{?XhOgmlgR1k!7+?26!&Q{yeW<&P7_#&(GALARsTlaKLj> z+s@F!p8oAi{J))r$IWfrd@pCJlcAlxskIdkG2>eX;x~p?`ql=fR>nNUjt)k29K?LQ z+;WB%x(>i2>`hEee`X+{!y7q6aZ49k|Ek@RMmbwnWmv+YV zHoE%ey2gg|ObiTc^uTQX$wB-(=NkoA8^iyF(b~w!RNqkGk74$2i0OYng7}SsuAQ-= z0}nC%zYI{~H=+hS#BvP!M$9bC>?|z$MraPK1Jn0_uH z8XHI4UQ6&o02vZ)EibwewO(otl^)8M~6*!0KtE?a5=&;mOA7+rA~=lH>E0 z&8%%5jrE~bn@0oJfwmXc%Hyo}Q*S-tuaN9|L3D`OKtPbkXFJQt zWtaLH`(*b1vN#fbpS%2et@di!tM+lWK~T6v-aoYQ*m@1GwbbijcW`ELel)pVZuL@X zwL!|D!9Jz&qO38kwhu7lD>t+S81K4fLe-`wnYdu^(_P8IvQZBnU zAM417V`n!x+1QwIKK8TL>hjL<+L(KK8h1XNqE~+6y*i!Jgi2o)7QZN8UF16$4&oYY z@?benL}b6Z8od2zeBWg)eM+uR$ODzfw=~~Om`0FIb1d!OERAr>bK6$1>+HTI1V2yj zPNA{~So>(=xMAi0P2Io$mhYJ(0HFfW{dj5MzA&x<;BK_wkA_4Vkgu-=`^`~{*R{BO zjqex2Q{#kJT?Z>>YW;_7ZoG^&giG)1H~1CwmWjDY4&#|-}+@Q zB_oQh?c_9Lj-2on63f0ma@%9fXds%GePLy9Pr}t34zJk$u43urqrV506qFb?ZNshoqjbAEX=(Q0bbsTLy7ARr9p)Y;@iMp8VK$ zEoQeQ4(Az|wlrq^J?Gj22S&6JDUcv{(LL`t*m|1eXd(t9345pb$ zdtzXXAdH2mUVlY^5kJdXfq%34C9dGNo z>{47l277XP-&_sXaG)I9ky}6SvXa8ObTa9+gRjq$CPphx8ArRktZlh+iOsCnu-U?% zcV7J%fwQs`erT2XP4nTzs5uz{@6zMpaz{E2U-xfLFH1v_Fj6ur1ELFJzVkR^$=U#aWl;YTFS8B&Z_J?oP(Dn zdG#jD!f%7Q3i$SN%SKDft5+aemwNFXl{nR}%RLuc&##US4*|DrgeSA%U`W-Psomo z&nxu`(i>jwAU47oS{;AO6Y37e6~(MdMh+se;?^vaviyoGmmofwW!oK|pZsakRim_1 zn7=b&YXpHZhE7%)^;*i-5AnB^K2o;xfZxRlk#=pdal&xZj}LX zmU%AQ19h_8p9~j~Mhz{dk%kOQKsz+P<3tV^mS7iZCqzpvSu=d5*Z0FsWJJxjKwW}1)QrEC$!s{Tl0IeoM)ylK`6lPES_jS^rBjlqEhsvUvx z0i{byE!nZ{Ongr7JPyTy?My&LuPSOMfim4pq7xeT$U^ir5IwO$3x;;ZVb1>x{V%-C zOX^EMd8^3-ct(;U&pGskJAjI=U#jaG2)-PRQ;rqSUHWm*Ipyk9Mrcxft<+Z@0KT!AFoyUHYP{ec13iexB-=HS8*vh`Xa=(n6y>wvK$y3Ye-uMt{UF7ik&xfR>kEg zn-XB=C?~!IjW2K$G-bUIyNY!$A?a5@XQ~4tE`W%2H;qUwTb{QfR1_Jdp8;Y-;5J?sKs_FVqSW9SYf%XR%N82&?`;UynFsM!V%(W-oQ_xj`Z zT4cV3r~TzX7?-Cyz`Jktw_U2vV%X0ViJ2?j&92Wna{?EEQ>#gy4C#as<%q#UfrQUB zys7i8-(YP#70h|(U&9Ba?xidby3oAGfM3HQ-_cG=!R)Ht&)06Q;f2MMMd@M!X1Y=%+M($BbfEn%%M4JE6Vu4@C#+luH zgLu3+wOp3I)b=)ePpewug64zh=7U%VR{GnnbV}ENB;;YOy*8n%9f09lTY%kehhFf^%`W`-D8=*W zLrm-WU|jjEvC85cM0hHvqnc##q;T7yMU=XgP))=SNna=k#|Dox} z{OZLOLy5X)H_^u8aQ$PsqQTH+m~WbDYomrj3FASg_V`}*NyoX4scM-7-WN{ZyL0-D z1E#h#`MEOhO1G6q#+e>O-=3Wankhp)?FE)|5b{yRGD! z%5tA(s?JN?T%D?ZH%ZE)W)MSdhrKbEclGV1Z>Jn#jZxuo=QY{A?)78bzR=zR;nDKJ zN-LnZxAZvh(Hs6b>Mk6WworJbc0>EERJ!2W#{c> zr{wm@L(z+T5exzZSLt^Rg#^~H;ZqRd zY0Va0^g|mlCk?&N+?d*cOyOs|U31wE02mLU&t>g(&O0up!((O}NG#-=22NvYFuS^k z>%wnYFbCGgGHBlpUhZ?E@m^1ltBYa6_ z$_`tFlU@3vkNP@yJ!ox?Wo_b+(Ttvqg-@U|Zeylgt!N?JM_)7M9J8)sw(5>`-6UIY zXUf>YhH1!IiREDwm4B`O%f@Y&i`G8~RE>k30N>Q)o3g^>Xa-Eq#`Z^X@uxUE+QbBzWb6lq-2S78JAEk0U<;=Q+2rZa`Bcuo4gJ{BG} z(%o~|7ouW#NhpD=t1bqWg#jIBhyu=hUR*+*3B&;uYHozO1N=!6th><{qaA$eX+8SN zVz3?DK|E!cvVC}dyB&P)$UR#;M)&?1hTtnKV*I3_H?PP~urNa;-p~8lIp(;=fgc8WRMkV3XdG}(HA#6=V->;;e z162$H=Xr8>tqJwz^t5C)xWSup6_^ghi>M6_8g*f1ur1e>C@OZiHhLeao}>f;LBuC| z181`30~{gE0tvQ#vem>v1Ma~ex9C>Q?1Gd&&Eu3M%1LpDGP7xLZKXsd=vo%U2iGH8 zGrLoNe%aZPiw_jSt7g78${*ltV#;2>F3NE-! z5o$()stOIodfK;EJ|gn-l)B@4I^g#O1mi0Ol$YJ6MD(hJYHE)yhe2X#YL_Vk7E;ip zE-4m*@}Wp92cCB^DSuia1fG=CliYsIjZxc zUv?zM(Fz>{d$bW{! ziZgV>rjJRTD`--O;SEB5mk0x1*+LYhEk_xSBVwiy01Sa5--%{u&1N{3IF5E?&E_zc zq>Qd>P3G@?2JQAA`YeY7&lxdyV5VR6oC>#<>3wX;I1PAFhH3s$s(UI3d%jd&2Cl6^ zuSDO+3krMw93`Ke;S`^Qnt?CYqSMI{UQcddIu4PFe zD4nm72LNTjefvBCGgcAxVHhvd<_DDoHg)VUu?vRGrDCec z=oBSCx!Pimed>3mukss+n>+)8t>9MCKL3agE;}M_V(l#K@nAW2d?!y_i<48j{i>}- z)2l>0x%9OZncG*S@hLPZQ7M{^!UYILM@4T%KY0zFL0z zo$!QRllb5?bbkDx>cB|+T&zeLq-b$t2fZmf{S4W#k_(&8_oKun2N`(|vX=tP60j!~ zQ6*udY!%b)pyTo}+NtDRiQ^~$ifLv6^8UL9oI8@Ar_3Vjl29KeoNg=MTGlaf#Qo6a z-xB0HJ&b-4O?5K+z!TKnFl50~xY|dR@J{6HyAM-&nFz+~gjf>1!@n z7}`*ecLl8a<=KeYsliB1zx|e3EEkNHf-`goP$r1QamZSU43zZ`+U_av<4fNYu z%EyMSJ5MvA{5s;TlW&o79VWHFfq0|fwm!?9k-H04^tKO|*jdI7TDHi7A8l(xW?^7lk7_7st;3~yJNY>-N3l=Po^AE}O=46}KtTt@b@Zr9lAXM7#eOsBTxSgQU zTB7b%_$Ep4p(<)C_{OmCK~5Gb@Fv$*cNvS3c0B=2xSKvaRHili(@k!KsPL=_D8VSf zFahDDG02G|d~AL3(tBSD&@ns_>B8Xydf0VfB&QSl$ldW+R9^M6U+} z8Ig;eYmnNe783`WYK<}aDHo3Ng38< z#_J7pSi;n{X?C=7CJwRYxt(hCLZLoL*#}HLuEqZ{~bZV15V-HY5AeuD95~UG>$;rA8^x0E51X z?3LiG7=HRDR|BBwUn*ndu>nd#;0;E0a(rb(yu|IbF+nh6bcWer3gQdvV2z+SpI=9Q zBejrO*vFveC5JnteMM-K>!s?EL42)F&-?WfD#nW4^Me*^MNJpfPy08xU&qAT&Kl#q zh&CfL!lR(V)ri>IL1&xhLD&aBCgS09LAK^Uu~|jKyZ!1HBhCxstO`9ZmL$+7 zLbz(?FRb~`lRotS!6pv|w2P;pWvSdAK2}t?gh0FaJC{^(573VApMWZxh4w&E+o@l! z`|sMd7+j;1j%Jt#A;u5h26*x(9@O1Ef~zn$E|$r_Zyk2<*T%G&5-g%vL-FL1S)TeX zfrNKMiD;wnQc9MUt=~h9{bZ#6^ukERdd#O1b~pLq&acI*1fTaS&@B?zFAm&*%t}bX zw6k{iLNz#@oq#swT6p-FiK=_NVSi6@3ObPxfG8G&TjcT#T2qbW(ay6svJM`%aRkio zgZ0v(A#Go=II!=2TF10mOG6JIbMpLGt2pZ$;2K=6Hy{8xHs1HOIdr^{xEWD5AiLt7 zP`Ukr3J)Hj3#wEe44ldy1aGm3BB<1AJ3%?~f-M6gs3sT%wLn`!th>8T?{>rWW5n>| zTKrbGhn^WP^9qQkz(^WN^Kfg$$ zzDSe*k{-aU0!n|Y07{>IBGm?lzey)lmyCd=lh2gX!g(aAJnP6vqp|{xg{fZdPw@~s zptypCId8HEbzP30ICb3%K8Y{xWrqXwC8HWj#%Urq?1FjFwv14EJsOC_khD6oR8C}vUWM?*&pVN_O^(O19%fQCzQ3TU{J zR1QT1Ox7u8SA;dn?x~70MXj*Byw?K(Bl+TqaqIq%%n2=9{)4AFoUYwxA1K|6k>2i? zX={vxdSBog(`emK$~8KCy7*cMHk>Ew^NM9leA=VX7g|dYTi!paj@YbS`s8=%Hk^JO2{fnJT{GZ~<=Q(HO*RqiV)#*`*jf{73V$Qt^HS?6u91vF3 z(%8ay8I36uWR^TA(s6=L_^QE=LUetpklz|xi`a|gAz7*XCxl2FX$PRvf&s#GeOZv- z=4y&CBjhkxsX`~}URnTA21HlHwQoXkZkEf7mU{(Nr*de;l4CckD4o5dKg}gh`O%uK znll!;X+jvv##B*SszwiHEdj(Z^wQ_se`sGP_D?@Kh~-El@gRl5gF7Vj-bCNbDI)|#z9nS5>1{nB!{4~L!>_` z3o?5Z=bep~0k|b%rEeXCN$U!sYPHwIPGzfyoQvjynN&nv-5|YTv=MH=0xEOl+;}0C zm9kATIo6j*E~0BY6jM`}a;J+jO-rIz)=YjuAa6VwxXE=Dg4Y|NINXB4@#x;4hTfVi z@8`J#qJ>T;l$TKZSt?$2P7vMqj#EFJCv>o7eDF(TsPF16V%hh}h@ zE-|v)uRwPF*BN25`O!vK82mZj&w-&mb3l7fv@XZIu$^Dg4lE429#^N#LuTG|zb2Kc zF%4NqU&@17CP9;?{FWl1rq)@E-(#+<4&9R+woU{hLWuT76bn7e(FAPUgYx zo%p;UI+r-jr}f;@?KHoHnn8NAmx9-U1#`%jQiZ$}?D9p1JM-p`g3-!>1*2Irg}f9j z^GCs8)I0$`VsJ7Z46(Z@`E0~L=?v6>?mLUzwC)2XFC#dNAmaa8F8awH(W@3UpLJox zFXu7^w8Q%!P0{Fq{&P}naSM}Gv>KlO^fR^yrP%*gaE8l~6iysGOU$;v(^RNgV{UIn z!qFL=R1)u5;E88D{;*A9O~cJvT_ zx7`}cyAupjlDdQ$;iqPX)Iju!8@<}ZMn6Xe-%b&^VU4>g?d=`5ds%6+v?B;R@EL_K zZW*LJVP?k^m<@As0N-wC3q?hrJuFmNVv3lbd9b#c&Ecjmu7Wr`7&|Fmo*o9gRoK)q ze;G9xJNG8;lL17K(JJJkDw$2!ij03`o+)U9>f0UEt3vw&O6DIUz$Z!?zMu*pUDpu` zoa~O5e14|HL-sSJf)Zq_my`(DD!xk6_M6T?Ea`9+zp`ow!S@W%6NYOaHejp9XhBWG zvH?C>%8v%#xf3veckWflX*vIP`2L{+V0Yk>Olw6JhqS{R;|}VbHsBfkGa+=QA0z>< z)j+HWde4JSxjmy0AuwE*>AY2#T}MH5;J3KZd}?E$tYqj|p_d}>0z*_;8W`nXfj1UG zFWIDBsDy5LM5E&+`Qlm_=e7^)0RP)}<};ju`WVPkfX%G{X(pvxphdn1A_NhUp=OBJ zA<0_g1<5{Laz?a-R?PjCsEHsntu0P~p@&BFs5)^egLg#PIgIwrR;<|V__PB4xp2ZY zbV?^%seU3Q8FbQ<4+M#8gN;=~4f1miCvi<<_FO^Mhc zWY44XQ3YRNMbv<0biRK8bD`8q(d|nX#0yQ(!LD+O;?BN_a?!)-W(hX^!NU3L52VRA zd6|flt3{bhOz;q*XnHvBKf&7O5m{qo$`W<37#tEO3fX$X{s)v8DgcP`BnF}yv3{b6 zut@$yRbu@I)Ly^~s*(YSIwb$4wM_aaYK#0ophB)*P+PouI6Y_bMDUEiG zT+Tq4zxyH0q=n#``jD^ejz5?3*0B)%)2rJ76eN}cEy^(A;}F@$b~Rb%?U+xs2V^L= zOt?SfSSwOLO~IEHpsBMf1my0O;#NQDOl<94l{x4q&=*m^wsLYdj4hWOKL1y(PqHvLSM zJ$^8^hnqpf2wZayvaUL^se|WR?+kn#i3cm+3edI7FMnouLHb)5;4tV=$fXh@o+li9Ymx))k=>ewQ=!QerOrn2aBiWww!$<^ z{44eqLkFAMk`a_Eii7ls$422;)q`?7fkv%^@^NIt&Zn&uhBAEXpJJ)AK(WUcFqhAwA}T9 zT1)CLT8->4TD8-^v>c#Wf76Q8f6-c@K6th|KA`8if4qczPOrSJC!8G#^_+WES+jzV z2l=p~bMveo_`I0zMmDu9+^Yp88ls5e#^V)5hT|~#G;?d8ekTa>)Rxx9QP1KIpP&kP z{k4Kb>@2dsfF1X(wQHYpuj@0}LHFaWcRJXD?Z_5p^w~j+OEV2?qh0)u>y|EFQkwLq zISrgi7$r(L;+|r)(U(bZsDx?asRoplP?MvXv9^$!oUtYRnGSQ`n#^~!%SW#2Gv=u~ zi*+0vad9ULe&MM89uOaJCwJVbkqjtjWeOJWf zWFaCvouMi_Jxf)z7eRdG+x{+u>F7~hc)UVYmSv1B#DF?e4=tQ2+vHV5mTYyFNr60? zEsX}eEbB;E5hF*@_u-JDC@EP-^);b2X{Hb>$B{4BygSB(y>HyE&tzX`IU{GX^}nu# z;g}*HhOMoX%KRSmqv?}Y!}!yI1_1Jy{O4Pblmo~I@ zEL35)TSLi)C5I}M`?&*b{MU`@-fys-04)ev2j;8W)4B^o58Z~%l`>vU$JF?d)26Uf zXE=KD@uQXHPYB!FtH-VNKb$;;X8F>r1Dy5t`PN1*MEk`^0ZXKv{V+I+0cyt|>;dMV zn`iwRXHm+KOKs{GBz4Q0-PezfI+g(DdCmK+G=q-L+Dib>ug&-2w$AYNf{j-A!Oe~! z_WK!(R;7#KA8pwYbgl5%Cd0RuI@g+PNsqoG4~1ucZ>S99ve&4O=mBsBHaae0)$iGP z`|a<4ZYZZ<(3Zy8FxNbiOnu&Z-gyT9eR?bjd@Rxr;N0Zzz}fM5e@>76H6{74^W*>P z^yJzJaj7l_B*@ibm1+tpc>?63MfhYZar)J{4N|j*NS@3K3tA2o<#v8(97>dA+C%S$ z`My3Q94ZAF;Eo<`7{9WoC0F%3OG)Tc4*ci7Gw1$w2XC8+N!0 z5lSUKA^xz_^QehFW2)m8ag3xpE26b_uK*a>pua(Z{mZr(qgS$Ahg0Ia!!=p!_D(4nvZA@Ey-CqC^vE;dX4pI2+b^ zDj$`0N4;Ubd98w@rqXs^qmuI-_;-pn+ed`od(Yx_K#>(VkJ}O)1O)BR-g7q8lQ(p5 z08YyOuQQBOC;QESy#_L-jod_G$FJ|#50+bVAqV>iCP>hmg%cjR$+=fU$iE^D2 z?mFbBvF_tk7&%r=9+y z#Pc%dm~YkGzsy9_r&2%=<+zQdaK|oaCC+!j2dKHiD)g9AZ>Pvg=bos}9FIMKh1#}1 zK=z^Iea9ZGCX(A68{gufXya_c<9HS~0tsM>zoazu+AaQ}XBb=i`cfvqR+O%63Avdd zlUnOKzGW$qG`Fytg=41cV5-qdH($3x9H!+SX){ac5q@-&kf#=u8x_#X61Z?(pKwI_ z^pHG^`1?nop2u8D^a=#T==EQgcG&-q{a>qWX}!n>T-xEsH(E(5UX{&C_kcoAweDEJ zbihm|hk-1ICNdDgbJ)X>*UMvfY;F8IFBfo}%-_8sviBlKTI^>U+W_oCvvQ1Y(dHtIz{ zqs=rlg!I(!a57bjWP=s1e~r>mR&dE!Jbwy9YZhRoyAY87y!oWU#2re=o*PMND1#u< z>$~Wjw3l*qGyG+8xj=tZSI4cJov5KYl!lnug>p<%;|Dp3zYniqnn{i?i4wYQ$u2!M z3AEhNdbj{yQcuUkE8Xbqq+R1!ay5n3TEU9i&(@;VV4|_6#4)gj?e$2x@qVhpv`=Vm zpryi{gB3)Q6nn~|i_>p%1n}zICkki4P~|n~cDJsXDt22>NO!IiUtMU3GP<(ur2OC^ zp`qlUvP%~ZStNV9@I;_c#wKzA#lu2JO#jj~uK9h%vx?nUx4D4>wIuN=H&fjpe zTqejmU;x*->^{yN)i08L86JBSUx;(1N3i~g5u6`QYzzq7in0~m8cd0wAtD=l=!1!! zDijRrLXgE{tn&-44qgQPT4W}AcI96hwREvGBb>(m5%=C>l{q}Bk1wa77-3mdp|-r^ z&gFxSzG-1PWxY?)KV|1I5&N5+r^VoS52^?B)GpS6YM#xjPA z`q(1BIh?z?fn`)B`dAyOL@cI@qLb-CqmIM@wAYVQ_PirB1z+ka3n&B=$(lebFe+o* z7-cMzSMoeI3WAKn{c=OVq^pbc+jBxXx;RKAPtjEUx9rX*6Nw2e@6t_ z;sY*TUB@$|{qd8N6X9#)C_X~Sjm29VoTcV2#my1p>ao~BbCDTEbl?lBn z;G6-*PFXACTcQb_&+Br~{I89i4<9F;sJfrWav#}YK2=l;n^{QZQn>J7UI~BCF7Pk; zzAfN}GjHE@y{{ckZ!i(RU@z-^!oiPk!^*ZZY2U$vd2I~!0m*sQ8Ps0w@WXLqln^M0 z^SwQ0L#*yK+{sdu5WLNj<(y`FioN^nYGb7@UwpIAJDC00wMPALF<{fK=IWynLTTb( zH@?WkDAww~Z0Ar+%ymY8-M*D1CNeRZw~a5vTt2p_XO+i)>-P^jU#)C8vC(p&MZ_QZ z*n4)e#=X>k{(SfT=#s1RN(oq{?XdX0l0!v`(;I#z2<)#0JSla zV%_hNK9!@m(TECT5=R?g>?uLCzL(CAW{G*qEN0>}wqJ{C@rx7i3tok09z1e8_AJM_ z+c<1hIkZf-Aj&!|LrYM7i(<1d`@J?7t3cGcyNFr~5tKo__STuC#Jv+C@P-_I)7*Dh24)@emi< z`m!fbQO`*%_}W>2L-D%vN`!Iq_nXUgqw${=ziUdIo+;Y}5IhGxEzs%jnDU6`uE*=%&|8ZUftp;rH}-G4tOW{sM>t` zN&$Mh%?tM;X&G@)Fgl=X{P$~A|Go_MUlzpug8!#wg@1*I0k2qpS!DQk-QO3;{S|l* z{Fs00{&Tt9-@(6sefTRFhyD-nfA})-cc$O1^k11&82(`To3Z{o!|zV;uMCTfe-`o= zU-)|2zKo!SNgZ9mu~MDl*~_kS~Wp12<6MXOzYH^6LKp#)mSe literal 0 HcmV?d00001 diff --git a/WebsiteArtifacts/apidocs/powershell/examples/Documents/DocList.docx b/WebsiteArtifacts/apidocs/powershell/examples/Documents/DocList.docx new file mode 100644 index 0000000000000000000000000000000000000000..45ef34187c82993612da494adc9c1728d1e1b3f8 GIT binary patch literal 14223 zcmbt*1ymec7A>wpf&~li?vP*!!3pl}?(VL^g1fuBOYq?C(zt7Ihu5jzQx{mc307C*lE9x$<4@1V+-LFFZ01m9r0pejkn(qA*x(7Yzi;NQ zArv|g?`(?II{WzAE-^u)6*km#4kvJuv_O#s6A_5$aTCcf=o&DyFtf9;=o+xGFtO+p5zzB+(f{U{ z=ViG6dGjn*)FsbQfq+!FLx3RtdGpxXIh*O*{ zId`#Pw&C7M!an`{vq(%xo#+%yA>gYg*VH=JHF@If(c!1**)m#vaS&uGYG2!6TB<-JU=1qwEw%i zmHtwAGe$LY%bfKrBd1O37pxz%_m{;H=m%Wo*K4&`%O16lvkd}5C9=LDjVG3CxUHog z4|{_%i}Rz&?J}#E5~~dodJVQIjX%mq#<5b*k&ioTE3Oo5cY1itt~_p506T!aw)|%S zPukX_0QZ{_5o|3jO;foe7~vs_TTb8bNC@vAi16_4cr&THUL}=7JSi= zN&ND4HQ>J4Yw$Q1myg^T9EW zyXh@80k!AliiY>eCnc6`_bd7_VmkO`EnRFko|Y`3e7YOuZ#>IVt{FHXS1gXkq}%-7 zn0K!5G|YzcSD$(s`rZRN-rbWAe=pVzeAhTBo|Gt@SSd4nQ%U(w1e0szZ{-rp5+1p1F=o_|Ov}EqvbQJU=nRKdY=2j> z^|4Mhw>T-CgPZnEGNgJl!zG(rv7H#~$2uy9U*eoMp*74b4{4fKNT787xwbu#7p!kY zvO@=OEG?+XW!ZLlC1H5-0LyG*2_F5LJunG@x~lq9IIiJQ0-t08sJ@-P(6b?*XvF|5 zL4>=oALp{zPS2yw+&dlUGrsO~Z2^O$J*8jRU2D&+YI_9@(S4>r4LimLOZuF6dl{Fql}8E9pD}6PTjPk+-=&-jzF5)i&poxop!2QtJ@9_uV*E0 zUio0L6g3vsKP}&)D_PS+b?}qJ6(}>HA76naAL3-M>bo$8s29Acp38M%gjX%$g=Qh- zPsh(JIobQsA~_7Eo=NjV&k|7x6G^rH3J)W0mbJ#tk;jEJSG8B*nVvA{IjE;hY+I`unxO@!m$LW1@HGIRNVoXPF{k+pk3hUC3Nspbkx-4m;G-4F7 zG|S7H<|~(2%sLI5E$n&c)sNxWD?4FF7Mb7FAAT4#CnMrsx;^}`7y4mqp9zZ_b3%-xg5NFOf!;A_uBKZ z>-=N{E>6Ys^nD+vgD3A{_I>~BroizYoMHw$TV3=3Gom)=T&h=|ORtuc{D<4a!`-^P{iE(uEFqwe#sh<> znp7N&=Q~k#!(u_?{PS|7X-ykZvX-F$TSr>3nGXPMo~BEvLfnioxgzx?9GM9vE3Kkb z!-kJCeSp8x)*d3`;2}<4y$Ln**iFmo z;8?QN^Ziz50>2a}ngo}C2NGLwsh3HZC*a7$ zi%n)(cZcOC`%gNnm39j8l|;jpWtf3O#>>=!X0pbb3mRGLCsTeKs4};TU*t{URpUMX z$TzYbJg9+}$8+Idwf~IQvOyf5yc4QpDC7xewJ_uOzOc?kXOza$M(U~?LsD>_E!Z&E z45w#Owk}M^nd;o7(l6FL&uM$0PMXVKe-U|9-)tIrNWTQML+v|u#DIPYR-sy+4`!7) zS|H*)TX#II=_j}OqKsfO9G$_qMh%PkDuX}Xta>>bG6w-X<%89H6;w_ft*M~N-;Tea zUrsEgq3&z>7qqR6vK48%huKs-Er22-E1zjB9yD~L=iC@woaWU8Z82gLnz*5zoZM@)v zOaR+eBQ=o+CAj+ilH1$17|L{ai=^527BTu$#iHu<6Tj9*2sGHNHDBJE6~0~*)JLew=7 zJ+VOphIYka%J&QXFTBi4s!Kn4tI7PhN0K7WIdp|OfQrsvtLqx@z8;TLj1|va`f$)X zM9NZ-`c9Wpfcc#)2O72&QY{p5t%4%KqcLiUrLU;2(~UJX%)RJ2L}5Z zlGcH%27*@6^M=l<*c?S;yf-VSv~AY$D`EkeVZ zn@+gA>LpBY{WFxQl#uSB&u;i!1Rq#`bcsEB3ERJiJ>YK7<)1wIu0XO}=ih?zO<;bH%gS`B`g@{~};& zHOZYJ9Y4GrDQGAF|G9=Ib-wi*oRzzrDbM^X1i#e%l;uGu>JJzQYuIEvnn@{dx@r&d zHCy+tPOBf!w{LX5uj2EX&w7Vh<~t(eake~7ertZ%9-24vsQcP>+-mFLxY2U>Rnrmw zyK&nOH#w=Hx{44K#kw!|i--VCK^xDc#ZFuNw}qc2>>ePlD!UvQ^gUOW-8`>U0`Tb! zYaKmqX2v!Gk&rgl+Og>+H1%82nV%$vp0;?gPP$tz*QXXsQ&TgiH+gr=*BC;79NYYG=+;;aFlSg95$ZX3rgVOMEJfV}V_txH-J=u_ zJKPW?Cu5278I>2zJ`6wZE0Fx4CR zqgVR}@u`k;WzF&Box?^FPTm($Aoa1;KJBHaZ*UtbTP~GFZRZEE7Sy))+XSz60Qzff zel~j@IzclxdkEvB>YG5>+c2YO|Z!D}cle zc`?R}%1xm--F|!Jy0~9Fl%acIdtfm@AI9W9#YMQSV3o+&OO4RZ$d593aykQ>jtsK_ z0&$(MiUfIlK(!<>Msy6$0ji-CVqGDsMpCnH* zx;zrD2}E+M=Eg|jOU?Zy7( z3x8vw#W3iuUCGF`x8#Jl8nZNhAQur8e*POQf0ER>8b6NYH^Y%;W z2ye3WJ}=}O2TZ?FV|I28(?-}bV-Bc|ZtlWdLNT;uEFd+f9(Fpt;Yi28$ylouv?!1> zmnlMMW{;;n7Mdn&UZ4@G?(J1}kyGJo3{^F^8r~#9Q~UH_;%iD?zL23hP{vjeS5wM1 z_;jJYM9uc0t2k^)s&FAk4#$C>Tu~{eNZg?|QL-!jqTmpAi^-z4gEcx@$_nAM7@;h+ z#l+WwvUwpxWuk6jh-^)=5)@m*d^13Fnk;vrqM5oe>${ve$C5!KW`*P4(Im@8142n6 z*A1L0Mc`ulLjM-qY8=NB)Kpa6v_WHv+DX=)jubJ24bxDwpO=SGl>XKK*NxjQCyjp)C>sVj0KTcnHf4p% zP!AZLjU9|)%Sbc05{k{MCe3`-xa+BlPIa?Z6+RGYrL-ZGKSDA{aXR{-Gc!3V=vI7x zn8?T(6OAV>Q4@(bmMxKs-SyTqS-=xz(&6CgN3|}@h0A(%5a(#XVUgM;eH9jf&+L;W zDDDSyMOtI{idQ5b>SGY#B3#{vy&)@xmjvTUyXvA*Ss2i!<{UYc*}O5}Djq1q4Zo^G57FI-&hF$P&s41^n@i?+f@_&kGn9=OqCOyC9Z2l6L}$`#==~|9PIwU2A-OIXw-j6;9BmOvM{JqD9mOJGHvdGPsuO zN)#m<94nnqlur@@fIy-jIs<3Y6=c{O7UD5@jT~ zLYUdqIJZ(FRxNW zcH#C5(17PiNfC^{vE@)=&V^|a;R^Hxrbd!6Wy>KY*1Z z^U|+#K+NyZk{VrO!Gzs?r6wJIf=)&Tl12fuyjJ#S`wvzzidj^+5)9ey?j7d zrV0_F5bnrfA<4_8FOkF@Q1w1!!>W%-l{0Wsi-73ggsv(F9XL~ulIA`rwejhz8nRwoZ%F&_?m&QmLl1)YfJpk7TukudW|jh zA4J3p`SvV(LSj{lEa?Lyf+-xYUk?Ciy*}qGi4Opps2yiv((fK4Sr2UU_)S=aRfl0c zjGG^n;@MQOLPakaGM9=eBcf6id}L~iIS#1al|tk<5H-2`1zEtaqJ7zo3MxA$YGUmy z>~Ui`v41B^REwQcx((4*qwY~6mR$Nug487ed3*{@LPUbPqi_LI-d^5Q-bYrAdyt23 zv_C&938!*?L+oBR#mK&mn;nPDN|mukgYYv z*{A9*fXKgD%tD^9q4km_p%t32X%ZWphRKf`R2~?Kn~M=HgAyrj?4UPhr=KAmR&Zj| z`hJ|)WG5xdLHc6ABpz#09#tGx!dgD<4kk7qqn%R5nJAVVAfIO9C+oYX_kKtG%aln( zT@vcUgu`tmop~J-N9?XP-MSev^B2rmMbSrf)?x-sQLIlV>GrqXH{2P4_LcSSAQ91$*cSpokZPZI`tY z5g_dwxZPC%#wv0r65zA7l#c~hcb;ZMkuc(^m2Z}E9V)TFfpjD1vOdd|k-G<0MAwHy z*5lEHy6MA0 zq*}B6Z*s#$gl3IE@ka56@$e@lx$@U4Ty9D0ss|pTs0o|~>CxpNzG$*l;l6I8iPfZn z(|z5>LN|nyjVSyOwH^dyd|l*NgWNX7xVMW<`=K@1_(m2paC(sbR~iD-FKHBu{v!>W z!aOwLho4r|s7}RzR^oqIdH7|8U@P|x`1S`~HpJrFThf}JSunZ-v#`tiOBSN}D8I76 z7yma|w4cYH-&$2tgm#(mc)}i)Ftu%(9Iu>-L9V&4$A{4Xt&45N2dhi~hXDTkJIp?6 zTMh@2hq0R9{#)8^di&4sn*`y*HAkRA0*#wSbg&VN<27|Sse9-Hr7>G^*|;p;9jbYV zr75H-tK8O{#SmGXiSg~-)Hqq>gl{C~BFelEebTc#y~sRkUX=>l%=swC{16&sLi)8` zXR&{~D#5|2Mj=2CgT9FrLSR<(ZTco>1C>i7=E&EJvdSop30dn*Xb1Vyp*NAiZE>!C zYHqFeD=LV0s0Nf|tZ3;PNA_B_O;eEYp>Mu^t&En%0w@TAHyGH+@Rkws5VhAv2f~ig z>Su$=i7l*yHG*P)c@^=E#7t`80E3E$4E~4)0^cgvL)k5Z=vtMYC*cx0+JfEvqXuh5 zO&9df@^A2Sy1BO1IxwVxg?5v zfaM6^4^TyukRE6%8`aBo-#wcay=!!m(G1f-q`1LbKX<;w!@9dia3$u(#WE>`t)mXU z+UPc8yhRjCXzn~x^Hc97kg#rOVNDbs3h}bC^?T^CpNv%gFN~C|C%j6bcatCQd|Et8 z-tr^>t3{&v#eo};+0PQN?X2Cs&I?AwR7)}tb@mH90T+FXt{KxPt#W{1{}MerDNKxxxSm1DOovZG#xF(;=`$R5ZU*x#7PJNXqniR2rUnnsZQJ@W;7gazg{RuePlVH9~_IM@)L_Wkp z*sq}YU)y8C29PLlqQHo6!o^jvNDEZtXe0^ykdi3z`H=FXej#JiqWVIHBF+M=V!q@9 zs~Dp!C>0rwq=F8u4=mDwky=JNwZz_I{ACvCVyNe~Jgw0>$ObOnH)psp@ic#Hi|C@JYO}FB@!NT{5bsU}()E4eo7? zD?SA*C6Wq&r36dmLgWV{BE_MU+%Hr*+m{pkD9q%Hw!n}i%u)#|D*|+o70E0@^{8); zA%x26GztMU04%t~r+@`llG2edztKAR?23?D**#@ZricZmhv#|#U?g8GF?QYekvYC) z%Xjcp>%DXL*+&Z3Vr065GEKFS5YG!7Lu!rtNts4F|BHk|u;DxrF9?<`v1zwLZx{^$ zELq>kIwHe5B_TO(%c`oNd1u*=sF7!RXW>(K^4e4b$=IPa=+4zWohtjz(bKR4Bgt?? zA7j|%&-0*qbEyAuSQHg_n42R#l^tDTSaw0j)eV*eCRKF>KLyOxd^s7{Ye zY-GHP6?N>DtC^>G=76-Qmc$am&1g)SAT{Skk&G2^c&i-rC`j9v3iYkAwTQh)7K)Y9 zcS4Y)k!AooEeIe)+m{9PZLX&1O}GpOD`m(;-OCX`q#ofFQ7u6T_RVs6(Q>bV@>C9u zXmZSE6@{Z`l>c1fln;%`swrcUi#nvfbaWMkxpLHC))GJzLnmDZzN)~xXk5PVo$OCS zD6$vAW<5d&+808KBBj_l!e1am6d>q6ldAq>@33SN(s;UFK;vOWgiL*GO=7e?Y3Z50 zX>Mp%wK3oOcZ9x9`?A4^I#-C(oyF{oPsxw0S?_XF#A{7YeuP>lk|o9Th$%gB*m8%9GIeu82umiPKoA0V1}-vf zxuEq%XbzVka9r9Cry;jS%LjR`fGEM!2?blGQeZ799nG>xfR>)%-TehjT)M?)k)^}c zZymNLK3Z5z%&9ip>Bs~=( z&A`I2^GS8eJXGdQ_bU>K8sp$~^rbx5Wnwf*if<|WDk`1DZ+lD?RbhIPL)QsGgz?e7 zieRE=IUR#u;jM$X!b?5ayc3%jK<5;r_FvB}-A?m~uNkB_c`>{WG|VAgN*VlO*y*bj zSLV$hhSAD_hS4mUf?o_v{b3l4irddi6kf`WA!aWnpN;4zot_G?`pzOVuKP&A!w3#5 zfb_rGMgOr+2+^YAwJwD8^<1ieX87QfF&aIv{+twD+0lsOgif9Cl~IAQb8X^0=|Kh>tU@g+lUjAHNcl$O8G|+`)9s*M71|zB zFz=24pD3w$gUWq!UPml&usK=s`k4|p>Cco3N?u#Mq=d&-kswafZ#)CJq{UebVbKu$ z*42)=z-kF6S`1vL%R3ixCxKMFW=$729z?p3I18Q*q<{-FZkaNrP6YeWb0rWq;f18N#qu-sP>UQ_CoX01j3_#W z(hzLLh~AD*%e_4piob>_2|ta^ImqeX%{Y;d!1GE=L)!VC)fm}jBd_4D_uU=4FJUZAt zXR?F{jKAb^$^HalvHk}jmC-T~h$a3D_>uRQqAA6nK=Dui1}IHGi78llYcuyl>3fCk zEv>VU_4kEKH-%X27 z;?B$0GD-0V{7^wemhrosfi!)$E6JpR=$!hHuju-AE``p%5Zxc*b^ryLr9gusROlpF z`mtR_nt40gzxI$6#hM9cSBAAB)qe`1tN=}wUCu9ezZ9qXNo!(j4{cAG9j>1`mK0iF z3Lu5~b=f}q&bv0tf+j!2<9i;vSaXy25lxPT6)E3bQzj9rj3wY_g?~9aS#N=cGDsn| z)Robc$$-~-Ab1IGDgaO#>PnxITbeAh(BgzI#90DgF#|}wyHK|TB+&JW9b@Tm9|&e< zkLtgjW-G9GNww)`s_b!txjkGA!Uo{#`%rb&5ltQ3-+E^dVu{^Yc~^i{yX^88h8Lu- znf}`r=HHOpAw3&52}!}w3)2W@hJ^OMu9&{1I8@L~K##u54U2HkeMtfP)79aQ#X(mYvymiv+2Iu5;pl3*S)N?wIDp(%KGOOnoH1tyX`^+37el{EQx+uX z6mJ7Bk{O^~qx~(kY(lw76q?q`tZX0E<_(4BrcpPH3rm)US^4-lOy~Vpidn&1W0qlK z(vk|nxeb4##$oyRYyHlrtrUi` zx0XM}QfGl;k1t}{o-Q?5Et!?_9 z0LW8YS{p|_iz`CBGSqcK1+nN^M1KK04xOcQpJK1`GwEUX{p*n;)Q)|;ra!xpDz zYSu=ZxZUfPE*=u<^rtyB>`7P!3V5QPVwKUCCOB05G_h1Yic09o(aacYDE0R-C48B7 zbKjawcQngKuIe-9sXB|b?Cf!H)Mpq-n@~Q8GBwR*OYZCraBPvhRd3}R-{Q197IJKL zsFN9Ib8%7{Dy7OAo?u&O8eBG-qsBDPjxjpO7f{82ZGLF5Xj`LySR5N(=TV(inlD>J z+MjAuCL2oSfYbY~h{?fBSZF#!S$cYwvS>e?=*qkOT`<$}qnOZmg|alu7+bI&Ri+MF z7*n<^uh%>~hWNb% zF4t$$ud*CpXR`Ibs)gm4A{&OQt(3_89=O}&uhDS6e!i8g_aJc3RHnHDO^EZkmAQ43 zU(|B!ARHxf-J(kq#xe%Fu-m1fWW$_88QS&S4lXWXqq_GSTqi&SQreFB>h`qmLf=ih zVRNO7N8LU(ZsfEn^wbfao^1ShW!WEbdwcbywSL#ZU2v8+&C<_N=YV%@~*PC{erl5S+nc<@o~ozz%;Mn$_gVCaNG3=8yJEFD)F56_-)>7wMlQqfl_t!&V+20!~12}Ef z>ce{g?*kg`moV%1Z9IJr4!$&$lQU>aVsDtLAB(3xZ$0lkga6(h3+V4j>j(BG(}IBj zn`8gzt^U=L{MQca|Jt5h8_69G#`sFG9Hr5a%gYa$Xl!h(N{v8|i&uy2i%xa>eBB(e zH6#TX(!#nGsTOBKE6^Z8bx=`_87Mav|^kd4%42|c!=F^BNGgiagA6)95^aVr3X zf^kn}fC|YF^8Cyc)`%NHeAGnmh%l9|f5%*FA&ihSPsdH47muv@s5cMcU6mP4X$!aA z<|ZVj@(3+sLFpItFHl@}N=wbkS>7sdu-BU~eLBmPagDD(5$y#_QXxr?8a{~Qdk}Y( ze->m%J>+(`hWvea%x(wdS%Hn(=HMV8XnzimqrQ%;zMUPg>-xX85T{P|n{+WCgN$ju zZX&ng)Ai{G%dNSPfqMiK!0XMz4vW})zc;Js5ZAPca-9?AJmjOW2#$RP$zxOnd~jfp z;w>*{(yVz-rVvfKVxeF@-gykJ^Lf@g7a0dm&Qzm!7mm=U2vk2I3OpH)`iw&N{ax#a zJzgAkX+H_U)=9zM>;yyQkQ$sNulqtSG=pEA5;74Qp(R-gtlzybu(TjmBw{k%TgjqZecYG$4uAZ zRHKDMz~@w*TY!*D9J@F0vs%QTyEInVd`?0qXs9q8@ zqa}-Y6Hm2056Bp63Kk-cMfW4NC#I4COMvf>43KQZvL?~oH%WliAQYD!C|LgLHX8=@ zHp~mRDwH#rFh3DZbaTP4n`qQnun8ZBkiLI0fJQ*UR%V}ULl^~$HAn`%MkX%onFhzp zpLG7o2vv2YWM#ybe(qR8*e$3bhYM9oB=U9cst-ps_Pr14o{yMo_pgXFq z<|9hIH5 zXBb1KBDY#AP*MBEQluJ8B*vI18cx5x9yvG8M_GvG3C#txRH$>Xf>4}%Ur}UnnjnWC zx6XBzb)zuk{DX&UGThg_;PXGuuweE;lhX1#jj`UrBemX)dJ{8^XaG z(Hm{Z9G1d1FP5}xbmiAMrW}RW12aqCgU3z8bJ5N!y9pw%2L;blg!?{xv@u0~9jh~o zdkOv#GY{ZOT84fL-LhsKp8hd~-Zry#73sdnYvZYQ(M+HBJqF`v^OD2$V&uEkgS$a3 z)@1uy>>DDAq_1zpu4!1lkcEgiVKhMw>}}H6;X4h^-*B;9#!K5_sFW`4JOg6bS4>l*VPO^9iXAS_Dlf zG7&ku@-2;Ax>%YKN@M?obMLmw92VKfn^RDXxGW-9Ti$W!^ifOKxGn+890buXGT{O;F(!Q4 z>NDPSE9reTFn|U;sL_71Y}&<3d&8zH$36^a@l4&nBmCOzBMxp|$1{}e$&-Tv{wu>s zUVNyH#ak=vrRFaA%@M=uvDBO5AH4TgN6)YDpP_&Mtce{!<^lzN-0uQsLsa0$z3L}R z3p?N2B@Ijd=4#3#on_I`=OU)H%YKZ8wk%TJoih3YFh9Tc z8MYa*i2DXBZ;PJIsv=D{SZj$yAh7#BI}^dhPML^}u$B=LA?RIwwT`Csz)khM#*?sw z)~V-i`8>bE2scMUkZboR4Sgos3Zd9tjmAUrd^;3lL(raaa&M&ln{M^P?x6i9z(`n`JiE0ZhTA54F%CH~Iv`{egmh9~+z ojr?UQ{5$;j`}wbM6BdwvcXvyPK|;Np1`Yh~0RAF0u)gg5AL9VRdH?_b literal 0 HcmV?d00001 diff --git a/WebsiteArtifacts/apidocs/powershell/examples/Documents/Excel2.xlsx b/WebsiteArtifacts/apidocs/powershell/examples/Documents/Excel2.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..61fde40f0c9c174dec1fa5987593edbe1f23360c GIT binary patch literal 7005 zcmcIp2UJtrwhg`a4pKysB9KDw5Tt{25R?*2E-63hnXpy%`8&0xb4?o;Jhg`_q_oSQ(d2Wmfxe2leqta#->KZx;@reN zX7GD^Fr`lNoJy6cdP;vU=6s>1up1Nk*E$y{4l*mv=Lc#N3u0K9=@ouwF(?%~@+!&K z)P*7}V|0^WhFehIh}Q|TYuTmuX{v9+1@TrXL^qPy=T7duizJ*ttk6!i-+i5Y*3`22 zerqOwnFKh7T+U}0#-bG~6%}(xE#+v%H+~rDbxXQx& z)DphiiTUS0=G z-AObxZUM1|@4sABqK)IM@DL(33Nqz5x$Rmq!7GjO9I$6!86NYbWO>dx8PK!q6L@~? zMWT@nDVwcumHxV#fJ58j(vSv#B*(yYHt`h$`4f^a{c?ksiX$ez7 zQ1O9Yv92%-5@C+RxS?FI2U8K;^NQ{oh?X30X|nu6y{HgMCEiCS2x5#eR2*7-A|+9fhfE@Ooc0xX@J z=w$%jEVf2<3?F5Af-2K%WN)dT%wBebB9t^OS*;(B%3sNZ1Y)o{@6B55m$!KLoo=^a zsez(9a`GYWs=tn5|GZ6?6fppxM-Bkc{V@idzX$R#`6f#{_c0Lb?pf&PqQvGl$}2C2 zU?NGVM_h}R)uo=r<%pb5Z z;O3ZnrQGUt#^8cxKSZ)1TI9Q|dtV%Moq1`9Chq#|6T^aTVbVr(p`4@y#8U(3vP27g zd+jT67d`DZ^;T>XPO*q~rx869+7zhH83vRNGl?Xbq<>U2c1tea0fxjs3Riyu51UKZ zX>^j{fNz$kVQ3n3PUUojr<#xVQeoWN88u#Y)t?@XEUUP!&&FbOen#!aeVG$y+Y2%XMa zDCx5a$fq=|8m7F~5}#LJYHFO$`LYTN+kVX<@H{bkv!dR0-^A{&uR?|os*m=5c5D6l znAqTqYp-{fyvm3d=wEbxU$hjy`IJtgBOIS$MM)O%{WHsg^L0u~WzG3cI-tRd@JV(R zix3-jS+;H9|rBK_R^o| z*}u}KT+&L8SJsOVT% zBoc=uJS>C*_^`BFm>Q3P828R5PwGHxS}d3tD+?nksYqP|eWneZ2ES;zJS5v2<@=WS zjl;*sR@*c$UU+hA&3AHcd~2h}!G$BXn2kpO-OIMRDUw2bDQdK~J}x+4H7L1-Vz#pU zV^*9oe)h%I+i8#J%5QY)j9vJh80xpzd%MfKQs^pQ^1~=@ZHVPqknz_yp!bY*+QKs=y&GKPx}@r}7BgLlC?imK8``{}M334Yf5FId8Lr*i zfkU4gBBLznCRqm~{3R^J#nlvN+3(-K7$M+T<4^)3^?*zBc7*z9gmXsVaoaa`_@I+f z=e^Z8K5#|w!Eaw-a}jkyiS)US*GH0%(<#M=8I{LN;~QnZf`@AgFF7dgJ^&LX&>4w! zCTEkn&yBQEgz+kdcyHbz+- zZ)?2qU}M9O+QGhhP3>33IT|){QW5GgA3=40)MOmYiBQjghlfM8dB;y&ZUxbXJG|Ho z@lJ>ULkG-csjqo*e6nvgNNU61a};&o{)W9osn=k)@R4OscXW~b!CMADi`U7@c0!q< z#g~c~3uaVg7>t8zCTPhz(R7A`p;KM@BtrY#xh8|uN)kYRnm$eQ)nMC3L}vV{f-eJi zVvCh1Qt(WdB-k}OFJ_l85*M+@Jiq;^Il_LrF`iZbD)WecoJ=(UQQ46&W6D_|&Trm% zcU;4b_$i3h{JqP=KzO`mNsYy7<|Ga!OPupHL>c<_#CGc`=qH8BJ&KoeCVVH$Vw8+{ z=d-5BG#8BRRO zCzunqn>GUXH_w5sOVud36wg4-_`G>HFcTW5S2wR~hYY6`%;(b0ZC4ff8IYYmP1zhj z-eMrx?>ib z6>l|Qm6G~ure1yP(1+W1GM@>g+LFMk4%ateJy%$` z3=O&$eG*`pT$asbww7vGMp3Iu-yY`F`dba9q_Y07a$SAieB4*ko0h{{pti>vn69EZ zwZ?!w)~0~HnXgk71CeU?R0D9^D-R)^8S<;q3Bae{cS_N!8dp_!zs*hq&ypfc@iqKv zyXz@HvADwDgT4$VPTo`T|FZ6KHE6$<_Nl~5?eF}3ak{vS%q$YV%lrBw9Tzf95v-1v zqws(%WJf5q_{@@mb8a(V8QjlW{i2B0yVQxAMHSlThJBEkVu8xIz|0Chj#u#<%gEQE|$0|owRv@|HJ1ui;Ff&v5SE-P5x@qGo`o){erp8{K z52+^}O<+At4~#t?N8FfO8=_3 z?c`agZyB{dok}K64|StO9PS?I7CDO`vY?mue$(r46wK9hmhEx-hx>GFH~4NteZg~D zAL-Q=DCA>aE#;Y-kX{vt&2j>d&J~W+qds$~L|(_|E3Wy9n!1cH@|&uO0NHmDXV~o~ z7J5$Jv>$%N6^;t-dz6yCF5CEQL{Xxid6VC>OUaLYiN$V*BX}zt=Y-WPmTWHmiH*Ape-fbma;$N}dfs|&nkYodfxRHz_C-Ce`|M}^ zxicLyTjM@t4&T>_MN>bY^~K|#RmJXoM7o-Waa7YTi$W^J`3p4gsW0V>y_cOmS;2(Fk0%| zkZAaaR^G&iX6SddH7UU*A|^HVOBGtoGzC77X_>)mA`MAV7!Gbv%4Pp8lc9Sa>*Ba~McL11`%#!6`nhMZ;&5f8AOS4h~h4h~V?t~DWw3}K~s!$U1^$_W9{mY}A?A(hjPz8A*KEt(d}FHJ_d-d3@m1p9sTt5H+ZcEbelsOBc_~uFH~m-Pzacf zJTKB|&>2rU@0k|U=IC9Y+UsWbc_Zewu%K|rz4ig<^R)+W%$`rGZ+>Gk*0E|X4iJly zGfb9yq^cmH>fhxtJ82gb#NXkI&$!%{WVj!-0zlC{i# zAXpM4D1b!4(Fj6Uq$22zbC!@7R8v(xxWPf+`U78p5QD-hBH${5t~i{RA`s~1jq#8~ zV_bj;I1uSUScy=CO(R$m3>5t9S{xGNiT&Gv!!v(f>4$au>ndMgUrAr7LtqF91O{F( zGBk%17CM-O8w!hqq2S0r@c)Xy9-hWZ5>iDGvUEmcJYhJ(PeN*c(nmm&{YUBqRh1F& z!-N#!7$gjbL+87IGUit&hdwk4z>#!BWOq_VV8CA zp&-UG#s!H}5dZ5mAiSNN}mYFS=u!8;8^zHZhV&CnTnWF2_o(G1Vx_vd0Yq_TLe{=}h0Idvr@k_N>y%Tc%LwBe6NB0?&!cJeltCeKnR1vVHA# zx{kvjLv-8LAU;y>9LH0yU7}yxfi0W_cQJty4#Gll>IXGH_3l4dI_lsLIl9@SLEQpk zB%ss`XMK90rc~IEKMUT{~ z=0wm0Dimgef8VtFQ}c7+J;OUjWOWE5ttI`@{9M#TqX-Wb&f%bdVC@b}isB@L0|i8s zGW$m}*N8JhjT!*eCRCD+i+XUGkPaz{rMDNnPM0*l(IB&AW2)qdT}<10I?1p#y%Y=? zt1Y>p3FQfrXdBdJ#e0K>fS1d%^BUPJ=4bqQh-f6&FGMGcywi=UCwusqnn~FuJuXx5 zZeDndK5&qDX4Vxa4zw0 zHE!j%%~Qy|UOs8)82#&IfoS^s4w|+f=#vy;dKR5Z)ezU;(2Om$))^uCG)Q(N)Yb03 z?tuhmckTCnWic@zB4$14&HusmCrIt5*RkSyJova1eiSK6n9Spq?|Afa1NSKUF`*v( zot=9e;kbQzgn%P>^9KljnW@J^k9%WBq5Xs={Eu<}n^Sfi<+$H*gmR9s;Ul2@oBQ!I z!r!(1M+jG`ejpq(0e%1+Z3K?*D31V;gnx1V>$U#)?T_z6j&5JV^vkZ~_`r|X{-Z!F zL7fEZ{$V9Jj&r~t@T)RLw8r5I^V8c=c_uqs+Hwn;c%d!ppc+ep89GAD8x^}LqkDrK^_=T zBv9_wtZsIWR>pRARxIu|*5o+^Q1n@M#sB;h^-{s9gB&yD7Nzn$yeD-saw{L7HGOE@ zVi+j`i24$G{QGw?`5t+%FE6e=7u}Ku%K&KgIT*7#2oWOQ;c%9S~(5MrAhi zBBh%!Ph^>L`!U%?#qdKpzxHdgn6T-^_xRc{U#z@7K11u$;)nNTo$7q(_k0ssS@F4} zvv0DD`fSbsVn}1^a?}U2Lb{U(<5SfVDSJVOD_CU+nke_!l;`_sx+z_proli#-8~*a z&@^%cTRX9`+&%w0Bo7)}1x4=Ab_F{+S=iYMQL?kJQIdmgL3Sn2|XKHEz0!!F|Tx`I$&VON;^^YYe$<=|5 zW?*L_O4eT}MoBJXB1Eam#l^`1;xyp^0s)+yU_Ne2a@PN6u7Ta1!L}w~6J~oy2w0BJ z7GS5J{4=owDMQ|OVg=gU-;IGE4m!%1u>bFU`qv%6Y6Er#ngE@FtROo_@LzlM&)QC4 zM^^~yPXDqFD+fC_01O6kahb9KIQfiujQLEsxj|r4UM?;k0GNZD#oo!r1Z4jY%uS8i z_)I`x5RZu|FDD1k^#1x-|G+WfJA(fnE=;mBmw}K_kp&9{g$W_}uUP#%mZz(YDt55p zT)&!en+^(220x~-{2bAMG%BsuC}2K6ThPq3JT-?F#79W9be$~i$fX);CPVVJaOu)0xX5mwoXC4(3&psN)e7W6jM-VlAiT1Uf%0h6siUrPW z%QW{qfEcV1y|@=5j&+spJ7|Q&)F!;a05G@E2dYC$gPV9vv$( zQRI*o6mRr3?1)9MnJ)ettcONs2-628>HWTo7fP0^hFrI7JT|J^d7objJUb1@lTXe_ zW;BJ1zra39-wW8ajhQ}k1GAKtHve2D33!z(^di$ z6wZ&x?qm*h1e>TiJ3@kr)8B>nJ%a;PV!nrdxcHg2#pobn&{M{bi4|xUlea^l<+5-_ z*^JR?T~q4xyb1-fZL-f9yPVuX3%i!{3dVS@rxaaMA~MWx8YfC^UtoxoeafrKk_EJj z>}&MDYJRw$9Y&DpGv6=Y}aRwtjr3zi2m^~@2$ zvM(x(CU&35Ny_AHCZuxm6=^U=1tzey)Y^uxiwqV*%X|q9{H}K6bTZfbK5K`uo?KA2 z$Q9S<)PQEnzu0801YnOJ6_(Q2r%U-NXh|SKI;kuNkT_C2Xvr&}N!ce>2|rQ5uP&du zhgKhMXNO3+DjDG{%Sp;Wivt*{aMc{Bl324|4cH^Yn|0G>}dv2&EaPpd0 z(uTZ_8bAbpK08vSq?Wx8dp0AJ{9vi55j@aQ%kv%ATFy(^(GOpLgqy}q+0*XNSzZ{4A~-EfsR)(9-hxUe-y8O3#) zrM#OZ!(ud5VG1+0^`X_r@hMqTnU7Lg7AyM80>bq!ju-OgO-*`AqfN3|M7~zdSjzcb zO*CCE>sNc8mg_pXsuhnbF)l@geL6##myl7dxg}rDxb|HsJ5nNs0CT%J@9wL))yGJ} zS-=A2N?-Pr$Siw>&U$A5j$99Vae<@}FiL<*?F8&Q%i5*T;z^65{rn1Ahdxxj>1GVx z5YwwZ4kFbrC0x8O*%%UK8Lex#!zO`z3G5P4Dg5{nF zjA0>@agGB1*_3La%tPehu}At}%bfCIgD^hKbLjD+&W;daun*5~EbNtEiCQ@#z%QwE zTd2~i8Yjjag_ZT`OOO}KZmcZ@20PZHOK!jC7Kgb4I9hdE4gImXz~7 zfj_HSJ7~UI8mVj@c|~_IXQi~39lbOA z`e;hG(56?FCpUZ@PxXs?pjh^XM_STSy)D$(3=8mD8xWO>(5V&TCeuPZ^7bNwn1BfS z*PIEbt7M`@i4=wP_^vY~)e@;F!hLVh2D^Sb*_HW`DFn6jZeHsi6} zU8prGp!&liJA+g%=u0~Wd1T0E;5L0Lcz%$(X3ofh`DH+~2h=5=ozj+xed7W3FRJY>>kMcx$Ik^tN4C7hE0Cc1Eu zrK|@OHZ7R!^$JOy5!&rhOP^?QRQSB9oL~lKz1-II7I6LiF0LBHZf*`AEtg#oKUy?6+V7il)G}-fkI@9UU(TUS9P=Moz1kdD zZv>Vdt(-%vva#k>$Ri21b7bTLf*c8yj(L1;kil!}n^$HwSSsbi=3fdKdj=J&bTK3A zLEs1SN>}CSn0)<}gKR z9@f*P2FkRX-bz`6WCq1r}I(i3Jpv`gKeb7}& zJ^Q43|FYsL{cx`rUNT6CN(g$KX^nHkMRNQ!jrQYXl%my+qPk=jM*T>1s9Z{3fk9&O z(SWBRdg|^_1cbQNV`3bE?u(d@HoDSpWSy1221mODMoijAV(O1m97YI@&^UzlPP^H> z)M0tIMVMBo%vTP>?HJ&Rj7a>vVE7xZ$}jLTwpw(xxZSB;_!J_SA{$XhA@B$Pk(^Ix@N8gW9LgOvwQl2Q`#W=+k$g9LHLV02;UQ z0g1{!V`kY8b-M~UBlosH5z_?K>vUaW)rQ#Ixc0Xaof<6%@~Ln(5N4#i=%rh(hLq>* z<`sG}XXhygTdOl@S*>?EcJn>391M@7&S&A_l$nk^9%)D!+{eiGHkPeWrU4Y@vo72m zwC0D3AOl6vXagsZB5A8BY4-ZXujE?d&1=gjE+C44yG>2Nw zY<}Rp9C5FMb|GtbWyoTN=*JBC$AbOm49MRu-Ur9zY&*#@ z5tfUyW~NpJ6NGW%6u4)&>!CV8pl$@Xcuqb&JU-Pj*qtca1N%N}JsYu0U1E#yrPD>zlj!y~34Fue^RsLnR*?(leT zQRtejm6n(-`tGYJSJ2pd{bv^$&>jWTMuOKgqZ2O07OP(?==xjXK%9)q)vGUUF-3PZ z%)@Aw>-%fN6HtxyWRT`85ny_;kMeUf6S5NtH$X(Zr>cqsvYD&Yfr8P<9!@KmXjq%c z?~Z$63oH^}WZe3jXS~1*M5^?w@I?G0eyvZQC~HA79r=(|2HHPX7|tHn;J;s5XwF&A zvteH2W}izn+7kD@UmPhQfT3VkK=FCCS5YdJ7)fon>+R!Gd9G^SNCO9R6k!^@5oy|! z+ka_n&NmzINj@Bhbr_GppWfu7MEd7NbvxnZh(S+n3xH#t4HW8o)NC#BaAHscE=7ZR zR{o{DEBUTIjfPy5hK7Q3;q%1VQC-Ej?$2pe3CO#G;Vpx@xhfQ1z}-(?^EX`w$TjL!I=tO600sA6kMYw;CtG@4$P8?zGYy6Wucn z)$;~IQGL8~WzW@+S2P!jVKNvKcB6D3BhYUbzV)MIlGIF$n<|Y0#ZQ?&e)@>SrCK3P zoFpJ?g_%X)yKl@-{tP-!6Z36k_Hi2yPxzE$Q{jq?u|d6f1CBWG}c@6Nh`I@nU~iyrlf}No zgm)1A+yf2$O814_H?9Yg%6T{Nh62$-iaiU~jY!Hop}o<7BVPE{WzpqZuKWHa|E(1wZiBw51Vu0t{m zmnqmT23{C}mZEZ}TDKpaJ&Flu<)w2;V?6RH5)my^X_`l7yH=jb`xSPFt^9{B;Wz>r z{2yb|`pK}jkSe3$9ecjJKP6*)z|Mp_zolLM6-040t07Qm{5C+FiX<NgY@oM4Q6bP7}%z{Vw~>sd`prnC1_O ztl;z(Y^N3&u{lu!Hi$$UCoT8K`{4!y+6-#58^?C4``~OvM|7zO^k*!&w2)NQ+sru) z0_kFz#S%cYX$zd6=bqbb)+@JJGmqh+Qfj<%qwsC(hJvz4sK~)mJxP`?N30`5mk#)> z4zozB-S}$H!_kKoD>RSJyo7%;lsyE7f$g2q_ruF>z}L&}v3TiWC9-Sp-naVk?-})qa_jc z6*oAtFBcSOFC^SPu=6hijWb2z2wwo=P+{fesCl7^kY}_+kv+_!Q?RCKz>gNONAMy) z5LY77_+Y@YtBnUW;ReyHk!_ar2hSAfz2O}!&{@;^fDa&be|{9J;%!IMcddh(q7WtT z1=Z7^J7>fvydgQ26p%*+E@+SuM;e(gqLOG{ z%Wn26>Q7N=W8q^I&lY0?aL|;j4HCN-*qcuhh02F6_As(Bdh+5MemqhY9r5Yl-Hv&Y zAeGZ-Y^eGTF9Z)f^jwG=qhC3DYaFRLif<~r(R=oRJ;CeK0+p;lk(X*8v?I^zIdGU+0hs#PTThEAd=ap$QtP&e2wxniD zcKNo7{ou1sl~UYV>sCL$&$k@b*6a?R{T@l!n$voIFo7oe40hjib}GP8ub@;fU~v`N zx*#Hf{?Ya-6id>v>=UEquSCdY!Uc@HsP?FiY3f0&fW;OG_9Xk{a>kTGGc}ZrLN8n2 zEI3|GFYl&ly9C8lzFg;ZIRkYnV8xrdo>y+Tn@lf>`<&)cJoaC&&!j44b7LwllJJ&# z78HDCqgw5{A`AsP4+*Jqw1MJ+``G6`b8?>=Tsco!9M=#XFxtgye}Q?e0kd#|q-i6h zedg)%zNks8H!E4sjd^XQ4y5qxFrc3eA%w$1Ci$C6@3Fe+;G61ZODD+y{%XtDa$?35 z6D*1C0Zh%WS`%KNU~k(3fNsLv$(Lgxo}9Bot#3n{iGUm_m`WPEIQ_e1nGBTZfk*5_ z6)C)JSsqTYU=ZVqimDL{+_)7$uFdh$hi%~Lgpwv*ayRslr@G$ob9mwAp;u3}Qhi;6 zkL@hvR!M9emdy0xz6KxFuqzG&*&ZQ9#tH6e>lZy27YT>mMuU^bdBdiRDr%F*96|H0 z92@*GcCrIc9uI98V;uT4Hf!Wmog8UKDKhdJ4e2%I`1-Z^y;mEWOJMtG`*+9(4^oZ_uVB18Tg5x6R|&dEkghaN=x=8oNl z#&58^A@L}(Em^T@D;35FWXG@{VAN65U&bZP>M(4)rW$D|ol82rG&3uq#N2yZm$~Eq z)}u*f{YVY2rMcH2uyaA}yUjcNl2THSPZP6C2Hszxf(|-TEPE0L7UhJ3#w_f<9l){m znG|$Q-5}hB{2%hmotR~OLBTK!$xh!rR3IV$zn(Y$cj@i_T*SFc^xr8AKa__bDh|I1 z=r`HL-o?@SUbZm-v4X83w=7#{CsuYAc2>&Y$~uD`ZGKmNey(u;$!{gyoh*Jc>*nUh z;s&@k4AFtuS+y19)$S!DW(!*If8-CU=wnP zL;TM78q+^N(E^A|s7p}_bFgs$nArf#9DM5Ry!@P8`~VIX9v)skc3yz4AnQL%|HIDj zhHW4cnW@Ep!SX*12@BpUF~4`vy#(?*$&LxT1Uew|io3_%yh2ah&K4pkIUC(cXHEux zH?R25X>xDxf2r|-e)zIGKaN&NkL8_kUSzfEKoo?+ru5yT54jP6(wW z|DQDak0E@w3j1BO{C7?KQ{ejFH1dlA_ggbc5M9>M!URmN40Lo>1lmBbV*OS5`k!6a zFIfJCAo*__he)V@(sKT<9Qd^}f6|Hm){)E8Df5YY<*mM5>fc<~li9ce` zdLNO0QN-;{#;RQ)Nf1EwVct0>K}VctAWT$;+0nf(-w2aQYg zi563Su2P02Di|bfmIUKxgK;Hu^+12O%8DY(#^cyP*zeqjZt42w+s?&Wh2}2wh-~hr zH*XjpZ2D`l?TNH^2H(Df0d|5|f;fmaz9Tb<=#YpEaU&eqz%LW9n+tUEy-Tw)RWUh1 zu>>L(Kr7tJ23FhSd}ibTGdO9ddK(0~syysnMG{4pp0J@I?iZ-(Z3R}M1<*Hz>B7I) zeLAS;A?y{kH(HV&M^qL&<6`i@n;#a;ZIWn*&Eu%Sml=lFJKDZ37Wb)!4>ddOWNgJc z#X~#vk_8CDpqzBw7)rk4u4CE|6wVTAvR~PISp_3op}F5#B0ff+zT z6NvuH2mVw;Drmqi+YCKfG{P4X&jk4~ht$(cWUaV;S;4GYz~EV{p_xo(CFjkw&SiAv zS6DN-*epx(=J&qZhJ*-2u~vufry>Tger~)W0tyi zG{kGR%}oUF*v3L13F+333pF2_<100T??rjAcDYYhz)p#Qs+$FnL^0oZRg8rW6;WQ%%Nmu>$l;2* zFMU_ILL;%=P|D!>`yDGMZLg?ZJwgC73f=w2b$U8}EZ^*FzvBOtExDUIZyf4iqClq2 z_z)`pW4FMcg4(~Mu*=H@%T6}bV59CWUzgcncCj%IO_acjh4GQI_Dq@}mSys$33nJ_ImwBqg8y!?0@URW#%N^?jnI4Ck=h7;J zt8Ha#fi)qW{Qds1u{9G?4#~!~v*H?fbVL&J_}Nn|uXS8FS%2}!c<;|b}d9c&`4m2LD5md%ufjP&EeSo!bJAe>GA=Ug3+!%6JP7K@eM z55^&t*z#R87!)>WYT0x{0eO_d(Hgc(!w2S$*cA+(P5I zi;I=%@a^^R?alX0k<85Ko1)3r-Im{OwB5#!RH~bdgqRYI79aU7_}(xG2+vw?_J@8O zv(#x8xhb9{x!p|4y!Ae}slM?!(bkyDW$SP}vAw>zaA@@LaC3ZL?^lws`FdzOUpJ)H z$FMYWbMDabdfnvo+sWsa?Xvw=VXgkX7b=W=I$BC6HpxCGb?!4HkEE{DIA%A%27`~z z!~{i}(a!{pm}1;M?=4-IFJ8Nyx?ELhYd)Hke*JEE_~g_Gd|Gvhhv)VEI!Y;mHD>Ob zn6CA^x9ZhlC*{)ywV~05%kMXJBL{si6wlgV_f1uN=Ee<4_nc4WEKjfYySG-ZE8e2% z-#+nc%_5%{KlQjdwYai4wb3SBJGxCP6j&N^W1TFvlitz#Vzkk(aIw@#z3}dv@40Wq zRi|$sTZifG&7;<$g*Crj$+}yACM;E|H3l)Fpk2y5$q!^={6V`^dD0)C#b}ZEBtGC! zNF$|CtPzTBAbFs3VMIAYXOGB&kb+Gcf|Sh*k%PpMVpbwPyu(<(+^r3oD$?!UqKOqYGc5MGgKv|;RY$jo~E%b?4D*v(`xpDY_gkRl^*hmV!#aL zfB-VY%3nUoEZEX{Z8u+y`TG+``xA2#aPPWp`TLO%SdfBn^~I91(iEG9UMV>0D|)$j z=af1UmYH1hkMr52tBuGYme*x|6QkD+g4XSfN{M@7_izy+>Zz@5G1m)E0Z zv|ao1KDk{I2tVKF;v!9n7~mW11e$dEz<${){KR6SLS{sLLoH;q?RzY+V7&CPrdyhv zYUb;yrM&a_j*_Z#RuO5{2o)*#<5>Cu6-2aJTeHXOm?JL|K1`0?Xl%p-0@hzII zHx0M!DHg)z9uYMp7O8?4^SK=e&vM8JHG?xbd(B|3`MFQCA9|%tBDfUQM$&{TL-Kkb zPd%jYz|PY7gwnUmb;&mr^y0T`pMIcO;O9d6?9wbB$SH}visFq1?)s{YxV1iuc zT5E4Qa7&)B;)mIPC=v#~c+|!59b@}Z{~UIY;b;;J;&B^m2-Y-~f-uW-htWcc1sEZ^ zj05k~V2NnLXK=3a685yi)!?AINNA<)Wo3|4I?Y8^5xGBUc)n~?pHS^%M&TTKGhT9M zKnSc9fhUo_&|1tRlJeXHZhv;&T$h3-vvEhN;hb(%mUv*WKJGhD@V@|r9sFnN0Q4?Z! zu0QAhM$B12LJ44xWD7V>;M}69Yey#SMNUt{Zm3QFQWag19O<@053(+Z;~a61nwqD| zoqhH=!mZnfGEdDSbrtp-v_FElu@sU<5Mj3dYqQfCjnI_Mx&BbDa>PRs@ZaagKI!KgMe)n2z8ApaX~nP*U!r=bEK5Q-93 zCAYh92r8Gg2)vgcfL)nK#c)Q&sCqLxfJ`FKKzOrQE9a8FKDo1dXmv5xe!1yPr{!;s1sI$}jny%ETfl!0ZWI=};ja8n+MB7q_Z zvma9|42(q4#Sw(L{YWc4gY9d03l47>(syG5ShCUG_#G0bU;z7ZQ?$HGk#ovM3t2RD z%*Rh@!zaoaDG}tLHf$74oqd>1a9N=B+J!z?rc9gi8x}l&=Y#A*ppSlcvL_L&Fm-IJ zPH1gAC;wrmAabj}%d&QJEZvxKNI3~0;qhT~2{u5Sm!}g|2ppp8;+Po%RgQ4*Q7&1} zal>o1q0EL3^Q_BE*c!v-V%^!`Y&#P`x*GX__$_R{iHP(kMLd*BrD^ewr~GQ@vH1k1 z^o7Ff+Rts+I)gwV$nVjGzsfJ36^!xsEI%%7gaap>PF^xOxPKJlsMPEO5ZC*XZm01i z@=;I+(h{wPD2tC|N@1d;ua*cmZaL+Ii>5JM-WqVGhyrzW7|^79cikP zJcz?sjQ)6y@N@u2V3awH;6xM&d_k_yU$#R-lC%;C8TF#{uui2}Y#VooV)lBmCx}a% zTn=b&w7h~Kn#S8amD(7&4`~6L$EAl>eubWesvJ9jYly}lmV+8|&B-ioz_GXCk%~Ql z8nYhXjhDXmP#s-}I_e@<)Wd?=)czGJbi(6i==k~TCP_$?;=KPKQqOXuqx@tjf zCOH+4UoAAe_n{k91-IVv-&mL5@Xe{bnKKx<@cfds{*HvYtk~xQ$Em`O56XA3N3V~9 z1Gf`uo#dX92+5A9Y_9-qUv1p@OF{Aht<;MCw4E#g0+|P~DGDE$(CLyO;JJj^$d4eJ zjL5GrFJoFF0iGarqn1O!3rYvLv4u&2&9g}OrIbSu?r%K>{w`?Gh>~Tg%)@CXQHH$H zg1ZEj*MjAz{+m z#oY6Urr4#)xor*a4SI=7-LwEr8DEYhAW$A9^%9K-R~a+$S7P_L)rGM(gK0BX_Upy>O7Yf?kjZ z8B=O!3So+xIi!n72SQ@ZJ?~)ed3Vy*0Kt1}Gl= zCg0rvEpJN$`PZkxZ`gT_LFPC1ugh%FIo}v05|hk82InM&;SqQUGP{|HY$W%5f}nuY zgO(k__8>@k0A{DMI2xn`JDP?1AVItrsjvLWeY9gLFM}F@ak79?80{i5LU4qzi%EHH z2=LkIMSD{09ZZngA@C5Gv>`A7AuyFgVCsYk_SgEF-{#M|6_HKCPdQdw{sb~K-JAR4 z(i(;Dhy@v%+WScN6PjsPJft{Jfd>+!gXK@w3`rg&=(#h7lEw8b!HE~j&g~w?pD-yK z8r_kp6Xpk*bRc8``tuq4*T3iUGh>yfonN4Vj7bB!E&kir&L>PSiDW*&yx6p~dYCwl z_WX6NLy}_{Q#a(2h8cQctOMaKyGPrujZ)9rr`&I#YMC|?o^x)98o-?J2gRGtB0aP| zVdEDgw^iWVw7gWogt#iogzNI}^rKtYno7mQy{ZM;rJA{Z-#zS{9iX zrAu;G4G|X+NIjEAL$>ZSm|_jhP{ZDBkYuZ6(wBJFs~+@3XXf2^7D#M|Q5+)=1UJm8 z*xA4vNos?L{F`6Mh)OQZEYUxY^Vax|vS}u}%s|C-vltR0sTcRy!lWu7R2fa)CAM%l zj-R%JyZFIvGSYWc81L3C40|h=QR)v_ubq(x3R7e`2Bf{L(C}cD?7?%nLmp**uvnrWmubqAdonnbI`mzy7qnHj~jTMteYgu7hB;~jpCcB(qT4tKtW9Oft zhJ3s{wreXLO{#|Fyw7pA|BB!+==n+c;0U2Fj*93)HLf=nt}gZ{?l|tHbP*rI596%sMeEUOBtw ztJ2zGAURJ_Ch!qOny1SnfZygnl>{(m0pxr6naI_csb=xjx+@tOixxeoHM}B%#i|oP z5Q^2+C}-=2XK$(p7&v*<==N2t79at^1FtTA^pNmW$QNBBWw+lM_VJ!!jGh5OxZ#Ep zMhj|E+WM{L+Ew8CI4P;e?no1DxC9P2Om9Gx)|E}=3RYZ}G=)beqH@gUzHYKl_|7J6j|)UNXjm#=Ux8D>hxL>+npWo3y@CA zt*J=0NDPKIu~d<`Rkx(pe0|?Zc$Sr>^io*MSkPC3r}L*Yj$3@ev>tJmrr3^Huw-N1 ze0vW!bda;jB%jmakRwE9cvX5i0JV|U>tcoV+}xWDdFb_lmvpevup3g8%r%%wrZy*Z z#87_%SL;<=$Ro(0Vws~*&*e5C5)o+}KgClYD2R4`)TyMiXF01Wr}NqhpJ`|wT1xn3 zC^Nc~h-K!JbJ*1;wyazZ9)HEGj5=dkewP(vM%A&%j)dM?&IQQmGA0`JdY|pK&#m*; z1@EcLqH%_@%=$D|d%-+BM|QMq?54A?9bli(>uz|t+$!VEsIB%xXz3Y=HdmEMIg2X3 z>G+Q8q$phZ={jDD)H6F{4iy!*^V+xBywJbWo-hEw*l0qUC&oOm`T8GQEv`})ls>ix<|HOJlTtb7B@N2vk z&o?TiwGm#&8z3$}ZKl>HmaTrzBl`+%&3Eq<&tQjJ)mOh=_ESb)sr#VIX{K}9Pn~}5 zUyZ?^o9I8ky{VbC)f#Tpx^X$Q^l?A(sGeT%9MyvVT#K=_6xGPX_ZwYj#w32oz zDBm$Sn{!rpYKF$5(oVi5`P53uc#>d!GmZe?g}u{5xU?wHGNGa$t1f&vOumxI9~}+Z zBFbl|R3h=l+j@>eo}B79V6*M3A3Hvw%4MN@C79*81P8RTj^%lS!O{>CShJo*mEKoc z4gNEIo{gr^xxlt1T#J$F`QFFh@P-<%@XVbytpq3Qb!GadMrGK*e2^ZdpW)kI^j{v(+3v7e$ik84<|@| zukZNk$>aJ(_7R4x-TH%enc0G_5f<`3x zX-j!R7tZ$lmY2VEhXf^~NEu#6&&k0HQcPC^acSWo(dmt8$y#~menW4Lg)FtFjVIz) zM3s?@$QZ^$34~B0A0-Q(Qz5K?1bt3t&059)(uI+_`BAL?ZUqvxkR`$lhg)cqA)Rkx zog;7Ec2Z8c!p?Nxd5+Rkj;D2#P+f7o2NDZ{EXsjEO5R)}&(iaEe$dV4LZDs7nU+(w zq3L=?qlC@6&xAaWXu>LSdU~B=B6-Ac&0l@%8D2p4AXneEN%etJ)4ptRdIl2_7Pi5} zTCQ;F)%(>ao9OU{T^KvyK_oXz?HTiufaH-4J38WJb)aa^7=xLt(LlLgfq~x3e=vztDLViV5@u-`E6D>&K7E-zIXtdOch_qsk_k#WJnZd*FMD@y8^8Tg%01 zDMatU|2w_oe(e1Z^$tqaJPRJ%hF6B<1!LUFv=lP=8H2&n$0!KS*>`%!?a4E;S}z^e zcvJjiQJqd;`g+@kr*jMd`(#inV^&!ol?9d>Rb(H0qN4mVThG>6m}oTTiKHhwBuXoTXwCS!OLiCQ&cM}3LrZRAo z&LrMrxNYT(M?1~i$jWliFw7A3?61FD0rK`AettOy|D*DcZAO3oDuJJCDng+B>5Bz^ zZS{{ww12M13J3M41KYpW{^P0PpKH%T_B;L6zLQ@q{P9%9&lbL8-dp$=XDoiUbElmB z@pQq@b_5^(@Z`6RCqGyH^VaX5tIk4t2XYa=ZUp~f;0O43ZU1p2;m-yJiJ<=b+X{be z{*PPCer}$F6zZ=woc#>Ioz(WnO$k365T&{Y;4il*{A%Ton()t7kZ6Cv`0KWppDp}Z z{ruU&GrC{>_)9JHXM=y%5PvpkMgOb8ds+29%=~KQkJEymtt<-u>B9cf!XLxj&lZ%Q h{OZR~7xsJ5Q + +
This is a test another test
TestTest2Test3
1TestOk
1TestOk
TestTest2Test3
diff --git a/WebsiteArtifacts/apidocs/powershell/examples/Documents/Test5.docx b/WebsiteArtifacts/apidocs/powershell/examples/Documents/Test5.docx new file mode 100644 index 0000000000000000000000000000000000000000..f9e197e57879edf79da5e3fc83e38bd62b9640ef GIT binary patch literal 14646 zcmbt*1z22L(k-q*f&~i%clTfk!3pl}?(VL^g1ZEFZCru}cZY6Vf`{P#nq=<&O)8$==i*XPSf$dR10Ha&FhkaKswER}_Hc77V0s4ND0l@8=K2^Q2YqMuY3u zDig@_on$0cs1LOZ-|}8Jybb3K4D)5tA?)dGFwi1zV(mr(ymD(EM2=X~A3!|NaR(am*=G(!V|F#hk3LDeZ?bvg+na;}8XZ z1qJ}1I$twd%6Q(1QL)(tp60gcL^{?QHwe`xLi?CeC8K8tt|=IPF1rhZ6E7ONB^1f8 zdTDR^x?)b()0AD~^-)7`&2fB)`PfXiCHVoCCS?V#l}%l_l(Ws;0i0BUU|TRnw)wH9 zG;b9MFpZ%(sJXc3))>v4yUIY}sn>Hp_7hJ6!t^1KpQ>oVm!OMxr?-&0uZfy3z`1W` zfO?I6Zmjd_fgP2VykAf~cey9u=}Jo|NvMHurgFA4@Jj`>68)E;YMAayQG_ zl3V9J7B?tz;6;b@YXLnkx-B)}J}o2!#Pc6Ac+u%P7+X0qF+SV>+j2W;?cfu9UXm`x z4vyxwHvFV4jLf8OjBN~Ujm&LK`AMCfOc=OH1qJvNjIH#Yz-Ks`ncF$O0YhvY`AN;3 zob28*F*zEV8C&Z+GTPc1+ki(*Y#prioxo2WOquNT4K4LejhR@PnK_xj-u#P$^sk(6 zl-%u%|2K@bCMM>F#=`%&p8f+d(_haZeWRrBU~25dPs;RfS0d>f2_t?|1$|=ZvJZ^S8dM!IW+PQo^uoeV5KV90*+c(hJ9@%twHSr$m`rxiU%=w(ocVl8Y9!m8r>q!TI#O7B|GNkn;mv5_%TYVcY zE5hn+S8N`>o~cBiz>|3`6CSlM9$y+1E}On+Z!XK+^<=v1fDPoipk~F^TJa8hyl7~~ z#|^`)#)a-lJS$3xIvxDxZD$OOZp8txwJq4sv+z1(e!}}Pe|J$9gMGkPb+ul9x#Cm* zFyAC1R<0Nr(R^aNPS{@IbH6t{x4bx>-l?#5A+y#bW7OoB(fp%oY!WZ?4E?yfzWP$d zako#v>eAnM5>@nvW~S~>B$o4i!5ytAC>`jW`SW%grpbI$c7z*eWnH{WM- z;qh_O^=O7k^-+*8==7Z^7kFD$}r6Dmt ze4!w4v6VQBD39($Hn3F|^@jhZqj=BNb6XT;k;#)vZ6CD$!OVHnCh)6f;NXqm6L%15 zHJaxMaOkciu?gg9vJ{AgP99WbsDt#?Sx3OVtZMAmoY?Dh{kU)CdJJ?LvFdZ%=Gd+s z<0}A^rYu6s&fvPrYt`Xh?q#yo1=XKbshZxUpOo8n+^rfXNEr}Uw)Jpc``WTc3K?!z zz4EQhxMJpoU9~xyknae3W!=3h&@>+{3^?^Q4ZH(&@!V03ek(H!R}tx*`g zuA$-4K=PqsdA&OxoPMahYSeK{2|vrlQ~q^O{z5vs%+^6cJO0?^wNh$j$^)Mx&YTvS zW#wlMuFf<9gVCt!oo{N60rr{JHYXJeNV9=yrnIl-_!JAOcT&THIL4KT%iRm7^hVi~ zVJ)*t-l&~@tnW+}gc=x=?J@uz%Zuvr*>+r9%9x(qBeGf8LdU=43Qa?ys|9?BCNw=t z5t2=TGK<3YbM zxGFsJY~wKFXoyDNywf_AuLZ#0#=qHp3wjLT+_ReB{&=*=%(|^L7wEmv5i&g9SMiC< zv;NGkzF*WdTecD{y?;W*)MLSluzXPWOAcOY&}qQ{ek7yFoSqd;EgYE?%Sk}di4hiW z1XbR`ARk`e*d9w;m!k)3c;Du0o+b*CT&~bQpH7|4hA^?xQw7I15apeYE&7KLaOPC6&Se+UB_!1)hkRWf(*n=fP zyZ9Agp}>O$S+iUao}ENEn>eTZWba3t>?o9W4*d@!TU0SzG|k3KBAldojyfk-0S}4- z&3=(5CX%qHu)f-Pfu0t34n)l_gFsbLQ`sbY?-jSQstKeYr+2LY{*iZQq+m`D=WIzs~31|22ERST!m+VhiLrO-KZm*oUhvVKTKNFQ3)@+ z?k{#_Gj-dqVoF2V;OcoVET25Ie+*v;)3? z_JuF-1yC(`v@=Ti$BPlphLcvhbF7TffZa8#hI|RXnw@xc+sz{#RD$cRtfO4hE2~%h z?JGM!8ZM+#LI&u4a7Y0Z(oh25NC8dD#j%S|E6tX59i-`crXrkOS>aXzAgo3D9q=+dHn$Ur;dsT1GN zM8fcevwGR%3cgNMO5 zy{&`XWiO7b=ptvhX@M0%-?U;wlz}_#nMX}fqIIF$&QOCqU$F5q`na*xEc%FXIb@gC zH~g3(<8r(bt-=7@T5GIO)J4wTWCqI*UW=t)!mS7lhLf6gY!+)x{_$e%^Jv5Z4EU6H zc8j%e`AH0xq85J}e?~u_SV2!W(DrX=M+J2!F!C40Gx8V3Z@@3zUlRYINMdko2i6*o zhB0Z*gfPzf5+RAU7Qng9E^yn9_v`_yhQK%VBSCWK*m^Z=jf_3 z0&I3&yzE77`N)4_Np*o>Q$=Mm;JwnMq&ozx-E&M9y;lg~ylkc;^`U{*z5{x_?nt1?_O?ljPWs_)D0uM_S$kZDovWh1(r7m|eZ)|;c6vm5y@n1xlR2A;i5M%heBJno$uNK*l?5};3KNK6 ztetctm(z4oD~;u1(D12yWrUMtXYL~}#^Y!M#qoD5%{U^{`Hbp*>?G?3ME%bI$}PUJ z1^FM`mQpL5WQ+2ivVs0mjb<-Xln5Njf!*@%gIus}fUXO_&sW%E0uv z^Kknz@^;CKDzI^`BX1wNYi(p+AbcJ&vzF$~oJ|~Eg%&mvLi|)Gkh$3Y70J$9$x>kP1xirne#XkM8{In` zly!W{UEQ>dS3UIyMY`>Km#2V-vz=>$Z)?PY*7N>RwneV!M7(W}(_dTfcSaVid>TG? z9Jf3AxNf!`e%5s*{$}3s!%InSq@g+jL$%@4-7+djSJc5bZMoZ#_;txg8K--g%bFe+ zW@F#g6))dQjSyl+(|T8*>$!=|P&Bm7^-g>y8C~OcY_><4k;iR8yp!Ixi;bD(ip)%3 zXN4IXYIz^R2ilLErgZP8ePQ?5Zp9|xsVsPog_|o5>*8zMyr+Y84buZb4 zo6XphP3<0(h5*NX~R!sBBHH>K-+daq~ZqgJ?_y1awxMz9MX@X}eIDbX*+9 zThiLu?-0G*1sSh*1Uc+=8HCMU@1abNQ$3B}$G4viCsxgysx2?TMrFQr){rin7Ard! zslP-W-yWOaH)&B32_=x$nRsjSQ}0_=;K=Ml5ny@M_+!J9heUH(l;Md&>2O3V;#X~r z^>Jg-EE?0Ab zz#8L)f42g0ok____Z7vR{?$X`f$07c@$t&xYCEXEzv3k1!58Hz_BINWzC>)bep8oG zCR=2E^TcrVBdFff$IAZpAX4?dV+^_`#Pzhkm?9iUooxW(3cA@^PbWpyiyX&>vr%lf?I zb%EYZo9fN=LGnV`_^MdA%N`{?TmI-mK+d<$$MnwWBZ>1OaU3F4cUhjM5~5jgR1YzZ z9x-(_RhUsI6~>dcp(4gl!Er}ZlHxt(|Ytoz{yC85wbqtx;}NpWX?d& z$}dEfpgBjOUZRBagTDn^zC}+NC!lLXKh56Pl{#U#X%=q&ZV~XpsyN=ExC~jbVFu8Cl1E(737&cNu(Av)8;RbQAEB9K zxE;MSn42CK^(wnNOl9Fsh$oVksf#6=$df6+?|E&RF5-(Z?Q-z=17L`7?y&&~;~ft< zEY-STs>K5dS$(jDBz$MB%3zLM{et{mV*(0NjHmagKWz0VP&ApMry(Abof#W{gbLYm zQR<^6D})my{K6P*7xbevRBy9CPABxt<3`-2)o>@YlT^kib?4~fPABxjv1guCy#C!2 zB2fwwTGF(LuYmY3u>WuHu{|2H{X`z@4~Tk_wtVSJ)*lccj9qs|JFa$~9}q5D-QTB- z7W`2H;0wD0`}po9Dw-PEwc*|Tj><9k*0RQH(5W0XAkgG^uch8%lQ>^N05MLek&mwf zpTS@Ip23I&zrcE9^gH@KV6XoW_NPU*PbdWoJ8$LY8`A$07E8x+)9E90gW!!Zax!N< z6vygDx7RTAP*o79r6tOu+6Y$ z;Sj14yog_!svyG`!N#e@yPXl6tZ!YM6xR6Cmd%s))APZBQeyZ^`PfDiLG8%g*a|!D zi?EJ8W{eksWiI5BgwbX9lOL#k>->5KX^_J@l;P(-($r#M*v|UbD@MnBn$dKA#{mAm zfNFZFgz>#)PH>4&$z(_wWv!^ZhV~`7x6ofRsos(hMiWItE0vp3Fq>1!n>vl&8WR(m(>vDgeGX#(SGH3bRgsx}>Lvw=? zXEX%utnU)aC+VO|znB*tXL@Era23fEej%_o>i;B4{xo+sQtwdhp zI#Bq@rnlSDsJX52orH9W(4K8yM50EiEmLSrIJN85%OMbh-^YBQ^bn|p&UGFk`}QH0 zT3EaAb9#w!1y}xI{Pmg5H}~rwKLMkS)XUrn42+I;4!M#zH1RT? zy)Z4J$$0icvEGtkpSHIcrs#S(7k$cs!B3H#L2SyQMQV5!p(trseP}FcAwj$nPNJ;2 zi^-geX^vu4#f?+%+i_}(lbj+q#d81_$#~Psn9_(c_R3ke2#G~FoiqyWq={4@%|}t_zNS8fq_D8QalL_5`g36xvBTXdueWGJee|QwYP# zz#lmRsS+jNJLRs%gvbYm?(`HxaY)=sgam8@i|~*d&a%v?Q^tJtimWoOB4w7i(XN#| zHs<-h6zoBjG7b=sy2?2q$d_6PVQp{94GAlMD;leb8)p58f}MvMomCS+790Ov_We0W zLQ}tAUd%w{5as~sPi8Sv#ECEx(ZvB);mBGg(GqIUcNtSn%(ju2$TgDTWE+X!M2c4? zg+>(m^Ybk0)|$5K1PK_Yh*b{y8EZ0?capW*%QbyU-lU1#*T!y#T^pC&E6Br#To>5u zui&!KZzN-h^)f|8$hGGMUl&A6h|QZp5{(m$5)n_!@)fODd)!bo0EX`4=-#*uGhr*i zeA4BtC4AXIpQuZVWcad!opFR94^{j=ZX*oL__EZs4!vWBW$!ya!@Kry^J_)i(Ai<8 z-)@M^KD$vS`A;_-N(!;W?|+4&MSCg*4kh__DEGfZd9z*c3VP?AAt!3t%?(A}FE3cU z!Cp8O{>cl;B8=Z&5KI3DFFMbX&u;8$s3UtU1bh*X%2_+MERI)yO2MvsZzM<2gF~0v zP7c?Y0#5<***AoJ%#M6+QXg}zp#9ejy-dy@-?oS%N9&HkMTDBSj2YmgmL=;N@Y3}$ zh05c$6LRv|@EmISNM)&HscYQS{Y)UW`6(r|cU|XZlOMgAT7atXHuBNP>GVA3XX~0= z)K>m`CARy>Fbj&$od(N;JGCh;ZgnalMmS6@6fh$5lCQJ3c$;WFnsLWIpI6qz=}alw z=fJxtSB$)h4ev?@ujE#8O9wc#0+h%{^f1JB1wQItUr4Vs znFLZU;Nxw$yx;3^RM+*u|4RRc4;oknIyvH9m$ByL#`u-gc$?AMyBO@V`~o$maEJ#` zCd9q`&MDRdr?zV81a@G4GvYrp&Z{vA;7WtjL|Aw2qNVk~Me_T>f3PV+fz!oP$jVGU zFFzX^0%CBw_*X8OvOaJ+BJ=}N)gqz~p4LJ0Vk2Whh$G@J*1nQ0igB z?E|zLTk~?I9Ln}lmr#9thdI$QhAljQA%*p+KM*3S7hYT!Lx5VkvU1}Ne&QD+ZSXTA z4abR~TIB8Y``dsvpYqoNDd238v~hXp8e;yV3}PooZ$EsK%g-N>Ed^Fyeijm%UT?VG zk)1+LB?qBN#uJpfJwet1(7ihO_s2G%6E}~+{=K&a9vRaQlu3c-?pNxVHE(U~wXOZQs5MLSD()y5JT`K_8MYOsvEvwP(E=e?v zMtwKr+rlvGplF&Y77-oDws70tp3~dCD8qQk*NJTbYda%PEEk2vq%%d^gBh8%las~d04Ema1_i&w!x_NhN>-Kv>Eg5v`36$74bS*A!NlhS zJ~%HK*HSUHXP1ZewNJhaYT7#X7DPasYDi%kuNfT$U zfmDBB*0}cS3a7oXA6RtG1BXMD~4XXK7F|Eown$jEz8(bgX zjS$dSkyL8pM&JWma@%&`@TuNg_uilHsXfck84oITwZav2-lxa_s?NTOz<#2cXlQhw#=yFiqg0Ai)?~YB-=T` zDV42J9O8DR@$^H9+QYUIyU56&g%&F_dSuoj?!Uxs8?NaCJXVYvRZMrKgS}^ev-3** zOFaE7|0m^@e9RCaJ2thM2F5K6Jy3$wC3OF1z5mOD%BcNC#l1tM1 zHxc;PD^;Z{{UYi!`Sg3#l^!^cHKDETtaWu*UN7wba(?al^SlkR*;l zwgPf(v482LatV*(FG4uVXTnw^5*LPNLh4er#08SyAX5x5=q`u0@qPcOY#Q2Rwoyp) zVRei`V`5!uyfa0`PiM=5$XtNA&|4moK(~Fxa8!d!)Y3Ga1L35Ckn@vc)V+meAO!+ND$CevaWKxpKfTH%F{;Ij_{V zCV{bK4G4vJ`RUpmy&X;&vQGnK+bWCm*<0l*bCfXLCh1v8ee4&IE>mY7zJU!aL|h@mlBNEdA*`X%UG}=q zQdJY7FFkUD1VWq`>$3zdcCOnov|J!h}f9#XMv}yQlh@pKxlPjhlJ@{ab#RSejrzMxSUvWqP zP=roD;fYgA{_g_*;&v>9pNPU9zZ2*(6JgO@&|jT={1aKHRre@@3dfjkuwLV!?oB>= zXA_)c^oB~D(R-WVLyq<&4Tu^n`Pl<9r3(!ReLLHTog^gaRi9BN>hq){{H_-g?@Loe z0`bYP@nXxu{ZQH&h)`^r3=F-47SxbCQI08&@1t&a+7kqJ!yw8tfv=(iG%V1YNP_vW z0cLiF`EsuvlwUTj^VMcC-r{*yR;0^1LvVrbQTP*7!YLBxbj?87v84wI?nSgwRS!5K z!B?hcNCsGj>1x;=ZTS-@NufY-krNgg;Goz<&YTEU(n4|ZZ4o>g!G@Zw!7Zy(*!8T+ z1;!MbLpG^1?qXh+I37~7eIEngQPT2IM1Z1;1F=gSMD5eC%2B%GgCjW8>oAo0TR&{IC|STtB1_Z0?TH8%Hg z2tAZ-J}kfbcz7E*1`Y&Z%xy@xI(rj~0t|F>DFVs&2j+ba&6FwLL9%Cw+!R1f^$ zzMp=hUoam+*o*P_l;A96^ow;U_aQ`KqrYev6Lv{+l={GN&6fWp0b-T$rI54`MPzj( z3N!c7NgM-GfnNm1R9z$K-)tvH-b~Iay*?95zCtLEK26L&$RGUv%v!Kfq3-&!l= zf1tK0{|hSo@)@-)V1VEEQ;`IP<+oe`$y|F(32{-RQ*lxQZ`FTs+h7O*`$(c@QlZdNBW5jo*L z+hY-2dP9F3|0Oh;XI65Wa8bFQRZckMhXyLTLeRw=tR>HPSymlX_sshuRnON88H~;) z*ugM2Lm24n#X8iHVkhD951ktFY&-G6^@kJ~_N)Zo6*#IhgJ)1Gi?KAhl!6NOD+mCO zdQ;nbSbOSRNP~2V6!6A!AUWL6E6#bh{`I*w^hFUq-wL^;T3h^&=<{vtD1;VTa!4^1 zY(c*={EPYNMjI@QVQML0&zF`QW}@~3(F9GcwT1_;nlGUywTyeVYy`Y2olovnW=kB+h}JxPcV}wD7Fp7z0IoUREz@VWF+9a0yyav7FVQv{+K1ixqd3 zvTeQU>AItvf8aPg3T@@ObG5xXwLfTGNB>>i1XK1CT-95HPwk9&K!z@_MVlqI^6 z_4u|D#C)d}w#aN9u*LRP54i-l;4`ruH)Bo0W}4(hms@g|tEc5wReG)K5PC<|So^1F zmi%3`&GsQd9OD*UMToFdqD`V$HjsXu{@2LLDfJdfcm_MG%6&|SSJb*&X1xd=?72Et zRg;ql-FMp=R>iN)*+(`fDtHw@t_2pw2msE$@(GSgH3F?Pc z4#LekhgFj=jk_PWGngx1+x`;EoCk|NJd5f3g2gtVjh&OK1@)ht4#yKy^=dl8M}*rK zbjeZ?!Kh;4nP{%GojQzjS@xf}`cH)(4bBUzUdge3;JcC(hq4QTukRcS0@MzxNU@d9 ze0;t00}$?#^Uf7{SIp9;B`2z<{-Q;y_a`k+L$DT5^I5Bz>shOQ_P3T30>@vpVho?P zR%s8PY)%fDc<&xA;GVK;ZW@W_$0EEJU~1}CUlYRJuj*YtX@)#4XM0f0tcdmNz)OTH zV|eiU#8TipO+U`vIA-69KsHAe%j{rGc_Tz#U{xqTrH8N>mna22Y5gaCQmQ=wC9*9S}@*8vbHSb$?kq1 z;@&2It=%p(xy@^PEauwo(x5QO>EWg}QbC(LI>ouvGQ488K!8 zK}u}0T3w!ff-~HRHpc)fiZ#y+COTIhkZV?~h-FWwg(A-}7Fo)|UHWY_yfjuu-dS^9 zbX}G;+{StA^OeA^DRKWBkE@^ZFLGU9=5P+as7K_Up&Ui3uaU|57W%yeXJ_rCz45z?x9GfJ zmTi!$!GYlV*tx`@BsmC3-aUwjuNSCaybf!1hHyOi!eUdg9QDDT3sv8SkaId}8`!R-nXWj5MD>E#^^rK+mL2wAa3KngKxmW!KbDwDrQ|-{7p;kW9iJN?Wf%* z=)ac7f(HAt2Enz-4B#?&!avGmf0rcxxe)$;EKjbF<&TD9c_CVb(QL}+7lckaF)>lA z^~Q)#(17xj0ibiSVS&sZmQ=V4A;ygQXxzu6mdW?&Y`esAmPy2>ZJK$+L2j#@318Km zTbw7Q+ks_O&XQc(4g{lO-d7W%K|X@MI5&eg=Jh5yZmNGwoYpY7YoWaaLCjsC>w3UX zK+$^KUx4Jc){4HOjo)c&3l>*>jDe-N;uH2KIKEpoV5@qrzs4*4jTYR1?kaUc^Q#Y} zd*QOQX!7Hx_tL~ZWIa_MMY%8!`MvF7|2jQZH$%!C;6iO{Xb1?bKc>gk*g(hy13>btes5@6cdVmrk>d(cGirIR*H?QiF)Ut(fl^^9k z5}>jSjeiL%U{(vhabS|+udHOzs(VJM5>K&eqhdYTeGF~zao)cGod8M6Qm6kr5=lTQ zq;X0dbUG2;Pin)rx9#ut1PQq0gJeY8r$zhoQcTsy#v?n#a!RL=vcx$MI4@7T10_fo z_G|Aa7R+=GpF6jke4m^p+0vqaSs(?-+2!= zfKB)fZx}$Lur)Ec%}v$uwuO-UNy-Ewh&Abg+Sq5W?7M++Lj8*ixgdK9hDzYeR-znQ zovWlaU@Cb*34on@uIF&3*+#!ezgh~h?GAk_SM&j8e2bXB9+D3e)XpBVbk&%AO#XPE zK8p6&w?MOyt%3vw0>b3QpPDor|CjS$uL^F`-~=~m1PG4TkW1C(aWLFtFwtx{7qcF+ zQ7GWNRKOA+isn7+IHCTO1i}plk!F7cIbH!{z1)($uFr>30Tc@I@+&B91g>i_te7cD z>8}`f>mxs;iDWYB{)9x&SzD%@)i;*Q_2a!3G(JDZtAP>fd$Ts8Ilk4tV zq#){$NGlE%uYC5JkAiz0$s0~ml!_&}wG`A#I&Lo7LQFuyG`Ji>FQVe8uur)u zjseFJrhr|ikQDVqPv93!vG{0)sX11@I_Ai}{}l3OXyCw^a5~x$CbpjsOSd2MwHvj-#!a(9Gy>LK zQ&V_fzD5_;gKOI z9B)Jk6Q=cbO~L5L<)!VJCQxc9t<{TE*MG8=06uL7LFU2DL#)*JV-4ix-+5Le!vMUiX$}zMQ+F1OKcBkB+ZdfOxzD3Cd`zG zg!Z7y6S6b}L;%8;AyY~%Bz|57R>T6&fpcP6TptMTyw=#FVh05Ci_1_~B$Vo_x^CUx z>lvDtWK%c#l}>M=s|u|Obnj#ME)HD|+{Q2U;cv~>B~i@`)Y(&R|2XO0PZ{hriz$~^ zu2+!ZS^@b@O6TzB383iWKE_!JOhv8g`vl%F%z1qou|jKW6|p_5I2y3Evff<5QPZ4Q z7P3V4)HJe=t-+q?Ape-~%1znD{IFT?;~|32_fxLIV=N_q+FC1kR5R(i5F02OQ-XL^ zTr(I&emf-*7O^UmuQwGwysjaaxpP!waBM5HG{Ja}4T+I5xdeT_s!@2sc(CS_o>`aB z$BmUPqS)s-NFg~mQvn@~Utaa98GSY}fd}1dF?_IX`A(GeiqlYuYZS@miEeOL{H4`< z0>Xx_CpgEGM;9037pAd-#BiI-H+J~I)*j`pF;l=q=5^T*!8^O7rx(Oe@PGZRNgP7w zg9Lxve+Tb|nBb3l%@4LVPT*cJ-RG7UNA3TqVWd7zTBeuzMQ{~{aYPyx4nj@?0HVPU z<`qK8vgnp<4X>c7VOMMulzD`xSrCjk+i7`CZ!&of`IeXXqy;eeo|9lR| z*Qy(FZTmh|>5H}qKl(VG5Z9vKD!DSbr`cr`iiLRh@HowA&4*M)P8jB z+Fri9wrksnVYT03NWP{%>0?qw_=nf{{a7&1nKWgf6X5L%tXrk z52nB65`Sm->*n`oh60v90{PQc_;>hU*Yls@FF7Ip)9RL!f`xlN4Icd41-=k;xt^c> EA1`U8cK`qY literal 0 HcmV?d00001 diff --git a/WebsiteArtifacts/apidocs/powershell/examples/Documents/TestHTML.docx b/WebsiteArtifacts/apidocs/powershell/examples/Documents/TestHTML.docx new file mode 100644 index 0000000000000000000000000000000000000000..e4672d3a7c0096f189497d94e22c851a5589102d GIT binary patch literal 14446 zcma)j1z4NQx;0*`SaEkK?k+9v8r&tg2A3kmy|_bhcQ00oJB8v}w0LocKeT(Fv-dvd z{`bPeWXODLy)s`iE0cGWWT9a&As`^&Au0;qsZRytywZk*fPjRDfIx>JgmAM5nKGN& zo4D8l?VOq1ZEZ+%aUp0wJ_G*q=TJ@AI)DZ3k)G_>dI4qVgB70F+y)~30dHT~kTFIa zVD{lQQ`wr^fjMu#8xCaNHhlH&25QCgOkG+fz@vn}NY0D2ADw_KXMz!*6&C0RY2*0SsG47mUmARK# zAf@gd%$ZHW5q#mIyi!Oj-exPLPw0;0$w7MSjfhKf+PStqrHmFs2lnKU+( zt?*l?h#5^&88+v)>(R`W4(A4i-kuLlw=r4|Pb9of8JQA8@a{rx9eCm>fvYI1t+B&> zj#=IiO5jOC{FU%ulT>toLrrg!eEIsDHjDoSZ#ufKLDGD?)G4HBYMc0gF*M z^K8NdY1vwSlwqH1dLMB0t-h=^yC!hhdGHIgN^5E7Bg7{%3=FpUH`IX-NgBRjqs*RAry!{jUOyX7g=jdb6~jbr=cw&km+EtmVU zrj^#@>AUou<)e$`!-^))Mt!+s`?0cyi%xIQ5{}c()2>g;JJ#i@yIB(TvEj0oI+DYv z_B$WzrRA6Q(Z)*xDj7vIUck}J>BruMqc3;%de$4V&W$T|4||#U?OU;z+s*qLvszkN zJ25|jP9Ls}7Z&SM?6T3%jjMF~ow8hg&t5nkDANvgwtL|`9s`}wS1%_*8(Ro3cVemg^S}*E8U~X_!HFdRbk9l*o?-Yy4ma7KTH6Jr~ z5w@4FJX{0!o3}Umk~gi}H|Q&0As!K$Fb1g0A@mS;{cd9q!lXX4!N`ha45 ziJuUkwD=Y?XFa^kJ?R%858Ni~w|XxL?j1TW4hWvoch-c%Ry7NoTCZ%_PlgklBD@6} zW*>{1zGFNLKV2$1ojvxkjFF5AY+XK%zH{j4 z&~!r9+4qE)?!&3!I``qGzV5zYg=hs5?I75}bs$V@9WS?qz zrRR5yMvUS!_%!2r`=h)=dp{)esrN3O#%V)~JA~Qi;UwOgzw+33WmS&4AC;sW=PsaK zUuSWychTI-_TkaS*7u_P;==7oE4YL5^!w1f{X?f$o{9`Y{RDZ=I=M7_O72`-TR((?$l(_o{<0;2m-R434 z3;D}3dyvw*`0l-QLbcV+=38o-X--S~S)YX6@WF8mbHmh)VqN9giqGW8{Rdb>z0 z8jIQ8b=R@*C?&yScWRJPFS{}#eO8#1=84>SSGYO(OLc))YSrth@b9t4#gH{}KLh2EHlV9MRHQ}w;gQkpxfMrA;RAoaqXcfH`809-BK z)PtFck@zDr=cp28By-TDq4VnmI1||%4qUBp3mk!Wk~wo)0*Ji|+sd@A3aHyJv!?Qt z4l;;?jCamyF}aGe510GG^GYh`DCXw-PW%)uyB=#f-~E7!c;6qgk*Qc{?c+E)yQA5f{)DgtylD`be$$eYs7bRObNVoj_Ajv6Iv#)x0(wp3j?$y;Sa+5 zcX=kCtcxcUD_!Q+8|$jylZ+(KzI4yIjlLee0`X|#gg=ZrAFg>2xd-`33`Gh&U0lZa zYSO1zKg{ovX3sr%bs}Zcg!~|uz^TgrGBKJ6z^z5NI0`BKeDBEaK!wExt)bGz&a#-2 zWnML*>VSci6%aocM-ADR7GsX)#MWhn2u#YMn4@kCm77y|Zd@A!n24EJ= z@jk-d)v}PkvdIPm-UYLDUE&RapSEAA$;$GEf{5`%A2ig7k_ztcI2`lzaM7K5h)!&q z(=?DF*5Uu!G@_JF?3g+I@L15|^)q4iJ_`53ETpotEDD^Jz4poURNt@{Ks| z2SMmA^9^~?FYfUiSByN~ley)L$X{9KibpmlIa9a3cI8=Ln7TRY32vcw>EIm1m(=z8 zq|K9gH%;eG)kF7s2T=y+gVXB*Bs6W+UE@G(jZZ1}Wej?7ZY>YS50+jf%ouE38W~ro zEGIe4n`%#WZYWi{l`HJwThWg{HtH+PT`+(bJu6!JHy_W#Mvo&Wftyz{yKJYeMb3CP z_kg_zV-$KlIiK-FCW=lZ*<`Y#;kjb6AH$lE?>i!~NVkSHSyej9;f7j16(Sm#rewwtwMvGPDpW}aC2-JGJ z_aEp~Ip9~|Fd~|6V>v_#a5y|xyRjVi1UNkOhuyz+{+snwM2OsH%g-+Svi$7ApPv0` z`43+kZBp;Hk{IbFyyt7#dXgFGMZM?Q5;?`dy*Cc?wNUxbV^;IE#(#|c>!Lq8HuG#( z!;CuWk=M0AU?{VWI^3*E%(3zmi0cz*Tt!v&4NUwbO6DDvw&wS}-SU)X)#J&nFse^- zL_5|rtgub9uU?r7+u6`~lRjpm2QA*59BXkPRY=K`_}37r+I`_}9od)^a*GnP2NKVp zx5!d>(u)$@En%UzC;C^utL%(k844U1nw1Zcy{_l(M>QT<)-A$pX-x+S&vr>3nbV~0 z&rrD4o{hL{$MVlxZh!hYkQtz`Honn>da5wrz65hr(eD4d+h`(ouER3Yr_RNw%NhjiTzvH#x=zUVn5{PipJa z(u%`3e^*f5r-l9npLwljN_@aFBUbgzMmd8=R9!74=U5-lGbE66EF5jd{i|UnU6CIc zb&78el(xzc_xplxE)H*33R zaSOzWvVn*9JdB_s!|Ldz*FS0~+=jqU9oC-Hk&7hh*U-i1YbY;EPnH#9Q0=M#(&Ns< zmCGpGWxiE`8$dm{nQbO*mzi|;2hvMd#c?o6RjF`-n`V5Rd=1?wq{%Yp=Z5lkgY$DP z?wn3-y@6F$> z+zxj3_a#z#xw9_oz0fB(3D^}pmeYhBH)yKd;!PK>a4AYS@lC+HJzSi=33&VJJ3`5$ zAiuBBDoHddd@mfyQ?r?Mcm?WKT8s!Z!rLmo{s6qHDwKYQn)oU4_$jOA^9T1`wNBLR zLt^fbc)W+F`)0j6ww34*G-A)TN3)fTstm34QN``=pq)gg!#>XiqK>1LsCXuKfdnPF zV2`#bd+l$TSN(&Z zPVNkY7$se3-OjW+K~359%x+EX7dwl$NBPiKIX=POgy5^mFZsP{9 z1e4`!aJ%A=cJwAM{dG2&c^yo&=<5@|#PKQdw7PP4QWJ?*RJ9m;_VvAYg{Um79lu9_iC@g$;js{lnvS z?|rwU@RGeC|Bol9pV>Y348F?CUX6GUAjf+K4pMuZ8#Ak_!>Rp<4Ply*^#>RHP}a7v zN(rji`T;8hU-vR`XDXU&%|jQ>3(;n6EO)HgX#KUA=@RZEveeBXNe=PRX{WLU4J%}j zMb#HXVp+QUw_iMZOe5IldkWhZ;0|9)uD+6)?lF3&!bxChBP`c*+4o?OxC*21 zr1&LUAljX0v;Anz(+fa>2SGfIOyd1fdvF0R*p}wq6HXx!(2W$iJ6oWeUrvOjtx|ax z31g&#Bh_D|zobvK+4y8LPB?=|lf0!5(}*Yi!(H8XW6UO5_6&Z*$S%(Kh6~&orM^lN zP5xAZ=q^UbOZ)(B6|RLyoU5xd%MM5@V*AZt8FZS4XoJU4RnvVtB=Rv3M{8#`l};hq z=6Eyui&?o~)h^DS7@lU=T5^<61?QmwR?_pKbq9*aeeK@R-vrhNUM7+&SP^}_M=u&M z8^;#QxZ${#Zyd?`AiN<#sLPJ006U8&yuP+D7|!z}X_5k^lnO{OW`l9RP4ICWUDB=? z(@|v~cPEBNoXfD0be$nN0`l(Lqhabh(tdx=cvusomp}(Xu=|8BmM}s#{J`FWuQ@}w zv!d|uOOqsQ$x-Q%uE@(0UdNn=U3wqNo;e;8Azlkaad`H9#*0u>6z|y4@X)lQAF`>( zBL@1}d-l}P$X?P_2+kNDkZ3_@yl1rNV<>xmXmqqd_Z>SBF2qU~ct>bYCjIBiX=oJMrZZCtM_0C*B{p7F6u^B81%!QZ z;I*&&NyBA3yN4>opYo=PMku1$l-pDTxZzu=w+CnJ>xqO0X+>f!?G*r2g8WqAtn0S~ zQ;y2!cX&F($7b0$o-yHH`NL313wK!GW?>!fBcjk}*G5{AHDS6po3H92$Ua^YCD$kG zz>$5_S+`Muv|E^YLH5~o%bF;YV;G4v@FRFFRKR(-A?31lgjRwjGvwF7By*^HgDmza ziG&7amF+I=bqqv<`b0HWrng4z^$rb+Awp#TN4^&E3o;lz^e@K5_tbF9*0q&TBEJor z9pZ+1XJV7WeCv3O15xE?k@@MYQ#G%}k)OYXuP(=_$cs1g;0{D{7KeY#z#EBpXof6) zk5-+@7>?Ggr4C2lSqcjenHZw1Vi$od@}{ZhwK1Zc@mH|ZwF&jn3Ta!?=pqwXWFt5c zcUvrfcX}OJOh^~(G@X56zAhzRpr74qA~MqW=wEi(e%ZDCWf#e$CPUG93Y!~34GpTX zE)L$m_2J_{Wq{+^iJ#m|f`h9-X)H$EVGsL;az#RH((8Dv7)wc3sd(qeX`NGaRc%Qz zQab6ZS`N&wZ6ygpv}d<%-73gU{+djX@7~hX3I@x*t_M1+t$iGjF&u2@3VTWQL>5_! zD!xWJe5!08>$s^AMz`^S%De?*)GJi%410pJMNHl3OR#le0)vI)WUzHnMwiFbR$h#p0OUvve)cz)QDQ$bIw<%`I39AMGmk5V;c zA;mBHBE`Z{xe$w4;CL?>9~vjm_|XwWWz>U;^PW>xMvyG5JIL@bLDgSo&w)%yR%|1* zZ&xt!`N5Jm9`L%nd~Dr50D;^`}C*ALyi({5aWop$XHR8ett+|m*#XE-eZXF zBkQ&~b%+5q+3Ir;?ZRBcM4{4K{6aVO zyN>50Q=xyOViw#bE3>uOls_@_!LHm_1GdL{v!$&rC%>@%%}@JYM_I-S59WwiklNW1 zMX5&<1gA2med%_EC+9IfI-paS&FtM+f>Z^ZWeHv%Gh?#-{-iOzs7eiSU+E29cmZWm z;soF@F;k6ER1Z_x5o!MtJ;+7Juei9H32R2Jz1l7+)QXj4)JyL_IRIb|L~FY6VlW4q z+M&3*S_Qlgn8RB45}lLjnWK+tx*5>k2aF2c^Fg}@6^hw8)s}xNZ)dFqu{RPAhgTpg z_j=-%ITq38f|Zd7pkbCD(7% z2+02?w~?HX4&0A3rXRsfskti}BLZM5ODoWml`hD}lxWjb(B`hI`|MHB2{%9}D{s-1 z-sgL672%^#8}g-&d8m>%;O7^Z;da*Rc2vkl{Ncxa?w@{WK&mvDDuexC{4yztX=DkR zn@i3B2o%2{XW%3+{kr_nCcG{e_RZ=;Qkv2IBhHm94bq4_u z#^a`#foNDiG7omxffX4_YMF)Hy^3)nW_YNYdLJDUwkWB7NoFc{AvrRuY%Rrl(t=j; z!i>m)ig;08X~Wv}R=qF*Q{1XnSwBlnW{`uN9bUzCK@aO|O7#BnNE2)ZR8c}zes+7g zD2DYEQ^_9IhB~E&iXfiCa0N*0_x<%433r{;ViiB>&d%90ym&yUBiz`+ zBFP$UV0QWhfJJ>4b+M+U33fOVFwJIcOTv|8LUf-S;)9ST7z-$%0kT8J&@GTwVJIIy zQF<#aNF!sJkAYLz4ZlS9Svq+?9Np}pD}Pa5KOy;4bI2$V=J-X*=6zOM8O@X|IzitAf%ddqCxvat`@unf4LE;0!$0S_H64@{C1!^J{ z*c67p{nGvASK;tU+_E{EqM`;0#V_sG$F_2~K8|iUYI@Wo!kN&(h%~KmDdcG*+a`aJ zl9bR34}$)NK|$&wjhj<1F0_ajNYsUh+~??qQH$%_T`fThZ&RD4Ie*0qG{^- zJ4kdmhnFX;P?ebskX&|Jos5dxV8YBv^Z0v^z%f`REg@M&+?dPhFK@kZ8vP7fdMM_kJ`my2G zL@B{h09j6r*9tf!zY#KL>%ZpG@6U@1K&+&LB5bo484c8~7CTMQV{V~V+``i2<+~78 zFIoxQkaxYgbPS}zw@bt3$U1`Ic#%19iOW>5lk|1Eg0qe*z1}A&QxvtpXtAjexp%lK z@!z6@R_+o+Rr4IrLms88jBydAYi@`bDgjHP7-|@?6?hrX%mFXsw7F0h;trI`&r4-4 zc&S9|wUUI&3t!Tv22YXVEdNPYqf`pkuH-W#Rx=eCRRgIi4Tvqy1q*}3 z^k-o}N2laPD2asyRxNa;VAY~l?n=p0I#A)1<=j#Uh~3Lj&2%btQUGI&p$p@R$(6;y zVhr&*87#)s0Bi7w;1(>ON{hkr2~e{T8>-YB)7Zoh>a^Q2!IjuJXZem{DKjVhb71{YM2*Ws@<`1UFl7@Xuq2v{?_j&1~~y4ScK| zaHC_HRKFg>#>x47t-w{3<;Hk3cI#mN@LF8$``E4I0^;iYdbwQWv1$B>`yZ6m{f+;k z%qa9b$vmjEUTN6mw?4~6wBalH7v=F{{CVb5vZ(k9T-5n_^mnSnqx2FB0u|RvSUUnG zyc<*{dj*tuE~-JEVco@8}JK6ie6QFn698)K3?U89Lhtfo1d?0=u2Ru0o`>< zWqf%Fge3~m361p9{3=HhRM0izzlP$!l=5{&{2IDsdLF6-4;lO#a^fiETYdj)h>Puc z2%8$Z#^cuz-ISV|FSTT8JVk+?{A6@OYxdxq15+!1is@=N6SW5P!Pvb`Da(lXVu~#x ze8y8T=OynZ51hxIcOxFNK>%J|=~O%)4Hdf1iHZcJdf}*P?dWNFfy>u94#u|~(@Xo@ zT#sdf+`0M%85NDz=1-x@spR4eXD@0FJY*P7N+vX&Lgo%~s1qa9Eb>!Ngk4y|`S}Ky zf25*OT+MhEqu@cU^nHKK*i;`N9^eBfgt-e4((JzdI=CMGY*gMH)kEd7>EdkH4r z=xbXA*Ci$m$5_W16Tobmu%ivLDPa!aD5aBsi18DEya5qfTB20Bl2+;3kdaoge+Ypf zb@3DEGXfxO-te2FNe3}PoL&X2aci9jT9Ps|a$4WzmM=xV%G>JUf*Wr2WAB zkxQJE1kwZQbc<(ll2HHfjeg6V$QylgQdGz{dk`Lx-No1gPVoy~q4}5C5I0+(r0P7n zI0Jgv&4L0mvp(6Ot$t4FnwLlD{}Jzp=XgKN;tf2<`{s{$ zbLj-dloPQbJbY=Vc&nhoFh4w}&jy^njkM?V-GI|q>P`E9rqc)0Re}8jD@6fX{iOWs z9FG6SDEIpR!bk^sx8CB}e1 zYoS$u-cky`I8ky+wMJkESu2zap@sDGE|eTSBJXlEbBAhcqkEA zfxJhkB=d3Z0xJ-EB}Pv8RVCIMa^tVp62ocw18U;e!7qFQRyj75kXN7g7gm3A&yo&J z*F&uSTH@jO;#QD7eW0zW>wZ9#=9IrjEp}zgUiH(qLhH!Emlf~HJ&7tTh;}Fo|M`;p z;FZ+8$`ez{Xu0IX>? zK$(gZW&MMP(QZN#lN-#_LNb2bced#wgsHisHU4NcYTAzM$C+^A3NfRA-SM{J8>zP_ z7H@c{_yz$Zk_o8>)^~z2dXnc2g~{J+<&+(G&fA4|i6OSp8d4i+U3$RgZHus83UQ)2 zT1ovQg))T_YN+^XOU|RxZOznGv!y_>tH*A?cmL;$6Ar)t- zre3MlYvmwBmCZ7=yaBZ&GN0Fuk#W2dl?;xKNo35}u?);z9Hv|3EfSAn9>xScT%oqb z9DKh!Xp5wcIoOM9*wSGJGB$apjj?5B0X&Nza3W~+$hx?|sCkLUTC8Ub+M<%B^Y0F6 z<69e1#>Os2EzHh@If;3%;WK~|x;eqAF?x_G&NF6H8YfmrYyT+K^k0=lT^-<@BU zd%2ond)AXN7HQitw4yyF)@?-f8FI_xVHQ6mMwk-Z$nv3seFF0reEr=Ccm_Aj!8K(V zfIkfpP}N20PWSfA2e)a8#d0DvlF{P~a-HI6Qh+f5bHOrszdOGyTh+X@a~uVK3gD74 zBWSUD2&;SPQ4<;$f?*@7&J<_6$?PTt#(*zPl#u-0dCtn789}##MV8{-%NPr>%D5d| znr1!J{rU$-H`{7|fvQJ^Hf7j}okTpWVMj<4>cOV>z1q z+SMDu>u>j`i-lg)(mYt3Ntb#4Ou)L2O0B1lK*4DuSve#NR12S^b;ZPuS*Xdo^=}|| zWhjd986xHpZJF~wWMFW0C<~#~tF%7&rP4X)RJmO@OY@Y~mrdsnPOZdIfP#enpt^na`^`7W0kR=N< z+WN|y#6L{2-+^@=r|Yxu9+JgYWp~{ia-^rHQOuiDHWaYxkKTJR6F$dkz;Kk@E#@Ym z#N-N={}Dt>0#W(HE>T1QE6t0tS^=Ui;J6}#YS|b#!iiw}@>~y!eGDr?iGJ(9CHSg~@r?ocOcgXmb9j&G0AqYjWWi?eBcgj32)@lN>c=5g~u) zy;fZ3PU>Vi7F>+4c4lzEFnTfv!vTPEWieFXY<9Wluh3^TUB~{VbiZrHorUwISLeXP^AXDLte5 z_$`_%t*{R$0$m}tU@ef9a{%M*RVjl^|lMo+^6tK?LIx`<4n2tLLADqyq`frl;VC)ZTbF;^B5hJes!T)5B=9M{bbjW$?}M6z z3&PMI!*|~=PrH6uI{xIlAia}L5iDBxr)1SPxvnE$ISLY$@WsiZ&>!tf&2&PZE;R6_ zlV1PZ3RVtyo_e1U)zHcB4HVEn{^6JheGmuO(~>k>qQ_YSAbtd#Cd!xa_*5s$twfep&e2!kX`+4L13S;*pD#R5u{p}9% zNR|jyPM58I72fwwPIhusy2{NmDjek(k!Og!GIPD!JAFCR=GihbT&I74dg*CvTQFkl?ADY* zpq7%JQ{Li|-2SyXd1^@lVS7fAtx2e7X)dZM*}i&v#y+X#0>IY9(?x%97@mgJn!N#L zDu)|oE9;OkQ)|Vmse)x%H5|2=V_?UpwU%J(sxHQhQW>>?;mT948?h*k!*dMKB{Jhw z;4EXEEAIp2Vr9%+h&CmY59E;f4##vdvs;-bv16rFT z+C;@nsnxYRAoUfUX*fbhzRR=?D(AdVpo}-6YkynCAD$ZC{*novIQ4FP6@2;j-?HnKS40&3DKPpkL-^<608EqUB^Z=;ft-X=ex$1;u9m5ZJ@< z@s&kh=I`Bi31j`o(ki=-emf`P!O73nBzv86qBYs(!x^%HN`IW6t?0B=`NHkG3tiA6#97LW#-m_u6#=w|Ay;ASaMK zghd=By<`BCwfhr`H%@62zHmU<1XHWKo3F#TA0wQo8qu}!@0}Dc#1NkkV*den{p;R!{kKQ+w7~Drx$-OlU*L{%^C#PC^JGqfQw}R zC>{S@n*7%S^8d9=xgl0C8j2NJq6(wMT);07jeKHaqE?sGR6y96I?TB4^L*nRg(EDv zSQq>U3);hRAJ1B5->0*!66_Z^{=C>#CA9rM$y3jJjoS zO|UlQ2-^J2H@q=#(&V_w{xK;!lc27-_7ZqW523E>0Y4#C+i`y(vfEl4hKe>p=gm!6 zT&*!i*5ZmVtS~r%Tg|0btz3U?9Q^f9xbMGIX%SjpiIVSzE7GAVkDK4illV|{SIJ3m zzd8_n=Lq}v^w``Csd0h}wr!yyATa+-j~mcf73k~?uD$uZ&_B_D zL`>cfLKW1Xs~|o=i4*td;zxbh|%eBI)q>E!!F z$nzv?1`)`XbU_RB*)98F3`}T1zEBEulxD14LT@F`q0_%gYFkRBEGVht;F;+@_|{@) zRAf{wi_mt5wwWvO@N#^UM6dx;;MHffh8r;xpZ3Y!N<~?D}`N;9@X?xVn?d9`%M41{`Oo3Rb;JQq&UzfnN~S z{G-Jyow4%OF(>A^BLyk%(B^!BS4z^c=ml%pMpt;2KHSDr=m?@V*3R!4f;9mo2=EgU&$7t(r%=Z-D&J+sqkvaAT8|PVOzZ8MgfWWCOWQS1 zpwKPR0*G3VK@MoYjHyo^0!a*GgP3_i<#d zjbQURN;>^GvaYbS(DSW%O0I@xmiofKTFDn+p4Rk`#$F9eoMlK2ym_t_Hb@QU_yJK|r+YDx>oQ5^jyHdZ6$A(24pfDdctDJ55!Fn0m?b`nBupwu< zO9TEjIc-`Dj_ef!M;LX4v^(}E*rDA`24@oY;rVL;j*DbvXKd|?rQL_Qqozfwn9+#` z*@Z+8W)yo-?9ie(a`WZLtyo9tt>KKM88WJg`vHW6ZzbX(-6+b0tc~v@>OvPGQ%bF* zPcH*1VwcXBW+bz?!PR-*YwS_61H$>mWhg7sfQG8BTlcqyCYB}Hv`v1cQ=4cSBCA4Q z_Aq?shb{+h;}?4IH>c~9Xub{9J5q1`Jnq>`8SJt6P_C@jprXLNvh4R&K1VQ5=%oSf zW1O|nWYnsWPrwc1jQ7V88`QQ|ar?81!vT96+l>`$O`VBF5o;tb9aG!b8mx&?_l+gYX_36C)LJ33`1sqVR(7U@fV=vM!;Inkro-u+DQ3gLAMa-*+~B z#OcvAjWIKOv3#$~C~E)d2XPh-mkEG-6w&U9esD($-R3O;VPn@5oYV26t1Ahzd8{xA z+{WUK1O8HLx7y~IdEG?jb=gnhJBPz3WRicbhKWOH0+8Uh`yb%d@D=#&UPsj4&KZ1$ z%Ha9vi<92}c5tL2PF|sh1v#h+0~nEpi4C9ASO?MQ2ZIA&vM8~sSi>)DZqgOo3}qQ1 zVG#%;#Xj8QbL`c4e{!i`(KuGiNy*VQd#{_2;Xj+h*->>PrRUhIA%D>p;m6SAS$^{d zv#LN$&`*_C1SXqaPf9`Ar%+#_z(5W4G?#(7043|Q>f87i_N6*MzFCAV+n!y$9|eus zC3PUEIbr2-YAZ7hH`t?+ivQrt%X#VPtVPa6*1!t;GL*Ne&e*_l=(=uR|4~Z8@Wl5= z)x4Pcm>^F|s8^4uK9G&ES~Bs6e#-$(ku!#+Ib`ow8a;2{9s9K{gwWa_Fk~I6Pe!k3 zBK$+}HocohX_RCkp%}pn<$phz_Rq6t|8dyoH~fD(GWAz@0eF)Ba)9cecK?3(=dVCa z@IwB}?!S)${S*9mN%U7RKhq!J|3M)Alj-m3;jc{E%zrTbLreUV;qQyzUm2EJ{tVService review
+

The weekly review is ready.

+
  • Identity is healthy.
  • Messaging needs follow-up.
+
AreaOwner
IdentityPlatform
+'@ + +ConvertFrom-OfficeWordHtml -Html $html -OutputPath '.\Service-Review.docx' +ConvertTo-OfficeWordMarkdown -Path '.\Service-Review.docx' -OutputPath '.\Service-Review.md' diff --git a/WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-InspectExisting.ps1 b/WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-InspectExisting.ps1 new file mode 100644 index 00000000..7b446e83 --- /dev/null +++ b/WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-InspectExisting.ps1 @@ -0,0 +1,20 @@ +$path = '.\Word-Inspection-Source.docx' +$services = @( + [pscustomobject]@{ Service = 'Identity'; Owner = 'IAM'; Status = 'Ready' } + [pscustomobject]@{ Service = 'Messaging'; Owner = 'Collaboration'; Status = 'Review' } +) + +WordNew -Path $path { + WordSection { + WordParagraph -Text 'Service Readiness' -Style Heading1 + WordParagraph -Text 'Review the Messaging service before publication.' + WordTable -InputObject $services -Style TableGrid + } +} + +$document = Get-OfficeWord -Path $path -ReadOnly +Get-OfficeWordStatistics -Document $document +$document | Get-OfficeWordParagraph | Select-Object Index, Text +$document | Get-OfficeWordTable | Select-Object Index, RowCount, ColumnCount +Find-OfficeWord -Document $document -Text 'Messaging' +Close-OfficeWord -Document $document diff --git a/WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-MailMergeLetters.ps1 b/WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-MailMergeLetters.ps1 new file mode 100644 index 00000000..3992bbc5 --- /dev/null +++ b/WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-MailMergeLetters.ps1 @@ -0,0 +1,27 @@ +$recipients = @( + @{ FirstName = 'Ada'; OrderId = 'SO-1042'; DeliveryDate = '2026-09-01' } + @{ FirstName = 'Grace'; OrderId = 'SO-1043'; DeliveryDate = '2026-09-03' } +) + +foreach ($recipient in $recipients) { + $path = ".\Order-$($recipient.OrderId).docx" + + WordNew -Path $path { + WordSection { + WordParagraph -Text 'Order confirmation' -Style Heading1 + WordParagraph { + WordText 'Hello ' + WordField -Type MergeField -Parameters '"FirstName"' + WordText ',' + } + WordParagraph { + WordText 'Order ' + WordField -Type MergeField -Parameters '"OrderId"' + WordText ' is scheduled for ' + WordField -Type MergeField -Parameters '"DeliveryDate"' + WordText '.' + } + Invoke-OfficeWordMailMerge -Values $recipient + } + } +} diff --git a/WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-MergeDocuments.ps1 b/WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-MergeDocuments.ps1 new file mode 100644 index 00000000..ec5ae2a6 --- /dev/null +++ b/WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-MergeDocuments.ps1 @@ -0,0 +1,26 @@ +$cover = '.\Word-Pack-Cover.docx' +$detail = '.\Word-Pack-Detail.docx' +$appendix = '.\Word-Pack-Appendix.docx' +$merged = '.\Word-Combined-Pack.docx' + +WordNew -Path $cover { + WordSection { + WordParagraph -Text 'Operations Pack' -Style Heading1 + } +} + +WordNew -Path $detail { + WordSection { + WordParagraph -Text 'Current Status' -Style Heading1 + WordParagraph -Text 'All core services are available.' + } +} + +WordNew -Path $appendix { + WordSection { + WordParagraph -Text 'Appendix' -Style Heading1 + WordParagraph -Text 'Evidence retained for 90 days.' + } +} + +Join-OfficeWordDocument -Path $cover -AppendPath $detail,$appendix -OutputPath $merged diff --git a/WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-ObjectComposition.ps1 b/WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-ObjectComposition.ps1 new file mode 100644 index 00000000..d0a10c74 --- /dev/null +++ b/WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-ObjectComposition.ps1 @@ -0,0 +1,20 @@ +$path = '.\Word-Object-Composition.docx' +$findings = @( + [pscustomobject]@{ Finding = 'Dormant administrator account'; Owner = 'Identity'; Status = 'Open' } + [pscustomobject]@{ Finding = 'Missing evidence link'; Owner = 'Operations'; Status = 'Resolved' } +) + +$document = New-OfficeWord -Path $path -NoSave +$heading = $document | Add-OfficeWordParagraph -Text 'Access review' -Style Heading1 -PassThru +$heading | Add-OfficeWordText -Text ' — weekly summary' -Color '#475569' + +$summary = $document | Add-OfficeWordParagraph -PassThru +$summary | Add-OfficeWordText -Run @{ + Text = 'Owner: ', 'Security', ' Status: ', 'Review required' + Bold = $true, $false, $true, $true + Color = $null, $null, $null, 'Crimson' +} + +Add-OfficeWordTable -Document $document -InputObject $findings -Style GridTable4Accent1 -Layout AutoFitToWindow +$document | Save-OfficeWord +$document | Close-OfficeWord diff --git a/WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-ProjectStatus.ps1 b/WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-ProjectStatus.ps1 new file mode 100644 index 00000000..cb2c8b06 --- /dev/null +++ b/WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-ProjectStatus.ps1 @@ -0,0 +1,56 @@ +$path = '.\Project-Status.docx' +$milestones = @( + [pscustomobject]@{ Milestone = 'Discovery'; Owner = 'Product'; Progress = 100; Status = 'Done' } + [pscustomobject]@{ Milestone = 'Implementation'; Owner = 'Engineering'; Progress = 72; Status = 'On track' } + [pscustomobject]@{ Milestone = 'Pilot'; Owner = 'Operations'; Progress = 35; Status = 'At risk' } +) +$trend = @( + [pscustomobject]@{ Week = 'W1'; Complete = 18 } + [pscustomobject]@{ Week = 'W2'; Complete = 37 } + [pscustomobject]@{ Week = 'W3'; Complete = 55 } + [pscustomobject]@{ Week = 'W4'; Complete = 72 } +) + +WordNew -Path $path { + WordSection { + WordHeader { WordParagraph -Text 'Northwind migration | Weekly status' -Style Heading2 } + WordFooter { + WordText 'Internal | Page ' + WordPageNumber -IncludeTotalPages + } + + WordParagraph -Text 'Northwind Migration' -Style Heading1 + WordParagraph -Text 'Weekly project status' -Style Heading2 + WordParagraph -Run @{ + Text = 'Overall status: ', 'On track', '. The pilot needs an owner decision on the final rollout window.' + Bold = $true, $true, $false + Color = $null, 'SeaGreen', $null + } + + WordParagraph -Text 'Executive summary' -Style Heading1 + WordList -Style Bulleted { + WordListItem -Text 'Core implementation is 72% complete.' + WordListItem -Text 'No critical defects are open.' + WordListItem -Text 'The pilot date is the only decision needed this week.' + } + + WordParagraph -Text 'Milestones' -Style Heading1 + WordTable -InputObject $milestones -Style GridTable4Accent1 -Layout AutoFitToWindow { + WordTableCondition -FilterScript { $_.Status -eq 'At risk' } -BackgroundColor '#FEE2E2' + WordTableCondition -FilterScript { $_.Status -eq 'Done' } -BackgroundColor '#DCFCE7' + } + + WordParagraph -Text 'Delivery trend' -Style Heading1 + WordChart -Type Line -Data $trend -CategoryProperty Week -SeriesProperty Complete -Title 'Completion by week' -Legend -FitToPageWidth + + WordParagraph -Text 'Decision' -Style Heading1 + WordParagraph { + WordBold 'Approve the pilot window: ' + WordCheckBox -Alias 'PilotApproved' -Tag 'pilot-approved' + } + WordParagraph { + WordText 'Target review date: ' + WordDatePicker -Date '2026-09-01' -Alias 'PilotReviewDate' -Tag 'pilot-review-date' + } + } +} diff --git a/WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-UpdateExisting.ps1 b/WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-UpdateExisting.ps1 new file mode 100644 index 00000000..4fb97ce6 --- /dev/null +++ b/WebsiteArtifacts/apidocs/powershell/examples/Word/Recipe-Word-UpdateExisting.ps1 @@ -0,0 +1,18 @@ +$path = '.\Word-Updated-In-Place.docx' +WordNew -Path $path { + WordSection { + WordParagraph -Text 'FY24 Service Review' -Style Heading1 + WordParagraph { + WordText 'Open the ' + WordHyperlink -Text 'FY24 portal' -Url 'https://reports.example.test/FY24' -Tooltip 'FY24 reports' + WordText ' for supporting evidence.' + } + WordParagraph { + WordText 'Summary' + WordBookmark -Name 'FY24Summary' + } + } +} + +Update-OfficeWordText -Path $path -OldValue 'FY24' -NewValue 'FY25' ` + -IncludeHyperlinkText -IncludeHyperlinkUri -IncludeHyperlinkTooltip -IncludeHyperlinkAnchor diff --git a/WebsiteArtifacts/apidocs/powershell/examples/Workflows/Recipe-Markdown-Word-PdfDelivery.ps1 b/WebsiteArtifacts/apidocs/powershell/examples/Workflows/Recipe-Markdown-Word-PdfDelivery.ps1 new file mode 100644 index 00000000..3bc16ea0 --- /dev/null +++ b/WebsiteArtifacts/apidocs/powershell/examples/Workflows/Recipe-Markdown-Word-PdfDelivery.ps1 @@ -0,0 +1,14 @@ +$markdownPath = '.\Customer-Handoff.md' +$wordPath = '.\Customer-Handoff.docx' +$pdfPath = '.\Customer-Handoff.pdf' + +$document = New-OfficeMarkdown -Path $markdownPath -NoSave +Add-OfficeMarkdownHeading -Document $document -Level 1 -Text 'Customer handoff' +Add-OfficeMarkdownParagraph -Document $document -Text 'The service is ready for acceptance.' +Add-OfficeMarkdownTaskList -Document $document -Items 'Review the evidence', 'Confirm the owner', 'Approve the handoff' +$document | Save-OfficeMarkdown -Path $markdownPath + +ConvertFrom-OfficeWordMarkdown -Document $document -OutputPath $wordPath +$word = Get-OfficeWord -Path $wordPath +$word | Export-OfficeDocumentPdf -Path $pdfPath +$word | Close-OfficeWord diff --git a/WebsiteArtifacts/apidocs/powershell/examples/Workflows/Recipe-MultiFormat-StatusPack.ps1 b/WebsiteArtifacts/apidocs/powershell/examples/Workflows/Recipe-MultiFormat-StatusPack.ps1 new file mode 100644 index 00000000..798d571f --- /dev/null +++ b/WebsiteArtifacts/apidocs/powershell/examples/Workflows/Recipe-MultiFormat-StatusPack.ps1 @@ -0,0 +1,66 @@ +$services = @( + [pscustomobject]@{ Service = 'Identity'; Owner = 'Platform'; Availability = 99.98; Incidents = 1; Status = 'Healthy' } + [pscustomobject]@{ Service = 'Messaging'; Owner = 'Collaboration'; Availability = 99.72; Incidents = 4; Status = 'Watch' } + [pscustomobject]@{ Service = 'Remote access'; Owner = 'Security'; Availability = 98.84; Incidents = 7; Status = 'Action' } +) + +MarkdownNew -Path '.\Service-Status.md' { + MarkdownHeading -Level 1 -Text 'Service Status' + MarkdownParagraph -Text 'The same PowerShell objects also feed the Word, Excel, PowerPoint, and PDF outputs in this recipe.' + MarkdownTable -InputObject $services + MarkdownHeading -Level 2 -Text 'Next steps' + MarkdownTaskList -Items 'Review Remote access', 'Assign the incident action', 'Publish the approved status pack' +} + +WordNew -Path '.\Service-Status.docx' { + WordSection { + WordHeader { WordParagraph -Text 'Weekly service status' -Style Heading2 } + WordFooter { WordPageNumber -IncludeTotalPages } + WordParagraph -Text 'Service Status' -Style Heading1 + WordParagraph -Text 'A document for owners who need narrative, tables, and an approval-ready file.' + WordTable -InputObject $services -Style GridTable4Accent1 -Layout AutoFitToWindow { + WordTableCondition -FilterScript { $_.Status -eq 'Action' } -BackgroundColor '#FEE2E2' + WordTableCondition -FilterScript { $_.Status -eq 'Watch' } -BackgroundColor '#FEF3C7' + } + WordChart -Type Bar -Data $services -CategoryProperty Service -SeriesProperty Incidents -Title 'Incidents by service' -FitToPageWidth + } +} + +ExcelNew -Path '.\Service-Status.xlsx' { + ExcelSheet 'Services' { + ExcelTable -Data $services -TableName 'ServiceStatus' -StartRow 1 -StartColumn 1 -TableStyle 'TableStyleMedium9' -AutoFit + ExcelFreeze -TopRows 1 + ExcelValidationList -TableName 'ServiceStatus' -HeaderName Status -Values Healthy,Watch,Action + ExcelConditionalColorScale -Range 'C2:C4' -StartColor '#FEE2E2' -EndColor '#DCFCE7' + ExcelChart -Range 'A1:D4' -Row 7 -Column 1 -Type ColumnClustered -Title 'Availability and incidents' -WidthPixels 700 -HeightPixels 320 + } + ExcelTableOfContents -SheetName 'Index' -AddBackLinks -BackLinkText 'Back to Index' +} + +PptNew -Path '.\Service-Status.pptx' { + PptSlideSize -Preset Screen16x9 + PptSlide { + PptTitle -Title 'Weekly Service Status' + PptTextBox -Text 'Three services, one owner conversation' -X 90 -Y 190 -Width 700 -Height 70 + PptNotes -Text 'Lead with the Remote access action and confirm its owner.' + } + PptSlide { + PptTitle -Title 'Current status' + PptTable -Data $services -X 55 -Y 130 -Width 720 -Height 210 + PptChart -Data $services -CategoryProperty Service -SeriesProperty Incidents -Type ClusteredColumn -Title 'Incidents' -X 120 -Y 370 -Width 600 -Height 230 + PptNotes -Text 'Use the table for exact values and the chart for the discussion.' + } +} + +PdfNew -Path '.\Service-Status.pdf' { + PdfTheme Report + PdfMetadata -Title 'Weekly service status' -Author 'Operations' + PdfPageSetup -PageSize A4 -Margin 42 + PdfHeader 'Weekly service status' + PdfFooter 'Page {page}/{pages}' + PdfHeading 'Service Status' -Level 1 + PdfPanel 'Remote access requires an owner action before the next review.' + PdfTable -InputObject $services -Property Service,Owner,Availability,Incidents,Status -HeaderFill '#334155' -HeaderTextColor '#FFFFFF' -AutoFitColumns -RightAlignNumeric + PdfHeading 'Next steps' -Level 2 + PdfList -Items 'Review Remote access', 'Assign the incident action', 'Publish the approved status pack' -Numbered +} From 87f877472b90aeba4eebccbf6dba6b5378abbff7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20K=C5=82ys?= Date: Fri, 21 Aug 2026 14:09:16 +0200 Subject: [PATCH 4/8] Fix dashboard health score signaling --- Examples/Showcase/Showcase-Excel-OperationalDashboard.ps1 | 4 ++-- .../examples/Showcase/Showcase-Excel-OperationalDashboard.ps1 | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Examples/Showcase/Showcase-Excel-OperationalDashboard.ps1 b/Examples/Showcase/Showcase-Excel-OperationalDashboard.ps1 index 481466de..887418dd 100644 --- a/Examples/Showcase/Showcase-Excel-OperationalDashboard.ps1 +++ b/Examples/Showcase/Showcase-Excel-OperationalDashboard.ps1 @@ -94,7 +94,7 @@ New-OfficeExcel -Path $path { ExcelValidationList -Range 'F2:F50' -Values 'Healthy','Watch','Risk' ExcelConditionalColorScale -Range 'B2:B9' -StartColor '#F8696B' -EndColor '#63BE7B' ExcelConditionalDataBar -Range 'C2:C9' -Color '#5B9BD5' - ExcelConditionalIconSet -Range 'B2:B9' -IconSet ThreeTrafficLights1 -Reverse $true + ExcelConditionalIconSet -Range 'B2:B9' -IconSet ThreeTrafficLights1 ExcelUrlLinksByHeader -Header 'Evidence' -TableName 'ServiceHealth' -UrlScript { param($text) "https://evotec.xyz/docs/$text" } -TitleScript { param($text) "Open $text" } ExcelPivotTable -SourceRange 'A1:F9' -DestinationCell 'J1' -Name 'ServiceStatusPivot' -RowField Status -DataField Incidents -DataDisplayName 'Total Incidents' -PivotStyle PivotStyleMedium9 -RefreshOnOpen ExcelChart -Range 'A1:C9' -Row 12 -Column 1 -Type BarClustered -Title 'Health Score and Incidents' -WidthPixels 760 -HeightPixels 340 -PassThru | @@ -123,7 +123,7 @@ New-OfficeExcel -Path $path { ExcelSheet 'Owner Summary' { ExcelTable -Data $ownerSummary -TableName 'OwnerSummary' -StartRow 1 -StartColumn 1 -TableStyle 'TableStyleMedium5' -AutoFit ExcelConditionalDataBar -Range 'D2:D20' -Color '#ED7D31' - ExcelConditionalIconSet -Range 'C2:C20' -IconSet ThreeTrafficLights1 -Reverse $true + ExcelConditionalIconSet -Range 'C2:C20' -IconSet ThreeTrafficLights1 ExcelHeaderFooter -HeaderCenter 'Owner summary' -FooterRight 'Page &P of &N' } diff --git a/WebsiteArtifacts/apidocs/powershell/examples/Showcase/Showcase-Excel-OperationalDashboard.ps1 b/WebsiteArtifacts/apidocs/powershell/examples/Showcase/Showcase-Excel-OperationalDashboard.ps1 index 481466de..887418dd 100644 --- a/WebsiteArtifacts/apidocs/powershell/examples/Showcase/Showcase-Excel-OperationalDashboard.ps1 +++ b/WebsiteArtifacts/apidocs/powershell/examples/Showcase/Showcase-Excel-OperationalDashboard.ps1 @@ -94,7 +94,7 @@ New-OfficeExcel -Path $path { ExcelValidationList -Range 'F2:F50' -Values 'Healthy','Watch','Risk' ExcelConditionalColorScale -Range 'B2:B9' -StartColor '#F8696B' -EndColor '#63BE7B' ExcelConditionalDataBar -Range 'C2:C9' -Color '#5B9BD5' - ExcelConditionalIconSet -Range 'B2:B9' -IconSet ThreeTrafficLights1 -Reverse $true + ExcelConditionalIconSet -Range 'B2:B9' -IconSet ThreeTrafficLights1 ExcelUrlLinksByHeader -Header 'Evidence' -TableName 'ServiceHealth' -UrlScript { param($text) "https://evotec.xyz/docs/$text" } -TitleScript { param($text) "Open $text" } ExcelPivotTable -SourceRange 'A1:F9' -DestinationCell 'J1' -Name 'ServiceStatusPivot' -RowField Status -DataField Incidents -DataDisplayName 'Total Incidents' -PivotStyle PivotStyleMedium9 -RefreshOnOpen ExcelChart -Range 'A1:C9' -Row 12 -Column 1 -Type BarClustered -Title 'Health Score and Incidents' -WidthPixels 760 -HeightPixels 340 -PassThru | @@ -123,7 +123,7 @@ New-OfficeExcel -Path $path { ExcelSheet 'Owner Summary' { ExcelTable -Data $ownerSummary -TableName 'OwnerSummary' -StartRow 1 -StartColumn 1 -TableStyle 'TableStyleMedium5' -AutoFit ExcelConditionalDataBar -Range 'D2:D20' -Color '#ED7D31' - ExcelConditionalIconSet -Range 'C2:C20' -IconSet ThreeTrafficLights1 -Reverse $true + ExcelConditionalIconSet -Range 'C2:C20' -IconSet ThreeTrafficLights1 ExcelHeaderFooter -HeaderCenter 'Owner summary' -FooterRight 'Page &P of &N' } From d54916ea20f1a182cb1be3420dc0fdf9bee25d50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20K=C5=82ys?= Date: Fri, 21 Aug 2026 15:11:53 +0200 Subject: [PATCH 5/8] feat: add PowerShell-friendly PDF option builders --- Docs/Export-OfficeDocumentPdf.md | 36 +- Docs/Generated/PSWriteOffice-help.xml | 3485 ++++++++++++++++- Docs/Get-OfficeOpenDocument.md | 162 +- Docs/New-OfficeExcelPdfOptions.md | 572 +++ Docs/New-OfficeMarkdownPdfOptions.md | 381 ++ Docs/New-OfficePowerPointPdfOptions.md | 364 ++ Docs/New-OfficeRtfPdfOptions.md | 236 ++ Docs/New-OfficeWordPdfOptions.md | 348 ++ Docs/Readme.md | 15 + Docs/Save-OfficeAsciiDoc.md | 34 +- Docs/Save-OfficeLatex.md | 34 +- Examples/Pdf/Example-OfficePdfExports.ps1 | 11 +- PSWriteOffice.psd1 | 2 +- README.MD | 23 + .../AsciiDoc/SaveOfficeAsciiDocCommand.cs | 28 +- .../Excel/NewOfficeExcelPdfOptionsCommand.cs | 205 + .../Cmdlets/Latex/SaveOfficeLatexCommand.cs | 28 +- .../NewOfficeMarkdownPdfOptionsCommand.cs | 137 + .../GetOfficeOpenDocumentCommand.cs | 79 +- .../Pdf/ExportOfficeDocumentPdfCommand.cs | 31 +- .../NewOfficePowerPointPdfOptionsCommand.cs | 128 + .../Rtf/NewOfficeRtfPdfOptionsCommand.cs | 88 + .../Word/NewOfficeWordPdfOptionsCommand.cs | 130 + .../Markdown/MarkdownOptionUtilities.cs | 15 +- .../Services/Pdf/PdfCommandUtilities.cs | 8 + Tests/OfficeIMONextSupport.Tests.ps1 | 21 + Tests/OfficePdfExport.Tests.ps1 | 91 + Tests/PublicApiConsistency.Tests.ps1 | 46 + .../project-docs/docs/command-families.md | 10 +- Website/content/project-docs/docs/excel.md | 2 +- .../project-docs/docs/open-text-formats.md | 4 +- Website/content/project-docs/docs/overview.md | 6 +- .../content/project-docs/docs/powerpoint.md | 2 +- Website/content/project-docs/docs/word.md | 2 +- .../apidocs/powershell/PSWriteOffice-help.xml | 3485 ++++++++++++++++- .../apidocs/powershell/PSWriteOffice.psd1 | 2 +- .../apidocs/powershell/command-metadata.json | 44 +- .../examples/Pdf/Example-OfficePdfExports.ps1 | 11 +- .../documentation/command-catalog.json | 2 +- 39 files changed, 10094 insertions(+), 214 deletions(-) create mode 100644 Docs/New-OfficeExcelPdfOptions.md create mode 100644 Docs/New-OfficeMarkdownPdfOptions.md create mode 100644 Docs/New-OfficePowerPointPdfOptions.md create mode 100644 Docs/New-OfficeRtfPdfOptions.md create mode 100644 Docs/New-OfficeWordPdfOptions.md create mode 100644 Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelPdfOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/Markdown/NewOfficeMarkdownPdfOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointPdfOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/Rtf/NewOfficeRtfPdfOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordPdfOptionsCommand.cs diff --git a/Docs/Export-OfficeDocumentPdf.md b/Docs/Export-OfficeDocumentPdf.md index b417df57..4a75b18d 100644 --- a/Docs/Export-OfficeDocumentPdf.md +++ b/Docs/Export-OfficeDocumentPdf.md @@ -11,12 +11,12 @@ Exports a Word, Excel, PowerPoint, Markdown, or RTF document to PDF. ## SYNTAX ### Document (Default) ```powershell -Export-OfficeDocumentPdf [-Document] [-Path] [-WordOptions ] [-ExcelOptions ] [-PowerPointOptions ] [-MarkdownOptions ] [-RtfOptions ] [-Open] [-PassThru] [-WhatIf] [-Confirm] [] +Export-OfficeDocumentPdf [-Document] [-Path] [-WordOptions ] [-ExcelOptions ] [-PowerPointOptions ] [-MarkdownOptions ] [-RtfOptions ] [-PdfWarningVariable ] [-PdfConversionReportVariable ] [-Open] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Path ```powershell -Export-OfficeDocumentPdf [-InputPath] [-Path] [-Password ] [-WordOptions ] [-ExcelOptions ] [-PowerPointOptions ] [-MarkdownOptions ] [-RtfOptions ] [-Open] [-PassThru] [-WhatIf] [-Confirm] [] +Export-OfficeDocumentPdf [-InputPath] [-Path] [-Password ] [-WordOptions ] [-ExcelOptions ] [-PowerPointOptions ] [-MarkdownOptions ] [-RtfOptions ] [-PdfWarningVariable ] [-PdfConversionReportVariable ] [-Open] [-PassThru] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -166,6 +166,38 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PdfConversionReportVariable +Variable name that receives the structured PDF conversion report. + +```yaml +Type: String +Parameter Sets: Document, Path +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PdfWarningVariable +Variable name that receives structured PDF conversion warnings. + +```yaml +Type: String +Parameter Sets: Document, Path +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -PowerPointOptions PowerPoint-specific PDF options. diff --git a/Docs/Generated/PSWriteOffice-help.xml b/Docs/Generated/PSWriteOffice-help.xml index 3249fb9c..75fef897 100644 --- a/Docs/Generated/PSWriteOffice-help.xml +++ b/Docs/Generated/PSWriteOffice-help.xml @@ -81047,6 +81047,30 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PdfConversionReportVariable + + Variable name that receives the structured PDF conversion report. + + String + + String + + + None + + + PdfWarningVariable + + Variable name that receives structured PDF conversion warnings. + + String + + String + + + None + PowerPointOptions @@ -81170,6 +81194,30 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PdfConversionReportVariable + + Variable name that receives the structured PDF conversion report. + + String + + String + + + None + + + PdfWarningVariable + + Variable name that receives structured PDF conversion warnings. + + String + + String + + + None + PowerPointOptions @@ -81305,6 +81353,30 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PdfConversionReportVariable + + Variable name that receives the structured PDF conversion report. + + String + + String + + + None + + + PdfWarningVariable + + Variable name that receives structured PDF conversion warnings. + + String + + String + + + None + PowerPointOptions @@ -110836,6 +110908,114 @@ extraction, hashing, and chunk shaping. Get-OfficeOpenDocument + + MaxCompressionRatio + + Maximum declared expansion ratio for a compressed entry. + + Double + + Double + + + None + + + MaxDepth + + Maximum archive path depth. + + Int32 + + Int32 + + + None + + + MaxEntries + + Maximum number of ZIP entries. + + Int32 + + Int32 + + + None + + + MaxEntryUncompressedBytes + + Maximum uncompressed size of one package entry. + + Int64 + + Int64 + + + None + + + MaxPackageBytes + + Maximum source package size in bytes. + + Int64 + + Int64 + + + None + + + MaxTotalKdfIterations + + Maximum aggregate PBKDF2 iterations across encrypted entries. + + Int64 + + Int64 + + + None + + + MaxTotalUncompressedBytes + + Maximum aggregate uncompressed package size. + + Int64 + + Int64 + + + None + + + MaxXmlCharacters + + Maximum characters allowed in one parsed XML part. + + Int64 + + Int64 + + + None + + + MaxXmlDepth + + Maximum element nesting depth in one parsed XML part. + + Int32 + + Int32 + + + None + Options @@ -110848,6 +111028,18 @@ extraction, hashing, and chunk shaping. None + + Password + + Password used to decrypt an encrypted OpenDocument package. + + String + + String + + + None + Path @@ -110863,6 +111055,114 @@ extraction, hashing, and chunk shaping. + + MaxCompressionRatio + + Maximum declared expansion ratio for a compressed entry. + + Double + + Double + + + None + + + MaxDepth + + Maximum archive path depth. + + Int32 + + Int32 + + + None + + + MaxEntries + + Maximum number of ZIP entries. + + Int32 + + Int32 + + + None + + + MaxEntryUncompressedBytes + + Maximum uncompressed size of one package entry. + + Int64 + + Int64 + + + None + + + MaxPackageBytes + + Maximum source package size in bytes. + + Int64 + + Int64 + + + None + + + MaxTotalKdfIterations + + Maximum aggregate PBKDF2 iterations across encrypted entries. + + Int64 + + Int64 + + + None + + + MaxTotalUncompressedBytes + + Maximum aggregate uncompressed package size. + + Int64 + + Int64 + + + None + + + MaxXmlCharacters + + Maximum characters allowed in one parsed XML part. + + Int64 + + Int64 + + + None + + + MaxXmlDepth + + Maximum element nesting depth in one parsed XML part. + + Int32 + + Int32 + + + None + Options @@ -110875,6 +111175,18 @@ extraction, hashing, and chunk shaping. None + + Password + + Password used to decrypt an encrypted OpenDocument package. + + String + + String + + + None + Path @@ -135945,6 +136257,859 @@ This does not discover, bypass, or crack a missing password. + + + New-OfficeExcelPdfOptions + New + OfficeExcelPdfOptions + + Creates discoverable Excel-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + Creates discoverable Excel-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + New-OfficeExcelPdfOptions + + AllowDocumentFontEmbedding + + Allow embedding fonts stored in the workbook. + + SwitchParameter + + SwitchParameter + + + None + + + AllowSystemFontEmbedding + + Allow embedding fonts discovered on the current system. + + SwitchParameter + + SwitchParameter + + + None + + + ChartLayout + + Chart layout override. + + OfficeChartLayout + + OfficeChartLayout + + + None + + + ChartStyle + + Chart visual style override. + + OfficeChartStyle + + OfficeChartStyle + + + None + + + EmptyCellText + + Text used when a worksheet cell is empty. + + String + + String + + + None + + + FontFamily + + Default font family used when the workbook does not specify one. + + String + + String + + + None + + + HeaderRowCount + + Number of leading rows treated as headers. + + Int32 + + Int32 + + + None + + + IncludeSheetHeadings + + Include worksheet row and column headings. + + SwitchParameter + + SwitchParameter + + + None + + + MarginBottom + + Bottom page margin in PDF points. + + Double + + Double + + + None + + + MarginLeft + + Left page margin in PDF points. + + Double + + Double + + + None + + + MarginRight + + Right page margin in PDF points. + + Double + + Double + + + None + + + MarginTop + + Top page margin in PDF points. + + Double + + Double + + + None + + + MaxRowsPerSheet + + Maximum worksheet rows to read and render. + + Int32 + + Int32 + + + None + + + PageSize + + PDF page size. + + PageSize + + PageSize + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + RespectWorkbookSheetVisibility + + Exclude workbook sheets marked hidden. + + SwitchParameter + + SwitchParameter + + + None + + + RespectWorksheetHiddenRowsAndColumns + + Exclude hidden worksheet rows and columns. + + SwitchParameter + + SwitchParameter + + + None + + + SheetName + + Worksheet names to export. The default exports all eligible sheets. + + String[] + + String[] + + + None + + + UseBoundedWorksheetRead + + Use bounded worksheet reads for large workbooks. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetCellStyles + + Render worksheet cell styles. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetCharts + + Render worksheet charts. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetColumnWidths + + Honor worksheet column widths. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetHeaderFooterImages + + Render images referenced by worksheet headers and footers. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetHeadersAndFooters + + Render worksheet headers and footers. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetHyperlinks + + Render worksheet hyperlinks. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetImages + + Render worksheet images. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetMergedCells + + Render merged worksheet cells. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPageBreaks + + Honor worksheet page breaks. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPageSetup + + Honor worksheet page setup. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPrintAreas + + Honor worksheet print areas. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPrintTitleRows + + Honor worksheet rows configured to repeat on printed pages. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetRowHeights + + Honor worksheet row heights. + + SwitchParameter + + SwitchParameter + + + None + + + WorksheetLayout + + Controls how worksheet content is laid out on PDF pages. + + ExcelPdfWorksheetLayoutMode + + WorksheetCanvas + FlowTable + + + ExcelPdfWorksheetLayoutMode + + + None + + + + + + AllowDocumentFontEmbedding + + Allow embedding fonts stored in the workbook. + + SwitchParameter + + SwitchParameter + + + None + + + AllowSystemFontEmbedding + + Allow embedding fonts discovered on the current system. + + SwitchParameter + + SwitchParameter + + + None + + + ChartLayout + + Chart layout override. + + OfficeChartLayout + + OfficeChartLayout + + + None + + + ChartStyle + + Chart visual style override. + + OfficeChartStyle + + OfficeChartStyle + + + None + + + EmptyCellText + + Text used when a worksheet cell is empty. + + String + + String + + + None + + + FontFamily + + Default font family used when the workbook does not specify one. + + String + + String + + + None + + + HeaderRowCount + + Number of leading rows treated as headers. + + Int32 + + Int32 + + + None + + + IncludeSheetHeadings + + Include worksheet row and column headings. + + SwitchParameter + + SwitchParameter + + + None + + + MarginBottom + + Bottom page margin in PDF points. + + Double + + Double + + + None + + + MarginLeft + + Left page margin in PDF points. + + Double + + Double + + + None + + + MarginRight + + Right page margin in PDF points. + + Double + + Double + + + None + + + MarginTop + + Top page margin in PDF points. + + Double + + Double + + + None + + + MaxRowsPerSheet + + Maximum worksheet rows to read and render. + + Int32 + + Int32 + + + None + + + PageSize + + PDF page size. + + PageSize + + PageSize + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + RespectWorkbookSheetVisibility + + Exclude workbook sheets marked hidden. + + SwitchParameter + + SwitchParameter + + + None + + + RespectWorksheetHiddenRowsAndColumns + + Exclude hidden worksheet rows and columns. + + SwitchParameter + + SwitchParameter + + + None + + + SheetName + + Worksheet names to export. The default exports all eligible sheets. + + String[] + + String[] + + + None + + + UseBoundedWorksheetRead + + Use bounded worksheet reads for large workbooks. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetCellStyles + + Render worksheet cell styles. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetCharts + + Render worksheet charts. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetColumnWidths + + Honor worksheet column widths. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetHeaderFooterImages + + Render images referenced by worksheet headers and footers. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetHeadersAndFooters + + Render worksheet headers and footers. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetHyperlinks + + Render worksheet hyperlinks. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetImages + + Render worksheet images. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetMergedCells + + Render merged worksheet cells. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPageBreaks + + Honor worksheet page breaks. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPageSetup + + Honor worksheet page setup. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPrintAreas + + Honor worksheet print areas. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPrintTitleRows + + Honor worksheet rows configured to repeat on printed pages. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetRowHeights + + Honor worksheet row heights. + + SwitchParameter + + SwitchParameter + + + None + + + WorksheetLayout + + Controls how worksheet content is laid out on PDF pages. + + ExcelPdfWorksheetLayoutMode + + WorksheetCanvas + FlowTable + + + ExcelPdfWorksheetLayoutMode + + + None + + + + + + None + + + + + + + OfficeIMO.Excel.Pdf.ExcelPdfSaveOptions + + + + + + + + + + + Export selected visible sheets with workbook layout features. + + PS> + + $options = New-OfficeExcelPdfOptions -SheetName Summary,Services -UseWorksheetCharts -UseWorksheetImages + Export-OfficeDocumentPdf -InputPath .\Report.xlsx -Path .\Report.pdf -ExcelOptions $options + + + + + + + New-OfficeMarkdown @@ -136253,6 +137418,589 @@ This does not discover, bypass, or crack a missing password. + + + New-OfficeMarkdownPdfOptions + New + OfficeMarkdownPdfOptions + + Creates discoverable Markdown-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + Creates discoverable Markdown-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + New-OfficeMarkdownPdfOptions + + ApplyWordLikeTheme + + Apply the built-in Word-like Markdown PDF baseline theme. + + SwitchParameter + + SwitchParameter + + + None + + + Author + + PDF author metadata. + + String + + String + + + None + + + BaseDirectory + + Base directory used to resolve local Markdown images. + + String + + String + + + None + + + CreateOutlineFromHeadings + + Create PDF outlines from Markdown headings. + + SwitchParameter + + SwitchParameter + + + None + + + DefaultImageHeight + + Fallback image height in PDF points. + + Double + + Double + + + None + + + DefaultImageWidth + + Fallback image width in PDF points. + + Double + + Double + + + None + + + FontFamily + + Default font family. + + String + + String + + + None + + + FrontMatterRenderMode + + Controls how YAML front matter appears in the PDF body. + + MarkdownPdfFrontMatterRenderMode + + Hidden + DocumentHeader + Table + + + MarkdownPdfFrontMatterRenderMode + + + None + + + IncludeDataUriImages + + Embed supported data URI images. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeLocalImages + + Embed supported local image files. + + SwitchParameter + + SwitchParameter + + + None + + + Keywords + + PDF keywords metadata. + + String + + String + + + None + + + MaximumDataUriImageBytes + + Maximum decoded bytes for one data URI image. + + Int32 + + Int32 + + + None + + + Options + + Existing Markdown PDF options to clone and override. + + MarkdownPdfSaveOptions + + MarkdownPdfSaveOptions + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + RestrictLocalImagesToBaseDirectory + + Require local images to resolve under BaseDirectory. + + SwitchParameter + + SwitchParameter + + + None + + + Subject + + PDF subject metadata. + + String + + String + + + None + + + Theme + + Built-in visual theme. + + OfficeVisualThemeKind + + Plain + WordLike + TechnicalDocument + GitHubLike + Compact + Report + + + OfficeVisualThemeKind + + + None + + + Title + + PDF title metadata. + + String + + String + + + None + + + UseFirstHeadingAsTitle + + Use the first Markdown heading as the PDF title when no title is supplied. + + SwitchParameter + + SwitchParameter + + + None + + + UseFrontMatterMetadata + + Use front matter values as PDF metadata. + + SwitchParameter + + SwitchParameter + + + None + + + UseFrontMatterVisualTheme + + Use front matter values to select a visual theme. + + SwitchParameter + + SwitchParameter + + + None + + + + + + ApplyWordLikeTheme + + Apply the built-in Word-like Markdown PDF baseline theme. + + SwitchParameter + + SwitchParameter + + + None + + + Author + + PDF author metadata. + + String + + String + + + None + + + BaseDirectory + + Base directory used to resolve local Markdown images. + + String + + String + + + None + + + CreateOutlineFromHeadings + + Create PDF outlines from Markdown headings. + + SwitchParameter + + SwitchParameter + + + None + + + DefaultImageHeight + + Fallback image height in PDF points. + + Double + + Double + + + None + + + DefaultImageWidth + + Fallback image width in PDF points. + + Double + + Double + + + None + + + FontFamily + + Default font family. + + String + + String + + + None + + + FrontMatterRenderMode + + Controls how YAML front matter appears in the PDF body. + + MarkdownPdfFrontMatterRenderMode + + Hidden + DocumentHeader + Table + + + MarkdownPdfFrontMatterRenderMode + + + None + + + IncludeDataUriImages + + Embed supported data URI images. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeLocalImages + + Embed supported local image files. + + SwitchParameter + + SwitchParameter + + + None + + + Keywords + + PDF keywords metadata. + + String + + String + + + None + + + MaximumDataUriImageBytes + + Maximum decoded bytes for one data URI image. + + Int32 + + Int32 + + + None + + + Options + + Existing Markdown PDF options to clone and override. + + MarkdownPdfSaveOptions + + MarkdownPdfSaveOptions + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + RestrictLocalImagesToBaseDirectory + + Require local images to resolve under BaseDirectory. + + SwitchParameter + + SwitchParameter + + + None + + + Subject + + PDF subject metadata. + + String + + String + + + None + + + Theme + + Built-in visual theme. + + OfficeVisualThemeKind + + Plain + WordLike + TechnicalDocument + GitHubLike + Compact + Report + + + OfficeVisualThemeKind + + + None + + + Title + + PDF title metadata. + + String + + String + + + None + + + UseFirstHeadingAsTitle + + Use the first Markdown heading as the PDF title when no title is supplied. + + SwitchParameter + + SwitchParameter + + + None + + + UseFrontMatterMetadata + + Use front matter values as PDF metadata. + + SwitchParameter + + SwitchParameter + + + None + + + UseFrontMatterVisualTheme + + Use front matter values to select a visual theme. + + SwitchParameter + + SwitchParameter + + + None + + + + + + OfficeIMO.Markdown.Pdf.MarkdownPdfSaveOptions + + + + + + + OfficeIMO.Markdown.Pdf.MarkdownPdfSaveOptions + + + + + + + + + + + Allow local report images and apply PDF metadata. + + PS> + + $options = New-OfficeMarkdownPdfOptions -Title 'Service report' -Author 'Evotec' -IncludeLocalImages -BaseDirectory .\Assets + Export-OfficeDocumentPdf -InputPath .\Report.md -Path .\Report.pdf -MarkdownOptions $options + + Builds a typed options object through ordinary PowerShell parameters; no hashtable or .NET construction is required. + + + + + New-OfficeOpenDocument @@ -139689,6 +141437,559 @@ Use -NoSave or omit -Path when a document object should be returned for further + + + New-OfficePowerPointPdfOptions + New + OfficePowerPointPdfOptions + + Creates discoverable PowerPoint-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + Creates discoverable PowerPoint-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + New-OfficePowerPointPdfOptions + + AllowDocumentFontEmbedding + + Allow embedding fonts stored in the presentation. + + SwitchParameter + + SwitchParameter + + + None + + + AllowSystemFontEmbedding + + Allow embedding fonts discovered on the current system. + + SwitchParameter + + SwitchParameter + + + None + + + ChartLayout + + Chart layout override. + + OfficeChartLayout + + OfficeChartLayout + + + None + + + ChartStyle + + Chart visual style override. + + OfficeChartStyle + + OfficeChartStyle + + + None + + + FontFamily + + Default font family used when the presentation does not specify one. + + String + + String + + + None + + + HandoutSlidesPerPage + + Number of slides on each handout page. + + Int32 + + Int32 + + + None + + + IncludeAutoShapes + + Render automatic shapes. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeCharts + + Render charts. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeHiddenSlides + + Include slides marked hidden. + + SwitchParameter + + SwitchParameter + + + None + + + IncludePictures + + Render pictures. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeSlideBackgrounds + + Render slide backgrounds. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeSmartArt + + Render SmartArt. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeSpeakerNotes + + Include speaker notes. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeTables + + Render tables. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeTextBoxes + + Render text boxes. + + SwitchParameter + + SwitchParameter + + + None + + + MaxGroupShapeDepth + + Maximum nested group-shape depth to render. + + Int32 + + Int32 + + + None + + + PageLayout + + PDF page layout, such as slides, notes, or handouts. + + PowerPointPdfPageLayout + + Slides + NotesPages + Handouts + + + PowerPointPdfPageLayout + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + PictureFit + + How pictures fit their shape bounds. + + OfficeImageFit + + Stretch + Contain + Cover + + + OfficeImageFit + + + None + + + WarnOnPictureAspectRatioDistortion + + Report pictures whose requested fit distorts their aspect ratio. + + SwitchParameter + + SwitchParameter + + + None + + + + + + AllowDocumentFontEmbedding + + Allow embedding fonts stored in the presentation. + + SwitchParameter + + SwitchParameter + + + None + + + AllowSystemFontEmbedding + + Allow embedding fonts discovered on the current system. + + SwitchParameter + + SwitchParameter + + + None + + + ChartLayout + + Chart layout override. + + OfficeChartLayout + + OfficeChartLayout + + + None + + + ChartStyle + + Chart visual style override. + + OfficeChartStyle + + OfficeChartStyle + + + None + + + FontFamily + + Default font family used when the presentation does not specify one. + + String + + String + + + None + + + HandoutSlidesPerPage + + Number of slides on each handout page. + + Int32 + + Int32 + + + None + + + IncludeAutoShapes + + Render automatic shapes. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeCharts + + Render charts. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeHiddenSlides + + Include slides marked hidden. + + SwitchParameter + + SwitchParameter + + + None + + + IncludePictures + + Render pictures. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeSlideBackgrounds + + Render slide backgrounds. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeSmartArt + + Render SmartArt. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeSpeakerNotes + + Include speaker notes. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeTables + + Render tables. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeTextBoxes + + Render text boxes. + + SwitchParameter + + SwitchParameter + + + None + + + MaxGroupShapeDepth + + Maximum nested group-shape depth to render. + + Int32 + + Int32 + + + None + + + PageLayout + + PDF page layout, such as slides, notes, or handouts. + + PowerPointPdfPageLayout + + Slides + NotesPages + Handouts + + + PowerPointPdfPageLayout + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + PictureFit + + How pictures fit their shape bounds. + + OfficeImageFit + + Stretch + Contain + Cover + + + OfficeImageFit + + + None + + + WarnOnPictureAspectRatioDistortion + + Report pictures whose requested fit distorts their aspect ratio. + + SwitchParameter + + SwitchParameter + + + None + + + + + + None + + + + + + + OfficeIMO.PowerPoint.Pdf.PowerPointPdfSaveOptions + + + + + + + + + + + Create a handout PDF with notes and hidden slides. + + PS> + + $options = New-OfficePowerPointPdfOptions -PageLayout Handouts -HandoutSlidesPerPage 3 -IncludeSpeakerNotes -IncludeHiddenSlides + Export-OfficeDocumentPdf -InputPath .\Briefing.pptx -Path .\Briefing.pdf -PowerPointOptions $options + + + + + + + New-OfficeRtf @@ -139843,6 +142144,347 @@ Use -NoSave or omit -Path when a document object should be returned for further + + + New-OfficeRtfPdfOptions + New + OfficeRtfPdfOptions + + Creates discoverable RTF-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + Creates discoverable RTF-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + New-OfficeRtfPdfOptions + + AllowDocumentFontEmbedding + + Allow embedding fonts referenced by the RTF document. + + SwitchParameter + + SwitchParameter + + + None + + + AllowSystemFontEmbedding + + Allow embedding fonts discovered on the current system. + + SwitchParameter + + SwitchParameter + + + None + + + DefaultImageHeight + + Fallback image height in PDF points. + + Double + + Double + + + None + + + DefaultImageWidth + + Fallback image width in PDF points. + + Double + + Double + + + None + + + IncludeHeaderFooters + + Render headers and footers. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeHiddenText + + Include text marked hidden. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeImages + + Render images. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeMetadata + + Copy document metadata into the PDF. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeNotes + + Render document notes. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeTables + + Render tables. + + SwitchParameter + + SwitchParameter + + + None + + + MaximumSystemFontFamilies + + Maximum number of system font families to discover. + + Int32 + + Int32 + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + + + + AllowDocumentFontEmbedding + + Allow embedding fonts referenced by the RTF document. + + SwitchParameter + + SwitchParameter + + + None + + + AllowSystemFontEmbedding + + Allow embedding fonts discovered on the current system. + + SwitchParameter + + SwitchParameter + + + None + + + DefaultImageHeight + + Fallback image height in PDF points. + + Double + + Double + + + None + + + DefaultImageWidth + + Fallback image width in PDF points. + + Double + + Double + + + None + + + IncludeHeaderFooters + + Render headers and footers. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeHiddenText + + Include text marked hidden. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeImages + + Render images. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeMetadata + + Copy document metadata into the PDF. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeNotes + + Render document notes. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeTables + + Render tables. + + SwitchParameter + + SwitchParameter + + + None + + + MaximumSystemFontFamilies + + Maximum number of system font families to discover. + + Int32 + + Int32 + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + + + + None + + + + + + + OfficeIMO.Rtf.Pdf.RtfPdfSaveOptions + + + + + + + + + + + Include document structure and bound system-font discovery. + + PS> + + $options = New-OfficeRtfPdfOptions -IncludeImages $true -IncludeTables $true -IncludeHeaderFooters $true -MaximumSystemFontFamilies 32 + Export-OfficeDocumentPdf -InputPath .\Report.rtf -Path .\Report.pdf -RtfOptions $options + + + + + + + New-OfficeTextRun @@ -140784,13 +143426,228 @@ Use -NoSave or omit -Path when a document object should be returned for further - - - - OfficeIMO.Visio.VisioGalleryResult - - - + + + + OfficeIMO.Visio.VisioGalleryResult + + + + + + + + + + + Generate the Visio reference gallery. + + PS> + + New-OfficeVisioGallery -OutputDirectory .\VisioGallery | + Select-Object Name, FilePath, IsClean + + Creates polished, editable Visio samples for flowcharts, architecture, network, timeline, swimlane, org chart, and graph diagrams. + + + + + + + + New-OfficeWord + New + OfficeWord + + Creates a Word document using the DSL. + + + + Handles file creation or template cloning, scriptblock execution, explicit save or live-document composition, and emits the document path when -PassThru is used. + + + + New-OfficeWord + + Content + + DSL scriptblock describing document content. + + ScriptBlock + + ScriptBlock + + + None + + + NoSave + + Skip saving after executing the DSL. + + SwitchParameter + + SwitchParameter + + + None + + + Open + + Open the document after saving. + + SwitchParameter + + SwitchParameter + + + None + + + PassThru + + Emit a FileInfo for chaining. + + SwitchParameter + + SwitchParameter + + + None + + + Password + + Password used to save the document as an encrypted package. + + String + + String + + + None + + + Path + + Destination path for the document. + + String + + String + + + None + + + TemplatePath + + Existing .docx file to clone before running the DSL. + + String + + String + + + None + + + + + + Content + + DSL scriptblock describing document content. + + ScriptBlock + + ScriptBlock + + + None + + + NoSave + + Skip saving after executing the DSL. + + SwitchParameter + + SwitchParameter + + + None + + + Open + + Open the document after saving. + + SwitchParameter + + SwitchParameter + + + None + + + PassThru + + Emit a FileInfo for chaining. + + SwitchParameter + + SwitchParameter + + + None + + + Password + + Password used to save the document as an encrypted package. + + String + + String + + + None + + + Path + + Destination path for the document. + + String + + String + + + None + + + TemplatePath + + Existing .docx file to clone before running the DSL. + + String + + String + + + None + + + + + + None + + + + @@ -140798,14 +143655,36 @@ Use -NoSave or omit -Path when a document object should be returned for further - Generate the Visio reference gallery. + Create a document inline. PS> - New-OfficeVisioGallery -OutputDirectory .\VisioGallery | - Select-Object Name, FilePath, IsClean + New-OfficeWord -Path .\Report.docx { WordSection { WordParagraph 'Hello DSL' } } -Open - Creates polished, editable Visio samples for flowcharts, architecture, network, timeline, swimlane, org chart, and graph diagrams. + Builds a document, adds one paragraph, saves it to disk, and opens it. + + + + Create a document from a template. + + PS> + + New-OfficeWord -TemplatePath .\Template.docx -Path .\Report.docx { WordParagraph -Text 'Generated content' -StyleId 'ReportBody' } + + Copies the template to the output path, runs the DSL against the copied document, and saves it. + + + + Keep a document for incremental composition. + + PS> + + $document = New-OfficeWord -Path .\Report.docx -NoSave + $document | Add-OfficeWordParagraph -Text 'Status report' -Style Heading1 + $document | Save-OfficeWord + $document | Close-OfficeWord + + Associates the output path with a live document, adds content through the pipeline, then saves and closes it once. @@ -140813,35 +143692,35 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficeWord + New-OfficeWordPdfOptions New - OfficeWord + OfficeWordPdfOptions - Creates a Word document using the DSL. + Creates discoverable Word-to-PDF conversion options for Export-OfficeDocumentPdf. - Handles file creation or template cloning, scriptblock execution, explicit save or live-document composition, and emits the document path when -PassThru is used. + Creates discoverable Word-to-PDF conversion options for Export-OfficeDocumentPdf. - New-OfficeWord - - Content + New-OfficeWordPdfOptions + + AllowDocumentFontEmbedding - DSL scriptblock describing document content. + Allow embedding fonts stored in the Word document. - ScriptBlock + SwitchParameter - ScriptBlock + SwitchParameter None - NoSave + AllowSystemFontEmbedding - Skip saving after executing the DSL. + Allow embedding fonts discovered on the current system. SwitchParameter @@ -140851,9 +143730,61 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Open + Author - Open the document after saving. + PDF author metadata. + + String + + String + + + None + + + DefaultOrientation + + Fallback page orientation for sections without page settings. + + OfficePageOrientation + + Portrait + Landscape + + + OfficePageOrientation + + + None + + + DefaultPageSize + + Fallback Word page size for sections without page settings. + + WordPageSize + + Unknown + Letter + Legal + Statement + Executive + A3 + A4 + A5 + A6 + B5 + + + WordPageSize + + + None + + + DefaultTableBorders + + Draw default borders for tables that do not specify borders. SwitchParameter @@ -140863,9 +143794,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - PassThru + FontFamily - Emit a FileInfo for chaining. + Default font family used when the document does not specify one. + + String + + String + + + None + + + IncludePageNumbers + + Include page numbers in the generated PDF. SwitchParameter @@ -140875,9 +143818,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Password + Keywords - Password used to save the document as an encrypted package. + PDF keywords metadata. String @@ -140886,12 +143829,76 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Path + + MarginBottom - Destination path for the document. + Bottom page margin in PDF points. - String + Double + + Double + + + None + + + MarginLeft + + Left page margin in PDF points. + + Double + + Double + + + None + + + MarginRight + + Right page margin in PDF points. + + Double + + Double + + + None + + + MarginTop + + Top page margin in PDF points. + + Double + + Double + + + None + + + Orientation + + PDF page orientation. + + OfficePageOrientation + + Portrait + Landscape + + + OfficePageOrientation + + + None + + + PageNumberFormat + + Page number text format. + + String String @@ -140899,9 +143906,45 @@ Use -NoSave or omit -Path when a document object should be returned for further None - TemplatePath + PageSize - Existing .docx file to clone before running the DSL. + PDF page size. + + PageSize + + PageSize + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + Subject + + PDF subject metadata. + + String + + String + + + None + + + Title + + PDF title metadata. String @@ -140913,22 +143956,22 @@ Use -NoSave or omit -Path when a document object should be returned for further - - Content + + AllowDocumentFontEmbedding - DSL scriptblock describing document content. + Allow embedding fonts stored in the Word document. - ScriptBlock + SwitchParameter - ScriptBlock + SwitchParameter None - NoSave + AllowSystemFontEmbedding - Skip saving after executing the DSL. + Allow embedding fonts discovered on the current system. SwitchParameter @@ -140938,9 +143981,61 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Open + Author - Open the document after saving. + PDF author metadata. + + String + + String + + + None + + + DefaultOrientation + + Fallback page orientation for sections without page settings. + + OfficePageOrientation + + Portrait + Landscape + + + OfficePageOrientation + + + None + + + DefaultPageSize + + Fallback Word page size for sections without page settings. + + WordPageSize + + Unknown + Letter + Legal + Statement + Executive + A3 + A4 + A5 + A6 + B5 + + + WordPageSize + + + None + + + DefaultTableBorders + + Draw default borders for tables that do not specify borders. SwitchParameter @@ -140950,9 +144045,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - PassThru + FontFamily - Emit a FileInfo for chaining. + Default font family used when the document does not specify one. + + String + + String + + + None + + + IncludePageNumbers + + Include page numbers in the generated PDF. SwitchParameter @@ -140962,9 +144069,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Password + Keywords - Password used to save the document as an encrypted package. + PDF keywords metadata. String @@ -140973,12 +144080,76 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Path + + MarginBottom - Destination path for the document. + Bottom page margin in PDF points. - String + Double + + Double + + + None + + + MarginLeft + + Left page margin in PDF points. + + Double + + Double + + + None + + + MarginRight + + Right page margin in PDF points. + + Double + + Double + + + None + + + MarginTop + + Top page margin in PDF points. + + Double + + Double + + + None + + + Orientation + + PDF page orientation. + + OfficePageOrientation + + Portrait + Landscape + + + OfficePageOrientation + + + None + + + PageNumberFormat + + Page number text format. + + String String @@ -140986,9 +144157,45 @@ Use -NoSave or omit -Path when a document object should be returned for further None - TemplatePath + PageSize - Existing .docx file to clone before running the DSL. + PDF page size. + + PageSize + + PageSize + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + Subject + + PDF subject metadata. + + String + + String + + + None + + + Title + + PDF title metadata. String @@ -141005,7 +144212,13 @@ Use -NoSave or omit -Path when a document object should be returned for further - + + + + OfficeIMO.Word.Pdf.WordPdfSaveOptions + + + @@ -141013,36 +144226,14 @@ Use -NoSave or omit -Path when a document object should be returned for further - Create a document inline. - - PS> - - New-OfficeWord -Path .\Report.docx { WordSection { WordParagraph 'Hello DSL' } } -Open - - Builds a document, adds one paragraph, saves it to disk, and opens it. - - - - Create a document from a template. - - PS> - - New-OfficeWord -TemplatePath .\Template.docx -Path .\Report.docx { WordParagraph -Text 'Generated content' -StyleId 'ReportBody' } - - Copies the template to the output path, runs the DSL against the copied document, and saves it. - - - - Keep a document for incremental composition. + Configure metadata, page numbers, and font embedding. PS> - $document = New-OfficeWord -Path .\Report.docx -NoSave - $document | Add-OfficeWordParagraph -Text 'Status report' -Style Heading1 - $document | Save-OfficeWord - $document | Close-OfficeWord + $options = New-OfficeWordPdfOptions -Title 'Service report' -Author 'Evotec' -IncludePageNumbers -AllowSystemFontEmbedding + Export-OfficeDocumentPdf -InputPath .\Report.docx -Path .\Report.pdf -WordOptions $options - Associates the output path with a live document, adds content through the pipeline, then saves and closes it once. + @@ -145789,6 +148980,39 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + LineEnding + + Canonical line ending: LF, CRLF, or CR. Omit it to retain the source preference. + + String + + LF + CRLF + CR + + + String + + + None + + + Mode + + Writer mode. Preserve retains unchanged source; Canonical emits stable formatting. + + AsciiDocWriterMode + + Preserve + Canonical + + + AsciiDocWriterMode + + + None + Options @@ -145840,6 +149064,39 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + LineEnding + + Canonical line ending: LF, CRLF, or CR. Omit it to retain the source preference. + + String + + LF + CRLF + CR + + + String + + + None + + + Mode + + Writer mode. Preserve retains unchanged source; Canonical emits stable formatting. + + AsciiDocWriterMode + + Preserve + Canonical + + + AsciiDocWriterMode + + + None + Options @@ -146666,6 +149923,39 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + LineEnding + + Canonical line ending: LF, CRLF, or CR. Omit it to retain the source preference. + + String + + LF + CRLF + CR + + + String + + + None + + + Mode + + Writer mode. Preserve retains unchanged source; Canonical normalizes output. + + LatexWriterMode + + Preserve + Canonical + + + LatexWriterMode + + + None + Options @@ -146717,6 +150007,39 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + LineEnding + + Canonical line ending: LF, CRLF, or CR. Omit it to retain the source preference. + + String + + LF + CRLF + CR + + + String + + + None + + + Mode + + Writer mode. Preserve retains unchanged source; Canonical normalizes output. + + LatexWriterMode + + Preserve + Canonical + + + LatexWriterMode + + + None + Options diff --git a/Docs/Get-OfficeOpenDocument.md b/Docs/Get-OfficeOpenDocument.md index 1b9e1059..ca659255 100644 --- a/Docs/Get-OfficeOpenDocument.md +++ b/Docs/Get-OfficeOpenDocument.md @@ -11,7 +11,7 @@ Loads a native ODT, ODS, or ODP document. ## SYNTAX ### __AllParameterSets ```powershell -Get-OfficeOpenDocument [-Path] [-Options ] [] +Get-OfficeOpenDocument [-Path] [-Options ] [-Password ] [-MaxPackageBytes ] [-MaxEntries ] [-MaxEntryUncompressedBytes ] [-MaxTotalUncompressedBytes ] [-MaxTotalKdfIterations ] [-MaxCompressionRatio ] [-MaxDepth ] [-MaxXmlCharacters ] [-MaxXmlDepth ] [] ``` ## DESCRIPTION @@ -27,6 +27,150 @@ Get-OfficeOpenDocument -Path 'C:\Path' ## PARAMETERS +### -MaxCompressionRatio +Maximum declared expansion ratio for a compressed entry. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxDepth +Maximum archive path depth. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxEntries +Maximum number of ZIP entries. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxEntryUncompressedBytes +Maximum uncompressed size of one package entry. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxPackageBytes +Maximum source package size in bytes. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxTotalKdfIterations +Maximum aggregate PBKDF2 iterations across encrypted entries. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxTotalUncompressedBytes +Maximum aggregate uncompressed package size. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxXmlCharacters +Maximum characters allowed in one parsed XML part. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxXmlDepth +Maximum element nesting depth in one parsed XML part. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Options Optional bounded package and XML settings. @@ -43,6 +187,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -Password +Password used to decrypt an encrypted OpenDocument package. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Path Path to an ODT, ODS, or ODP file. diff --git a/Docs/New-OfficeExcelPdfOptions.md b/Docs/New-OfficeExcelPdfOptions.md new file mode 100644 index 00000000..ded7e0fd --- /dev/null +++ b/Docs/New-OfficeExcelPdfOptions.md @@ -0,0 +1,572 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficeExcelPdfOptions +## SYNOPSIS +Creates discoverable Excel-to-PDF conversion options for Export-OfficeDocumentPdf. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficeExcelPdfOptions [-PdfOptions ] [-FontFamily ] [-PageSize ] [-MarginLeft ] [-MarginTop ] [-MarginRight ] [-MarginBottom ] [-WorksheetLayout ] [-SheetName ] [-RespectWorkbookSheetVisibility] [-UseWorksheetPrintAreas] [-UseWorksheetPageSetup] [-UseWorksheetPrintTitleRows] [-UseWorksheetPageBreaks] [-UseWorksheetHeadersAndFooters] [-UseWorksheetHeaderFooterImages] [-UseWorksheetCellStyles] [-UseWorksheetHyperlinks] [-UseWorksheetImages] [-UseWorksheetCharts] [-ChartStyle ] [-ChartLayout ] [-UseWorksheetMergedCells] [-UseWorksheetColumnWidths] [-UseWorksheetRowHeights] [-RespectWorksheetHiddenRowsAndColumns] [-IncludeSheetHeadings] [-HeaderRowCount ] [-MaxRowsPerSheet ] [-UseBoundedWorksheetRead] [-EmptyCellText ] [-AllowSystemFontEmbedding] [-AllowDocumentFontEmbedding] [] +``` + +## DESCRIPTION +Creates discoverable Excel-to-PDF conversion options for Export-OfficeDocumentPdf. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $options = New-OfficeExcelPdfOptions -SheetName Summary,Services -UseWorksheetCharts -UseWorksheetImages +Export-OfficeDocumentPdf -InputPath .\Report.xlsx -Path .\Report.pdf -ExcelOptions $options +``` + + +## PARAMETERS + +### -AllowDocumentFontEmbedding +Allow embedding fonts stored in the workbook. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -AllowSystemFontEmbedding +Allow embedding fonts discovered on the current system. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ChartLayout +Chart layout override. + +```yaml +Type: OfficeChartLayout +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ChartStyle +Chart visual style override. + +```yaml +Type: OfficeChartStyle +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -EmptyCellText +Text used when a worksheet cell is empty. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -FontFamily +Default font family used when the workbook does not specify one. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -HeaderRowCount +Number of leading rows treated as headers. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeSheetHeadings +Include worksheet row and column headings. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MarginBottom +Bottom page margin in PDF points. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MarginLeft +Left page margin in PDF points. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MarginRight +Right page margin in PDF points. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MarginTop +Top page margin in PDF points. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxRowsPerSheet +Maximum worksheet rows to read and render. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PageSize +PDF page size. + +```yaml +Type: PageSize +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PdfOptions +Underlying low-level OfficeIMO PDF options. + +```yaml +Type: PdfOptions +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RespectWorkbookSheetVisibility +Exclude workbook sheets marked hidden. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RespectWorksheetHiddenRowsAndColumns +Exclude hidden worksheet rows and columns. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SheetName +Worksheet names to export. The default exports all eligible sheets. + +```yaml +Type: String[] +Parameter Sets: __AllParameterSets +Aliases: SheetNames +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UseBoundedWorksheetRead +Use bounded worksheet reads for large workbooks. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UseWorksheetCellStyles +Render worksheet cell styles. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UseWorksheetCharts +Render worksheet charts. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UseWorksheetColumnWidths +Honor worksheet column widths. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UseWorksheetHeaderFooterImages +Render images referenced by worksheet headers and footers. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UseWorksheetHeadersAndFooters +Render worksheet headers and footers. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UseWorksheetHyperlinks +Render worksheet hyperlinks. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UseWorksheetImages +Render worksheet images. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UseWorksheetMergedCells +Render merged worksheet cells. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UseWorksheetPageBreaks +Honor worksheet page breaks. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UseWorksheetPageSetup +Honor worksheet page setup. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UseWorksheetPrintAreas +Honor worksheet print areas. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UseWorksheetPrintTitleRows +Honor worksheet rows configured to repeat on printed pages. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UseWorksheetRowHeights +Honor worksheet row heights. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WorksheetLayout +Controls how worksheet content is laid out on PDF pages. + +```yaml +Type: ExcelPdfWorksheetLayoutMode +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: WorksheetCanvas, FlowTable + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.Excel.Pdf.ExcelPdfSaveOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficeMarkdownPdfOptions.md b/Docs/New-OfficeMarkdownPdfOptions.md new file mode 100644 index 00000000..0ec68124 --- /dev/null +++ b/Docs/New-OfficeMarkdownPdfOptions.md @@ -0,0 +1,381 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficeMarkdownPdfOptions +## SYNOPSIS +Creates discoverable Markdown-to-PDF conversion options for Export-OfficeDocumentPdf. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficeMarkdownPdfOptions [-Options ] [-PdfOptions ] [-Theme ] [-FontFamily ] [-Title ] [-Author ] [-Subject ] [-Keywords ] [-BaseDirectory ] [-ApplyWordLikeTheme] [-IncludeLocalImages] [-IncludeDataUriImages] [-RestrictLocalImagesToBaseDirectory] [-MaximumDataUriImageBytes ] [-DefaultImageWidth ] [-DefaultImageHeight ] [-FrontMatterRenderMode ] [-UseFrontMatterVisualTheme] [-UseFrontMatterMetadata] [-UseFirstHeadingAsTitle] [-CreateOutlineFromHeadings] [] +``` + +## DESCRIPTION +Creates discoverable Markdown-to-PDF conversion options for Export-OfficeDocumentPdf. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $options = New-OfficeMarkdownPdfOptions -Title 'Service report' -Author 'Evotec' -IncludeLocalImages -BaseDirectory .\Assets +Export-OfficeDocumentPdf -InputPath .\Report.md -Path .\Report.pdf -MarkdownOptions $options +``` + +Builds a typed options object through ordinary PowerShell parameters; no hashtable or .NET construction is required. + +## PARAMETERS + +### -ApplyWordLikeTheme +Apply the built-in Word-like Markdown PDF baseline theme. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Author +PDF author metadata. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -BaseDirectory +Base directory used to resolve local Markdown images. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CreateOutlineFromHeadings +Create PDF outlines from Markdown headings. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultImageHeight +Fallback image height in PDF points. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultImageWidth +Fallback image width in PDF points. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -FontFamily +Default font family. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -FrontMatterRenderMode +Controls how YAML front matter appears in the PDF body. + +```yaml +Type: MarkdownPdfFrontMatterRenderMode +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: Hidden, DocumentHeader, Table + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeDataUriImages +Embed supported data URI images. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeLocalImages +Embed supported local image files. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Keywords +PDF keywords metadata. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumDataUriImageBytes +Maximum decoded bytes for one data URI image. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Options +Existing Markdown PDF options to clone and override. + +```yaml +Type: MarkdownPdfSaveOptions +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -PdfOptions +Underlying low-level OfficeIMO PDF options. + +```yaml +Type: PdfOptions +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RestrictLocalImagesToBaseDirectory +Require local images to resolve under BaseDirectory. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Subject +PDF subject metadata. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Theme +Built-in visual theme. + +```yaml +Type: OfficeVisualThemeKind +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: Plain, WordLike, TechnicalDocument, GitHubLike, Compact, Report + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Title +PDF title metadata. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UseFirstHeadingAsTitle +Use the first Markdown heading as the PDF title when no title is supplied. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UseFrontMatterMetadata +Use front matter values as PDF metadata. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UseFrontMatterVisualTheme +Use front matter values to select a visual theme. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `OfficeIMO.Markdown.Pdf.MarkdownPdfSaveOptions` + +## OUTPUTS + +- `OfficeIMO.Markdown.Pdf.MarkdownPdfSaveOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficePowerPointPdfOptions.md b/Docs/New-OfficePowerPointPdfOptions.md new file mode 100644 index 00000000..8743c22e --- /dev/null +++ b/Docs/New-OfficePowerPointPdfOptions.md @@ -0,0 +1,364 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficePowerPointPdfOptions +## SYNOPSIS +Creates discoverable PowerPoint-to-PDF conversion options for Export-OfficeDocumentPdf. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficePowerPointPdfOptions [-PdfOptions ] [-FontFamily ] [-IncludePictures] [-IncludeAutoShapes] [-IncludeTextBoxes] [-IncludeSlideBackgrounds] [-IncludeTables] [-IncludeCharts] [-IncludeSmartArt] [-IncludeHiddenSlides] [-PageLayout ] [-HandoutSlidesPerPage ] [-IncludeSpeakerNotes] [-MaxGroupShapeDepth ] [-PictureFit ] [-WarnOnPictureAspectRatioDistortion] [-ChartStyle ] [-ChartLayout ] [-AllowSystemFontEmbedding] [-AllowDocumentFontEmbedding] [] +``` + +## DESCRIPTION +Creates discoverable PowerPoint-to-PDF conversion options for Export-OfficeDocumentPdf. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $options = New-OfficePowerPointPdfOptions -PageLayout Handouts -HandoutSlidesPerPage 3 -IncludeSpeakerNotes -IncludeHiddenSlides +Export-OfficeDocumentPdf -InputPath .\Briefing.pptx -Path .\Briefing.pdf -PowerPointOptions $options +``` + + +## PARAMETERS + +### -AllowDocumentFontEmbedding +Allow embedding fonts stored in the presentation. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -AllowSystemFontEmbedding +Allow embedding fonts discovered on the current system. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ChartLayout +Chart layout override. + +```yaml +Type: OfficeChartLayout +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ChartStyle +Chart visual style override. + +```yaml +Type: OfficeChartStyle +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -FontFamily +Default font family used when the presentation does not specify one. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -HandoutSlidesPerPage +Number of slides on each handout page. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeAutoShapes +Render automatic shapes. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeCharts +Render charts. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeHiddenSlides +Include slides marked hidden. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludePictures +Render pictures. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeSlideBackgrounds +Render slide backgrounds. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeSmartArt +Render SmartArt. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeSpeakerNotes +Include speaker notes. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeTables +Render tables. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeTextBoxes +Render text boxes. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxGroupShapeDepth +Maximum nested group-shape depth to render. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PageLayout +PDF page layout, such as slides, notes, or handouts. + +```yaml +Type: PowerPointPdfPageLayout +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: Slides, NotesPages, Handouts + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PdfOptions +Underlying low-level OfficeIMO PDF options. + +```yaml +Type: PdfOptions +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PictureFit +How pictures fit their shape bounds. + +```yaml +Type: OfficeImageFit +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: Stretch, Contain, Cover + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WarnOnPictureAspectRatioDistortion +Report pictures whose requested fit distorts their aspect ratio. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.PowerPoint.Pdf.PowerPointPdfSaveOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficeRtfPdfOptions.md b/Docs/New-OfficeRtfPdfOptions.md new file mode 100644 index 00000000..23cf1bc3 --- /dev/null +++ b/Docs/New-OfficeRtfPdfOptions.md @@ -0,0 +1,236 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficeRtfPdfOptions +## SYNOPSIS +Creates discoverable RTF-to-PDF conversion options for Export-OfficeDocumentPdf. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficeRtfPdfOptions [-PdfOptions ] [-IncludeHiddenText] [-IncludeImages] [-DefaultImageWidth ] [-DefaultImageHeight ] [-IncludeMetadata] [-IncludeTables] [-IncludeHeaderFooters] [-IncludeNotes] [-MaximumSystemFontFamilies ] [-AllowSystemFontEmbedding] [-AllowDocumentFontEmbedding] [] +``` + +## DESCRIPTION +Creates discoverable RTF-to-PDF conversion options for Export-OfficeDocumentPdf. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $options = New-OfficeRtfPdfOptions -IncludeImages $true -IncludeTables $true -IncludeHeaderFooters $true -MaximumSystemFontFamilies 32 +Export-OfficeDocumentPdf -InputPath .\Report.rtf -Path .\Report.pdf -RtfOptions $options +``` + + +## PARAMETERS + +### -AllowDocumentFontEmbedding +Allow embedding fonts referenced by the RTF document. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -AllowSystemFontEmbedding +Allow embedding fonts discovered on the current system. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultImageHeight +Fallback image height in PDF points. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultImageWidth +Fallback image width in PDF points. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeHeaderFooters +Render headers and footers. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeHiddenText +Include text marked hidden. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeImages +Render images. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeMetadata +Copy document metadata into the PDF. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeNotes +Render document notes. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeTables +Render tables. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumSystemFontFamilies +Maximum number of system font families to discover. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PdfOptions +Underlying low-level OfficeIMO PDF options. + +```yaml +Type: PdfOptions +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.Rtf.Pdf.RtfPdfSaveOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficeWordPdfOptions.md b/Docs/New-OfficeWordPdfOptions.md new file mode 100644 index 00000000..c67b18cb --- /dev/null +++ b/Docs/New-OfficeWordPdfOptions.md @@ -0,0 +1,348 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficeWordPdfOptions +## SYNOPSIS +Creates discoverable Word-to-PDF conversion options for Export-OfficeDocumentPdf. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficeWordPdfOptions [-PdfOptions ] [-FontFamily ] [-PageSize ] [-Orientation ] [-DefaultPageSize ] [-DefaultOrientation ] [-MarginLeft ] [-MarginTop ] [-MarginRight ] [-MarginBottom ] [-Title ] [-Author ] [-Subject ] [-Keywords ] [-IncludePageNumbers] [-PageNumberFormat ] [-DefaultTableBorders] [-AllowSystemFontEmbedding] [-AllowDocumentFontEmbedding] [] +``` + +## DESCRIPTION +Creates discoverable Word-to-PDF conversion options for Export-OfficeDocumentPdf. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $options = New-OfficeWordPdfOptions -Title 'Service report' -Author 'Evotec' -IncludePageNumbers -AllowSystemFontEmbedding +Export-OfficeDocumentPdf -InputPath .\Report.docx -Path .\Report.pdf -WordOptions $options +``` + + +## PARAMETERS + +### -AllowDocumentFontEmbedding +Allow embedding fonts stored in the Word document. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -AllowSystemFontEmbedding +Allow embedding fonts discovered on the current system. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Author +PDF author metadata. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultOrientation +Fallback page orientation for sections without page settings. + +```yaml +Type: OfficePageOrientation +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: Portrait, Landscape + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultPageSize +Fallback Word page size for sections without page settings. + +```yaml +Type: WordPageSize +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: Unknown, Letter, Legal, Statement, Executive, A3, A4, A5, A6, B5 + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultTableBorders +Draw default borders for tables that do not specify borders. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -FontFamily +Default font family used when the document does not specify one. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludePageNumbers +Include page numbers in the generated PDF. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Keywords +PDF keywords metadata. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MarginBottom +Bottom page margin in PDF points. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MarginLeft +Left page margin in PDF points. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MarginRight +Right page margin in PDF points. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MarginTop +Top page margin in PDF points. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Orientation +PDF page orientation. + +```yaml +Type: OfficePageOrientation +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: Portrait, Landscape + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PageNumberFormat +Page number text format. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PageSize +PDF page size. + +```yaml +Type: PageSize +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PdfOptions +Underlying low-level OfficeIMO PDF options. + +```yaml +Type: PdfOptions +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Subject +PDF subject metadata. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Title +PDF title metadata. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.Word.Pdf.WordPdfSaveOptions` + +## RELATED LINKS + +- None diff --git a/Docs/Readme.md b/Docs/Readme.md index f156c3c1..29fb7f7e 100644 --- a/Docs/Readme.md +++ b/Docs/Readme.md @@ -1060,9 +1060,15 @@ Creates a new Excel workbook using the DSL. ### [New-OfficeExcelDashboard](New-OfficeExcelDashboard.md) Builds a worksheet dashboard from tabular data using OfficeIMO dashboard defaults. +### [New-OfficeExcelPdfOptions](New-OfficeExcelPdfOptions.md) +Creates discoverable Excel-to-PDF conversion options for Export-OfficeDocumentPdf. + ### [New-OfficeMarkdown](New-OfficeMarkdown.md) Creates a Markdown document using a DSL scriptblock. +### [New-OfficeMarkdownPdfOptions](New-OfficeMarkdownPdfOptions.md) +Creates discoverable Markdown-to-PDF conversion options for Export-OfficeDocumentPdf. + ### [New-OfficeOpenDocument](New-OfficeOpenDocument.md) Creates a native ODT, ODS, or ODP document. @@ -1090,9 +1096,15 @@ Creates a PowerPoint presentation using the DSL. ### [New-OfficePowerPointDeckPlan](New-OfficePowerPointDeckPlan.md) Creates a semantic PowerPoint deck plan for designer rendering. +### [New-OfficePowerPointPdfOptions](New-OfficePowerPointPdfOptions.md) +Creates discoverable PowerPoint-to-PDF conversion options for Export-OfficeDocumentPdf. + ### [New-OfficeRtf](New-OfficeRtf.md) Creates an RTF document with plain paragraph content. +### [New-OfficeRtfPdfOptions](New-OfficeRtfPdfOptions.md) +Creates discoverable RTF-to-PDF conversion options for Export-OfficeDocumentPdf. + ### [New-OfficeTextRun](New-OfficeTextRun.md) Creates a reusable rich text run specification for Word, Excel, PowerPoint, and PDF commands. @@ -1105,6 +1117,9 @@ Generates the OfficeIMO Visio reference gallery as editable .vsdx diagrams. ### [New-OfficeWord](New-OfficeWord.md) Creates a Word document using the DSL. +### [New-OfficeWordPdfOptions](New-OfficeWordPdfOptions.md) +Creates discoverable Word-to-PDF conversion options for Export-OfficeDocumentPdf. + ### [New-OfficeWordTableCell](New-OfficeWordTableCell.md) Creates a reusable Word table cell definition for explicit table rows. diff --git a/Docs/Save-OfficeAsciiDoc.md b/Docs/Save-OfficeAsciiDoc.md index ec5edddc..47f91b67 100644 --- a/Docs/Save-OfficeAsciiDoc.md +++ b/Docs/Save-OfficeAsciiDoc.md @@ -11,7 +11,7 @@ Saves an OfficeIMO AsciiDoc document. ## SYNTAX ### __AllParameterSets ```powershell -Save-OfficeAsciiDoc [-Document] [-Path] [-Options ] [-PassThru] [-WhatIf] [-Confirm] [] +Save-OfficeAsciiDoc [-Document] [-Path] [-Options ] [-Mode ] [-LineEnding ] [-PassThru] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -43,6 +43,38 @@ Accept pipeline input: True (ByValue) Accept wildcard characters: False ``` +### -LineEnding +Canonical line ending: LF, CRLF, or CR. Omit it to retain the source preference. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: LF, CRLF, CR + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Mode +Writer mode. Preserve retains unchanged source; Canonical emits stable formatting. + +```yaml +Type: AsciiDocWriterMode +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: Preserve, Canonical + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Options Optional writer settings. diff --git a/Docs/Save-OfficeLatex.md b/Docs/Save-OfficeLatex.md index 57614d0c..12fd440c 100644 --- a/Docs/Save-OfficeLatex.md +++ b/Docs/Save-OfficeLatex.md @@ -11,7 +11,7 @@ Saves an OfficeIMO LaTeX document. ## SYNTAX ### __AllParameterSets ```powershell -Save-OfficeLatex [-Document] [-Path] [-Options ] [-PassThru] [-WhatIf] [-Confirm] [] +Save-OfficeLatex [-Document] [-Path] [-Options ] [-Mode ] [-LineEnding ] [-PassThru] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -43,6 +43,38 @@ Accept pipeline input: True (ByValue) Accept wildcard characters: False ``` +### -LineEnding +Canonical line ending: LF, CRLF, or CR. Omit it to retain the source preference. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: LF, CRLF, CR + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Mode +Writer mode. Preserve retains unchanged source; Canonical normalizes output. + +```yaml +Type: LatexWriterMode +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: Preserve, Canonical + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Options Optional writer settings. diff --git a/Examples/Pdf/Example-OfficePdfExports.ps1 b/Examples/Pdf/Example-OfficePdfExports.ps1 index d39a228a..f4befcbe 100644 --- a/Examples/Pdf/Example-OfficePdfExports.ps1 +++ b/Examples/Pdf/Example-OfficePdfExports.ps1 @@ -38,7 +38,16 @@ New-OfficeMarkdown -Path $markdownPath { MarkdownParagraph 'Markdown keeps the same authoring mindset with format-appropriate simplification.' MarkdownTable -InputObject $rows } -Export-OfficeDocumentPdf -InputPath $markdownPath -Path $markdownPdf +$markdownOptions = New-OfficeMarkdownPdfOptions ` + -Title 'Markdown PDF export' ` + -Author 'PSWriteOffice' ` + -CreateOutlineFromHeadings +Export-OfficeDocumentPdf ` + -InputPath $markdownPath ` + -Path $markdownPdf ` + -MarkdownOptions $markdownOptions ` + -PdfWarningVariable markdownWarnings ` + -PdfConversionReportVariable markdownReport New-OfficePowerPoint -Path $powerPointPath { PptSlide { diff --git a/PSWriteOffice.psd1 b/PSWriteOffice.psd1 index 257436ca..5c1ab8d3 100644 --- a/PSWriteOffice.psd1 +++ b/PSWriteOffice.psd1 @@ -1,7 +1,7 @@ @{ AliasesToExport = @('Compare-OfficeExcelSheet', 'ConvertFrom-MarkdownHtml', 'ConvertFrom-PdfHtml', 'ConvertFrom-Rtf', 'ConvertFrom-WordHtml', 'ConvertFrom-WordMarkdown', 'ConvertTo-ExcelHtml', 'ConvertTo-MarkdownHtml', 'ConvertTo-PdfExcel', 'ConvertTo-PdfHtml', 'ConvertTo-PdfPowerPoint', 'ConvertTo-PdfWord', 'ConvertTo-PowerPointHtml', 'ConvertTo-Rtf', 'ConvertTo-VisioPng', 'ConvertTo-VisioSvg', 'ConvertTo-WordHtml', 'ConvertTo-WordMarkdown', 'Edit-ExcelRow', 'ExcelAccessibility', 'ExcelActiveSheet', 'ExcelAutoFilter', 'ExcelAutoFilterClear', 'ExcelAutoFilterSet', 'ExcelAutoFit', 'ExcelCell', 'ExcelChart', 'ExcelChartAxis', 'ExcelChartPoint', 'ExcelChartSeries', 'ExcelChartTrendline', 'ExcelColumn', 'ExcelColumnGroup', 'ExcelColumnStyle', 'ExcelColumnStyleByHeader', 'ExcelComment', 'ExcelCommentAudit', 'ExcelCommentClear', 'ExcelCommentRemove', 'ExcelComments', 'ExcelCommentsAudit', 'ExcelCommentUpdate', 'ExcelCompare', 'ExcelConditionalColorScale', 'ExcelConditionalDataBar', 'ExcelConditionalFormatting', 'ExcelConditionalFormattingClear', 'ExcelConditionalIconSet', 'ExcelConditionalRule', 'ExcelConnectionMetadata', 'ExcelCsvImport', 'ExcelDashboard', 'ExcelDashboardChart', 'ExcelDataModel', 'ExcelDataSet', 'ExcelDataValidation', 'ExcelDataValidationClear', 'ExcelDataValidationMessage', 'ExcelDateSystem', 'ExcelDelimitedImport', 'ExcelDoctor', 'ExcelExecutionPolicy', 'ExcelExport', 'ExcelFormula', 'ExcelFormulaAnalysis', 'ExcelFormulaAudit', 'ExcelFreeze', 'ExcelGridlines', 'ExcelHeaderFooter', 'ExcelHyperlink', 'ExcelHyperlinkHost', 'ExcelHyperlinkSmart', 'ExcelImage', 'ExcelImageFromUrl', 'ExcelImport', 'ExcelInternalLinks', 'ExcelInternalLinksByHeader', 'ExcelMargins', 'ExcelNamedRange', 'ExcelNamedRangeRemove', 'ExcelNamedRangeRename', 'ExcelNew', 'ExcelNumberFormatPreset', 'ExcelOrientation', 'ExcelPackageCopy', 'ExcelPackageMetadata', 'ExcelPageBreak', 'ExcelPageBreakClear', 'ExcelPageBreaks', 'ExcelPageSetup', 'ExcelPivotTable', 'ExcelPivotTables', 'ExcelPowerQuery', 'ExcelPowerQueryMetadata', 'ExcelPreflight', 'ExcelPrintArea', 'ExcelPrintLayout', 'ExcelPrintTitles', 'ExcelProtect', 'ExcelQueryMetadata', 'ExcelRangeClear', 'ExcelRefreshOnOpen', 'ExcelRepair', 'ExcelReportCallout', 'ExcelReportKpiRow', 'ExcelReportLegend', 'ExcelReportParagraph', 'ExcelReportSection', 'ExcelReportSheet', 'ExcelReportSpacer', 'ExcelReportTable', 'ExcelReportTitle', 'ExcelRichText', 'ExcelRichTextRuns', 'ExcelRow', 'ExcelRowEdit', 'ExcelRowGroup', 'ExcelRuntimePreflight', 'ExcelSheet', 'ExcelSheetCopy', 'ExcelSheetJoin', 'ExcelSheetMerge', 'ExcelSheetOrder', 'ExcelSheetTabColor', 'ExcelSheetView', 'ExcelSheetVisibility', 'ExcelSlicer', 'ExcelSort', 'ExcelSparkline', 'ExcelStreamingContract', 'ExcelSubtotals', 'ExcelSubtotalSummary', 'ExcelSummary', 'ExcelTable', 'ExcelTableOfContents', 'ExcelTableStyle', 'ExcelTemplate', 'ExcelTemplateApply', 'ExcelTemplateBinding', 'ExcelTemplateMarkers', 'ExcelTemplateOptionalRow', 'ExcelTemplateOptionalRows', 'ExcelTemplateRow', 'ExcelTemplateRows', 'ExcelTemplateSheet', 'ExcelTemplateSheets', 'ExcelTemplateValidate', 'ExcelTextRun', 'ExcelTheme', 'ExcelThreadedComment', 'ExcelTimeline', 'ExcelUnprotect', 'ExcelUrlLinks', 'ExcelUrlLinksByHeader', 'ExcelValidationCustomFormula', 'ExcelValidationDate', 'ExcelValidationDecimal', 'ExcelValidationList', 'ExcelValidationTextLength', 'ExcelValidationTime', 'ExcelValidationWholeNumber', 'ExcelVisual', 'ExcelWorkbookCompare', 'ExcelWorkbookCopy', 'ExcelWorkbookDoctor', 'ExcelWorkbookJoin', 'ExcelWorkbookMerge', 'ExcelWorkbookProtect', 'ExcelWorkbookRepair', 'ExcelWorkbookUnprotect', 'ExcelWorksheetView', 'ExcelWriteReservation', 'ExcelWriteReservationClear', 'ExcelWriteReservationSet', 'Export-OfficeDocumentAsset', 'Export-VisioStencilPreviewGallery', 'Find-VisioStencil', 'Get-OfficeReaderCapability', 'Import-VisioStencil', 'MarkdownCallout', 'MarkdownCode', 'MarkdownDefinitionList', 'MarkdownDetails', 'MarkdownFrontMatter', 'MarkdownHeading', 'MarkdownHorizontalRule', 'MarkdownHr', 'MarkdownImage', 'MarkdownList', 'MarkdownNew', 'MarkdownParagraph', 'MarkdownQuote', 'MarkdownTable', 'MarkdownTableOfContents', 'MarkdownTaskList', 'MarkdownToc', 'Merge-OfficeExcelSheet', 'Merge-OfficeExcelWorkbook', 'Merge-OfficeWordDocument', 'New-VisioGallery', 'OfficeVisual', 'PdfAttachment', 'PdfBackground', 'PdfBackgroundImage', 'PdfBackgroundShape', 'PdfBookmark', 'PdfCanvasStamp', 'PdfCanvasText', 'PdfCompliance', 'PdfElectronicInvoice', 'PdfFooter', 'PdfFormField', 'PdfHeader', 'PdfHeading', 'PdfHorizontalRule', 'PdfHr', 'PdfImage', 'PdfList', 'PdfMetadata', 'PdfNativeTextRun', 'PdfNew', 'PdfPageBorder', 'PdfPageBreak', 'PdfPageOverlay', 'PdfPageSetup', 'PdfPanel', 'PdfParagraph', 'PdfRow', 'PdfSpace', 'PdfSpacer', 'PdfStamp', 'PdfTable', 'PdfTableCell', 'PdfTableCellCheckBox', 'PdfTableCellField', 'PdfTableCellImage', 'PdfText', 'PdfTextRun', 'PdfTheme', 'PdfVisual', 'PdfWatermark', 'PowerPointNew', 'PowerPointTextRun', 'PptArrange', 'PptBackground', 'PptBullets', 'PptChart', 'PptDeckPlan', 'PptDesignerDeck', 'PptImage', 'PptLayoutBox', 'PptLayoutPlaceholderBounds', 'PptLayoutPlaceholderMargins', 'PptLayoutPlaceholders', 'PptLayoutPlaceholderTextStyle', 'PptNew', 'PptNotes', 'PptPlaceholderText', 'PptPlanCapability', 'PptPlanCardGrid', 'PptPlanCaseStudy', 'PptPlanCoverage', 'PptPlanLogoWall', 'PptPlanProcess', 'PptPlanSection', 'PptSection', 'PptShape', 'PptShapeLayout', 'PptSlide', 'PptSlideLayout', 'PptSlideSize', 'PptTable', 'PptTextBox', 'PptTextRun', 'PptTheme', 'PptThemeColor', 'PptThemeFonts', 'PptThemeName', 'PptTitle', 'PptTransition', 'PptVisual', 'Read-OfficeDocument', 'Read-OfficeDocumentAsset', 'Read-OfficeDocumentChunk', 'Read-OfficeDocumentTable', 'Read-OfficeDocumentVisual', 'Replace-OfficeExcelText', 'Replace-OfficePowerPointText', 'Replace-OfficeRtfText', 'Replace-OfficeWordText', 'RtfNew', 'RtfOpen', 'RtfText', 'Set-OfficeExcelSheetOrder', 'TextRun', 'VisioArrange', 'VisioConnector', 'VisioContainer', 'VisioDiamond', 'VisioEllipse', 'VisioInfo', 'VisioLayout', 'VisioNew', 'VisioOpen', 'VisioPage', 'VisioRect', 'VisioRectangle', 'VisioSave', 'VisioStencil', 'VisioStencilCatalog', 'VisioText', 'VisioTextBox', 'WordBold', 'WordBookmark', 'WordBreak', 'WordChart', 'WordCheckBox', 'WordCheckBoxes', 'WordComboBox', 'WordComboBoxes', 'WordContentControl', 'WordContentControls', 'WordCoverPage', 'WordDatePicker', 'WordDatePickers', 'WordDocumentJoin', 'WordDropDownList', 'WordDropDownLists', 'WordEndnote', 'WordEndnotes', 'WordEquation', 'WordField', 'WordFooter', 'WordFootnote', 'WordFootnotes', 'WordHeader', 'WordHyperlink', 'WordImage', 'WordImages', 'WordImageStyle', 'WordItalic', 'WordList', 'WordListItem', 'WordNew', 'WordPageNumber', 'WordPageSetup', 'WordParagraph', 'WordParagraphStyle', 'WordPictureControl', 'WordPictureControls', 'WordRepeatingSection', 'WordRepeatingSections', 'WordSection', 'WordShape', 'WordShapes', 'WordShapeStyle', 'WordStatistics', 'WordTable', 'WordTableCell', 'WordTableCells', 'WordTableCellSpec', 'WordTableCellStyle', 'WordTableCondition', 'WordTableOfContents', 'WordTabStop', 'WordText', 'WordTextBox', 'WordTextRun', 'WordTextStyle', 'WordVisual', 'WordWatermark') Author = 'Przemyslaw Klys' - CmdletsToExport = @('Add-OfficeExcelAutoFilter', 'Add-OfficeExcelChart', 'Add-OfficeExcelComment', 'Add-OfficeExcelConditionalColorScale', 'Add-OfficeExcelConditionalDataBar', 'Add-OfficeExcelConditionalIconSet', 'Add-OfficeExcelConditionalRule', 'Add-OfficeExcelDashboardChart', 'Add-OfficeExcelDataSet', 'Add-OfficeExcelImage', 'Add-OfficeExcelImageFromUrl', 'Add-OfficeExcelPackageMetadata', 'Add-OfficeExcelPageBreak', 'Add-OfficeExcelPivotTable', 'Add-OfficeExcelPowerQueryMetadata', 'Add-OfficeExcelReportCallout', 'Add-OfficeExcelReportKpiRow', 'Add-OfficeExcelReportLegend', 'Add-OfficeExcelReportParagraph', 'Add-OfficeExcelReportSection', 'Add-OfficeExcelReportSheet', 'Add-OfficeExcelReportSpacer', 'Add-OfficeExcelReportTable', 'Add-OfficeExcelReportTitle', 'Add-OfficeExcelSheet', 'Add-OfficeExcelSlicer', 'Add-OfficeExcelSparkline', 'Add-OfficeExcelSubtotalSummary', 'Add-OfficeExcelTable', 'Add-OfficeExcelTableOfContents', 'Add-OfficeExcelTableRow', 'Add-OfficeExcelThreadedComment', 'Add-OfficeExcelTimeline', 'Add-OfficeExcelValidationCustomFormula', 'Add-OfficeExcelValidationDate', 'Add-OfficeExcelValidationDecimal', 'Add-OfficeExcelValidationList', 'Add-OfficeExcelValidationTextLength', 'Add-OfficeExcelValidationTime', 'Add-OfficeExcelValidationWholeNumber', 'Add-OfficeExcelVisual', 'Add-OfficeMarkdownCallout', 'Add-OfficeMarkdownCode', 'Add-OfficeMarkdownDefinitionList', 'Add-OfficeMarkdownDetails', 'Add-OfficeMarkdownFrontMatter', 'Add-OfficeMarkdownHeading', 'Add-OfficeMarkdownHorizontalRule', 'Add-OfficeMarkdownImage', 'Add-OfficeMarkdownList', 'Add-OfficeMarkdownParagraph', 'Add-OfficeMarkdownQuote', 'Add-OfficeMarkdownTable', 'Add-OfficeMarkdownTableOfContents', 'Add-OfficeMarkdownTaskList', 'Add-OfficePdfAttachment', 'Add-OfficePdfBackgroundShape', 'Add-OfficePdfBookmark', 'Add-OfficePdfCanvas', 'Add-OfficePdfCanvasText', 'Add-OfficePdfFormField', 'Add-OfficePdfHeading', 'Add-OfficePdfHorizontalRule', 'Add-OfficePdfImage', 'Add-OfficePdfList', 'Add-OfficePdfPageBreak', 'Add-OfficePdfPageOverlay', 'Add-OfficePdfPanel', 'Add-OfficePdfParagraph', 'Add-OfficePdfRow', 'Add-OfficePdfSpacer', 'Add-OfficePdfStamp', 'Add-OfficePdfTable', 'Add-OfficePdfText', 'Add-OfficePdfVisual', 'Add-OfficePdfWatermark', 'Add-OfficePowerPointBullets', 'Add-OfficePowerPointChart', 'Add-OfficePowerPointDesignerDeck', 'Add-OfficePowerPointImage', 'Add-OfficePowerPointPlanCapability', 'Add-OfficePowerPointPlanCardGrid', 'Add-OfficePowerPointPlanCaseStudy', 'Add-OfficePowerPointPlanCoverage', 'Add-OfficePowerPointPlanLogoWall', 'Add-OfficePowerPointPlanProcess', 'Add-OfficePowerPointPlanSection', 'Add-OfficePowerPointSection', 'Add-OfficePowerPointShape', 'Add-OfficePowerPointSlide', 'Add-OfficePowerPointTable', 'Add-OfficePowerPointTableRow', 'Add-OfficePowerPointTextBox', 'Add-OfficePowerPointVisual', 'Add-OfficeVisioConnector', 'Add-OfficeVisioContainer', 'Add-OfficeVisioDiamond', 'Add-OfficeVisioEllipse', 'Add-OfficeVisioPage', 'Add-OfficeVisioRectangle', 'Add-OfficeVisioStencilShape', 'Add-OfficeVisioTextBox', 'Add-OfficeWordBookmark', 'Add-OfficeWordBreak', 'Add-OfficeWordChart', 'Add-OfficeWordCheckBox', 'Add-OfficeWordComboBox', 'Add-OfficeWordContentControl', 'Add-OfficeWordCoverPage', 'Add-OfficeWordDatePicker', 'Add-OfficeWordDropDownList', 'Add-OfficeWordEndnote', 'Add-OfficeWordEquation', 'Add-OfficeWordField', 'Add-OfficeWordFooter', 'Add-OfficeWordFootnote', 'Add-OfficeWordHeader', 'Add-OfficeWordHyperlink', 'Add-OfficeWordImage', 'Add-OfficeWordList', 'Add-OfficeWordListItem', 'Add-OfficeWordPageNumber', 'Add-OfficeWordParagraph', 'Add-OfficeWordPictureControl', 'Add-OfficeWordRepeatingSection', 'Add-OfficeWordSection', 'Add-OfficeWordShape', 'Add-OfficeWordTable', 'Add-OfficeWordTableCell', 'Add-OfficeWordTableCondition', 'Add-OfficeWordTableOfContents', 'Add-OfficeWordTableRow', 'Add-OfficeWordTabStop', 'Add-OfficeWordText', 'Add-OfficeWordTextBox', 'Add-OfficeWordVisual', 'Add-OfficeWordWatermark', 'Clear-OfficeExcelAutoFilter', 'Clear-OfficeExcelComment', 'Clear-OfficeExcelConditionalFormatting', 'Clear-OfficeExcelDataValidation', 'Clear-OfficeExcelPageBreak', 'Clear-OfficeExcelRange', 'Clear-OfficeExcelWriteReservation', 'Clear-OfficePdfBackgroundShape', 'Close-OfficeExcel', 'Close-OfficePowerPoint', 'Close-OfficeWord', 'Compare-OfficeExcelRange', 'Compare-OfficeExcelWorkbook', 'Compare-OfficePdfVisual', 'Compare-OfficeWordDocument', 'ConvertFrom-OfficeAsciiDocMarkdown', 'ConvertFrom-OfficeCsv', 'ConvertFrom-OfficeLatexMarkdown', 'ConvertFrom-OfficeMarkdownHtml', 'ConvertFrom-OfficeOpenDocument', 'ConvertFrom-OfficePdfHtml', 'ConvertFrom-OfficeRtf', 'ConvertFrom-OfficeWordHtml', 'ConvertFrom-OfficeWordMarkdown', 'ConvertTo-OfficeAsciiDocMarkdown', 'ConvertTo-OfficeCsv', 'ConvertTo-OfficeExcelHtml', 'ConvertTo-OfficeExcelWorkbook', 'ConvertTo-OfficeLatexMarkdown', 'ConvertTo-OfficeMarkdown', 'ConvertTo-OfficeMarkdownHtml', 'ConvertTo-OfficeOpenDocument', 'ConvertTo-OfficePdfExcel', 'ConvertTo-OfficePdfFlatAnnotation', 'ConvertTo-OfficePdfFlatForm', 'ConvertTo-OfficePdfHtml', 'ConvertTo-OfficePdfMarkdown', 'ConvertTo-OfficePdfOptimized', 'ConvertTo-OfficePdfPowerPoint', 'ConvertTo-OfficePdfRedacted', 'ConvertTo-OfficePdfSanitized', 'ConvertTo-OfficePdfTextRun', 'ConvertTo-OfficePdfWord', 'ConvertTo-OfficePowerPointHtml', 'ConvertTo-OfficeRtf', 'ConvertTo-OfficeVisioPng', 'ConvertTo-OfficeVisioSvg', 'ConvertTo-OfficeVisioVisual', 'ConvertTo-OfficeVisual', 'ConvertTo-OfficeWordDocument', 'ConvertTo-OfficeWordHtml', 'ConvertTo-OfficeWordMarkdown', 'Copy-OfficeExcelSheet', 'Copy-OfficeExcelWorkbook', 'Copy-OfficePdfPage', 'Copy-OfficePowerPointSlide', 'Edit-OfficeExcelRow', 'Export-OfficeCsv', 'Export-OfficeDocumentPdf', 'Export-OfficeExcel', 'Export-OfficeExcelChartImage', 'Export-OfficeExcelGoogleSpreadsheet', 'Export-OfficeExcelImage', 'Export-OfficeExcelRangeImage', 'Export-OfficeHtmlImage', 'Export-OfficePdfImage', 'Export-OfficePdfLayoutOverlay', 'Export-OfficePdfXfdf', 'Export-OfficePowerPointImage', 'Export-OfficeVisioImage', 'Export-OfficeVisioStencilPreviewGallery', 'Export-OfficeVisioVisual', 'Export-OfficeWordGoogleDocument', 'Export-OfficeWordImage', 'Find-OfficeExcel', 'Find-OfficePowerPointShape', 'Find-OfficeVisioStencil', 'Find-OfficeWord', 'Find-OfficeWordList', 'Find-OfficeWordTable', 'Get-OfficeAsciiDoc', 'Get-OfficeConfluenceAttachment', 'Get-OfficeConfluencePage', 'Get-OfficeCsv', 'Get-OfficeDocument', 'Get-OfficeDocumentAsset', 'Get-OfficeDocumentBatch', 'Get-OfficeDocumentCapability', 'Get-OfficeDocumentChunk', 'Get-OfficeDocumentDetection', 'Get-OfficeDocumentHierarchy', 'Get-OfficeDocumentIngest', 'Get-OfficeDocumentPageMarkdown', 'Get-OfficeDocumentStructured', 'Get-OfficeDocumentTable', 'Get-OfficeDocumentVisual', 'Get-OfficeEmail', 'Get-OfficeEmailMailbox', 'Get-OfficeExcel', 'Get-OfficeExcelComment', 'Get-OfficeExcelCommentAudit', 'Get-OfficeExcelConditionalFormatting', 'Get-OfficeExcelData', 'Get-OfficeExcelDataModel', 'Get-OfficeExcelDataValidation', 'Get-OfficeExcelDocumentProperty', 'Get-OfficeExcelFormulaAnalysis', 'Get-OfficeExcelNamedRange', 'Get-OfficeExcelNumberFormatPreset', 'Get-OfficeExcelPageBreak', 'Get-OfficeExcelPivotTable', 'Get-OfficeExcelPreflight', 'Get-OfficeExcelRange', 'Get-OfficeExcelRichText', 'Get-OfficeExcelRuntimePreflight', 'Get-OfficeExcelStreamingContract', 'Get-OfficeExcelSummary', 'Get-OfficeExcelTable', 'Get-OfficeExcelTableStyle', 'Get-OfficeExcelTemplateMarker', 'Get-OfficeExcelUsedRange', 'Get-OfficeExcelWorksheetView', 'Get-OfficeExcelWriteReservation', 'Get-OfficeLatex', 'Get-OfficeMarkdown', 'Get-OfficeMarkdownFrontMatter', 'Get-OfficeMarkdownHeading', 'Get-OfficeMarkdownNode', 'Get-OfficeMarkdownTable', 'Get-OfficeOpenDocument', 'Get-OfficePdf', 'Get-OfficePdfAnnotation', 'Get-OfficePdfAppendOnlyMutation', 'Get-OfficePdfAttachment', 'Get-OfficePdfCompliance', 'Get-OfficePdfDiagnostic', 'Get-OfficePdfFont', 'Get-OfficePdfFormField', 'Get-OfficePdfImage', 'Get-OfficePdfInfo', 'Get-OfficePdfInteractionMap', 'Get-OfficePdfOptimization', 'Get-OfficePdfPreflight', 'Get-OfficePdfRedactionPlan', 'Get-OfficePdfSignature', 'Get-OfficePdfText', 'Get-OfficePdfTextDiagnostic', 'Get-OfficePowerPoint', 'Get-OfficePowerPointInspection', 'Get-OfficePowerPointLayout', 'Get-OfficePowerPointLayoutBox', 'Get-OfficePowerPointLayoutPlaceholder', 'Get-OfficePowerPointNotes', 'Get-OfficePowerPointPlaceholder', 'Get-OfficePowerPointSection', 'Get-OfficePowerPointShape', 'Get-OfficePowerPointSlide', 'Get-OfficePowerPointSlideSummary', 'Get-OfficePowerPointTheme', 'Get-OfficeProtectionCapability', 'Get-OfficeRtf', 'Get-OfficeVisio', 'Get-OfficeVisioInfo', 'Get-OfficeVisioStencilCatalog', 'Get-OfficeWord', 'Get-OfficeWordBookmark', 'Get-OfficeWordCheckBox', 'Get-OfficeWordComboBox', 'Get-OfficeWordContentControl', 'Get-OfficeWordDatePicker', 'Get-OfficeWordDocumentProperty', 'Get-OfficeWordDropDownList', 'Get-OfficeWordEndnote', 'Get-OfficeWordField', 'Get-OfficeWordFootnote', 'Get-OfficeWordHyperlink', 'Get-OfficeWordImage', 'Get-OfficeWordList', 'Get-OfficeWordParagraph', 'Get-OfficeWordPictureControl', 'Get-OfficeWordRepeatingSection', 'Get-OfficeWordReview', 'Get-OfficeWordSection', 'Get-OfficeWordShape', 'Get-OfficeWordStatistics', 'Get-OfficeWordTable', 'Get-OfficeWordTableCell', 'Get-OfficeWordTableOfContents', 'Get-OfficeWordText', 'Import-OfficeCsv', 'Import-OfficeExcel', 'Import-OfficeExcelDelimitedText', 'Import-OfficePdfXfdf', 'Import-OfficePowerPointSlide', 'Import-OfficeVisioStencil', 'Invoke-OfficeExcelAutoFit', 'Invoke-OfficeExcelSort', 'Invoke-OfficeExcelTemplate', 'Invoke-OfficeExcelTemplateOptionalRow', 'Invoke-OfficeExcelTemplateRow', 'Invoke-OfficeExcelTemplateSheet', 'Invoke-OfficePdfOcrMerge', 'Invoke-OfficeWordMailMerge', 'Join-OfficeExcelSheet', 'Join-OfficeExcelWorkbook', 'Join-OfficePdf', 'Join-OfficeWordDocument', 'Move-OfficeExcelSheet', 'Move-OfficePdfPage', 'New-OfficeConfluenceSession', 'New-OfficeDocumentReader', 'New-OfficeExcel', 'New-OfficeExcelDashboard', 'New-OfficeMarkdown', 'New-OfficeOpenDocument', 'New-OfficePdf', 'New-OfficePdfSignature', 'New-OfficePdfTableCell', 'New-OfficePdfTableCellCheckBox', 'New-OfficePdfTableCellField', 'New-OfficePdfTableCellImage', 'New-OfficePowerPoint', 'New-OfficePowerPointDeckPlan', 'New-OfficeRtf', 'New-OfficeTextRun', 'New-OfficeVisio', 'New-OfficeVisioGallery', 'New-OfficeWord', 'New-OfficeWordTableCell', 'Protect-OfficeExcelSheet', 'Protect-OfficeExcelWorkbook', 'Protect-OfficeWordDocument', 'Publish-OfficeConfluencePage', 'Remove-OfficeConfluencePage', 'Remove-OfficeExcelComment', 'Remove-OfficeExcelNamedRange', 'Remove-OfficePdfAnnotation', 'Remove-OfficePdfPage', 'Remove-OfficePowerPointSlide', 'Remove-OfficeWordTableOfContents', 'Rename-OfficeExcelNamedRange', 'Rename-OfficePowerPointSection', 'Repair-OfficeExcelWorkbook', 'Resolve-OfficeWordRevision', 'Save-OfficeAsciiDoc', 'Save-OfficeEmail', 'Save-OfficeEmailMailbox', 'Save-OfficeExcel', 'Save-OfficeLatex', 'Save-OfficeMarkdown', 'Save-OfficeOpenDocument', 'Save-OfficePdf', 'Save-OfficePowerPoint', 'Save-OfficeVisio', 'Save-OfficeWord', 'Search-OfficeDocument', 'Send-OfficeConfluenceAttachment', 'Set-OfficeConfluenceManagedSection', 'Set-OfficeExcelActiveSheet', 'Set-OfficeExcelAutoFilter', 'Set-OfficeExcelCell', 'Set-OfficeExcelChartAxis', 'Set-OfficeExcelChartDataLabels', 'Set-OfficeExcelChartLegend', 'Set-OfficeExcelChartPoint', 'Set-OfficeExcelChartSeries', 'Set-OfficeExcelChartStyle', 'Set-OfficeExcelChartTrendline', 'Set-OfficeExcelColumn', 'Set-OfficeExcelColumnGroup', 'Set-OfficeExcelColumnStyleByHeader', 'Set-OfficeExcelDataValidationMessage', 'Set-OfficeExcelDateSystem', 'Set-OfficeExcelDocumentProperty', 'Set-OfficeExcelExecutionPolicy', 'Set-OfficeExcelFormula', 'Set-OfficeExcelFreeze', 'Set-OfficeExcelGridlines', 'Set-OfficeExcelHeaderFooter', 'Set-OfficeExcelHostHyperlink', 'Set-OfficeExcelHyperlink', 'Set-OfficeExcelInternalLinks', 'Set-OfficeExcelInternalLinksByHeader', 'Set-OfficeExcelMargins', 'Set-OfficeExcelNamedRange', 'Set-OfficeExcelOrientation', 'Set-OfficeExcelPageSetup', 'Set-OfficeExcelPrintArea', 'Set-OfficeExcelPrintLayout', 'Set-OfficeExcelPrintTitles', 'Set-OfficeExcelRefreshOnOpen', 'Set-OfficeExcelRichText', 'Set-OfficeExcelRow', 'Set-OfficeExcelRowGroup', 'Set-OfficeExcelSheetTabColor', 'Set-OfficeExcelSheetVisibility', 'Set-OfficeExcelSmartHyperlink', 'Set-OfficeExcelTheme', 'Set-OfficeExcelUrlLinks', 'Set-OfficeExcelUrlLinksByHeader', 'Set-OfficeExcelWorksheetView', 'Set-OfficeExcelWriteReservation', 'Set-OfficePdfAnnotation', 'Set-OfficePdfBackground', 'Set-OfficePdfBackgroundImage', 'Set-OfficePdfCompliance', 'Set-OfficePdfElectronicInvoice', 'Set-OfficePdfFooter', 'Set-OfficePdfForm', 'Set-OfficePdfHeader', 'Set-OfficePdfMetadata', 'Set-OfficePdfPage', 'Set-OfficePdfPageBorder', 'Set-OfficePdfPageSetup', 'Set-OfficePdfSignature', 'Set-OfficePdfTheme', 'Set-OfficePowerPointBackground', 'Set-OfficePowerPointLayoutPlaceholderBounds', 'Set-OfficePowerPointLayoutPlaceholderTextMargins', 'Set-OfficePowerPointLayoutPlaceholderTextStyle', 'Set-OfficePowerPointNotes', 'Set-OfficePowerPointPlaceholderText', 'Set-OfficePowerPointShapeLayout', 'Set-OfficePowerPointShapeText', 'Set-OfficePowerPointSlideLayout', 'Set-OfficePowerPointSlideSize', 'Set-OfficePowerPointSlideTitle', 'Set-OfficePowerPointSlideTransition', 'Set-OfficePowerPointTableCell', 'Set-OfficePowerPointThemeColor', 'Set-OfficePowerPointThemeFonts', 'Set-OfficePowerPointThemeName', 'Set-OfficeVisioShapeLayout', 'Set-OfficeWordBackground', 'Set-OfficeWordDocumentProperty', 'Set-OfficeWordImage', 'Set-OfficeWordPageSetup', 'Set-OfficeWordParagraphStyle', 'Set-OfficeWordShape', 'Set-OfficeWordTableCell', 'Set-OfficeWordTableOfContents', 'Set-OfficeWordTextStyle', 'Split-OfficePdf', 'Test-OfficeExcelAccessibility', 'Test-OfficeExcelTemplateBinding', 'Test-OfficeExcelWorkbook', 'Test-OfficePdfRewrite', 'Unprotect-OfficeExcelSheet', 'Unprotect-OfficeExcelWorkbook', 'Update-OfficeExcelComment', 'Update-OfficeExcelText', 'Update-OfficePowerPointText', 'Update-OfficeRtfText', 'Update-OfficeWordFields', 'Update-OfficeWordTableOfContents', 'Update-OfficeWordText') + CmdletsToExport = @('Add-OfficeExcelAutoFilter', 'Add-OfficeExcelChart', 'Add-OfficeExcelComment', 'Add-OfficeExcelConditionalColorScale', 'Add-OfficeExcelConditionalDataBar', 'Add-OfficeExcelConditionalIconSet', 'Add-OfficeExcelConditionalRule', 'Add-OfficeExcelDashboardChart', 'Add-OfficeExcelDataSet', 'Add-OfficeExcelImage', 'Add-OfficeExcelImageFromUrl', 'Add-OfficeExcelPackageMetadata', 'Add-OfficeExcelPageBreak', 'Add-OfficeExcelPivotTable', 'Add-OfficeExcelPowerQueryMetadata', 'Add-OfficeExcelReportCallout', 'Add-OfficeExcelReportKpiRow', 'Add-OfficeExcelReportLegend', 'Add-OfficeExcelReportParagraph', 'Add-OfficeExcelReportSection', 'Add-OfficeExcelReportSheet', 'Add-OfficeExcelReportSpacer', 'Add-OfficeExcelReportTable', 'Add-OfficeExcelReportTitle', 'Add-OfficeExcelSheet', 'Add-OfficeExcelSlicer', 'Add-OfficeExcelSparkline', 'Add-OfficeExcelSubtotalSummary', 'Add-OfficeExcelTable', 'Add-OfficeExcelTableOfContents', 'Add-OfficeExcelTableRow', 'Add-OfficeExcelThreadedComment', 'Add-OfficeExcelTimeline', 'Add-OfficeExcelValidationCustomFormula', 'Add-OfficeExcelValidationDate', 'Add-OfficeExcelValidationDecimal', 'Add-OfficeExcelValidationList', 'Add-OfficeExcelValidationTextLength', 'Add-OfficeExcelValidationTime', 'Add-OfficeExcelValidationWholeNumber', 'Add-OfficeExcelVisual', 'Add-OfficeMarkdownCallout', 'Add-OfficeMarkdownCode', 'Add-OfficeMarkdownDefinitionList', 'Add-OfficeMarkdownDetails', 'Add-OfficeMarkdownFrontMatter', 'Add-OfficeMarkdownHeading', 'Add-OfficeMarkdownHorizontalRule', 'Add-OfficeMarkdownImage', 'Add-OfficeMarkdownList', 'Add-OfficeMarkdownParagraph', 'Add-OfficeMarkdownQuote', 'Add-OfficeMarkdownTable', 'Add-OfficeMarkdownTableOfContents', 'Add-OfficeMarkdownTaskList', 'Add-OfficePdfAttachment', 'Add-OfficePdfBackgroundShape', 'Add-OfficePdfBookmark', 'Add-OfficePdfCanvas', 'Add-OfficePdfCanvasText', 'Add-OfficePdfFormField', 'Add-OfficePdfHeading', 'Add-OfficePdfHorizontalRule', 'Add-OfficePdfImage', 'Add-OfficePdfList', 'Add-OfficePdfPageBreak', 'Add-OfficePdfPageOverlay', 'Add-OfficePdfPanel', 'Add-OfficePdfParagraph', 'Add-OfficePdfRow', 'Add-OfficePdfSpacer', 'Add-OfficePdfStamp', 'Add-OfficePdfTable', 'Add-OfficePdfText', 'Add-OfficePdfVisual', 'Add-OfficePdfWatermark', 'Add-OfficePowerPointBullets', 'Add-OfficePowerPointChart', 'Add-OfficePowerPointDesignerDeck', 'Add-OfficePowerPointImage', 'Add-OfficePowerPointPlanCapability', 'Add-OfficePowerPointPlanCardGrid', 'Add-OfficePowerPointPlanCaseStudy', 'Add-OfficePowerPointPlanCoverage', 'Add-OfficePowerPointPlanLogoWall', 'Add-OfficePowerPointPlanProcess', 'Add-OfficePowerPointPlanSection', 'Add-OfficePowerPointSection', 'Add-OfficePowerPointShape', 'Add-OfficePowerPointSlide', 'Add-OfficePowerPointTable', 'Add-OfficePowerPointTableRow', 'Add-OfficePowerPointTextBox', 'Add-OfficePowerPointVisual', 'Add-OfficeVisioConnector', 'Add-OfficeVisioContainer', 'Add-OfficeVisioDiamond', 'Add-OfficeVisioEllipse', 'Add-OfficeVisioPage', 'Add-OfficeVisioRectangle', 'Add-OfficeVisioStencilShape', 'Add-OfficeVisioTextBox', 'Add-OfficeWordBookmark', 'Add-OfficeWordBreak', 'Add-OfficeWordChart', 'Add-OfficeWordCheckBox', 'Add-OfficeWordComboBox', 'Add-OfficeWordContentControl', 'Add-OfficeWordCoverPage', 'Add-OfficeWordDatePicker', 'Add-OfficeWordDropDownList', 'Add-OfficeWordEndnote', 'Add-OfficeWordEquation', 'Add-OfficeWordField', 'Add-OfficeWordFooter', 'Add-OfficeWordFootnote', 'Add-OfficeWordHeader', 'Add-OfficeWordHyperlink', 'Add-OfficeWordImage', 'Add-OfficeWordList', 'Add-OfficeWordListItem', 'Add-OfficeWordPageNumber', 'Add-OfficeWordParagraph', 'Add-OfficeWordPictureControl', 'Add-OfficeWordRepeatingSection', 'Add-OfficeWordSection', 'Add-OfficeWordShape', 'Add-OfficeWordTable', 'Add-OfficeWordTableCell', 'Add-OfficeWordTableCondition', 'Add-OfficeWordTableOfContents', 'Add-OfficeWordTableRow', 'Add-OfficeWordTabStop', 'Add-OfficeWordText', 'Add-OfficeWordTextBox', 'Add-OfficeWordVisual', 'Add-OfficeWordWatermark', 'Clear-OfficeExcelAutoFilter', 'Clear-OfficeExcelComment', 'Clear-OfficeExcelConditionalFormatting', 'Clear-OfficeExcelDataValidation', 'Clear-OfficeExcelPageBreak', 'Clear-OfficeExcelRange', 'Clear-OfficeExcelWriteReservation', 'Clear-OfficePdfBackgroundShape', 'Close-OfficeExcel', 'Close-OfficePowerPoint', 'Close-OfficeWord', 'Compare-OfficeExcelRange', 'Compare-OfficeExcelWorkbook', 'Compare-OfficePdfVisual', 'Compare-OfficeWordDocument', 'ConvertFrom-OfficeAsciiDocMarkdown', 'ConvertFrom-OfficeCsv', 'ConvertFrom-OfficeLatexMarkdown', 'ConvertFrom-OfficeMarkdownHtml', 'ConvertFrom-OfficeOpenDocument', 'ConvertFrom-OfficePdfHtml', 'ConvertFrom-OfficeRtf', 'ConvertFrom-OfficeWordHtml', 'ConvertFrom-OfficeWordMarkdown', 'ConvertTo-OfficeAsciiDocMarkdown', 'ConvertTo-OfficeCsv', 'ConvertTo-OfficeExcelHtml', 'ConvertTo-OfficeExcelWorkbook', 'ConvertTo-OfficeLatexMarkdown', 'ConvertTo-OfficeMarkdown', 'ConvertTo-OfficeMarkdownHtml', 'ConvertTo-OfficeOpenDocument', 'ConvertTo-OfficePdfExcel', 'ConvertTo-OfficePdfFlatAnnotation', 'ConvertTo-OfficePdfFlatForm', 'ConvertTo-OfficePdfHtml', 'ConvertTo-OfficePdfMarkdown', 'ConvertTo-OfficePdfOptimized', 'ConvertTo-OfficePdfPowerPoint', 'ConvertTo-OfficePdfRedacted', 'ConvertTo-OfficePdfSanitized', 'ConvertTo-OfficePdfTextRun', 'ConvertTo-OfficePdfWord', 'ConvertTo-OfficePowerPointHtml', 'ConvertTo-OfficeRtf', 'ConvertTo-OfficeVisioPng', 'ConvertTo-OfficeVisioSvg', 'ConvertTo-OfficeVisioVisual', 'ConvertTo-OfficeVisual', 'ConvertTo-OfficeWordDocument', 'ConvertTo-OfficeWordHtml', 'ConvertTo-OfficeWordMarkdown', 'Copy-OfficeExcelSheet', 'Copy-OfficeExcelWorkbook', 'Copy-OfficePdfPage', 'Copy-OfficePowerPointSlide', 'Edit-OfficeExcelRow', 'Export-OfficeCsv', 'Export-OfficeDocumentPdf', 'Export-OfficeExcel', 'Export-OfficeExcelChartImage', 'Export-OfficeExcelGoogleSpreadsheet', 'Export-OfficeExcelImage', 'Export-OfficeExcelRangeImage', 'Export-OfficeHtmlImage', 'Export-OfficePdfImage', 'Export-OfficePdfLayoutOverlay', 'Export-OfficePdfXfdf', 'Export-OfficePowerPointImage', 'Export-OfficeVisioImage', 'Export-OfficeVisioStencilPreviewGallery', 'Export-OfficeVisioVisual', 'Export-OfficeWordGoogleDocument', 'Export-OfficeWordImage', 'Find-OfficeExcel', 'Find-OfficePowerPointShape', 'Find-OfficeVisioStencil', 'Find-OfficeWord', 'Find-OfficeWordList', 'Find-OfficeWordTable', 'Get-OfficeAsciiDoc', 'Get-OfficeConfluenceAttachment', 'Get-OfficeConfluencePage', 'Get-OfficeCsv', 'Get-OfficeDocument', 'Get-OfficeDocumentAsset', 'Get-OfficeDocumentBatch', 'Get-OfficeDocumentCapability', 'Get-OfficeDocumentChunk', 'Get-OfficeDocumentDetection', 'Get-OfficeDocumentHierarchy', 'Get-OfficeDocumentIngest', 'Get-OfficeDocumentPageMarkdown', 'Get-OfficeDocumentStructured', 'Get-OfficeDocumentTable', 'Get-OfficeDocumentVisual', 'Get-OfficeEmail', 'Get-OfficeEmailMailbox', 'Get-OfficeExcel', 'Get-OfficeExcelComment', 'Get-OfficeExcelCommentAudit', 'Get-OfficeExcelConditionalFormatting', 'Get-OfficeExcelData', 'Get-OfficeExcelDataModel', 'Get-OfficeExcelDataValidation', 'Get-OfficeExcelDocumentProperty', 'Get-OfficeExcelFormulaAnalysis', 'Get-OfficeExcelNamedRange', 'Get-OfficeExcelNumberFormatPreset', 'Get-OfficeExcelPageBreak', 'Get-OfficeExcelPivotTable', 'Get-OfficeExcelPreflight', 'Get-OfficeExcelRange', 'Get-OfficeExcelRichText', 'Get-OfficeExcelRuntimePreflight', 'Get-OfficeExcelStreamingContract', 'Get-OfficeExcelSummary', 'Get-OfficeExcelTable', 'Get-OfficeExcelTableStyle', 'Get-OfficeExcelTemplateMarker', 'Get-OfficeExcelUsedRange', 'Get-OfficeExcelWorksheetView', 'Get-OfficeExcelWriteReservation', 'Get-OfficeLatex', 'Get-OfficeMarkdown', 'Get-OfficeMarkdownFrontMatter', 'Get-OfficeMarkdownHeading', 'Get-OfficeMarkdownNode', 'Get-OfficeMarkdownTable', 'Get-OfficeOpenDocument', 'Get-OfficePdf', 'Get-OfficePdfAnnotation', 'Get-OfficePdfAppendOnlyMutation', 'Get-OfficePdfAttachment', 'Get-OfficePdfCompliance', 'Get-OfficePdfDiagnostic', 'Get-OfficePdfFont', 'Get-OfficePdfFormField', 'Get-OfficePdfImage', 'Get-OfficePdfInfo', 'Get-OfficePdfInteractionMap', 'Get-OfficePdfOptimization', 'Get-OfficePdfPreflight', 'Get-OfficePdfRedactionPlan', 'Get-OfficePdfSignature', 'Get-OfficePdfText', 'Get-OfficePdfTextDiagnostic', 'Get-OfficePowerPoint', 'Get-OfficePowerPointInspection', 'Get-OfficePowerPointLayout', 'Get-OfficePowerPointLayoutBox', 'Get-OfficePowerPointLayoutPlaceholder', 'Get-OfficePowerPointNotes', 'Get-OfficePowerPointPlaceholder', 'Get-OfficePowerPointSection', 'Get-OfficePowerPointShape', 'Get-OfficePowerPointSlide', 'Get-OfficePowerPointSlideSummary', 'Get-OfficePowerPointTheme', 'Get-OfficeProtectionCapability', 'Get-OfficeRtf', 'Get-OfficeVisio', 'Get-OfficeVisioInfo', 'Get-OfficeVisioStencilCatalog', 'Get-OfficeWord', 'Get-OfficeWordBookmark', 'Get-OfficeWordCheckBox', 'Get-OfficeWordComboBox', 'Get-OfficeWordContentControl', 'Get-OfficeWordDatePicker', 'Get-OfficeWordDocumentProperty', 'Get-OfficeWordDropDownList', 'Get-OfficeWordEndnote', 'Get-OfficeWordField', 'Get-OfficeWordFootnote', 'Get-OfficeWordHyperlink', 'Get-OfficeWordImage', 'Get-OfficeWordList', 'Get-OfficeWordParagraph', 'Get-OfficeWordPictureControl', 'Get-OfficeWordRepeatingSection', 'Get-OfficeWordReview', 'Get-OfficeWordSection', 'Get-OfficeWordShape', 'Get-OfficeWordStatistics', 'Get-OfficeWordTable', 'Get-OfficeWordTableCell', 'Get-OfficeWordTableOfContents', 'Get-OfficeWordText', 'Import-OfficeCsv', 'Import-OfficeExcel', 'Import-OfficeExcelDelimitedText', 'Import-OfficePdfXfdf', 'Import-OfficePowerPointSlide', 'Import-OfficeVisioStencil', 'Invoke-OfficeExcelAutoFit', 'Invoke-OfficeExcelSort', 'Invoke-OfficeExcelTemplate', 'Invoke-OfficeExcelTemplateOptionalRow', 'Invoke-OfficeExcelTemplateRow', 'Invoke-OfficeExcelTemplateSheet', 'Invoke-OfficePdfOcrMerge', 'Invoke-OfficeWordMailMerge', 'Join-OfficeExcelSheet', 'Join-OfficeExcelWorkbook', 'Join-OfficePdf', 'Join-OfficeWordDocument', 'Move-OfficeExcelSheet', 'Move-OfficePdfPage', 'New-OfficeConfluenceSession', 'New-OfficeDocumentReader', 'New-OfficeExcel', 'New-OfficeExcelDashboard', 'New-OfficeExcelPdfOptions', 'New-OfficeMarkdown', 'New-OfficeMarkdownPdfOptions', 'New-OfficeOpenDocument', 'New-OfficePdf', 'New-OfficePdfSignature', 'New-OfficePdfTableCell', 'New-OfficePdfTableCellCheckBox', 'New-OfficePdfTableCellField', 'New-OfficePdfTableCellImage', 'New-OfficePowerPoint', 'New-OfficePowerPointDeckPlan', 'New-OfficePowerPointPdfOptions', 'New-OfficeRtf', 'New-OfficeRtfPdfOptions', 'New-OfficeTextRun', 'New-OfficeVisio', 'New-OfficeVisioGallery', 'New-OfficeWord', 'New-OfficeWordPdfOptions', 'New-OfficeWordTableCell', 'Protect-OfficeExcelSheet', 'Protect-OfficeExcelWorkbook', 'Protect-OfficeWordDocument', 'Publish-OfficeConfluencePage', 'Remove-OfficeConfluencePage', 'Remove-OfficeExcelComment', 'Remove-OfficeExcelNamedRange', 'Remove-OfficePdfAnnotation', 'Remove-OfficePdfPage', 'Remove-OfficePowerPointSlide', 'Remove-OfficeWordTableOfContents', 'Rename-OfficeExcelNamedRange', 'Rename-OfficePowerPointSection', 'Repair-OfficeExcelWorkbook', 'Resolve-OfficeWordRevision', 'Save-OfficeAsciiDoc', 'Save-OfficeEmail', 'Save-OfficeEmailMailbox', 'Save-OfficeExcel', 'Save-OfficeLatex', 'Save-OfficeMarkdown', 'Save-OfficeOpenDocument', 'Save-OfficePdf', 'Save-OfficePowerPoint', 'Save-OfficeVisio', 'Save-OfficeWord', 'Search-OfficeDocument', 'Send-OfficeConfluenceAttachment', 'Set-OfficeConfluenceManagedSection', 'Set-OfficeExcelActiveSheet', 'Set-OfficeExcelAutoFilter', 'Set-OfficeExcelCell', 'Set-OfficeExcelChartAxis', 'Set-OfficeExcelChartDataLabels', 'Set-OfficeExcelChartLegend', 'Set-OfficeExcelChartPoint', 'Set-OfficeExcelChartSeries', 'Set-OfficeExcelChartStyle', 'Set-OfficeExcelChartTrendline', 'Set-OfficeExcelColumn', 'Set-OfficeExcelColumnGroup', 'Set-OfficeExcelColumnStyleByHeader', 'Set-OfficeExcelDataValidationMessage', 'Set-OfficeExcelDateSystem', 'Set-OfficeExcelDocumentProperty', 'Set-OfficeExcelExecutionPolicy', 'Set-OfficeExcelFormula', 'Set-OfficeExcelFreeze', 'Set-OfficeExcelGridlines', 'Set-OfficeExcelHeaderFooter', 'Set-OfficeExcelHostHyperlink', 'Set-OfficeExcelHyperlink', 'Set-OfficeExcelInternalLinks', 'Set-OfficeExcelInternalLinksByHeader', 'Set-OfficeExcelMargins', 'Set-OfficeExcelNamedRange', 'Set-OfficeExcelOrientation', 'Set-OfficeExcelPageSetup', 'Set-OfficeExcelPrintArea', 'Set-OfficeExcelPrintLayout', 'Set-OfficeExcelPrintTitles', 'Set-OfficeExcelRefreshOnOpen', 'Set-OfficeExcelRichText', 'Set-OfficeExcelRow', 'Set-OfficeExcelRowGroup', 'Set-OfficeExcelSheetTabColor', 'Set-OfficeExcelSheetVisibility', 'Set-OfficeExcelSmartHyperlink', 'Set-OfficeExcelTheme', 'Set-OfficeExcelUrlLinks', 'Set-OfficeExcelUrlLinksByHeader', 'Set-OfficeExcelWorksheetView', 'Set-OfficeExcelWriteReservation', 'Set-OfficePdfAnnotation', 'Set-OfficePdfBackground', 'Set-OfficePdfBackgroundImage', 'Set-OfficePdfCompliance', 'Set-OfficePdfElectronicInvoice', 'Set-OfficePdfFooter', 'Set-OfficePdfForm', 'Set-OfficePdfHeader', 'Set-OfficePdfMetadata', 'Set-OfficePdfPage', 'Set-OfficePdfPageBorder', 'Set-OfficePdfPageSetup', 'Set-OfficePdfSignature', 'Set-OfficePdfTheme', 'Set-OfficePowerPointBackground', 'Set-OfficePowerPointLayoutPlaceholderBounds', 'Set-OfficePowerPointLayoutPlaceholderTextMargins', 'Set-OfficePowerPointLayoutPlaceholderTextStyle', 'Set-OfficePowerPointNotes', 'Set-OfficePowerPointPlaceholderText', 'Set-OfficePowerPointShapeLayout', 'Set-OfficePowerPointShapeText', 'Set-OfficePowerPointSlideLayout', 'Set-OfficePowerPointSlideSize', 'Set-OfficePowerPointSlideTitle', 'Set-OfficePowerPointSlideTransition', 'Set-OfficePowerPointTableCell', 'Set-OfficePowerPointThemeColor', 'Set-OfficePowerPointThemeFonts', 'Set-OfficePowerPointThemeName', 'Set-OfficeVisioShapeLayout', 'Set-OfficeWordBackground', 'Set-OfficeWordDocumentProperty', 'Set-OfficeWordImage', 'Set-OfficeWordPageSetup', 'Set-OfficeWordParagraphStyle', 'Set-OfficeWordShape', 'Set-OfficeWordTableCell', 'Set-OfficeWordTableOfContents', 'Set-OfficeWordTextStyle', 'Split-OfficePdf', 'Test-OfficeExcelAccessibility', 'Test-OfficeExcelTemplateBinding', 'Test-OfficeExcelWorkbook', 'Test-OfficePdfRewrite', 'Unprotect-OfficeExcelSheet', 'Unprotect-OfficeExcelWorkbook', 'Update-OfficeExcelComment', 'Update-OfficeExcelText', 'Update-OfficePowerPointText', 'Update-OfficeRtfText', 'Update-OfficeWordFields', 'Update-OfficeWordTableOfContents', 'Update-OfficeWordText') CompanyName = 'Evotec' CompatiblePSEditions = @('Desktop', 'Core') Copyright = '(c) 2011 - 2026 Przemyslaw Klys @ Evotec. All rights reserved.' diff --git a/README.MD b/README.MD index eaccf62d..54c2c942 100644 --- a/README.MD +++ b/README.MD @@ -320,6 +320,29 @@ $document | Export-OfficeDocumentPdf -Path .\Report-Live.pdf $document | Close-OfficeWord ``` +Format-specific controls are created with discoverable PowerShell commands—no +hashtable keys or .NET constructors to guess: + +```powershell +$pdfOptions = New-OfficeMarkdownPdfOptions ` + -Title 'Service report' ` + -Author 'Evotec' ` + -IncludeLocalImages ` + -BaseDirectory .\Assets ` + -CreateOutlineFromHeadings + +Export-OfficeDocumentPdf ` + -InputPath .\Report.md ` + -Path .\Report.pdf ` + -MarkdownOptions $pdfOptions ` + -PdfWarningVariable pdfWarnings ` + -PdfConversionReportVariable pdfReport +``` + +Equivalent builders are available for Word, Excel, PowerPoint, and RTF: +`New-OfficeWordPdfOptions`, `New-OfficeExcelPdfOptions`, +`New-OfficePowerPointPdfOptions`, and `New-OfficeRtfPdfOptions`. + ### Excel chart finishing ```powershell diff --git a/Sources/PSWriteOffice/Cmdlets/AsciiDoc/SaveOfficeAsciiDocCommand.cs b/Sources/PSWriteOffice/Cmdlets/AsciiDoc/SaveOfficeAsciiDocCommand.cs index 72948562..b4b4aac4 100644 --- a/Sources/PSWriteOffice/Cmdlets/AsciiDoc/SaveOfficeAsciiDocCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/AsciiDoc/SaveOfficeAsciiDocCommand.cs @@ -21,6 +21,15 @@ public sealed class SaveOfficeAsciiDocCommand : PSCmdlet [Parameter] public AsciiDocWriterOptions? Options { get; set; } + /// Writer mode. Preserve retains unchanged source; Canonical emits stable formatting. + [Parameter] + public AsciiDocWriterMode? Mode { get; set; } + + /// Canonical line ending: LF, CRLF, or CR. Omit it to retain the source preference. + [Parameter] + [ValidateSet("LF", "CRLF", "CR")] + public string? LineEnding { get; set; } + /// Return the saved document. [Parameter] public SwitchParameter PassThru { get; set; } @@ -31,7 +40,24 @@ protected override void ProcessRecord() var path = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path); if (!ShouldProcess(path, "Save AsciiDoc document")) return; Directory.CreateDirectory(System.IO.Path.GetDirectoryName(path) ?? SessionState.Path.CurrentFileSystemLocation.Path); - Document.Save(path, Options); + Document.Save(path, BuildOptions()); if (PassThru.IsPresent) WriteObject(Document); } + + private AsciiDocWriterOptions BuildOptions() { + var options = new AsciiDocWriterOptions { + Mode = Options?.Mode ?? AsciiDocWriterMode.Preserve, + LineEnding = Options?.LineEnding + }; + if (Mode.HasValue) options.Mode = Mode.Value; + if (LineEnding != null) options.LineEnding = ResolveLineEnding(LineEnding); + return options; + } + + private static string ResolveLineEnding(string value) => value switch { + "LF" => "\n", + "CRLF" => "\r\n", + "CR" => "\r", + _ => throw new PSArgumentException("LineEnding must be LF, CRLF, or CR.", nameof(LineEnding)) + }; } diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelPdfOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelPdfOptionsCommand.cs new file mode 100644 index 00000000..6b55bdae --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelPdfOptionsCommand.cs @@ -0,0 +1,205 @@ +using System.Collections.Generic; +using System.Management.Automation; +using OfficeIMO.Drawing; +using OfficeIMO.Excel.Pdf; +using OfficeIMO.Pdf; + +namespace PSWriteOffice.Cmdlets.Excel; + +/// Creates discoverable Excel-to-PDF conversion options for Export-OfficeDocumentPdf. +/// +/// Export selected visible sheets with workbook layout features. +/// PS> +/// $options = New-OfficeExcelPdfOptions -SheetName Summary,Services -UseWorksheetCharts -UseWorksheetImages +/// Export-OfficeDocumentPdf -InputPath .\Report.xlsx -Path .\Report.pdf -ExcelOptions $options +/// +[Cmdlet(VerbsCommon.New, "OfficeExcelPdfOptions")] +[OutputType(typeof(ExcelPdfSaveOptions))] +public sealed class NewOfficeExcelPdfOptionsCommand : PSCmdlet { + /// Underlying low-level OfficeIMO PDF options. + [Parameter] + public OfficeIMO.Pdf.PdfOptions? PdfOptions { get; set; } + + /// Default font family used when the workbook does not specify one. + [Parameter] + public string? FontFamily { get; set; } + + /// PDF page size. + [Parameter] + public PageSize? PageSize { get; set; } + + /// Left page margin in PDF points. + [Parameter] + [ValidateRange(0d, double.MaxValue)] + public double? MarginLeft { get; set; } + + /// Top page margin in PDF points. + [Parameter] + [ValidateRange(0d, double.MaxValue)] + public double? MarginTop { get; set; } + + /// Right page margin in PDF points. + [Parameter] + [ValidateRange(0d, double.MaxValue)] + public double? MarginRight { get; set; } + + /// Bottom page margin in PDF points. + [Parameter] + [ValidateRange(0d, double.MaxValue)] + public double? MarginBottom { get; set; } + + /// Controls how worksheet content is laid out on PDF pages. + [Parameter] + public ExcelPdfWorksheetLayoutMode? WorksheetLayout { get; set; } + + /// Worksheet names to export. The default exports all eligible sheets. + [Parameter] + [Alias("SheetNames")] + public string[]? SheetName { get; set; } + + /// Exclude workbook sheets marked hidden. + [Parameter] + public SwitchParameter RespectWorkbookSheetVisibility { get; set; } + + /// Honor worksheet print areas. + [Parameter] + public SwitchParameter UseWorksheetPrintAreas { get; set; } + + /// Honor worksheet page setup. + [Parameter] + public SwitchParameter UseWorksheetPageSetup { get; set; } + + /// Honor worksheet rows configured to repeat on printed pages. + [Parameter] + public SwitchParameter UseWorksheetPrintTitleRows { get; set; } + + /// Honor worksheet page breaks. + [Parameter] + public SwitchParameter UseWorksheetPageBreaks { get; set; } + + /// Render worksheet headers and footers. + [Parameter] + public SwitchParameter UseWorksheetHeadersAndFooters { get; set; } + + /// Render images referenced by worksheet headers and footers. + [Parameter] + public SwitchParameter UseWorksheetHeaderFooterImages { get; set; } + + /// Render worksheet cell styles. + [Parameter] + public SwitchParameter UseWorksheetCellStyles { get; set; } + + /// Render worksheet hyperlinks. + [Parameter] + public SwitchParameter UseWorksheetHyperlinks { get; set; } + + /// Render worksheet images. + [Parameter] + public SwitchParameter UseWorksheetImages { get; set; } + + /// Render worksheet charts. + [Parameter] + public SwitchParameter UseWorksheetCharts { get; set; } + + /// Chart visual style override. + [Parameter] + public OfficeChartStyle? ChartStyle { get; set; } + + /// Chart layout override. + [Parameter] + public OfficeChartLayout? ChartLayout { get; set; } + + /// Render merged worksheet cells. + [Parameter] + public SwitchParameter UseWorksheetMergedCells { get; set; } + + /// Honor worksheet column widths. + [Parameter] + public SwitchParameter UseWorksheetColumnWidths { get; set; } + + /// Honor worksheet row heights. + [Parameter] + public SwitchParameter UseWorksheetRowHeights { get; set; } + + /// Exclude hidden worksheet rows and columns. + [Parameter] + public SwitchParameter RespectWorksheetHiddenRowsAndColumns { get; set; } + + /// Include worksheet row and column headings. + [Parameter] + public SwitchParameter IncludeSheetHeadings { get; set; } + + /// Number of leading rows treated as headers. + [Parameter] + [ValidateRange(0, int.MaxValue)] + public int? HeaderRowCount { get; set; } + + /// Maximum worksheet rows to read and render. + [Parameter] + [ValidateRange(1, int.MaxValue)] + public int? MaxRowsPerSheet { get; set; } + + /// Use bounded worksheet reads for large workbooks. + [Parameter] + public SwitchParameter UseBoundedWorksheetRead { get; set; } + + /// Text used when a worksheet cell is empty. + [Parameter] + public string? EmptyCellText { get; set; } + + /// Allow embedding fonts discovered on the current system. + [Parameter] + public SwitchParameter AllowSystemFontEmbedding { get; set; } + + /// Allow embedding fonts stored in the workbook. + [Parameter] + public SwitchParameter AllowDocumentFontEmbedding { get; set; } + + /// + protected override void ProcessRecord() { + var options = new ExcelPdfSaveOptions(); + if (PdfOptions != null) options.PdfOptions = PdfOptions; + if (!string.IsNullOrWhiteSpace(FontFamily)) options.FontFamily = FontFamily; + if (PageSize.HasValue) options.PageSize = PageSize.Value; + if (HasMargins()) { + PageMargins defaults = PageMargins.Normal; + options.Margins = new PageMargins( + MarginLeft ?? defaults.Left, + MarginTop ?? defaults.Top, + MarginRight ?? defaults.Right, + MarginBottom ?? defaults.Bottom); + } + if (WorksheetLayout.HasValue) options.WorksheetLayout = WorksheetLayout.Value; + if (SheetName is { Length: > 0 }) options.SheetNames = new List(SheetName); + SetBoundSwitch(nameof(RespectWorkbookSheetVisibility), RespectWorkbookSheetVisibility, value => options.RespectWorkbookSheetVisibility = value); + SetBoundSwitch(nameof(UseWorksheetPrintAreas), UseWorksheetPrintAreas, value => options.UseWorksheetPrintAreas = value); + SetBoundSwitch(nameof(UseWorksheetPageSetup), UseWorksheetPageSetup, value => options.UseWorksheetPageSetup = value); + SetBoundSwitch(nameof(UseWorksheetPrintTitleRows), UseWorksheetPrintTitleRows, value => options.UseWorksheetPrintTitleRows = value); + SetBoundSwitch(nameof(UseWorksheetPageBreaks), UseWorksheetPageBreaks, value => options.UseWorksheetPageBreaks = value); + SetBoundSwitch(nameof(UseWorksheetHeadersAndFooters), UseWorksheetHeadersAndFooters, value => options.UseWorksheetHeadersAndFooters = value); + SetBoundSwitch(nameof(UseWorksheetHeaderFooterImages), UseWorksheetHeaderFooterImages, value => options.UseWorksheetHeaderFooterImages = value); + SetBoundSwitch(nameof(UseWorksheetCellStyles), UseWorksheetCellStyles, value => options.UseWorksheetCellStyles = value); + SetBoundSwitch(nameof(UseWorksheetHyperlinks), UseWorksheetHyperlinks, value => options.UseWorksheetHyperlinks = value); + SetBoundSwitch(nameof(UseWorksheetImages), UseWorksheetImages, value => options.UseWorksheetImages = value); + SetBoundSwitch(nameof(UseWorksheetCharts), UseWorksheetCharts, value => options.UseWorksheetCharts = value); + if (ChartStyle != null) options.ChartStyle = ChartStyle; + if (ChartLayout != null) options.ChartLayout = ChartLayout; + SetBoundSwitch(nameof(UseWorksheetMergedCells), UseWorksheetMergedCells, value => options.UseWorksheetMergedCells = value); + SetBoundSwitch(nameof(UseWorksheetColumnWidths), UseWorksheetColumnWidths, value => options.UseWorksheetColumnWidths = value); + SetBoundSwitch(nameof(UseWorksheetRowHeights), UseWorksheetRowHeights, value => options.UseWorksheetRowHeights = value); + SetBoundSwitch(nameof(RespectWorksheetHiddenRowsAndColumns), RespectWorksheetHiddenRowsAndColumns, value => options.RespectWorksheetHiddenRowsAndColumns = value); + SetBoundSwitch(nameof(IncludeSheetHeadings), IncludeSheetHeadings, value => options.IncludeSheetHeadings = value); + if (HeaderRowCount.HasValue) options.HeaderRowCount = HeaderRowCount.Value; + if (MaxRowsPerSheet.HasValue) options.MaxRowsPerSheet = MaxRowsPerSheet.Value; + SetBoundSwitch(nameof(UseBoundedWorksheetRead), UseBoundedWorksheetRead, value => options.UseBoundedWorksheetRead = value); + if (EmptyCellText != null) options.EmptyCellText = EmptyCellText; + SetBoundSwitch(nameof(AllowSystemFontEmbedding), AllowSystemFontEmbedding, value => options.ResourcePolicy.AllowSystemFontEmbedding = value); + SetBoundSwitch(nameof(AllowDocumentFontEmbedding), AllowDocumentFontEmbedding, value => options.ResourcePolicy.AllowDocumentFontEmbedding = value); + WriteObject(options); + } + + private bool HasMargins() => MarginLeft.HasValue || MarginTop.HasValue || MarginRight.HasValue || MarginBottom.HasValue; + private void SetBoundSwitch(string name, SwitchParameter value, System.Action setter) { + if (MyInvocation.BoundParameters.ContainsKey(name)) setter(value.IsPresent); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/Latex/SaveOfficeLatexCommand.cs b/Sources/PSWriteOffice/Cmdlets/Latex/SaveOfficeLatexCommand.cs index 2bf9691e..1ad0d923 100644 --- a/Sources/PSWriteOffice/Cmdlets/Latex/SaveOfficeLatexCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Latex/SaveOfficeLatexCommand.cs @@ -21,6 +21,15 @@ public sealed class SaveOfficeLatexCommand : PSCmdlet [Parameter] public LatexWriterOptions? Options { get; set; } + /// Writer mode. Preserve retains unchanged source; Canonical normalizes output. + [Parameter] + public LatexWriterMode? Mode { get; set; } + + /// Canonical line ending: LF, CRLF, or CR. Omit it to retain the source preference. + [Parameter] + [ValidateSet("LF", "CRLF", "CR")] + public string? LineEnding { get; set; } + /// Return the saved document. [Parameter] public SwitchParameter PassThru { get; set; } @@ -31,7 +40,24 @@ protected override void ProcessRecord() var path = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path); if (!ShouldProcess(path, "Save LaTeX document")) return; Directory.CreateDirectory(System.IO.Path.GetDirectoryName(path) ?? SessionState.Path.CurrentFileSystemLocation.Path); - Document.Save(path, Options); + Document.Save(path, BuildOptions()); if (PassThru.IsPresent) WriteObject(Document); } + + private LatexWriterOptions BuildOptions() { + var options = new LatexWriterOptions { + Mode = Options?.Mode ?? LatexWriterMode.Preserve, + LineEnding = Options?.LineEnding + }; + if (Mode.HasValue) options.Mode = Mode.Value; + if (LineEnding != null) options.LineEnding = ResolveLineEnding(LineEnding); + return options; + } + + private static string ResolveLineEnding(string value) => value switch { + "LF" => "\n", + "CRLF" => "\r\n", + "CR" => "\r", + _ => throw new PSArgumentException("LineEnding must be LF, CRLF, or CR.", nameof(LineEnding)) + }; } diff --git a/Sources/PSWriteOffice/Cmdlets/Markdown/NewOfficeMarkdownPdfOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Markdown/NewOfficeMarkdownPdfOptionsCommand.cs new file mode 100644 index 00000000..55815961 --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Markdown/NewOfficeMarkdownPdfOptionsCommand.cs @@ -0,0 +1,137 @@ +using System.Management.Automation; +using OfficeIMO.Drawing; +using OfficeIMO.Markdown.Pdf; +using PSWriteOffice.Services.Markdown; + +namespace PSWriteOffice.Cmdlets.Markdown; + +/// Creates discoverable Markdown-to-PDF conversion options for Export-OfficeDocumentPdf. +/// +/// Allow local report images and apply PDF metadata. +/// PS> +/// $options = New-OfficeMarkdownPdfOptions -Title 'Service report' -Author 'Evotec' -IncludeLocalImages -BaseDirectory .\Assets +/// Export-OfficeDocumentPdf -InputPath .\Report.md -Path .\Report.pdf -MarkdownOptions $options +/// Builds a typed options object through ordinary PowerShell parameters; no hashtable or .NET construction is required. +/// +[Cmdlet(VerbsCommon.New, "OfficeMarkdownPdfOptions")] +[OutputType(typeof(MarkdownPdfSaveOptions))] +public sealed class NewOfficeMarkdownPdfOptionsCommand : PSCmdlet, IMarkdownPdfOptionSource { + /// Existing Markdown PDF options to clone and override. + [Parameter(ValueFromPipeline = true)] + public MarkdownPdfSaveOptions? Options { get; set; } + + /// Underlying low-level OfficeIMO PDF options. + [Parameter] + public OfficeIMO.Pdf.PdfOptions? PdfOptions { get; set; } + + /// Built-in visual theme. + [Parameter] + public OfficeVisualThemeKind? Theme { get; set; } + + /// Default font family. + [Parameter] + public string? FontFamily { get; set; } + + /// PDF title metadata. + [Parameter] + public string? Title { get; set; } + + /// PDF author metadata. + [Parameter] + public string? Author { get; set; } + + /// PDF subject metadata. + [Parameter] + public string? Subject { get; set; } + + /// PDF keywords metadata. + [Parameter] + public string? Keywords { get; set; } + + /// Base directory used to resolve local Markdown images. + [Parameter] + public string? BaseDirectory { get; set; } + + /// Apply the built-in Word-like Markdown PDF baseline theme. + [Parameter] + public SwitchParameter ApplyWordLikeTheme { get; set; } + + /// Embed supported local image files. + [Parameter] + public SwitchParameter IncludeLocalImages { get; set; } + + /// Embed supported data URI images. + [Parameter] + public SwitchParameter IncludeDataUriImages { get; set; } + + /// Require local images to resolve under BaseDirectory. + [Parameter] + public SwitchParameter RestrictLocalImagesToBaseDirectory { get; set; } + + /// Maximum decoded bytes for one data URI image. + [Parameter] + [ValidateRange(1, int.MaxValue)] + public int? MaximumDataUriImageBytes { get; set; } + + /// Fallback image width in PDF points. + [Parameter] + [ValidateRange(double.Epsilon, double.MaxValue)] + public double? DefaultImageWidth { get; set; } + + /// Fallback image height in PDF points. + [Parameter] + [ValidateRange(double.Epsilon, double.MaxValue)] + public double? DefaultImageHeight { get; set; } + + /// Controls how YAML front matter appears in the PDF body. + [Parameter] + public MarkdownPdfFrontMatterRenderMode? FrontMatterRenderMode { get; set; } + + /// Use front matter values to select a visual theme. + [Parameter] + public SwitchParameter UseFrontMatterVisualTheme { get; set; } + + /// Use front matter values as PDF metadata. + [Parameter] + public SwitchParameter UseFrontMatterMetadata { get; set; } + + /// Use the first Markdown heading as the PDF title when no title is supplied. + [Parameter] + public SwitchParameter UseFirstHeadingAsTitle { get; set; } + + /// Create PDF outlines from Markdown headings. + [Parameter] + public SwitchParameter CreateOutlineFromHeadings { get; set; } + + MarkdownPdfSaveOptions? IMarkdownPdfOptionSource.MarkdownPdfOptions => Options; + OfficeIMO.Pdf.PdfOptions? IMarkdownPdfOptionSource.PdfOptions => PdfOptions; + OfficeVisualThemeKind? IMarkdownPdfOptionSource.PdfTheme => Theme; + string? IMarkdownPdfOptionSource.PdfFontFamily => FontFamily; + string? IMarkdownPdfOptionSource.PdfTitle => Title; + string? IMarkdownPdfOptionSource.PdfAuthor => Author; + string? IMarkdownPdfOptionSource.PdfSubject => Subject; + string? IMarkdownPdfOptionSource.PdfKeywords => Keywords; + string? IMarkdownPdfOptionSource.PdfBaseDirectory => BaseDirectory; + bool? IMarkdownPdfOptionSource.PdfApplyWordLikeTheme => GetBoundSwitch(nameof(ApplyWordLikeTheme), ApplyWordLikeTheme); + bool? IMarkdownPdfOptionSource.PdfIncludeLocalImages => GetBoundSwitch(nameof(IncludeLocalImages), IncludeLocalImages); + bool? IMarkdownPdfOptionSource.PdfIncludeDataUriImages => GetBoundSwitch(nameof(IncludeDataUriImages), IncludeDataUriImages); + bool? IMarkdownPdfOptionSource.PdfRestrictLocalImagesToBaseDirectory => GetBoundSwitch(nameof(RestrictLocalImagesToBaseDirectory), RestrictLocalImagesToBaseDirectory); + int? IMarkdownPdfOptionSource.PdfMaximumDataUriImageBytes => MaximumDataUriImageBytes; + double? IMarkdownPdfOptionSource.PdfDefaultImageWidth => DefaultImageWidth; + double? IMarkdownPdfOptionSource.PdfDefaultImageHeight => DefaultImageHeight; + MarkdownPdfFrontMatterRenderMode? IMarkdownPdfOptionSource.PdfFrontMatterRenderMode => FrontMatterRenderMode; + bool? IMarkdownPdfOptionSource.PdfUseFrontMatterVisualTheme => GetBoundSwitch(nameof(UseFrontMatterVisualTheme), UseFrontMatterVisualTheme); + bool? IMarkdownPdfOptionSource.PdfUseFrontMatterMetadata => GetBoundSwitch(nameof(UseFrontMatterMetadata), UseFrontMatterMetadata); + bool? IMarkdownPdfOptionSource.PdfUseFirstHeadingAsTitle => GetBoundSwitch(nameof(UseFirstHeadingAsTitle), UseFirstHeadingAsTitle); + bool? IMarkdownPdfOptionSource.PdfCreateOutlineFromHeadings => GetBoundSwitch(nameof(CreateOutlineFromHeadings), CreateOutlineFromHeadings); + string? IMarkdownPdfOptionSource.PdfWarningVariable => null; + string? IMarkdownPdfOptionSource.PdfConversionReportVariable => null; + + /// + protected override void ProcessRecord() { + WriteObject(MarkdownOptionUtilities.BuildPdfOptions(this, this, fallbackBaseDirectory: null)); + } + + private bool? GetBoundSwitch(string name, SwitchParameter value) => + MyInvocation.BoundParameters.ContainsKey(name) ? value.IsPresent : null; +} diff --git a/Sources/PSWriteOffice/Cmdlets/OpenDocument/GetOfficeOpenDocumentCommand.cs b/Sources/PSWriteOffice/Cmdlets/OpenDocument/GetOfficeOpenDocumentCommand.cs index 38528e26..40f43b3e 100644 --- a/Sources/PSWriteOffice/Cmdlets/OpenDocument/GetOfficeOpenDocumentCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/OpenDocument/GetOfficeOpenDocumentCommand.cs @@ -16,7 +16,84 @@ public sealed class GetOfficeOpenDocumentCommand : PSCmdlet [Parameter] public OdfLoadOptions? Options { get; set; } + /// Password used to decrypt an encrypted OpenDocument package. + [Parameter] + public string? Password { get; set; } + + /// Maximum source package size in bytes. + [Parameter] + [ValidateRange(1L, long.MaxValue)] + public long? MaxPackageBytes { get; set; } + + /// Maximum number of ZIP entries. + [Parameter] + [ValidateRange(1, int.MaxValue)] + public int? MaxEntries { get; set; } + + /// Maximum uncompressed size of one package entry. + [Parameter] + [ValidateRange(1L, long.MaxValue)] + public long? MaxEntryUncompressedBytes { get; set; } + + /// Maximum aggregate uncompressed package size. + [Parameter] + [ValidateRange(1L, long.MaxValue)] + public long? MaxTotalUncompressedBytes { get; set; } + + /// Maximum aggregate PBKDF2 iterations across encrypted entries. + [Parameter] + [ValidateRange(1L, long.MaxValue)] + public long? MaxTotalKdfIterations { get; set; } + + /// Maximum declared expansion ratio for a compressed entry. + [Parameter] + [ValidateRange(double.Epsilon, double.MaxValue)] + public double? MaxCompressionRatio { get; set; } + + /// Maximum archive path depth. + [Parameter] + [ValidateRange(1, int.MaxValue)] + public int? MaxDepth { get; set; } + + /// Maximum characters allowed in one parsed XML part. + [Parameter] + [ValidateRange(1L, long.MaxValue)] + public long? MaxXmlCharacters { get; set; } + + /// Maximum element nesting depth in one parsed XML part. + [Parameter] + [ValidateRange(1, int.MaxValue)] + public int? MaxXmlDepth { get; set; } + /// protected override void ProcessRecord() => WriteObject(OdfDocument.Load( - SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path), Options)); + SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path), BuildOptions())); + + private OdfLoadOptions BuildOptions() { + var options = Options == null + ? new OdfLoadOptions() + : new OdfLoadOptions { + Password = Options.Password, + MaxPackageBytes = Options.MaxPackageBytes, + MaxEntries = Options.MaxEntries, + MaxEntryUncompressedBytes = Options.MaxEntryUncompressedBytes, + MaxTotalUncompressedBytes = Options.MaxTotalUncompressedBytes, + MaxTotalKdfIterations = Options.MaxTotalKdfIterations, + MaxCompressionRatio = Options.MaxCompressionRatio, + MaxDepth = Options.MaxDepth, + MaxXmlCharacters = Options.MaxXmlCharacters, + MaxXmlDepth = Options.MaxXmlDepth + }; + if (Password != null) options.Password = Password; + if (MaxPackageBytes.HasValue) options.MaxPackageBytes = MaxPackageBytes.Value; + if (MaxEntries.HasValue) options.MaxEntries = MaxEntries.Value; + if (MaxEntryUncompressedBytes.HasValue) options.MaxEntryUncompressedBytes = MaxEntryUncompressedBytes.Value; + if (MaxTotalUncompressedBytes.HasValue) options.MaxTotalUncompressedBytes = MaxTotalUncompressedBytes.Value; + if (MaxTotalKdfIterations.HasValue) options.MaxTotalKdfIterations = MaxTotalKdfIterations.Value; + if (MaxCompressionRatio.HasValue) options.MaxCompressionRatio = MaxCompressionRatio.Value; + if (MaxDepth.HasValue) options.MaxDepth = MaxDepth.Value; + if (MaxXmlCharacters.HasValue) options.MaxXmlCharacters = MaxXmlCharacters.Value; + if (MaxXmlDepth.HasValue) options.MaxXmlDepth = MaxXmlDepth.Value; + return options; + } } diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs index ff1e563a..44c5f2a2 100644 --- a/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs @@ -5,6 +5,7 @@ using OfficeIMO.Excel.Pdf; using OfficeIMO.Markdown; using OfficeIMO.Markdown.Pdf; +using OfficeIMO.Pdf; using OfficeIMO.PowerPoint; using OfficeIMO.PowerPoint.Pdf; using OfficeIMO.Rtf; @@ -75,6 +76,14 @@ public sealed class ExportOfficeDocumentPdfCommand : PSCmdlet { [Parameter] public RtfPdfSaveOptions? RtfOptions { get; set; } + /// Variable name that receives structured PDF conversion warnings. + [Parameter] + public string? PdfWarningVariable { get; set; } + + /// Variable name that receives the structured PDF conversion report. + [Parameter] + public string? PdfConversionReportVariable { get; set; } + /// Open the PDF after exporting it. [Parameter] [Alias("Show")] @@ -100,7 +109,10 @@ protected override void ProcessRecord() { document = LoadDocument(out closeOwnedDocument); } - SaveDocument(document, outputPath); + PdfSaveResult result = SaveDocument(document, outputPath); + PdfCommandUtilities.SetVariable(this, PdfWarningVariable, result.Warnings); + PdfCommandUtilities.SetVariable(this, PdfConversionReportVariable, result.Report); + result.RequireSuccess(); } finally { closeOwnedDocument?.Invoke(); } @@ -144,23 +156,18 @@ private object LoadDocument(out Action? closeOwnedDocument) { } } - private void SaveDocument(object document, string outputPath) { + private PdfSaveResult SaveDocument(object document, string outputPath) { switch (document) { case WordDocument word: - word.SaveAsPdf(outputPath, WordOptions ?? new WordPdfSaveOptions()).RequireSuccess(); - return; + return word.SaveAsPdf(outputPath, WordOptions ?? new WordPdfSaveOptions()); case ExcelDocument excel: - excel.SaveAsPdf(outputPath, ExcelOptions ?? new ExcelPdfSaveOptions()).RequireSuccess(); - return; + return excel.SaveAsPdf(outputPath, ExcelOptions ?? new ExcelPdfSaveOptions()); case PowerPointPresentation powerPoint: - powerPoint.SaveAsPdf(outputPath, PowerPointOptions ?? new PowerPointPdfSaveOptions()).RequireSuccess(); - return; + return powerPoint.SaveAsPdf(outputPath, PowerPointOptions ?? new PowerPointPdfSaveOptions()); case MarkdownDoc markdown: - markdown.SaveAsPdf(outputPath, MarkdownOptions ?? new MarkdownPdfSaveOptions()).RequireSuccess(); - return; + return markdown.SaveAsPdf(outputPath, MarkdownOptions ?? new MarkdownPdfSaveOptions()); case RtfDocument rtf: - rtf.SaveAsPdf(outputPath, RtfOptions ?? new RtfPdfSaveOptions()).RequireSuccess(); - return; + return rtf.SaveAsPdf(outputPath, RtfOptions ?? new RtfPdfSaveOptions()); default: throw new PSArgumentException( $"Document type '{document?.GetType().FullName ?? ""}' cannot be exported to PDF. Use a WordDocument, ExcelDocument, PowerPointPresentation, MarkdownDoc, or RtfDocument.", diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointPdfOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointPdfOptionsCommand.cs new file mode 100644 index 00000000..f6d08478 --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointPdfOptionsCommand.cs @@ -0,0 +1,128 @@ +using System.Management.Automation; +using OfficeIMO.Drawing; +using OfficeIMO.PowerPoint.Pdf; + +namespace PSWriteOffice.Cmdlets.PowerPoint; + +/// Creates discoverable PowerPoint-to-PDF conversion options for Export-OfficeDocumentPdf. +/// +/// Create a handout PDF with notes and hidden slides. +/// PS> +/// $options = New-OfficePowerPointPdfOptions -PageLayout Handouts -HandoutSlidesPerPage 3 -IncludeSpeakerNotes -IncludeHiddenSlides +/// Export-OfficeDocumentPdf -InputPath .\Briefing.pptx -Path .\Briefing.pdf -PowerPointOptions $options +/// +[Cmdlet(VerbsCommon.New, "OfficePowerPointPdfOptions")] +[OutputType(typeof(PowerPointPdfSaveOptions))] +public sealed class NewOfficePowerPointPdfOptionsCommand : PSCmdlet { + /// Underlying low-level OfficeIMO PDF options. + [Parameter] + public OfficeIMO.Pdf.PdfOptions? PdfOptions { get; set; } + + /// Default font family used when the presentation does not specify one. + [Parameter] + public string? FontFamily { get; set; } + + /// Render pictures. + [Parameter] + public SwitchParameter IncludePictures { get; set; } + + /// Render automatic shapes. + [Parameter] + public SwitchParameter IncludeAutoShapes { get; set; } + + /// Render text boxes. + [Parameter] + public SwitchParameter IncludeTextBoxes { get; set; } + + /// Render slide backgrounds. + [Parameter] + public SwitchParameter IncludeSlideBackgrounds { get; set; } + + /// Render tables. + [Parameter] + public SwitchParameter IncludeTables { get; set; } + + /// Render charts. + [Parameter] + public SwitchParameter IncludeCharts { get; set; } + + /// Render SmartArt. + [Parameter] + public SwitchParameter IncludeSmartArt { get; set; } + + /// Include slides marked hidden. + [Parameter] + public SwitchParameter IncludeHiddenSlides { get; set; } + + /// PDF page layout, such as slides, notes, or handouts. + [Parameter] + public PowerPointPdfPageLayout? PageLayout { get; set; } + + /// Number of slides on each handout page. + [Parameter] + [ValidateRange(1, 9)] + public int? HandoutSlidesPerPage { get; set; } + + /// Include speaker notes. + [Parameter] + public SwitchParameter IncludeSpeakerNotes { get; set; } + + /// Maximum nested group-shape depth to render. + [Parameter] + [ValidateRange(1, int.MaxValue)] + public int? MaxGroupShapeDepth { get; set; } + + /// How pictures fit their shape bounds. + [Parameter] + public OfficeImageFit? PictureFit { get; set; } + + /// Report pictures whose requested fit distorts their aspect ratio. + [Parameter] + public SwitchParameter WarnOnPictureAspectRatioDistortion { get; set; } + + /// Chart visual style override. + [Parameter] + public OfficeChartStyle? ChartStyle { get; set; } + + /// Chart layout override. + [Parameter] + public OfficeChartLayout? ChartLayout { get; set; } + + /// Allow embedding fonts discovered on the current system. + [Parameter] + public SwitchParameter AllowSystemFontEmbedding { get; set; } + + /// Allow embedding fonts stored in the presentation. + [Parameter] + public SwitchParameter AllowDocumentFontEmbedding { get; set; } + + /// + protected override void ProcessRecord() { + var options = new PowerPointPdfSaveOptions(); + if (PdfOptions != null) options.PdfOptions = PdfOptions; + if (!string.IsNullOrWhiteSpace(FontFamily)) options.FontFamily = FontFamily; + SetBoundSwitch(nameof(IncludePictures), IncludePictures, value => options.IncludePictures = value); + SetBoundSwitch(nameof(IncludeAutoShapes), IncludeAutoShapes, value => options.IncludeAutoShapes = value); + SetBoundSwitch(nameof(IncludeTextBoxes), IncludeTextBoxes, value => options.IncludeTextBoxes = value); + SetBoundSwitch(nameof(IncludeSlideBackgrounds), IncludeSlideBackgrounds, value => options.IncludeSlideBackgrounds = value); + SetBoundSwitch(nameof(IncludeTables), IncludeTables, value => options.IncludeTables = value); + SetBoundSwitch(nameof(IncludeCharts), IncludeCharts, value => options.IncludeCharts = value); + SetBoundSwitch(nameof(IncludeSmartArt), IncludeSmartArt, value => options.IncludeSmartArt = value); + SetBoundSwitch(nameof(IncludeHiddenSlides), IncludeHiddenSlides, value => options.IncludeHiddenSlides = value); + if (PageLayout.HasValue) options.PageLayout = PageLayout.Value; + if (HandoutSlidesPerPage.HasValue) options.HandoutSlidesPerPage = HandoutSlidesPerPage.Value; + SetBoundSwitch(nameof(IncludeSpeakerNotes), IncludeSpeakerNotes, value => options.IncludeSpeakerNotes = value); + if (MaxGroupShapeDepth.HasValue) options.MaxGroupShapeDepth = MaxGroupShapeDepth.Value; + if (PictureFit.HasValue) options.PictureFit = PictureFit.Value; + SetBoundSwitch(nameof(WarnOnPictureAspectRatioDistortion), WarnOnPictureAspectRatioDistortion, value => options.WarnOnPictureAspectRatioDistortion = value); + if (ChartStyle != null) options.ChartStyle = ChartStyle; + if (ChartLayout != null) options.ChartLayout = ChartLayout; + SetBoundSwitch(nameof(AllowSystemFontEmbedding), AllowSystemFontEmbedding, value => options.ResourcePolicy.AllowSystemFontEmbedding = value); + SetBoundSwitch(nameof(AllowDocumentFontEmbedding), AllowDocumentFontEmbedding, value => options.ResourcePolicy.AllowDocumentFontEmbedding = value); + WriteObject(options); + } + + private void SetBoundSwitch(string name, SwitchParameter value, System.Action setter) { + if (MyInvocation.BoundParameters.ContainsKey(name)) setter(value.IsPresent); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/Rtf/NewOfficeRtfPdfOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Rtf/NewOfficeRtfPdfOptionsCommand.cs new file mode 100644 index 00000000..517aab53 --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Rtf/NewOfficeRtfPdfOptionsCommand.cs @@ -0,0 +1,88 @@ +using System.Management.Automation; +using OfficeIMO.Rtf.Pdf; + +namespace PSWriteOffice.Cmdlets.Rtf; + +/// Creates discoverable RTF-to-PDF conversion options for Export-OfficeDocumentPdf. +/// +/// Include document structure and bound system-font discovery. +/// PS> +/// $options = New-OfficeRtfPdfOptions -IncludeImages $true -IncludeTables $true -IncludeHeaderFooters $true -MaximumSystemFontFamilies 32 +/// Export-OfficeDocumentPdf -InputPath .\Report.rtf -Path .\Report.pdf -RtfOptions $options +/// +[Cmdlet(VerbsCommon.New, "OfficeRtfPdfOptions")] +[OutputType(typeof(RtfPdfSaveOptions))] +public sealed class NewOfficeRtfPdfOptionsCommand : PSCmdlet { + /// Underlying low-level OfficeIMO PDF options. + [Parameter] + public OfficeIMO.Pdf.PdfOptions? PdfOptions { get; set; } + + /// Include text marked hidden. + [Parameter] + public SwitchParameter IncludeHiddenText { get; set; } + + /// Render images. + [Parameter] + public SwitchParameter IncludeImages { get; set; } + + /// Fallback image width in PDF points. + [Parameter] + [ValidateRange(double.Epsilon, double.MaxValue)] + public double? DefaultImageWidth { get; set; } + + /// Fallback image height in PDF points. + [Parameter] + [ValidateRange(double.Epsilon, double.MaxValue)] + public double? DefaultImageHeight { get; set; } + + /// Copy document metadata into the PDF. + [Parameter] + public SwitchParameter IncludeMetadata { get; set; } + + /// Render tables. + [Parameter] + public SwitchParameter IncludeTables { get; set; } + + /// Render headers and footers. + [Parameter] + public SwitchParameter IncludeHeaderFooters { get; set; } + + /// Render document notes. + [Parameter] + public SwitchParameter IncludeNotes { get; set; } + + /// Maximum number of system font families to discover. + [Parameter] + [ValidateRange(1, int.MaxValue)] + public int? MaximumSystemFontFamilies { get; set; } + + /// Allow embedding fonts discovered on the current system. + [Parameter] + public SwitchParameter AllowSystemFontEmbedding { get; set; } + + /// Allow embedding fonts referenced by the RTF document. + [Parameter] + public SwitchParameter AllowDocumentFontEmbedding { get; set; } + + /// + protected override void ProcessRecord() { + var options = new RtfPdfSaveOptions(); + if (PdfOptions != null) options.PdfOptions = PdfOptions; + SetBoundSwitch(nameof(IncludeHiddenText), IncludeHiddenText, value => options.IncludeHiddenText = value); + SetBoundSwitch(nameof(IncludeImages), IncludeImages, value => options.IncludeImages = value); + if (DefaultImageWidth.HasValue) options.DefaultImageWidth = DefaultImageWidth.Value; + if (DefaultImageHeight.HasValue) options.DefaultImageHeight = DefaultImageHeight.Value; + SetBoundSwitch(nameof(IncludeMetadata), IncludeMetadata, value => options.IncludeMetadata = value); + SetBoundSwitch(nameof(IncludeTables), IncludeTables, value => options.IncludeTables = value); + SetBoundSwitch(nameof(IncludeHeaderFooters), IncludeHeaderFooters, value => options.IncludeHeaderFooters = value); + SetBoundSwitch(nameof(IncludeNotes), IncludeNotes, value => options.IncludeNotes = value); + if (MaximumSystemFontFamilies.HasValue) options.MaximumSystemFontFamilies = MaximumSystemFontFamilies.Value; + SetBoundSwitch(nameof(AllowSystemFontEmbedding), AllowSystemFontEmbedding, value => options.ResourcePolicy.AllowSystemFontEmbedding = value); + SetBoundSwitch(nameof(AllowDocumentFontEmbedding), AllowDocumentFontEmbedding, value => options.ResourcePolicy.AllowDocumentFontEmbedding = value); + WriteObject(options); + } + + private void SetBoundSwitch(string name, SwitchParameter value, System.Action setter) { + if (MyInvocation.BoundParameters.ContainsKey(name)) setter(value.IsPresent); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordPdfOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordPdfOptionsCommand.cs new file mode 100644 index 00000000..74106924 --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordPdfOptionsCommand.cs @@ -0,0 +1,130 @@ +using System.Management.Automation; +using OfficeIMO; +using OfficeIMO.Pdf; +using OfficeIMO.Word; +using OfficeIMO.Word.Pdf; + +namespace PSWriteOffice.Cmdlets.Word; + +/// Creates discoverable Word-to-PDF conversion options for Export-OfficeDocumentPdf. +/// +/// Configure metadata, page numbers, and font embedding. +/// PS> +/// $options = New-OfficeWordPdfOptions -Title 'Service report' -Author 'Evotec' -IncludePageNumbers -AllowSystemFontEmbedding +/// Export-OfficeDocumentPdf -InputPath .\Report.docx -Path .\Report.pdf -WordOptions $options +/// +[Cmdlet(VerbsCommon.New, "OfficeWordPdfOptions")] +[OutputType(typeof(WordPdfSaveOptions))] +public sealed class NewOfficeWordPdfOptionsCommand : PSCmdlet { + /// Underlying low-level OfficeIMO PDF options. + [Parameter] + public OfficeIMO.Pdf.PdfOptions? PdfOptions { get; set; } + + /// Default font family used when the document does not specify one. + [Parameter] + public string? FontFamily { get; set; } + + /// PDF page size. + [Parameter] + public PageSize? PageSize { get; set; } + + /// PDF page orientation. + [Parameter] + public OfficePageOrientation? Orientation { get; set; } + + /// Fallback Word page size for sections without page settings. + [Parameter] + public WordPageSize? DefaultPageSize { get; set; } + + /// Fallback page orientation for sections without page settings. + [Parameter] + public OfficePageOrientation? DefaultOrientation { get; set; } + + /// Left page margin in PDF points. + [Parameter] + [ValidateRange(0d, double.MaxValue)] + public double? MarginLeft { get; set; } + + /// Top page margin in PDF points. + [Parameter] + [ValidateRange(0d, double.MaxValue)] + public double? MarginTop { get; set; } + + /// Right page margin in PDF points. + [Parameter] + [ValidateRange(0d, double.MaxValue)] + public double? MarginRight { get; set; } + + /// Bottom page margin in PDF points. + [Parameter] + [ValidateRange(0d, double.MaxValue)] + public double? MarginBottom { get; set; } + + /// PDF title metadata. + [Parameter] + public string? Title { get; set; } + + /// PDF author metadata. + [Parameter] + public string? Author { get; set; } + + /// PDF subject metadata. + [Parameter] + public string? Subject { get; set; } + + /// PDF keywords metadata. + [Parameter] + public string? Keywords { get; set; } + + /// Include page numbers in the generated PDF. + [Parameter] + public SwitchParameter IncludePageNumbers { get; set; } + + /// Page number text format. + [Parameter] + public string? PageNumberFormat { get; set; } + + /// Draw default borders for tables that do not specify borders. + [Parameter] + public SwitchParameter DefaultTableBorders { get; set; } + + /// Allow embedding fonts discovered on the current system. + [Parameter] + public SwitchParameter AllowSystemFontEmbedding { get; set; } + + /// Allow embedding fonts stored in the Word document. + [Parameter] + public SwitchParameter AllowDocumentFontEmbedding { get; set; } + + /// + protected override void ProcessRecord() { + var options = new WordPdfSaveOptions(); + if (PdfOptions != null) options.PdfOptions = PdfOptions; + if (!string.IsNullOrWhiteSpace(FontFamily)) options.FontFamily = FontFamily; + if (PageSize.HasValue) options.PageSize = PageSize.Value; + if (Orientation.HasValue) options.Orientation = Orientation.Value; + if (DefaultPageSize.HasValue) options.DefaultPageSize = DefaultPageSize.Value; + if (DefaultOrientation.HasValue) options.DefaultOrientation = DefaultOrientation.Value; + if (HasMargins()) { + PageMargins defaults = PageMargins.Normal; + options.Margins = new PageMargins( + MarginLeft ?? defaults.Left, + MarginTop ?? defaults.Top, + MarginRight ?? defaults.Right, + MarginBottom ?? defaults.Bottom); + } + if (!string.IsNullOrWhiteSpace(Title)) options.Title = Title; + if (!string.IsNullOrWhiteSpace(Author)) options.Author = Author; + if (!string.IsNullOrWhiteSpace(Subject)) options.Subject = Subject; + if (!string.IsNullOrWhiteSpace(Keywords)) options.Keywords = Keywords; + if (IsBound(nameof(IncludePageNumbers))) options.IncludePageNumbers = IncludePageNumbers.IsPresent; + if (!string.IsNullOrWhiteSpace(PageNumberFormat)) options.PageNumberFormat = PageNumberFormat; + if (IsBound(nameof(DefaultTableBorders))) options.DefaultTableBorders = DefaultTableBorders.IsPresent; + if (IsBound(nameof(AllowSystemFontEmbedding))) options.ResourcePolicy.AllowSystemFontEmbedding = AllowSystemFontEmbedding.IsPresent; + if (IsBound(nameof(AllowDocumentFontEmbedding))) options.ResourcePolicy.AllowDocumentFontEmbedding = AllowDocumentFontEmbedding.IsPresent; + WriteObject(options); + } + + private bool HasMargins() => MarginLeft.HasValue || MarginTop.HasValue || MarginRight.HasValue || MarginBottom.HasValue; + private bool IsBound(string name) => MyInvocation.BoundParameters.ContainsKey(name); +} diff --git a/Sources/PSWriteOffice/Services/Markdown/MarkdownOptionUtilities.cs b/Sources/PSWriteOffice/Services/Markdown/MarkdownOptionUtilities.cs index 71b07825..f2a15b8a 100644 --- a/Sources/PSWriteOffice/Services/Markdown/MarkdownOptionUtilities.cs +++ b/Sources/PSWriteOffice/Services/Markdown/MarkdownOptionUtilities.cs @@ -163,7 +163,7 @@ internal static class MarkdownOptionUtilities internal static MarkdownPdfSaveOptions BuildPdfOptions(IMarkdownPdfOptionSource source, PSCmdlet command, string? fallbackBaseDirectory) { - var options = source.MarkdownPdfOptions ?? new MarkdownPdfSaveOptions(); + var options = source.MarkdownPdfOptions?.Clone() ?? new MarkdownPdfSaveOptions(); if (source.PdfOptions != null) options.PdfOptions = source.PdfOptions; if (source.PdfTheme.HasValue) options.Theme = MarkdownVisualTheme.Create(source.PdfTheme.Value); @@ -200,8 +200,8 @@ internal static MarkdownPdfSaveOptions BuildPdfOptions(IMarkdownPdfOptionSource internal static void SetPdfResultVariables(IMarkdownPdfOptionSource source, PSCmdlet command, OfficeIMO.Pdf.PdfSaveResult result) { - SetVariable(command, source.PdfWarningVariable, result.Warnings); - SetVariable(command, source.PdfConversionReportVariable, result.Report); + PdfCommandUtilities.SetVariable(command, source.PdfWarningVariable, result.Warnings); + PdfCommandUtilities.SetVariable(command, source.PdfConversionReportVariable, result.Report); } internal static MarkdownVisualTheme CreateTheme(OfficeVisualThemeKind kind) => MarkdownVisualTheme.Create(kind); @@ -241,13 +241,4 @@ private static string ResolveLineEnding(string value) }; } - private static void SetVariable(PSCmdlet command, string? name, object? value) - { - if (string.IsNullOrWhiteSpace(name)) - { - return; - } - - command.SessionState.PSVariable.Set(name!, value); - } } diff --git a/Sources/PSWriteOffice/Services/Pdf/PdfCommandUtilities.cs b/Sources/PSWriteOffice/Services/Pdf/PdfCommandUtilities.cs index dd16c553..b2266ca9 100644 --- a/Sources/PSWriteOffice/Services/Pdf/PdfCommandUtilities.cs +++ b/Sources/PSWriteOffice/Services/Pdf/PdfCommandUtilities.cs @@ -79,6 +79,14 @@ internal static bool ShouldWrite(PSCmdlet cmdlet, string path, string action) return cmdlet.ShouldProcess(path, action); } + internal static void SetVariable(PSCmdlet cmdlet, string? name, object? value) + { + if (!string.IsNullOrWhiteSpace(name)) + { + cmdlet.SessionState.PSVariable.Set(name!, value); + } + } + internal static string GetSafeFileName(string fileName) { var invalid = Path.GetInvalidFileNameChars(); diff --git a/Tests/OfficeIMONextSupport.Tests.ps1 b/Tests/OfficeIMONextSupport.Tests.ps1 index 16224ebb..c90cb835 100644 --- a/Tests/OfficeIMONextSupport.Tests.ps1 +++ b/Tests/OfficeIMONextSupport.Tests.ps1 @@ -106,6 +106,24 @@ Describe 'Expanded OfficeIMO support' { Test-Path -LiteralPath $brokenLatexOutput | Should -BeFalse } + It 'exposes writer modes and line endings as ordinary PowerShell parameters' { + $asciiSource = Join-Path $TestDrive 'writer-source.adoc' + $asciiOutput = Join-Path $TestDrive 'writer-output.adoc' + [System.IO.File]::WriteAllText($asciiSource, "= Title`n`nBody") + Get-OfficeAsciiDoc -Path $asciiSource | + Save-OfficeAsciiDoc -Path $asciiOutput -Mode Canonical -LineEnding CRLF + [System.IO.File]::ReadAllText($asciiOutput) | Should -Match "`r`n" + + $latexSource = Join-Path $TestDrive 'writer-source.tex' + $latexOutput = Join-Path $TestDrive 'writer-output.tex' + [System.IO.File]::WriteAllText($latexSource, "\\documentclass{article}`n\\begin{document}`nBody`n\\end{document}") + Get-OfficeLatex -Path $latexSource | + Save-OfficeLatex -Path $latexOutput -Mode Canonical -LineEnding LF + $latexText = [System.IO.File]::ReadAllText($latexOutput) + $latexText | Should -Match "`n" + $latexText | Should -Not -Match "`r`n" + } + It 'creates and reloads native ODT, ODS, and ODP packages' { $cases = @( @{ Kind = 'Text'; Extension = 'odt'; Type = 'OfficeIMO.OpenDocument.OdtDocument' }, @@ -121,6 +139,9 @@ Describe 'Expanded OfficeIMO support' { Test-Path -LiteralPath $path | Should -BeTrue (Get-OfficeOpenDocument -Path $path).GetType().FullName | Should -Be $case.Type } + + { Get-OfficeOpenDocument -Path $path -MaxPackageBytes 1 -ErrorAction Stop } | + Should -Throw '*package*' } It 'protects OpenDocument destinations and validates conversion extensions' { diff --git a/Tests/OfficePdfExport.Tests.ps1 b/Tests/OfficePdfExport.Tests.ps1 index cacba487..30bca0fb 100644 --- a/Tests/OfficePdfExport.Tests.ps1 +++ b/Tests/OfficePdfExport.Tests.ps1 @@ -24,6 +24,97 @@ BeforeAll { } Describe 'Office document PDF exports' { + It 'builds every format-specific PDF option through ordinary PowerShell parameters' { + $word = New-OfficeWordPdfOptions ` + -Title 'Service report' ` + -IncludePageNumbers ` + -DefaultTableBorders:$false + $word.GetType().FullName | Should -Be 'OfficeIMO.Word.Pdf.WordPdfSaveOptions' + $word.Title | Should -Be 'Service report' + $word.IncludePageNumbers | Should -BeTrue + $word.DefaultTableBorders | Should -BeFalse + + $excel = New-OfficeExcelPdfOptions ` + -SheetName Summary, Services ` + -UseWorksheetCharts ` + -UseWorksheetImages:$false ` + -MaxRowsPerSheet 50 + $excel.GetType().FullName | Should -Be 'OfficeIMO.Excel.Pdf.ExcelPdfSaveOptions' + @($excel.SheetNames) | Should -Be @('Summary', 'Services') + $excel.UseWorksheetCharts | Should -BeTrue + $excel.UseWorksheetImages | Should -BeFalse + $excel.MaxRowsPerSheet | Should -Be 50 + + $powerPoint = New-OfficePowerPointPdfOptions ` + -PageLayout Handouts ` + -HandoutSlidesPerPage 3 ` + -IncludeSpeakerNotes ` + -IncludeHiddenSlides:$false + $powerPoint.GetType().FullName | Should -Be 'OfficeIMO.PowerPoint.Pdf.PowerPointPdfSaveOptions' + $powerPoint.PageLayout.ToString() | Should -Be 'Handouts' + $powerPoint.HandoutSlidesPerPage | Should -Be 3 + $powerPoint.IncludeSpeakerNotes | Should -BeTrue + $powerPoint.IncludeHiddenSlides | Should -BeFalse + + $rtf = New-OfficeRtfPdfOptions ` + -IncludeImages ` + -IncludeTables:$false ` + -MaximumSystemFontFamilies 32 + $rtf.GetType().FullName | Should -Be 'OfficeIMO.Rtf.Pdf.RtfPdfSaveOptions' + $rtf.IncludeImages | Should -BeTrue + $rtf.IncludeTables | Should -BeFalse + $rtf.MaximumSystemFontFamilies | Should -Be 32 + } + + It 'builds Markdown PDF options through discoverable PowerShell parameters' { + $command = Get-Command New-OfficeMarkdownPdfOptions + foreach ($parameter in @( + 'Theme', + 'FontFamily', + 'Title', + 'Author', + 'BaseDirectory', + 'IncludeLocalImages', + 'IncludeDataUriImages', + 'FrontMatterRenderMode', + 'CreateOutlineFromHeadings' + )) { + $command.Parameters.Keys | Should -Contain $parameter + } + + $base = New-OfficeMarkdownPdfOptions -Title 'Base title' -IncludeLocalImages -IncludeDataUriImages:$false + $derived = $base | New-OfficeMarkdownPdfOptions -Author 'Evotec' -IncludeDataUriImages + + $base.Title | Should -Be 'Base title' + $base.Author | Should -BeNullOrEmpty + $base.ResourcePolicy.AllowDataUris | Should -BeFalse + $derived.Title | Should -Be 'Base title' + $derived.Author | Should -Be 'Evotec' + $derived.ResourcePolicy.AllowLocalFileAccess | Should -BeTrue + $derived.ResourcePolicy.AllowDataUris | Should -BeTrue + } + + It 'exports Markdown with builder options and exposes conversion evidence variables' { + $pdf = Join-Path $TestDrive 'markdown-options.pdf' + $document = Get-OfficeMarkdown -Text "# Builder options`n`nGenerated by PSWriteOffice." + $options = New-OfficeMarkdownPdfOptions ` + -Title 'Builder options report' ` + -Author 'Evotec' ` + -UseFirstHeadingAsTitle:$false ` + -CreateOutlineFromHeadings + + $document | Export-OfficeDocumentPdf ` + -Path $pdf ` + -MarkdownOptions $options ` + -PdfWarningVariable markdownPdfWarnings ` + -PdfConversionReportVariable markdownPdfReport + + Test-Path -LiteralPath $pdf | Should -BeTrue + $markdownPdfWarnings | Should -Not -BeNull + $markdownPdfReport | Should -Not -BeNull + $markdownPdfReport.Warnings | Should -Not -BeNull + } + It 'exports saved native documents through one explicit command' { $wordPath = Join-Path $TestDrive 'new-word.docx' $wordPdf = Join-Path $TestDrive 'new-word.pdf' diff --git a/Tests/PublicApiConsistency.Tests.ps1 b/Tests/PublicApiConsistency.Tests.ps1 index 6db30a17..454f7c89 100644 --- a/Tests/PublicApiConsistency.Tests.ps1 +++ b/Tests/PublicApiConsistency.Tests.ps1 @@ -68,6 +68,52 @@ Describe 'PSWriteOffice public API consistency' { $command.ParameterSets.Name | Should -Contain 'Path' } + It 'provides a discoverable PowerShell builder for every PDF export options type' { + $command = Get-Command Export-OfficeDocumentPdf + $builders = [ordered]@{ + WordOptions = 'New-OfficeWordPdfOptions' + ExcelOptions = 'New-OfficeExcelPdfOptions' + PowerPointOptions = 'New-OfficePowerPointPdfOptions' + MarkdownOptions = 'New-OfficeMarkdownPdfOptions' + RtfOptions = 'New-OfficeRtfPdfOptions' + } + + foreach ($entry in $builders.GetEnumerator()) { + $builder = Get-Command $entry.Value + $builder.OutputType.Type.Name | Should -Contain $command.Parameters[$entry.Key].ParameterType.Name + } + + foreach ($builderName in $builders.Values) { + $builder = Get-Command $builderName + @($builder.Parameters.Values | Where-Object ParameterType -eq ([System.Nullable[bool]])) | + Should -HaveCount 0 -Because "$builderName should expose idiomatic switches rather than nullable .NET booleans" + } + } + + It 'does not require raw writer or OpenDocument load option objects for common controls' { + $openDocument = Get-Command Get-OfficeOpenDocument + foreach ($parameter in @( + 'Password', + 'MaxPackageBytes', + 'MaxEntries', + 'MaxEntryUncompressedBytes', + 'MaxTotalUncompressedBytes', + 'MaxTotalKdfIterations', + 'MaxCompressionRatio', + 'MaxDepth', + 'MaxXmlCharacters', + 'MaxXmlDepth' + )) { + $openDocument.Parameters.Keys | Should -Contain $parameter + } + + foreach ($name in 'Save-OfficeAsciiDoc', 'Save-OfficeLatex') { + $command = Get-Command $name + $command.Parameters.Keys | Should -Contain 'Mode' + $command.Parameters.Keys | Should -Contain 'LineEnding' + } + } + It 'uses Path and DestinationPath for file copies' { $command = Get-Command Copy-OfficeExcelWorkbook diff --git a/Website/content/project-docs/docs/command-families.md b/Website/content/project-docs/docs/command-families.md index 783ad2e3..1ca83262 100644 --- a/Website/content/project-docs/docs/command-families.md +++ b/Website/content/project-docs/docs/command-families.md @@ -10,15 +10,15 @@ The PSWriteOffice website catalog groups every exported cmdlet into exactly one | Family | Exported commands | Guide | | --- | ---: | --- | -| Excel | 158 | [Excel automation](/docs/pswriteoffice/excel/) | -| Word | 92 | [Word automation](/docs/pswriteoffice/word/) | +| Excel | 159 | [Excel automation](/docs/pswriteoffice/excel/) | +| Word | 93 | [Word automation](/docs/pswriteoffice/word/) | | PDF | 86 | [PDF automation](/docs/pswriteoffice/pdf/) | -| PowerPoint | 58 | [PowerPoint automation](/docs/pswriteoffice/powerpoint/) | -| Markdown | 25 | [Open and text formats](/docs/pswriteoffice/open-text-formats/) | +| PowerPoint | 59 | [PowerPoint automation](/docs/pswriteoffice/powerpoint/) | +| Markdown | 26 | [Open and text formats](/docs/pswriteoffice/open-text-formats/) | | Visio | 23 | [Visio diagrams](/docs/pswriteoffice/visio/) | | Reader and extraction | 13 | [Reader and extraction](/docs/pswriteoffice/reader/) | | Confluence Cloud | 7 | [Confluence Cloud publishing](/docs/pswriteoffice/confluence/) | -| RTF | 5 | [Open and text formats](/docs/pswriteoffice/open-text-formats/) | +| RTF | 6 | [Open and text formats](/docs/pswriteoffice/open-text-formats/) | | CSV | 5 | [Open and text formats](/docs/pswriteoffice/open-text-formats/) | | OpenDocument | 5 | [Open and text formats](/docs/pswriteoffice/open-text-formats/) | | Email | 4 | [Open and text formats](/docs/pswriteoffice/open-text-formats/) | diff --git a/Website/content/project-docs/docs/excel.md b/Website/content/project-docs/docs/excel.md index f306b777..ea2d48bd 100644 --- a/Website/content/project-docs/docs/excel.md +++ b/Website/content/project-docs/docs/excel.md @@ -4,7 +4,7 @@ description: "Build, inspect, validate, compare, repair, and publish workbook wo layout: docs --- -Excel is the largest PSWriteOffice family with 158 exported commands. It covers workbook creation and reading, sheet and range operations, formulas, styling, tables, charts, pivots, validation, comments, images, links, templates, dashboards, protection, accessibility, comparison, repair, streaming contracts, and direct range or chart image export. +Excel is the largest PSWriteOffice family with 159 exported commands. It covers workbook creation and reading, sheet and range operations, formulas, styling, tables, charts, pivots, validation, comments, images, links, templates, dashboards, protection, accessibility, comparison, repair, streaming contracts, and direct range or chart image export. ## Export rows in one line diff --git a/Website/content/project-docs/docs/open-text-formats.md b/Website/content/project-docs/docs/open-text-formats.md index 3cd79070..9e158a9a 100644 --- a/Website/content/project-docs/docs/open-text-formats.md +++ b/Website/content/project-docs/docs/open-text-formats.md @@ -10,7 +10,7 @@ PSWriteOffice is not limited to the three desktop Office formats. Smaller comman ## Markdown -Twenty-five commands build and inspect typed Markdown. Add headings, paragraphs, lists, task lists, tables, code, callouts, details, front matter, images, quotes, definition lists, and tables of contents. Reader commands expose headings, nodes, tables, and front matter; converters bridge HTML and Word workflows. +Twenty-six commands build and inspect typed Markdown. Add headings, paragraphs, lists, task lists, tables, code, callouts, details, front matter, images, quotes, definition lists, and tables of contents. Reader commands expose headings, nodes, tables, and front matter; converters bridge HTML and Word workflows. Start with the [operations runbook](https://github.com/EvotecIT/PSWriteOffice/blob/main/Examples/Markdown/Recipe-Markdown-OperationsRunbook.ps1) for operational content or the [release notes recipe](https://github.com/EvotecIT/PSWriteOffice/blob/main/Examples/Markdown/Recipe-Markdown-ReleaseNotes.ps1) for publishable change documentation. The [DSL cookbook](/docs/pswriteoffice/dsl-cookbook/) includes both and shows how the same data can also produce Word, Excel, PowerPoint, and PDF output. @@ -24,7 +24,7 @@ Use the focused Markdown guides for complete workflows: ## RTF -Five canonical commands create, load, update, convert, and inspect Rich Text Format documents. Use RTF when a lightweight rich-text interchange file is the required source or destination, and keep loss-aware conversion diagnostics for complex content. +Six canonical commands create, load, update, convert, inspect, and configure PDF export for Rich Text Format documents. Use RTF when a lightweight rich-text interchange file is the required source or destination, and keep loss-aware conversion diagnostics for complex content. See [update and convert RTF](https://github.com/EvotecIT/PSWriteOffice/blob/main/Examples/Rtf/Recipe-Rtf-UpdateAndConvert.ps1) for an end-to-end example. diff --git a/Website/content/project-docs/docs/overview.md b/Website/content/project-docs/docs/overview.md index 03494a2b..b1f8df11 100644 --- a/Website/content/project-docs/docs/overview.md +++ b/Website/content/project-docs/docs/overview.md @@ -21,10 +21,10 @@ The module manifest is the source of truth for exported cmdlets and aliases. The ## Major families -- **Excel — 158 commands:** authoring, reading, charts, pivots, validation, comments, templates, comparison, repair, accessibility, streaming, visual placement, and image export. -- **Word — 92 commands:** sections, paragraphs, lists, tables, fields, content controls, review, mail merge, protection, merging, visual placement, and conversion. +- **Excel — 159 commands:** authoring, reading, charts, pivots, validation, comments, templates, comparison, repair, accessibility, streaming, visual placement, and image export. +- **Word — 93 commands:** sections, paragraphs, lists, tables, fields, content controls, review, mail merge, protection, merging, visual placement, and conversion. - **PDF — 86 commands:** composition, explicit Word/Excel/PowerPoint/Markdown/RTF export, editable Office reconstruction, text and image extraction, merge/split, pages, forms, annotations, attachments, signatures, compliance, redaction, optimization, visual placement, and diagnostics. -- **PowerPoint — 58 commands:** slides, sections, shapes, charts, tables, notes, themes, layouts, transitions, visual placement, import, inspection, and HTML review. +- **PowerPoint — 59 commands:** slides, sections, shapes, charts, tables, notes, themes, layouts, transitions, visual placement, import, inspection, and HTML review. - **Confluence Cloud — 7 commands:** plan, create, update, and remove pages; preserve managed sections; and list, upload, or download attachments. - **Protection capabilities — 1 commands:** inspect OfficeIMO's shared protected-content support contract as typed rows, JSON, or Markdown. - **Markdown, Visio, Reader, visuals, and open formats:** typed Markdown, VSDX diagrams and stencils, cross-format visual placement, normalized extraction, RTF, CSV, ODT/ODS/ODP, email, AsciiDoc, and LaTeX workflows. diff --git a/Website/content/project-docs/docs/powerpoint.md b/Website/content/project-docs/docs/powerpoint.md index ac9ee4ac..f2e1cd47 100644 --- a/Website/content/project-docs/docs/powerpoint.md +++ b/Website/content/project-docs/docs/powerpoint.md @@ -4,7 +4,7 @@ description: "Compose, inspect, update, theme, import, and render repeatable pre layout: docs --- -The PowerPoint family exports 58 commands for slide creation and editing, sections, shapes, images, text, charts, tables, notes, themes, layouts, transitions, import, inspection, designer decks, and semantic deck plans. +The PowerPoint family exports 59 commands for slide creation and editing, sections, shapes, images, text, charts, tables, notes, themes, layouts, transitions, import, inspection, designer decks, and semantic deck plans. ## Use a presentation object in normal scripts diff --git a/Website/content/project-docs/docs/word.md b/Website/content/project-docs/docs/word.md index b39361cb..8115a766 100644 --- a/Website/content/project-docs/docs/word.md +++ b/Website/content/project-docs/docs/word.md @@ -4,7 +4,7 @@ description: "Create, inspect, update, review, merge, protect, and convert DOCX layout: docs --- -The Word family covers complete report creation and targeted updates to existing DOCX files. Its 92 exported commands include sections, paragraphs, text runs, lists, tables, images, charts, fields, links, headers and footers, notes, content controls, review, protection, merging, mail merge, and conversion. +The Word family covers complete report creation and targeted updates to existing DOCX files. Its 93 exported commands include sections, paragraphs, text runs, lists, tables, images, charts, fields, links, headers and footers, notes, content controls, review, protection, merging, mail merge, and conversion. ## Build a report diff --git a/WebsiteArtifacts/apidocs/powershell/PSWriteOffice-help.xml b/WebsiteArtifacts/apidocs/powershell/PSWriteOffice-help.xml index 3249fb9c..75fef897 100644 --- a/WebsiteArtifacts/apidocs/powershell/PSWriteOffice-help.xml +++ b/WebsiteArtifacts/apidocs/powershell/PSWriteOffice-help.xml @@ -81047,6 +81047,30 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PdfConversionReportVariable + + Variable name that receives the structured PDF conversion report. + + String + + String + + + None + + + PdfWarningVariable + + Variable name that receives structured PDF conversion warnings. + + String + + String + + + None + PowerPointOptions @@ -81170,6 +81194,30 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PdfConversionReportVariable + + Variable name that receives the structured PDF conversion report. + + String + + String + + + None + + + PdfWarningVariable + + Variable name that receives structured PDF conversion warnings. + + String + + String + + + None + PowerPointOptions @@ -81305,6 +81353,30 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PdfConversionReportVariable + + Variable name that receives the structured PDF conversion report. + + String + + String + + + None + + + PdfWarningVariable + + Variable name that receives structured PDF conversion warnings. + + String + + String + + + None + PowerPointOptions @@ -110836,6 +110908,114 @@ extraction, hashing, and chunk shaping. Get-OfficeOpenDocument + + MaxCompressionRatio + + Maximum declared expansion ratio for a compressed entry. + + Double + + Double + + + None + + + MaxDepth + + Maximum archive path depth. + + Int32 + + Int32 + + + None + + + MaxEntries + + Maximum number of ZIP entries. + + Int32 + + Int32 + + + None + + + MaxEntryUncompressedBytes + + Maximum uncompressed size of one package entry. + + Int64 + + Int64 + + + None + + + MaxPackageBytes + + Maximum source package size in bytes. + + Int64 + + Int64 + + + None + + + MaxTotalKdfIterations + + Maximum aggregate PBKDF2 iterations across encrypted entries. + + Int64 + + Int64 + + + None + + + MaxTotalUncompressedBytes + + Maximum aggregate uncompressed package size. + + Int64 + + Int64 + + + None + + + MaxXmlCharacters + + Maximum characters allowed in one parsed XML part. + + Int64 + + Int64 + + + None + + + MaxXmlDepth + + Maximum element nesting depth in one parsed XML part. + + Int32 + + Int32 + + + None + Options @@ -110848,6 +111028,18 @@ extraction, hashing, and chunk shaping. None + + Password + + Password used to decrypt an encrypted OpenDocument package. + + String + + String + + + None + Path @@ -110863,6 +111055,114 @@ extraction, hashing, and chunk shaping. + + MaxCompressionRatio + + Maximum declared expansion ratio for a compressed entry. + + Double + + Double + + + None + + + MaxDepth + + Maximum archive path depth. + + Int32 + + Int32 + + + None + + + MaxEntries + + Maximum number of ZIP entries. + + Int32 + + Int32 + + + None + + + MaxEntryUncompressedBytes + + Maximum uncompressed size of one package entry. + + Int64 + + Int64 + + + None + + + MaxPackageBytes + + Maximum source package size in bytes. + + Int64 + + Int64 + + + None + + + MaxTotalKdfIterations + + Maximum aggregate PBKDF2 iterations across encrypted entries. + + Int64 + + Int64 + + + None + + + MaxTotalUncompressedBytes + + Maximum aggregate uncompressed package size. + + Int64 + + Int64 + + + None + + + MaxXmlCharacters + + Maximum characters allowed in one parsed XML part. + + Int64 + + Int64 + + + None + + + MaxXmlDepth + + Maximum element nesting depth in one parsed XML part. + + Int32 + + Int32 + + + None + Options @@ -110875,6 +111175,18 @@ extraction, hashing, and chunk shaping. None + + Password + + Password used to decrypt an encrypted OpenDocument package. + + String + + String + + + None + Path @@ -135945,6 +136257,859 @@ This does not discover, bypass, or crack a missing password. + + + New-OfficeExcelPdfOptions + New + OfficeExcelPdfOptions + + Creates discoverable Excel-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + Creates discoverable Excel-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + New-OfficeExcelPdfOptions + + AllowDocumentFontEmbedding + + Allow embedding fonts stored in the workbook. + + SwitchParameter + + SwitchParameter + + + None + + + AllowSystemFontEmbedding + + Allow embedding fonts discovered on the current system. + + SwitchParameter + + SwitchParameter + + + None + + + ChartLayout + + Chart layout override. + + OfficeChartLayout + + OfficeChartLayout + + + None + + + ChartStyle + + Chart visual style override. + + OfficeChartStyle + + OfficeChartStyle + + + None + + + EmptyCellText + + Text used when a worksheet cell is empty. + + String + + String + + + None + + + FontFamily + + Default font family used when the workbook does not specify one. + + String + + String + + + None + + + HeaderRowCount + + Number of leading rows treated as headers. + + Int32 + + Int32 + + + None + + + IncludeSheetHeadings + + Include worksheet row and column headings. + + SwitchParameter + + SwitchParameter + + + None + + + MarginBottom + + Bottom page margin in PDF points. + + Double + + Double + + + None + + + MarginLeft + + Left page margin in PDF points. + + Double + + Double + + + None + + + MarginRight + + Right page margin in PDF points. + + Double + + Double + + + None + + + MarginTop + + Top page margin in PDF points. + + Double + + Double + + + None + + + MaxRowsPerSheet + + Maximum worksheet rows to read and render. + + Int32 + + Int32 + + + None + + + PageSize + + PDF page size. + + PageSize + + PageSize + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + RespectWorkbookSheetVisibility + + Exclude workbook sheets marked hidden. + + SwitchParameter + + SwitchParameter + + + None + + + RespectWorksheetHiddenRowsAndColumns + + Exclude hidden worksheet rows and columns. + + SwitchParameter + + SwitchParameter + + + None + + + SheetName + + Worksheet names to export. The default exports all eligible sheets. + + String[] + + String[] + + + None + + + UseBoundedWorksheetRead + + Use bounded worksheet reads for large workbooks. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetCellStyles + + Render worksheet cell styles. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetCharts + + Render worksheet charts. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetColumnWidths + + Honor worksheet column widths. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetHeaderFooterImages + + Render images referenced by worksheet headers and footers. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetHeadersAndFooters + + Render worksheet headers and footers. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetHyperlinks + + Render worksheet hyperlinks. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetImages + + Render worksheet images. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetMergedCells + + Render merged worksheet cells. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPageBreaks + + Honor worksheet page breaks. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPageSetup + + Honor worksheet page setup. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPrintAreas + + Honor worksheet print areas. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPrintTitleRows + + Honor worksheet rows configured to repeat on printed pages. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetRowHeights + + Honor worksheet row heights. + + SwitchParameter + + SwitchParameter + + + None + + + WorksheetLayout + + Controls how worksheet content is laid out on PDF pages. + + ExcelPdfWorksheetLayoutMode + + WorksheetCanvas + FlowTable + + + ExcelPdfWorksheetLayoutMode + + + None + + + + + + AllowDocumentFontEmbedding + + Allow embedding fonts stored in the workbook. + + SwitchParameter + + SwitchParameter + + + None + + + AllowSystemFontEmbedding + + Allow embedding fonts discovered on the current system. + + SwitchParameter + + SwitchParameter + + + None + + + ChartLayout + + Chart layout override. + + OfficeChartLayout + + OfficeChartLayout + + + None + + + ChartStyle + + Chart visual style override. + + OfficeChartStyle + + OfficeChartStyle + + + None + + + EmptyCellText + + Text used when a worksheet cell is empty. + + String + + String + + + None + + + FontFamily + + Default font family used when the workbook does not specify one. + + String + + String + + + None + + + HeaderRowCount + + Number of leading rows treated as headers. + + Int32 + + Int32 + + + None + + + IncludeSheetHeadings + + Include worksheet row and column headings. + + SwitchParameter + + SwitchParameter + + + None + + + MarginBottom + + Bottom page margin in PDF points. + + Double + + Double + + + None + + + MarginLeft + + Left page margin in PDF points. + + Double + + Double + + + None + + + MarginRight + + Right page margin in PDF points. + + Double + + Double + + + None + + + MarginTop + + Top page margin in PDF points. + + Double + + Double + + + None + + + MaxRowsPerSheet + + Maximum worksheet rows to read and render. + + Int32 + + Int32 + + + None + + + PageSize + + PDF page size. + + PageSize + + PageSize + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + RespectWorkbookSheetVisibility + + Exclude workbook sheets marked hidden. + + SwitchParameter + + SwitchParameter + + + None + + + RespectWorksheetHiddenRowsAndColumns + + Exclude hidden worksheet rows and columns. + + SwitchParameter + + SwitchParameter + + + None + + + SheetName + + Worksheet names to export. The default exports all eligible sheets. + + String[] + + String[] + + + None + + + UseBoundedWorksheetRead + + Use bounded worksheet reads for large workbooks. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetCellStyles + + Render worksheet cell styles. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetCharts + + Render worksheet charts. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetColumnWidths + + Honor worksheet column widths. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetHeaderFooterImages + + Render images referenced by worksheet headers and footers. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetHeadersAndFooters + + Render worksheet headers and footers. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetHyperlinks + + Render worksheet hyperlinks. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetImages + + Render worksheet images. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetMergedCells + + Render merged worksheet cells. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPageBreaks + + Honor worksheet page breaks. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPageSetup + + Honor worksheet page setup. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPrintAreas + + Honor worksheet print areas. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPrintTitleRows + + Honor worksheet rows configured to repeat on printed pages. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetRowHeights + + Honor worksheet row heights. + + SwitchParameter + + SwitchParameter + + + None + + + WorksheetLayout + + Controls how worksheet content is laid out on PDF pages. + + ExcelPdfWorksheetLayoutMode + + WorksheetCanvas + FlowTable + + + ExcelPdfWorksheetLayoutMode + + + None + + + + + + None + + + + + + + OfficeIMO.Excel.Pdf.ExcelPdfSaveOptions + + + + + + + + + + + Export selected visible sheets with workbook layout features. + + PS> + + $options = New-OfficeExcelPdfOptions -SheetName Summary,Services -UseWorksheetCharts -UseWorksheetImages + Export-OfficeDocumentPdf -InputPath .\Report.xlsx -Path .\Report.pdf -ExcelOptions $options + + + + + + + New-OfficeMarkdown @@ -136253,6 +137418,589 @@ This does not discover, bypass, or crack a missing password. + + + New-OfficeMarkdownPdfOptions + New + OfficeMarkdownPdfOptions + + Creates discoverable Markdown-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + Creates discoverable Markdown-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + New-OfficeMarkdownPdfOptions + + ApplyWordLikeTheme + + Apply the built-in Word-like Markdown PDF baseline theme. + + SwitchParameter + + SwitchParameter + + + None + + + Author + + PDF author metadata. + + String + + String + + + None + + + BaseDirectory + + Base directory used to resolve local Markdown images. + + String + + String + + + None + + + CreateOutlineFromHeadings + + Create PDF outlines from Markdown headings. + + SwitchParameter + + SwitchParameter + + + None + + + DefaultImageHeight + + Fallback image height in PDF points. + + Double + + Double + + + None + + + DefaultImageWidth + + Fallback image width in PDF points. + + Double + + Double + + + None + + + FontFamily + + Default font family. + + String + + String + + + None + + + FrontMatterRenderMode + + Controls how YAML front matter appears in the PDF body. + + MarkdownPdfFrontMatterRenderMode + + Hidden + DocumentHeader + Table + + + MarkdownPdfFrontMatterRenderMode + + + None + + + IncludeDataUriImages + + Embed supported data URI images. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeLocalImages + + Embed supported local image files. + + SwitchParameter + + SwitchParameter + + + None + + + Keywords + + PDF keywords metadata. + + String + + String + + + None + + + MaximumDataUriImageBytes + + Maximum decoded bytes for one data URI image. + + Int32 + + Int32 + + + None + + + Options + + Existing Markdown PDF options to clone and override. + + MarkdownPdfSaveOptions + + MarkdownPdfSaveOptions + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + RestrictLocalImagesToBaseDirectory + + Require local images to resolve under BaseDirectory. + + SwitchParameter + + SwitchParameter + + + None + + + Subject + + PDF subject metadata. + + String + + String + + + None + + + Theme + + Built-in visual theme. + + OfficeVisualThemeKind + + Plain + WordLike + TechnicalDocument + GitHubLike + Compact + Report + + + OfficeVisualThemeKind + + + None + + + Title + + PDF title metadata. + + String + + String + + + None + + + UseFirstHeadingAsTitle + + Use the first Markdown heading as the PDF title when no title is supplied. + + SwitchParameter + + SwitchParameter + + + None + + + UseFrontMatterMetadata + + Use front matter values as PDF metadata. + + SwitchParameter + + SwitchParameter + + + None + + + UseFrontMatterVisualTheme + + Use front matter values to select a visual theme. + + SwitchParameter + + SwitchParameter + + + None + + + + + + ApplyWordLikeTheme + + Apply the built-in Word-like Markdown PDF baseline theme. + + SwitchParameter + + SwitchParameter + + + None + + + Author + + PDF author metadata. + + String + + String + + + None + + + BaseDirectory + + Base directory used to resolve local Markdown images. + + String + + String + + + None + + + CreateOutlineFromHeadings + + Create PDF outlines from Markdown headings. + + SwitchParameter + + SwitchParameter + + + None + + + DefaultImageHeight + + Fallback image height in PDF points. + + Double + + Double + + + None + + + DefaultImageWidth + + Fallback image width in PDF points. + + Double + + Double + + + None + + + FontFamily + + Default font family. + + String + + String + + + None + + + FrontMatterRenderMode + + Controls how YAML front matter appears in the PDF body. + + MarkdownPdfFrontMatterRenderMode + + Hidden + DocumentHeader + Table + + + MarkdownPdfFrontMatterRenderMode + + + None + + + IncludeDataUriImages + + Embed supported data URI images. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeLocalImages + + Embed supported local image files. + + SwitchParameter + + SwitchParameter + + + None + + + Keywords + + PDF keywords metadata. + + String + + String + + + None + + + MaximumDataUriImageBytes + + Maximum decoded bytes for one data URI image. + + Int32 + + Int32 + + + None + + + Options + + Existing Markdown PDF options to clone and override. + + MarkdownPdfSaveOptions + + MarkdownPdfSaveOptions + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + RestrictLocalImagesToBaseDirectory + + Require local images to resolve under BaseDirectory. + + SwitchParameter + + SwitchParameter + + + None + + + Subject + + PDF subject metadata. + + String + + String + + + None + + + Theme + + Built-in visual theme. + + OfficeVisualThemeKind + + Plain + WordLike + TechnicalDocument + GitHubLike + Compact + Report + + + OfficeVisualThemeKind + + + None + + + Title + + PDF title metadata. + + String + + String + + + None + + + UseFirstHeadingAsTitle + + Use the first Markdown heading as the PDF title when no title is supplied. + + SwitchParameter + + SwitchParameter + + + None + + + UseFrontMatterMetadata + + Use front matter values as PDF metadata. + + SwitchParameter + + SwitchParameter + + + None + + + UseFrontMatterVisualTheme + + Use front matter values to select a visual theme. + + SwitchParameter + + SwitchParameter + + + None + + + + + + OfficeIMO.Markdown.Pdf.MarkdownPdfSaveOptions + + + + + + + OfficeIMO.Markdown.Pdf.MarkdownPdfSaveOptions + + + + + + + + + + + Allow local report images and apply PDF metadata. + + PS> + + $options = New-OfficeMarkdownPdfOptions -Title 'Service report' -Author 'Evotec' -IncludeLocalImages -BaseDirectory .\Assets + Export-OfficeDocumentPdf -InputPath .\Report.md -Path .\Report.pdf -MarkdownOptions $options + + Builds a typed options object through ordinary PowerShell parameters; no hashtable or .NET construction is required. + + + + + New-OfficeOpenDocument @@ -139689,6 +141437,559 @@ Use -NoSave or omit -Path when a document object should be returned for further + + + New-OfficePowerPointPdfOptions + New + OfficePowerPointPdfOptions + + Creates discoverable PowerPoint-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + Creates discoverable PowerPoint-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + New-OfficePowerPointPdfOptions + + AllowDocumentFontEmbedding + + Allow embedding fonts stored in the presentation. + + SwitchParameter + + SwitchParameter + + + None + + + AllowSystemFontEmbedding + + Allow embedding fonts discovered on the current system. + + SwitchParameter + + SwitchParameter + + + None + + + ChartLayout + + Chart layout override. + + OfficeChartLayout + + OfficeChartLayout + + + None + + + ChartStyle + + Chart visual style override. + + OfficeChartStyle + + OfficeChartStyle + + + None + + + FontFamily + + Default font family used when the presentation does not specify one. + + String + + String + + + None + + + HandoutSlidesPerPage + + Number of slides on each handout page. + + Int32 + + Int32 + + + None + + + IncludeAutoShapes + + Render automatic shapes. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeCharts + + Render charts. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeHiddenSlides + + Include slides marked hidden. + + SwitchParameter + + SwitchParameter + + + None + + + IncludePictures + + Render pictures. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeSlideBackgrounds + + Render slide backgrounds. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeSmartArt + + Render SmartArt. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeSpeakerNotes + + Include speaker notes. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeTables + + Render tables. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeTextBoxes + + Render text boxes. + + SwitchParameter + + SwitchParameter + + + None + + + MaxGroupShapeDepth + + Maximum nested group-shape depth to render. + + Int32 + + Int32 + + + None + + + PageLayout + + PDF page layout, such as slides, notes, or handouts. + + PowerPointPdfPageLayout + + Slides + NotesPages + Handouts + + + PowerPointPdfPageLayout + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + PictureFit + + How pictures fit their shape bounds. + + OfficeImageFit + + Stretch + Contain + Cover + + + OfficeImageFit + + + None + + + WarnOnPictureAspectRatioDistortion + + Report pictures whose requested fit distorts their aspect ratio. + + SwitchParameter + + SwitchParameter + + + None + + + + + + AllowDocumentFontEmbedding + + Allow embedding fonts stored in the presentation. + + SwitchParameter + + SwitchParameter + + + None + + + AllowSystemFontEmbedding + + Allow embedding fonts discovered on the current system. + + SwitchParameter + + SwitchParameter + + + None + + + ChartLayout + + Chart layout override. + + OfficeChartLayout + + OfficeChartLayout + + + None + + + ChartStyle + + Chart visual style override. + + OfficeChartStyle + + OfficeChartStyle + + + None + + + FontFamily + + Default font family used when the presentation does not specify one. + + String + + String + + + None + + + HandoutSlidesPerPage + + Number of slides on each handout page. + + Int32 + + Int32 + + + None + + + IncludeAutoShapes + + Render automatic shapes. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeCharts + + Render charts. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeHiddenSlides + + Include slides marked hidden. + + SwitchParameter + + SwitchParameter + + + None + + + IncludePictures + + Render pictures. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeSlideBackgrounds + + Render slide backgrounds. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeSmartArt + + Render SmartArt. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeSpeakerNotes + + Include speaker notes. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeTables + + Render tables. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeTextBoxes + + Render text boxes. + + SwitchParameter + + SwitchParameter + + + None + + + MaxGroupShapeDepth + + Maximum nested group-shape depth to render. + + Int32 + + Int32 + + + None + + + PageLayout + + PDF page layout, such as slides, notes, or handouts. + + PowerPointPdfPageLayout + + Slides + NotesPages + Handouts + + + PowerPointPdfPageLayout + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + PictureFit + + How pictures fit their shape bounds. + + OfficeImageFit + + Stretch + Contain + Cover + + + OfficeImageFit + + + None + + + WarnOnPictureAspectRatioDistortion + + Report pictures whose requested fit distorts their aspect ratio. + + SwitchParameter + + SwitchParameter + + + None + + + + + + None + + + + + + + OfficeIMO.PowerPoint.Pdf.PowerPointPdfSaveOptions + + + + + + + + + + + Create a handout PDF with notes and hidden slides. + + PS> + + $options = New-OfficePowerPointPdfOptions -PageLayout Handouts -HandoutSlidesPerPage 3 -IncludeSpeakerNotes -IncludeHiddenSlides + Export-OfficeDocumentPdf -InputPath .\Briefing.pptx -Path .\Briefing.pdf -PowerPointOptions $options + + + + + + + New-OfficeRtf @@ -139843,6 +142144,347 @@ Use -NoSave or omit -Path when a document object should be returned for further + + + New-OfficeRtfPdfOptions + New + OfficeRtfPdfOptions + + Creates discoverable RTF-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + Creates discoverable RTF-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + New-OfficeRtfPdfOptions + + AllowDocumentFontEmbedding + + Allow embedding fonts referenced by the RTF document. + + SwitchParameter + + SwitchParameter + + + None + + + AllowSystemFontEmbedding + + Allow embedding fonts discovered on the current system. + + SwitchParameter + + SwitchParameter + + + None + + + DefaultImageHeight + + Fallback image height in PDF points. + + Double + + Double + + + None + + + DefaultImageWidth + + Fallback image width in PDF points. + + Double + + Double + + + None + + + IncludeHeaderFooters + + Render headers and footers. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeHiddenText + + Include text marked hidden. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeImages + + Render images. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeMetadata + + Copy document metadata into the PDF. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeNotes + + Render document notes. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeTables + + Render tables. + + SwitchParameter + + SwitchParameter + + + None + + + MaximumSystemFontFamilies + + Maximum number of system font families to discover. + + Int32 + + Int32 + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + + + + AllowDocumentFontEmbedding + + Allow embedding fonts referenced by the RTF document. + + SwitchParameter + + SwitchParameter + + + None + + + AllowSystemFontEmbedding + + Allow embedding fonts discovered on the current system. + + SwitchParameter + + SwitchParameter + + + None + + + DefaultImageHeight + + Fallback image height in PDF points. + + Double + + Double + + + None + + + DefaultImageWidth + + Fallback image width in PDF points. + + Double + + Double + + + None + + + IncludeHeaderFooters + + Render headers and footers. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeHiddenText + + Include text marked hidden. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeImages + + Render images. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeMetadata + + Copy document metadata into the PDF. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeNotes + + Render document notes. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeTables + + Render tables. + + SwitchParameter + + SwitchParameter + + + None + + + MaximumSystemFontFamilies + + Maximum number of system font families to discover. + + Int32 + + Int32 + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + + + + None + + + + + + + OfficeIMO.Rtf.Pdf.RtfPdfSaveOptions + + + + + + + + + + + Include document structure and bound system-font discovery. + + PS> + + $options = New-OfficeRtfPdfOptions -IncludeImages $true -IncludeTables $true -IncludeHeaderFooters $true -MaximumSystemFontFamilies 32 + Export-OfficeDocumentPdf -InputPath .\Report.rtf -Path .\Report.pdf -RtfOptions $options + + + + + + + New-OfficeTextRun @@ -140784,13 +143426,228 @@ Use -NoSave or omit -Path when a document object should be returned for further - - - - OfficeIMO.Visio.VisioGalleryResult - - - + + + + OfficeIMO.Visio.VisioGalleryResult + + + + + + + + + + + Generate the Visio reference gallery. + + PS> + + New-OfficeVisioGallery -OutputDirectory .\VisioGallery | + Select-Object Name, FilePath, IsClean + + Creates polished, editable Visio samples for flowcharts, architecture, network, timeline, swimlane, org chart, and graph diagrams. + + + + + + + + New-OfficeWord + New + OfficeWord + + Creates a Word document using the DSL. + + + + Handles file creation or template cloning, scriptblock execution, explicit save or live-document composition, and emits the document path when -PassThru is used. + + + + New-OfficeWord + + Content + + DSL scriptblock describing document content. + + ScriptBlock + + ScriptBlock + + + None + + + NoSave + + Skip saving after executing the DSL. + + SwitchParameter + + SwitchParameter + + + None + + + Open + + Open the document after saving. + + SwitchParameter + + SwitchParameter + + + None + + + PassThru + + Emit a FileInfo for chaining. + + SwitchParameter + + SwitchParameter + + + None + + + Password + + Password used to save the document as an encrypted package. + + String + + String + + + None + + + Path + + Destination path for the document. + + String + + String + + + None + + + TemplatePath + + Existing .docx file to clone before running the DSL. + + String + + String + + + None + + + + + + Content + + DSL scriptblock describing document content. + + ScriptBlock + + ScriptBlock + + + None + + + NoSave + + Skip saving after executing the DSL. + + SwitchParameter + + SwitchParameter + + + None + + + Open + + Open the document after saving. + + SwitchParameter + + SwitchParameter + + + None + + + PassThru + + Emit a FileInfo for chaining. + + SwitchParameter + + SwitchParameter + + + None + + + Password + + Password used to save the document as an encrypted package. + + String + + String + + + None + + + Path + + Destination path for the document. + + String + + String + + + None + + + TemplatePath + + Existing .docx file to clone before running the DSL. + + String + + String + + + None + + + + + + None + + + + @@ -140798,14 +143655,36 @@ Use -NoSave or omit -Path when a document object should be returned for further - Generate the Visio reference gallery. + Create a document inline. PS> - New-OfficeVisioGallery -OutputDirectory .\VisioGallery | - Select-Object Name, FilePath, IsClean + New-OfficeWord -Path .\Report.docx { WordSection { WordParagraph 'Hello DSL' } } -Open - Creates polished, editable Visio samples for flowcharts, architecture, network, timeline, swimlane, org chart, and graph diagrams. + Builds a document, adds one paragraph, saves it to disk, and opens it. + + + + Create a document from a template. + + PS> + + New-OfficeWord -TemplatePath .\Template.docx -Path .\Report.docx { WordParagraph -Text 'Generated content' -StyleId 'ReportBody' } + + Copies the template to the output path, runs the DSL against the copied document, and saves it. + + + + Keep a document for incremental composition. + + PS> + + $document = New-OfficeWord -Path .\Report.docx -NoSave + $document | Add-OfficeWordParagraph -Text 'Status report' -Style Heading1 + $document | Save-OfficeWord + $document | Close-OfficeWord + + Associates the output path with a live document, adds content through the pipeline, then saves and closes it once. @@ -140813,35 +143692,35 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficeWord + New-OfficeWordPdfOptions New - OfficeWord + OfficeWordPdfOptions - Creates a Word document using the DSL. + Creates discoverable Word-to-PDF conversion options for Export-OfficeDocumentPdf. - Handles file creation or template cloning, scriptblock execution, explicit save or live-document composition, and emits the document path when -PassThru is used. + Creates discoverable Word-to-PDF conversion options for Export-OfficeDocumentPdf. - New-OfficeWord - - Content + New-OfficeWordPdfOptions + + AllowDocumentFontEmbedding - DSL scriptblock describing document content. + Allow embedding fonts stored in the Word document. - ScriptBlock + SwitchParameter - ScriptBlock + SwitchParameter None - NoSave + AllowSystemFontEmbedding - Skip saving after executing the DSL. + Allow embedding fonts discovered on the current system. SwitchParameter @@ -140851,9 +143730,61 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Open + Author - Open the document after saving. + PDF author metadata. + + String + + String + + + None + + + DefaultOrientation + + Fallback page orientation for sections without page settings. + + OfficePageOrientation + + Portrait + Landscape + + + OfficePageOrientation + + + None + + + DefaultPageSize + + Fallback Word page size for sections without page settings. + + WordPageSize + + Unknown + Letter + Legal + Statement + Executive + A3 + A4 + A5 + A6 + B5 + + + WordPageSize + + + None + + + DefaultTableBorders + + Draw default borders for tables that do not specify borders. SwitchParameter @@ -140863,9 +143794,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - PassThru + FontFamily - Emit a FileInfo for chaining. + Default font family used when the document does not specify one. + + String + + String + + + None + + + IncludePageNumbers + + Include page numbers in the generated PDF. SwitchParameter @@ -140875,9 +143818,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Password + Keywords - Password used to save the document as an encrypted package. + PDF keywords metadata. String @@ -140886,12 +143829,76 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Path + + MarginBottom - Destination path for the document. + Bottom page margin in PDF points. - String + Double + + Double + + + None + + + MarginLeft + + Left page margin in PDF points. + + Double + + Double + + + None + + + MarginRight + + Right page margin in PDF points. + + Double + + Double + + + None + + + MarginTop + + Top page margin in PDF points. + + Double + + Double + + + None + + + Orientation + + PDF page orientation. + + OfficePageOrientation + + Portrait + Landscape + + + OfficePageOrientation + + + None + + + PageNumberFormat + + Page number text format. + + String String @@ -140899,9 +143906,45 @@ Use -NoSave or omit -Path when a document object should be returned for further None - TemplatePath + PageSize - Existing .docx file to clone before running the DSL. + PDF page size. + + PageSize + + PageSize + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + Subject + + PDF subject metadata. + + String + + String + + + None + + + Title + + PDF title metadata. String @@ -140913,22 +143956,22 @@ Use -NoSave or omit -Path when a document object should be returned for further - - Content + + AllowDocumentFontEmbedding - DSL scriptblock describing document content. + Allow embedding fonts stored in the Word document. - ScriptBlock + SwitchParameter - ScriptBlock + SwitchParameter None - NoSave + AllowSystemFontEmbedding - Skip saving after executing the DSL. + Allow embedding fonts discovered on the current system. SwitchParameter @@ -140938,9 +143981,61 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Open + Author - Open the document after saving. + PDF author metadata. + + String + + String + + + None + + + DefaultOrientation + + Fallback page orientation for sections without page settings. + + OfficePageOrientation + + Portrait + Landscape + + + OfficePageOrientation + + + None + + + DefaultPageSize + + Fallback Word page size for sections without page settings. + + WordPageSize + + Unknown + Letter + Legal + Statement + Executive + A3 + A4 + A5 + A6 + B5 + + + WordPageSize + + + None + + + DefaultTableBorders + + Draw default borders for tables that do not specify borders. SwitchParameter @@ -140950,9 +144045,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - PassThru + FontFamily - Emit a FileInfo for chaining. + Default font family used when the document does not specify one. + + String + + String + + + None + + + IncludePageNumbers + + Include page numbers in the generated PDF. SwitchParameter @@ -140962,9 +144069,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Password + Keywords - Password used to save the document as an encrypted package. + PDF keywords metadata. String @@ -140973,12 +144080,76 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Path + + MarginBottom - Destination path for the document. + Bottom page margin in PDF points. - String + Double + + Double + + + None + + + MarginLeft + + Left page margin in PDF points. + + Double + + Double + + + None + + + MarginRight + + Right page margin in PDF points. + + Double + + Double + + + None + + + MarginTop + + Top page margin in PDF points. + + Double + + Double + + + None + + + Orientation + + PDF page orientation. + + OfficePageOrientation + + Portrait + Landscape + + + OfficePageOrientation + + + None + + + PageNumberFormat + + Page number text format. + + String String @@ -140986,9 +144157,45 @@ Use -NoSave or omit -Path when a document object should be returned for further None - TemplatePath + PageSize - Existing .docx file to clone before running the DSL. + PDF page size. + + PageSize + + PageSize + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + Subject + + PDF subject metadata. + + String + + String + + + None + + + Title + + PDF title metadata. String @@ -141005,7 +144212,13 @@ Use -NoSave or omit -Path when a document object should be returned for further - + + + + OfficeIMO.Word.Pdf.WordPdfSaveOptions + + + @@ -141013,36 +144226,14 @@ Use -NoSave or omit -Path when a document object should be returned for further - Create a document inline. - - PS> - - New-OfficeWord -Path .\Report.docx { WordSection { WordParagraph 'Hello DSL' } } -Open - - Builds a document, adds one paragraph, saves it to disk, and opens it. - - - - Create a document from a template. - - PS> - - New-OfficeWord -TemplatePath .\Template.docx -Path .\Report.docx { WordParagraph -Text 'Generated content' -StyleId 'ReportBody' } - - Copies the template to the output path, runs the DSL against the copied document, and saves it. - - - - Keep a document for incremental composition. + Configure metadata, page numbers, and font embedding. PS> - $document = New-OfficeWord -Path .\Report.docx -NoSave - $document | Add-OfficeWordParagraph -Text 'Status report' -Style Heading1 - $document | Save-OfficeWord - $document | Close-OfficeWord + $options = New-OfficeWordPdfOptions -Title 'Service report' -Author 'Evotec' -IncludePageNumbers -AllowSystemFontEmbedding + Export-OfficeDocumentPdf -InputPath .\Report.docx -Path .\Report.pdf -WordOptions $options - Associates the output path with a live document, adds content through the pipeline, then saves and closes it once. + @@ -145789,6 +148980,39 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + LineEnding + + Canonical line ending: LF, CRLF, or CR. Omit it to retain the source preference. + + String + + LF + CRLF + CR + + + String + + + None + + + Mode + + Writer mode. Preserve retains unchanged source; Canonical emits stable formatting. + + AsciiDocWriterMode + + Preserve + Canonical + + + AsciiDocWriterMode + + + None + Options @@ -145840,6 +149064,39 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + LineEnding + + Canonical line ending: LF, CRLF, or CR. Omit it to retain the source preference. + + String + + LF + CRLF + CR + + + String + + + None + + + Mode + + Writer mode. Preserve retains unchanged source; Canonical emits stable formatting. + + AsciiDocWriterMode + + Preserve + Canonical + + + AsciiDocWriterMode + + + None + Options @@ -146666,6 +149923,39 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + LineEnding + + Canonical line ending: LF, CRLF, or CR. Omit it to retain the source preference. + + String + + LF + CRLF + CR + + + String + + + None + + + Mode + + Writer mode. Preserve retains unchanged source; Canonical normalizes output. + + LatexWriterMode + + Preserve + Canonical + + + LatexWriterMode + + + None + Options @@ -146717,6 +150007,39 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + LineEnding + + Canonical line ending: LF, CRLF, or CR. Omit it to retain the source preference. + + String + + LF + CRLF + CR + + + String + + + None + + + Mode + + Writer mode. Preserve retains unchanged source; Canonical normalizes output. + + LatexWriterMode + + Preserve + Canonical + + + LatexWriterMode + + + None + Options diff --git a/WebsiteArtifacts/apidocs/powershell/PSWriteOffice.psd1 b/WebsiteArtifacts/apidocs/powershell/PSWriteOffice.psd1 index 257436ca..5c1ab8d3 100644 --- a/WebsiteArtifacts/apidocs/powershell/PSWriteOffice.psd1 +++ b/WebsiteArtifacts/apidocs/powershell/PSWriteOffice.psd1 @@ -1,7 +1,7 @@ @{ AliasesToExport = @('Compare-OfficeExcelSheet', 'ConvertFrom-MarkdownHtml', 'ConvertFrom-PdfHtml', 'ConvertFrom-Rtf', 'ConvertFrom-WordHtml', 'ConvertFrom-WordMarkdown', 'ConvertTo-ExcelHtml', 'ConvertTo-MarkdownHtml', 'ConvertTo-PdfExcel', 'ConvertTo-PdfHtml', 'ConvertTo-PdfPowerPoint', 'ConvertTo-PdfWord', 'ConvertTo-PowerPointHtml', 'ConvertTo-Rtf', 'ConvertTo-VisioPng', 'ConvertTo-VisioSvg', 'ConvertTo-WordHtml', 'ConvertTo-WordMarkdown', 'Edit-ExcelRow', 'ExcelAccessibility', 'ExcelActiveSheet', 'ExcelAutoFilter', 'ExcelAutoFilterClear', 'ExcelAutoFilterSet', 'ExcelAutoFit', 'ExcelCell', 'ExcelChart', 'ExcelChartAxis', 'ExcelChartPoint', 'ExcelChartSeries', 'ExcelChartTrendline', 'ExcelColumn', 'ExcelColumnGroup', 'ExcelColumnStyle', 'ExcelColumnStyleByHeader', 'ExcelComment', 'ExcelCommentAudit', 'ExcelCommentClear', 'ExcelCommentRemove', 'ExcelComments', 'ExcelCommentsAudit', 'ExcelCommentUpdate', 'ExcelCompare', 'ExcelConditionalColorScale', 'ExcelConditionalDataBar', 'ExcelConditionalFormatting', 'ExcelConditionalFormattingClear', 'ExcelConditionalIconSet', 'ExcelConditionalRule', 'ExcelConnectionMetadata', 'ExcelCsvImport', 'ExcelDashboard', 'ExcelDashboardChart', 'ExcelDataModel', 'ExcelDataSet', 'ExcelDataValidation', 'ExcelDataValidationClear', 'ExcelDataValidationMessage', 'ExcelDateSystem', 'ExcelDelimitedImport', 'ExcelDoctor', 'ExcelExecutionPolicy', 'ExcelExport', 'ExcelFormula', 'ExcelFormulaAnalysis', 'ExcelFormulaAudit', 'ExcelFreeze', 'ExcelGridlines', 'ExcelHeaderFooter', 'ExcelHyperlink', 'ExcelHyperlinkHost', 'ExcelHyperlinkSmart', 'ExcelImage', 'ExcelImageFromUrl', 'ExcelImport', 'ExcelInternalLinks', 'ExcelInternalLinksByHeader', 'ExcelMargins', 'ExcelNamedRange', 'ExcelNamedRangeRemove', 'ExcelNamedRangeRename', 'ExcelNew', 'ExcelNumberFormatPreset', 'ExcelOrientation', 'ExcelPackageCopy', 'ExcelPackageMetadata', 'ExcelPageBreak', 'ExcelPageBreakClear', 'ExcelPageBreaks', 'ExcelPageSetup', 'ExcelPivotTable', 'ExcelPivotTables', 'ExcelPowerQuery', 'ExcelPowerQueryMetadata', 'ExcelPreflight', 'ExcelPrintArea', 'ExcelPrintLayout', 'ExcelPrintTitles', 'ExcelProtect', 'ExcelQueryMetadata', 'ExcelRangeClear', 'ExcelRefreshOnOpen', 'ExcelRepair', 'ExcelReportCallout', 'ExcelReportKpiRow', 'ExcelReportLegend', 'ExcelReportParagraph', 'ExcelReportSection', 'ExcelReportSheet', 'ExcelReportSpacer', 'ExcelReportTable', 'ExcelReportTitle', 'ExcelRichText', 'ExcelRichTextRuns', 'ExcelRow', 'ExcelRowEdit', 'ExcelRowGroup', 'ExcelRuntimePreflight', 'ExcelSheet', 'ExcelSheetCopy', 'ExcelSheetJoin', 'ExcelSheetMerge', 'ExcelSheetOrder', 'ExcelSheetTabColor', 'ExcelSheetView', 'ExcelSheetVisibility', 'ExcelSlicer', 'ExcelSort', 'ExcelSparkline', 'ExcelStreamingContract', 'ExcelSubtotals', 'ExcelSubtotalSummary', 'ExcelSummary', 'ExcelTable', 'ExcelTableOfContents', 'ExcelTableStyle', 'ExcelTemplate', 'ExcelTemplateApply', 'ExcelTemplateBinding', 'ExcelTemplateMarkers', 'ExcelTemplateOptionalRow', 'ExcelTemplateOptionalRows', 'ExcelTemplateRow', 'ExcelTemplateRows', 'ExcelTemplateSheet', 'ExcelTemplateSheets', 'ExcelTemplateValidate', 'ExcelTextRun', 'ExcelTheme', 'ExcelThreadedComment', 'ExcelTimeline', 'ExcelUnprotect', 'ExcelUrlLinks', 'ExcelUrlLinksByHeader', 'ExcelValidationCustomFormula', 'ExcelValidationDate', 'ExcelValidationDecimal', 'ExcelValidationList', 'ExcelValidationTextLength', 'ExcelValidationTime', 'ExcelValidationWholeNumber', 'ExcelVisual', 'ExcelWorkbookCompare', 'ExcelWorkbookCopy', 'ExcelWorkbookDoctor', 'ExcelWorkbookJoin', 'ExcelWorkbookMerge', 'ExcelWorkbookProtect', 'ExcelWorkbookRepair', 'ExcelWorkbookUnprotect', 'ExcelWorksheetView', 'ExcelWriteReservation', 'ExcelWriteReservationClear', 'ExcelWriteReservationSet', 'Export-OfficeDocumentAsset', 'Export-VisioStencilPreviewGallery', 'Find-VisioStencil', 'Get-OfficeReaderCapability', 'Import-VisioStencil', 'MarkdownCallout', 'MarkdownCode', 'MarkdownDefinitionList', 'MarkdownDetails', 'MarkdownFrontMatter', 'MarkdownHeading', 'MarkdownHorizontalRule', 'MarkdownHr', 'MarkdownImage', 'MarkdownList', 'MarkdownNew', 'MarkdownParagraph', 'MarkdownQuote', 'MarkdownTable', 'MarkdownTableOfContents', 'MarkdownTaskList', 'MarkdownToc', 'Merge-OfficeExcelSheet', 'Merge-OfficeExcelWorkbook', 'Merge-OfficeWordDocument', 'New-VisioGallery', 'OfficeVisual', 'PdfAttachment', 'PdfBackground', 'PdfBackgroundImage', 'PdfBackgroundShape', 'PdfBookmark', 'PdfCanvasStamp', 'PdfCanvasText', 'PdfCompliance', 'PdfElectronicInvoice', 'PdfFooter', 'PdfFormField', 'PdfHeader', 'PdfHeading', 'PdfHorizontalRule', 'PdfHr', 'PdfImage', 'PdfList', 'PdfMetadata', 'PdfNativeTextRun', 'PdfNew', 'PdfPageBorder', 'PdfPageBreak', 'PdfPageOverlay', 'PdfPageSetup', 'PdfPanel', 'PdfParagraph', 'PdfRow', 'PdfSpace', 'PdfSpacer', 'PdfStamp', 'PdfTable', 'PdfTableCell', 'PdfTableCellCheckBox', 'PdfTableCellField', 'PdfTableCellImage', 'PdfText', 'PdfTextRun', 'PdfTheme', 'PdfVisual', 'PdfWatermark', 'PowerPointNew', 'PowerPointTextRun', 'PptArrange', 'PptBackground', 'PptBullets', 'PptChart', 'PptDeckPlan', 'PptDesignerDeck', 'PptImage', 'PptLayoutBox', 'PptLayoutPlaceholderBounds', 'PptLayoutPlaceholderMargins', 'PptLayoutPlaceholders', 'PptLayoutPlaceholderTextStyle', 'PptNew', 'PptNotes', 'PptPlaceholderText', 'PptPlanCapability', 'PptPlanCardGrid', 'PptPlanCaseStudy', 'PptPlanCoverage', 'PptPlanLogoWall', 'PptPlanProcess', 'PptPlanSection', 'PptSection', 'PptShape', 'PptShapeLayout', 'PptSlide', 'PptSlideLayout', 'PptSlideSize', 'PptTable', 'PptTextBox', 'PptTextRun', 'PptTheme', 'PptThemeColor', 'PptThemeFonts', 'PptThemeName', 'PptTitle', 'PptTransition', 'PptVisual', 'Read-OfficeDocument', 'Read-OfficeDocumentAsset', 'Read-OfficeDocumentChunk', 'Read-OfficeDocumentTable', 'Read-OfficeDocumentVisual', 'Replace-OfficeExcelText', 'Replace-OfficePowerPointText', 'Replace-OfficeRtfText', 'Replace-OfficeWordText', 'RtfNew', 'RtfOpen', 'RtfText', 'Set-OfficeExcelSheetOrder', 'TextRun', 'VisioArrange', 'VisioConnector', 'VisioContainer', 'VisioDiamond', 'VisioEllipse', 'VisioInfo', 'VisioLayout', 'VisioNew', 'VisioOpen', 'VisioPage', 'VisioRect', 'VisioRectangle', 'VisioSave', 'VisioStencil', 'VisioStencilCatalog', 'VisioText', 'VisioTextBox', 'WordBold', 'WordBookmark', 'WordBreak', 'WordChart', 'WordCheckBox', 'WordCheckBoxes', 'WordComboBox', 'WordComboBoxes', 'WordContentControl', 'WordContentControls', 'WordCoverPage', 'WordDatePicker', 'WordDatePickers', 'WordDocumentJoin', 'WordDropDownList', 'WordDropDownLists', 'WordEndnote', 'WordEndnotes', 'WordEquation', 'WordField', 'WordFooter', 'WordFootnote', 'WordFootnotes', 'WordHeader', 'WordHyperlink', 'WordImage', 'WordImages', 'WordImageStyle', 'WordItalic', 'WordList', 'WordListItem', 'WordNew', 'WordPageNumber', 'WordPageSetup', 'WordParagraph', 'WordParagraphStyle', 'WordPictureControl', 'WordPictureControls', 'WordRepeatingSection', 'WordRepeatingSections', 'WordSection', 'WordShape', 'WordShapes', 'WordShapeStyle', 'WordStatistics', 'WordTable', 'WordTableCell', 'WordTableCells', 'WordTableCellSpec', 'WordTableCellStyle', 'WordTableCondition', 'WordTableOfContents', 'WordTabStop', 'WordText', 'WordTextBox', 'WordTextRun', 'WordTextStyle', 'WordVisual', 'WordWatermark') Author = 'Przemyslaw Klys' - CmdletsToExport = @('Add-OfficeExcelAutoFilter', 'Add-OfficeExcelChart', 'Add-OfficeExcelComment', 'Add-OfficeExcelConditionalColorScale', 'Add-OfficeExcelConditionalDataBar', 'Add-OfficeExcelConditionalIconSet', 'Add-OfficeExcelConditionalRule', 'Add-OfficeExcelDashboardChart', 'Add-OfficeExcelDataSet', 'Add-OfficeExcelImage', 'Add-OfficeExcelImageFromUrl', 'Add-OfficeExcelPackageMetadata', 'Add-OfficeExcelPageBreak', 'Add-OfficeExcelPivotTable', 'Add-OfficeExcelPowerQueryMetadata', 'Add-OfficeExcelReportCallout', 'Add-OfficeExcelReportKpiRow', 'Add-OfficeExcelReportLegend', 'Add-OfficeExcelReportParagraph', 'Add-OfficeExcelReportSection', 'Add-OfficeExcelReportSheet', 'Add-OfficeExcelReportSpacer', 'Add-OfficeExcelReportTable', 'Add-OfficeExcelReportTitle', 'Add-OfficeExcelSheet', 'Add-OfficeExcelSlicer', 'Add-OfficeExcelSparkline', 'Add-OfficeExcelSubtotalSummary', 'Add-OfficeExcelTable', 'Add-OfficeExcelTableOfContents', 'Add-OfficeExcelTableRow', 'Add-OfficeExcelThreadedComment', 'Add-OfficeExcelTimeline', 'Add-OfficeExcelValidationCustomFormula', 'Add-OfficeExcelValidationDate', 'Add-OfficeExcelValidationDecimal', 'Add-OfficeExcelValidationList', 'Add-OfficeExcelValidationTextLength', 'Add-OfficeExcelValidationTime', 'Add-OfficeExcelValidationWholeNumber', 'Add-OfficeExcelVisual', 'Add-OfficeMarkdownCallout', 'Add-OfficeMarkdownCode', 'Add-OfficeMarkdownDefinitionList', 'Add-OfficeMarkdownDetails', 'Add-OfficeMarkdownFrontMatter', 'Add-OfficeMarkdownHeading', 'Add-OfficeMarkdownHorizontalRule', 'Add-OfficeMarkdownImage', 'Add-OfficeMarkdownList', 'Add-OfficeMarkdownParagraph', 'Add-OfficeMarkdownQuote', 'Add-OfficeMarkdownTable', 'Add-OfficeMarkdownTableOfContents', 'Add-OfficeMarkdownTaskList', 'Add-OfficePdfAttachment', 'Add-OfficePdfBackgroundShape', 'Add-OfficePdfBookmark', 'Add-OfficePdfCanvas', 'Add-OfficePdfCanvasText', 'Add-OfficePdfFormField', 'Add-OfficePdfHeading', 'Add-OfficePdfHorizontalRule', 'Add-OfficePdfImage', 'Add-OfficePdfList', 'Add-OfficePdfPageBreak', 'Add-OfficePdfPageOverlay', 'Add-OfficePdfPanel', 'Add-OfficePdfParagraph', 'Add-OfficePdfRow', 'Add-OfficePdfSpacer', 'Add-OfficePdfStamp', 'Add-OfficePdfTable', 'Add-OfficePdfText', 'Add-OfficePdfVisual', 'Add-OfficePdfWatermark', 'Add-OfficePowerPointBullets', 'Add-OfficePowerPointChart', 'Add-OfficePowerPointDesignerDeck', 'Add-OfficePowerPointImage', 'Add-OfficePowerPointPlanCapability', 'Add-OfficePowerPointPlanCardGrid', 'Add-OfficePowerPointPlanCaseStudy', 'Add-OfficePowerPointPlanCoverage', 'Add-OfficePowerPointPlanLogoWall', 'Add-OfficePowerPointPlanProcess', 'Add-OfficePowerPointPlanSection', 'Add-OfficePowerPointSection', 'Add-OfficePowerPointShape', 'Add-OfficePowerPointSlide', 'Add-OfficePowerPointTable', 'Add-OfficePowerPointTableRow', 'Add-OfficePowerPointTextBox', 'Add-OfficePowerPointVisual', 'Add-OfficeVisioConnector', 'Add-OfficeVisioContainer', 'Add-OfficeVisioDiamond', 'Add-OfficeVisioEllipse', 'Add-OfficeVisioPage', 'Add-OfficeVisioRectangle', 'Add-OfficeVisioStencilShape', 'Add-OfficeVisioTextBox', 'Add-OfficeWordBookmark', 'Add-OfficeWordBreak', 'Add-OfficeWordChart', 'Add-OfficeWordCheckBox', 'Add-OfficeWordComboBox', 'Add-OfficeWordContentControl', 'Add-OfficeWordCoverPage', 'Add-OfficeWordDatePicker', 'Add-OfficeWordDropDownList', 'Add-OfficeWordEndnote', 'Add-OfficeWordEquation', 'Add-OfficeWordField', 'Add-OfficeWordFooter', 'Add-OfficeWordFootnote', 'Add-OfficeWordHeader', 'Add-OfficeWordHyperlink', 'Add-OfficeWordImage', 'Add-OfficeWordList', 'Add-OfficeWordListItem', 'Add-OfficeWordPageNumber', 'Add-OfficeWordParagraph', 'Add-OfficeWordPictureControl', 'Add-OfficeWordRepeatingSection', 'Add-OfficeWordSection', 'Add-OfficeWordShape', 'Add-OfficeWordTable', 'Add-OfficeWordTableCell', 'Add-OfficeWordTableCondition', 'Add-OfficeWordTableOfContents', 'Add-OfficeWordTableRow', 'Add-OfficeWordTabStop', 'Add-OfficeWordText', 'Add-OfficeWordTextBox', 'Add-OfficeWordVisual', 'Add-OfficeWordWatermark', 'Clear-OfficeExcelAutoFilter', 'Clear-OfficeExcelComment', 'Clear-OfficeExcelConditionalFormatting', 'Clear-OfficeExcelDataValidation', 'Clear-OfficeExcelPageBreak', 'Clear-OfficeExcelRange', 'Clear-OfficeExcelWriteReservation', 'Clear-OfficePdfBackgroundShape', 'Close-OfficeExcel', 'Close-OfficePowerPoint', 'Close-OfficeWord', 'Compare-OfficeExcelRange', 'Compare-OfficeExcelWorkbook', 'Compare-OfficePdfVisual', 'Compare-OfficeWordDocument', 'ConvertFrom-OfficeAsciiDocMarkdown', 'ConvertFrom-OfficeCsv', 'ConvertFrom-OfficeLatexMarkdown', 'ConvertFrom-OfficeMarkdownHtml', 'ConvertFrom-OfficeOpenDocument', 'ConvertFrom-OfficePdfHtml', 'ConvertFrom-OfficeRtf', 'ConvertFrom-OfficeWordHtml', 'ConvertFrom-OfficeWordMarkdown', 'ConvertTo-OfficeAsciiDocMarkdown', 'ConvertTo-OfficeCsv', 'ConvertTo-OfficeExcelHtml', 'ConvertTo-OfficeExcelWorkbook', 'ConvertTo-OfficeLatexMarkdown', 'ConvertTo-OfficeMarkdown', 'ConvertTo-OfficeMarkdownHtml', 'ConvertTo-OfficeOpenDocument', 'ConvertTo-OfficePdfExcel', 'ConvertTo-OfficePdfFlatAnnotation', 'ConvertTo-OfficePdfFlatForm', 'ConvertTo-OfficePdfHtml', 'ConvertTo-OfficePdfMarkdown', 'ConvertTo-OfficePdfOptimized', 'ConvertTo-OfficePdfPowerPoint', 'ConvertTo-OfficePdfRedacted', 'ConvertTo-OfficePdfSanitized', 'ConvertTo-OfficePdfTextRun', 'ConvertTo-OfficePdfWord', 'ConvertTo-OfficePowerPointHtml', 'ConvertTo-OfficeRtf', 'ConvertTo-OfficeVisioPng', 'ConvertTo-OfficeVisioSvg', 'ConvertTo-OfficeVisioVisual', 'ConvertTo-OfficeVisual', 'ConvertTo-OfficeWordDocument', 'ConvertTo-OfficeWordHtml', 'ConvertTo-OfficeWordMarkdown', 'Copy-OfficeExcelSheet', 'Copy-OfficeExcelWorkbook', 'Copy-OfficePdfPage', 'Copy-OfficePowerPointSlide', 'Edit-OfficeExcelRow', 'Export-OfficeCsv', 'Export-OfficeDocumentPdf', 'Export-OfficeExcel', 'Export-OfficeExcelChartImage', 'Export-OfficeExcelGoogleSpreadsheet', 'Export-OfficeExcelImage', 'Export-OfficeExcelRangeImage', 'Export-OfficeHtmlImage', 'Export-OfficePdfImage', 'Export-OfficePdfLayoutOverlay', 'Export-OfficePdfXfdf', 'Export-OfficePowerPointImage', 'Export-OfficeVisioImage', 'Export-OfficeVisioStencilPreviewGallery', 'Export-OfficeVisioVisual', 'Export-OfficeWordGoogleDocument', 'Export-OfficeWordImage', 'Find-OfficeExcel', 'Find-OfficePowerPointShape', 'Find-OfficeVisioStencil', 'Find-OfficeWord', 'Find-OfficeWordList', 'Find-OfficeWordTable', 'Get-OfficeAsciiDoc', 'Get-OfficeConfluenceAttachment', 'Get-OfficeConfluencePage', 'Get-OfficeCsv', 'Get-OfficeDocument', 'Get-OfficeDocumentAsset', 'Get-OfficeDocumentBatch', 'Get-OfficeDocumentCapability', 'Get-OfficeDocumentChunk', 'Get-OfficeDocumentDetection', 'Get-OfficeDocumentHierarchy', 'Get-OfficeDocumentIngest', 'Get-OfficeDocumentPageMarkdown', 'Get-OfficeDocumentStructured', 'Get-OfficeDocumentTable', 'Get-OfficeDocumentVisual', 'Get-OfficeEmail', 'Get-OfficeEmailMailbox', 'Get-OfficeExcel', 'Get-OfficeExcelComment', 'Get-OfficeExcelCommentAudit', 'Get-OfficeExcelConditionalFormatting', 'Get-OfficeExcelData', 'Get-OfficeExcelDataModel', 'Get-OfficeExcelDataValidation', 'Get-OfficeExcelDocumentProperty', 'Get-OfficeExcelFormulaAnalysis', 'Get-OfficeExcelNamedRange', 'Get-OfficeExcelNumberFormatPreset', 'Get-OfficeExcelPageBreak', 'Get-OfficeExcelPivotTable', 'Get-OfficeExcelPreflight', 'Get-OfficeExcelRange', 'Get-OfficeExcelRichText', 'Get-OfficeExcelRuntimePreflight', 'Get-OfficeExcelStreamingContract', 'Get-OfficeExcelSummary', 'Get-OfficeExcelTable', 'Get-OfficeExcelTableStyle', 'Get-OfficeExcelTemplateMarker', 'Get-OfficeExcelUsedRange', 'Get-OfficeExcelWorksheetView', 'Get-OfficeExcelWriteReservation', 'Get-OfficeLatex', 'Get-OfficeMarkdown', 'Get-OfficeMarkdownFrontMatter', 'Get-OfficeMarkdownHeading', 'Get-OfficeMarkdownNode', 'Get-OfficeMarkdownTable', 'Get-OfficeOpenDocument', 'Get-OfficePdf', 'Get-OfficePdfAnnotation', 'Get-OfficePdfAppendOnlyMutation', 'Get-OfficePdfAttachment', 'Get-OfficePdfCompliance', 'Get-OfficePdfDiagnostic', 'Get-OfficePdfFont', 'Get-OfficePdfFormField', 'Get-OfficePdfImage', 'Get-OfficePdfInfo', 'Get-OfficePdfInteractionMap', 'Get-OfficePdfOptimization', 'Get-OfficePdfPreflight', 'Get-OfficePdfRedactionPlan', 'Get-OfficePdfSignature', 'Get-OfficePdfText', 'Get-OfficePdfTextDiagnostic', 'Get-OfficePowerPoint', 'Get-OfficePowerPointInspection', 'Get-OfficePowerPointLayout', 'Get-OfficePowerPointLayoutBox', 'Get-OfficePowerPointLayoutPlaceholder', 'Get-OfficePowerPointNotes', 'Get-OfficePowerPointPlaceholder', 'Get-OfficePowerPointSection', 'Get-OfficePowerPointShape', 'Get-OfficePowerPointSlide', 'Get-OfficePowerPointSlideSummary', 'Get-OfficePowerPointTheme', 'Get-OfficeProtectionCapability', 'Get-OfficeRtf', 'Get-OfficeVisio', 'Get-OfficeVisioInfo', 'Get-OfficeVisioStencilCatalog', 'Get-OfficeWord', 'Get-OfficeWordBookmark', 'Get-OfficeWordCheckBox', 'Get-OfficeWordComboBox', 'Get-OfficeWordContentControl', 'Get-OfficeWordDatePicker', 'Get-OfficeWordDocumentProperty', 'Get-OfficeWordDropDownList', 'Get-OfficeWordEndnote', 'Get-OfficeWordField', 'Get-OfficeWordFootnote', 'Get-OfficeWordHyperlink', 'Get-OfficeWordImage', 'Get-OfficeWordList', 'Get-OfficeWordParagraph', 'Get-OfficeWordPictureControl', 'Get-OfficeWordRepeatingSection', 'Get-OfficeWordReview', 'Get-OfficeWordSection', 'Get-OfficeWordShape', 'Get-OfficeWordStatistics', 'Get-OfficeWordTable', 'Get-OfficeWordTableCell', 'Get-OfficeWordTableOfContents', 'Get-OfficeWordText', 'Import-OfficeCsv', 'Import-OfficeExcel', 'Import-OfficeExcelDelimitedText', 'Import-OfficePdfXfdf', 'Import-OfficePowerPointSlide', 'Import-OfficeVisioStencil', 'Invoke-OfficeExcelAutoFit', 'Invoke-OfficeExcelSort', 'Invoke-OfficeExcelTemplate', 'Invoke-OfficeExcelTemplateOptionalRow', 'Invoke-OfficeExcelTemplateRow', 'Invoke-OfficeExcelTemplateSheet', 'Invoke-OfficePdfOcrMerge', 'Invoke-OfficeWordMailMerge', 'Join-OfficeExcelSheet', 'Join-OfficeExcelWorkbook', 'Join-OfficePdf', 'Join-OfficeWordDocument', 'Move-OfficeExcelSheet', 'Move-OfficePdfPage', 'New-OfficeConfluenceSession', 'New-OfficeDocumentReader', 'New-OfficeExcel', 'New-OfficeExcelDashboard', 'New-OfficeMarkdown', 'New-OfficeOpenDocument', 'New-OfficePdf', 'New-OfficePdfSignature', 'New-OfficePdfTableCell', 'New-OfficePdfTableCellCheckBox', 'New-OfficePdfTableCellField', 'New-OfficePdfTableCellImage', 'New-OfficePowerPoint', 'New-OfficePowerPointDeckPlan', 'New-OfficeRtf', 'New-OfficeTextRun', 'New-OfficeVisio', 'New-OfficeVisioGallery', 'New-OfficeWord', 'New-OfficeWordTableCell', 'Protect-OfficeExcelSheet', 'Protect-OfficeExcelWorkbook', 'Protect-OfficeWordDocument', 'Publish-OfficeConfluencePage', 'Remove-OfficeConfluencePage', 'Remove-OfficeExcelComment', 'Remove-OfficeExcelNamedRange', 'Remove-OfficePdfAnnotation', 'Remove-OfficePdfPage', 'Remove-OfficePowerPointSlide', 'Remove-OfficeWordTableOfContents', 'Rename-OfficeExcelNamedRange', 'Rename-OfficePowerPointSection', 'Repair-OfficeExcelWorkbook', 'Resolve-OfficeWordRevision', 'Save-OfficeAsciiDoc', 'Save-OfficeEmail', 'Save-OfficeEmailMailbox', 'Save-OfficeExcel', 'Save-OfficeLatex', 'Save-OfficeMarkdown', 'Save-OfficeOpenDocument', 'Save-OfficePdf', 'Save-OfficePowerPoint', 'Save-OfficeVisio', 'Save-OfficeWord', 'Search-OfficeDocument', 'Send-OfficeConfluenceAttachment', 'Set-OfficeConfluenceManagedSection', 'Set-OfficeExcelActiveSheet', 'Set-OfficeExcelAutoFilter', 'Set-OfficeExcelCell', 'Set-OfficeExcelChartAxis', 'Set-OfficeExcelChartDataLabels', 'Set-OfficeExcelChartLegend', 'Set-OfficeExcelChartPoint', 'Set-OfficeExcelChartSeries', 'Set-OfficeExcelChartStyle', 'Set-OfficeExcelChartTrendline', 'Set-OfficeExcelColumn', 'Set-OfficeExcelColumnGroup', 'Set-OfficeExcelColumnStyleByHeader', 'Set-OfficeExcelDataValidationMessage', 'Set-OfficeExcelDateSystem', 'Set-OfficeExcelDocumentProperty', 'Set-OfficeExcelExecutionPolicy', 'Set-OfficeExcelFormula', 'Set-OfficeExcelFreeze', 'Set-OfficeExcelGridlines', 'Set-OfficeExcelHeaderFooter', 'Set-OfficeExcelHostHyperlink', 'Set-OfficeExcelHyperlink', 'Set-OfficeExcelInternalLinks', 'Set-OfficeExcelInternalLinksByHeader', 'Set-OfficeExcelMargins', 'Set-OfficeExcelNamedRange', 'Set-OfficeExcelOrientation', 'Set-OfficeExcelPageSetup', 'Set-OfficeExcelPrintArea', 'Set-OfficeExcelPrintLayout', 'Set-OfficeExcelPrintTitles', 'Set-OfficeExcelRefreshOnOpen', 'Set-OfficeExcelRichText', 'Set-OfficeExcelRow', 'Set-OfficeExcelRowGroup', 'Set-OfficeExcelSheetTabColor', 'Set-OfficeExcelSheetVisibility', 'Set-OfficeExcelSmartHyperlink', 'Set-OfficeExcelTheme', 'Set-OfficeExcelUrlLinks', 'Set-OfficeExcelUrlLinksByHeader', 'Set-OfficeExcelWorksheetView', 'Set-OfficeExcelWriteReservation', 'Set-OfficePdfAnnotation', 'Set-OfficePdfBackground', 'Set-OfficePdfBackgroundImage', 'Set-OfficePdfCompliance', 'Set-OfficePdfElectronicInvoice', 'Set-OfficePdfFooter', 'Set-OfficePdfForm', 'Set-OfficePdfHeader', 'Set-OfficePdfMetadata', 'Set-OfficePdfPage', 'Set-OfficePdfPageBorder', 'Set-OfficePdfPageSetup', 'Set-OfficePdfSignature', 'Set-OfficePdfTheme', 'Set-OfficePowerPointBackground', 'Set-OfficePowerPointLayoutPlaceholderBounds', 'Set-OfficePowerPointLayoutPlaceholderTextMargins', 'Set-OfficePowerPointLayoutPlaceholderTextStyle', 'Set-OfficePowerPointNotes', 'Set-OfficePowerPointPlaceholderText', 'Set-OfficePowerPointShapeLayout', 'Set-OfficePowerPointShapeText', 'Set-OfficePowerPointSlideLayout', 'Set-OfficePowerPointSlideSize', 'Set-OfficePowerPointSlideTitle', 'Set-OfficePowerPointSlideTransition', 'Set-OfficePowerPointTableCell', 'Set-OfficePowerPointThemeColor', 'Set-OfficePowerPointThemeFonts', 'Set-OfficePowerPointThemeName', 'Set-OfficeVisioShapeLayout', 'Set-OfficeWordBackground', 'Set-OfficeWordDocumentProperty', 'Set-OfficeWordImage', 'Set-OfficeWordPageSetup', 'Set-OfficeWordParagraphStyle', 'Set-OfficeWordShape', 'Set-OfficeWordTableCell', 'Set-OfficeWordTableOfContents', 'Set-OfficeWordTextStyle', 'Split-OfficePdf', 'Test-OfficeExcelAccessibility', 'Test-OfficeExcelTemplateBinding', 'Test-OfficeExcelWorkbook', 'Test-OfficePdfRewrite', 'Unprotect-OfficeExcelSheet', 'Unprotect-OfficeExcelWorkbook', 'Update-OfficeExcelComment', 'Update-OfficeExcelText', 'Update-OfficePowerPointText', 'Update-OfficeRtfText', 'Update-OfficeWordFields', 'Update-OfficeWordTableOfContents', 'Update-OfficeWordText') + CmdletsToExport = @('Add-OfficeExcelAutoFilter', 'Add-OfficeExcelChart', 'Add-OfficeExcelComment', 'Add-OfficeExcelConditionalColorScale', 'Add-OfficeExcelConditionalDataBar', 'Add-OfficeExcelConditionalIconSet', 'Add-OfficeExcelConditionalRule', 'Add-OfficeExcelDashboardChart', 'Add-OfficeExcelDataSet', 'Add-OfficeExcelImage', 'Add-OfficeExcelImageFromUrl', 'Add-OfficeExcelPackageMetadata', 'Add-OfficeExcelPageBreak', 'Add-OfficeExcelPivotTable', 'Add-OfficeExcelPowerQueryMetadata', 'Add-OfficeExcelReportCallout', 'Add-OfficeExcelReportKpiRow', 'Add-OfficeExcelReportLegend', 'Add-OfficeExcelReportParagraph', 'Add-OfficeExcelReportSection', 'Add-OfficeExcelReportSheet', 'Add-OfficeExcelReportSpacer', 'Add-OfficeExcelReportTable', 'Add-OfficeExcelReportTitle', 'Add-OfficeExcelSheet', 'Add-OfficeExcelSlicer', 'Add-OfficeExcelSparkline', 'Add-OfficeExcelSubtotalSummary', 'Add-OfficeExcelTable', 'Add-OfficeExcelTableOfContents', 'Add-OfficeExcelTableRow', 'Add-OfficeExcelThreadedComment', 'Add-OfficeExcelTimeline', 'Add-OfficeExcelValidationCustomFormula', 'Add-OfficeExcelValidationDate', 'Add-OfficeExcelValidationDecimal', 'Add-OfficeExcelValidationList', 'Add-OfficeExcelValidationTextLength', 'Add-OfficeExcelValidationTime', 'Add-OfficeExcelValidationWholeNumber', 'Add-OfficeExcelVisual', 'Add-OfficeMarkdownCallout', 'Add-OfficeMarkdownCode', 'Add-OfficeMarkdownDefinitionList', 'Add-OfficeMarkdownDetails', 'Add-OfficeMarkdownFrontMatter', 'Add-OfficeMarkdownHeading', 'Add-OfficeMarkdownHorizontalRule', 'Add-OfficeMarkdownImage', 'Add-OfficeMarkdownList', 'Add-OfficeMarkdownParagraph', 'Add-OfficeMarkdownQuote', 'Add-OfficeMarkdownTable', 'Add-OfficeMarkdownTableOfContents', 'Add-OfficeMarkdownTaskList', 'Add-OfficePdfAttachment', 'Add-OfficePdfBackgroundShape', 'Add-OfficePdfBookmark', 'Add-OfficePdfCanvas', 'Add-OfficePdfCanvasText', 'Add-OfficePdfFormField', 'Add-OfficePdfHeading', 'Add-OfficePdfHorizontalRule', 'Add-OfficePdfImage', 'Add-OfficePdfList', 'Add-OfficePdfPageBreak', 'Add-OfficePdfPageOverlay', 'Add-OfficePdfPanel', 'Add-OfficePdfParagraph', 'Add-OfficePdfRow', 'Add-OfficePdfSpacer', 'Add-OfficePdfStamp', 'Add-OfficePdfTable', 'Add-OfficePdfText', 'Add-OfficePdfVisual', 'Add-OfficePdfWatermark', 'Add-OfficePowerPointBullets', 'Add-OfficePowerPointChart', 'Add-OfficePowerPointDesignerDeck', 'Add-OfficePowerPointImage', 'Add-OfficePowerPointPlanCapability', 'Add-OfficePowerPointPlanCardGrid', 'Add-OfficePowerPointPlanCaseStudy', 'Add-OfficePowerPointPlanCoverage', 'Add-OfficePowerPointPlanLogoWall', 'Add-OfficePowerPointPlanProcess', 'Add-OfficePowerPointPlanSection', 'Add-OfficePowerPointSection', 'Add-OfficePowerPointShape', 'Add-OfficePowerPointSlide', 'Add-OfficePowerPointTable', 'Add-OfficePowerPointTableRow', 'Add-OfficePowerPointTextBox', 'Add-OfficePowerPointVisual', 'Add-OfficeVisioConnector', 'Add-OfficeVisioContainer', 'Add-OfficeVisioDiamond', 'Add-OfficeVisioEllipse', 'Add-OfficeVisioPage', 'Add-OfficeVisioRectangle', 'Add-OfficeVisioStencilShape', 'Add-OfficeVisioTextBox', 'Add-OfficeWordBookmark', 'Add-OfficeWordBreak', 'Add-OfficeWordChart', 'Add-OfficeWordCheckBox', 'Add-OfficeWordComboBox', 'Add-OfficeWordContentControl', 'Add-OfficeWordCoverPage', 'Add-OfficeWordDatePicker', 'Add-OfficeWordDropDownList', 'Add-OfficeWordEndnote', 'Add-OfficeWordEquation', 'Add-OfficeWordField', 'Add-OfficeWordFooter', 'Add-OfficeWordFootnote', 'Add-OfficeWordHeader', 'Add-OfficeWordHyperlink', 'Add-OfficeWordImage', 'Add-OfficeWordList', 'Add-OfficeWordListItem', 'Add-OfficeWordPageNumber', 'Add-OfficeWordParagraph', 'Add-OfficeWordPictureControl', 'Add-OfficeWordRepeatingSection', 'Add-OfficeWordSection', 'Add-OfficeWordShape', 'Add-OfficeWordTable', 'Add-OfficeWordTableCell', 'Add-OfficeWordTableCondition', 'Add-OfficeWordTableOfContents', 'Add-OfficeWordTableRow', 'Add-OfficeWordTabStop', 'Add-OfficeWordText', 'Add-OfficeWordTextBox', 'Add-OfficeWordVisual', 'Add-OfficeWordWatermark', 'Clear-OfficeExcelAutoFilter', 'Clear-OfficeExcelComment', 'Clear-OfficeExcelConditionalFormatting', 'Clear-OfficeExcelDataValidation', 'Clear-OfficeExcelPageBreak', 'Clear-OfficeExcelRange', 'Clear-OfficeExcelWriteReservation', 'Clear-OfficePdfBackgroundShape', 'Close-OfficeExcel', 'Close-OfficePowerPoint', 'Close-OfficeWord', 'Compare-OfficeExcelRange', 'Compare-OfficeExcelWorkbook', 'Compare-OfficePdfVisual', 'Compare-OfficeWordDocument', 'ConvertFrom-OfficeAsciiDocMarkdown', 'ConvertFrom-OfficeCsv', 'ConvertFrom-OfficeLatexMarkdown', 'ConvertFrom-OfficeMarkdownHtml', 'ConvertFrom-OfficeOpenDocument', 'ConvertFrom-OfficePdfHtml', 'ConvertFrom-OfficeRtf', 'ConvertFrom-OfficeWordHtml', 'ConvertFrom-OfficeWordMarkdown', 'ConvertTo-OfficeAsciiDocMarkdown', 'ConvertTo-OfficeCsv', 'ConvertTo-OfficeExcelHtml', 'ConvertTo-OfficeExcelWorkbook', 'ConvertTo-OfficeLatexMarkdown', 'ConvertTo-OfficeMarkdown', 'ConvertTo-OfficeMarkdownHtml', 'ConvertTo-OfficeOpenDocument', 'ConvertTo-OfficePdfExcel', 'ConvertTo-OfficePdfFlatAnnotation', 'ConvertTo-OfficePdfFlatForm', 'ConvertTo-OfficePdfHtml', 'ConvertTo-OfficePdfMarkdown', 'ConvertTo-OfficePdfOptimized', 'ConvertTo-OfficePdfPowerPoint', 'ConvertTo-OfficePdfRedacted', 'ConvertTo-OfficePdfSanitized', 'ConvertTo-OfficePdfTextRun', 'ConvertTo-OfficePdfWord', 'ConvertTo-OfficePowerPointHtml', 'ConvertTo-OfficeRtf', 'ConvertTo-OfficeVisioPng', 'ConvertTo-OfficeVisioSvg', 'ConvertTo-OfficeVisioVisual', 'ConvertTo-OfficeVisual', 'ConvertTo-OfficeWordDocument', 'ConvertTo-OfficeWordHtml', 'ConvertTo-OfficeWordMarkdown', 'Copy-OfficeExcelSheet', 'Copy-OfficeExcelWorkbook', 'Copy-OfficePdfPage', 'Copy-OfficePowerPointSlide', 'Edit-OfficeExcelRow', 'Export-OfficeCsv', 'Export-OfficeDocumentPdf', 'Export-OfficeExcel', 'Export-OfficeExcelChartImage', 'Export-OfficeExcelGoogleSpreadsheet', 'Export-OfficeExcelImage', 'Export-OfficeExcelRangeImage', 'Export-OfficeHtmlImage', 'Export-OfficePdfImage', 'Export-OfficePdfLayoutOverlay', 'Export-OfficePdfXfdf', 'Export-OfficePowerPointImage', 'Export-OfficeVisioImage', 'Export-OfficeVisioStencilPreviewGallery', 'Export-OfficeVisioVisual', 'Export-OfficeWordGoogleDocument', 'Export-OfficeWordImage', 'Find-OfficeExcel', 'Find-OfficePowerPointShape', 'Find-OfficeVisioStencil', 'Find-OfficeWord', 'Find-OfficeWordList', 'Find-OfficeWordTable', 'Get-OfficeAsciiDoc', 'Get-OfficeConfluenceAttachment', 'Get-OfficeConfluencePage', 'Get-OfficeCsv', 'Get-OfficeDocument', 'Get-OfficeDocumentAsset', 'Get-OfficeDocumentBatch', 'Get-OfficeDocumentCapability', 'Get-OfficeDocumentChunk', 'Get-OfficeDocumentDetection', 'Get-OfficeDocumentHierarchy', 'Get-OfficeDocumentIngest', 'Get-OfficeDocumentPageMarkdown', 'Get-OfficeDocumentStructured', 'Get-OfficeDocumentTable', 'Get-OfficeDocumentVisual', 'Get-OfficeEmail', 'Get-OfficeEmailMailbox', 'Get-OfficeExcel', 'Get-OfficeExcelComment', 'Get-OfficeExcelCommentAudit', 'Get-OfficeExcelConditionalFormatting', 'Get-OfficeExcelData', 'Get-OfficeExcelDataModel', 'Get-OfficeExcelDataValidation', 'Get-OfficeExcelDocumentProperty', 'Get-OfficeExcelFormulaAnalysis', 'Get-OfficeExcelNamedRange', 'Get-OfficeExcelNumberFormatPreset', 'Get-OfficeExcelPageBreak', 'Get-OfficeExcelPivotTable', 'Get-OfficeExcelPreflight', 'Get-OfficeExcelRange', 'Get-OfficeExcelRichText', 'Get-OfficeExcelRuntimePreflight', 'Get-OfficeExcelStreamingContract', 'Get-OfficeExcelSummary', 'Get-OfficeExcelTable', 'Get-OfficeExcelTableStyle', 'Get-OfficeExcelTemplateMarker', 'Get-OfficeExcelUsedRange', 'Get-OfficeExcelWorksheetView', 'Get-OfficeExcelWriteReservation', 'Get-OfficeLatex', 'Get-OfficeMarkdown', 'Get-OfficeMarkdownFrontMatter', 'Get-OfficeMarkdownHeading', 'Get-OfficeMarkdownNode', 'Get-OfficeMarkdownTable', 'Get-OfficeOpenDocument', 'Get-OfficePdf', 'Get-OfficePdfAnnotation', 'Get-OfficePdfAppendOnlyMutation', 'Get-OfficePdfAttachment', 'Get-OfficePdfCompliance', 'Get-OfficePdfDiagnostic', 'Get-OfficePdfFont', 'Get-OfficePdfFormField', 'Get-OfficePdfImage', 'Get-OfficePdfInfo', 'Get-OfficePdfInteractionMap', 'Get-OfficePdfOptimization', 'Get-OfficePdfPreflight', 'Get-OfficePdfRedactionPlan', 'Get-OfficePdfSignature', 'Get-OfficePdfText', 'Get-OfficePdfTextDiagnostic', 'Get-OfficePowerPoint', 'Get-OfficePowerPointInspection', 'Get-OfficePowerPointLayout', 'Get-OfficePowerPointLayoutBox', 'Get-OfficePowerPointLayoutPlaceholder', 'Get-OfficePowerPointNotes', 'Get-OfficePowerPointPlaceholder', 'Get-OfficePowerPointSection', 'Get-OfficePowerPointShape', 'Get-OfficePowerPointSlide', 'Get-OfficePowerPointSlideSummary', 'Get-OfficePowerPointTheme', 'Get-OfficeProtectionCapability', 'Get-OfficeRtf', 'Get-OfficeVisio', 'Get-OfficeVisioInfo', 'Get-OfficeVisioStencilCatalog', 'Get-OfficeWord', 'Get-OfficeWordBookmark', 'Get-OfficeWordCheckBox', 'Get-OfficeWordComboBox', 'Get-OfficeWordContentControl', 'Get-OfficeWordDatePicker', 'Get-OfficeWordDocumentProperty', 'Get-OfficeWordDropDownList', 'Get-OfficeWordEndnote', 'Get-OfficeWordField', 'Get-OfficeWordFootnote', 'Get-OfficeWordHyperlink', 'Get-OfficeWordImage', 'Get-OfficeWordList', 'Get-OfficeWordParagraph', 'Get-OfficeWordPictureControl', 'Get-OfficeWordRepeatingSection', 'Get-OfficeWordReview', 'Get-OfficeWordSection', 'Get-OfficeWordShape', 'Get-OfficeWordStatistics', 'Get-OfficeWordTable', 'Get-OfficeWordTableCell', 'Get-OfficeWordTableOfContents', 'Get-OfficeWordText', 'Import-OfficeCsv', 'Import-OfficeExcel', 'Import-OfficeExcelDelimitedText', 'Import-OfficePdfXfdf', 'Import-OfficePowerPointSlide', 'Import-OfficeVisioStencil', 'Invoke-OfficeExcelAutoFit', 'Invoke-OfficeExcelSort', 'Invoke-OfficeExcelTemplate', 'Invoke-OfficeExcelTemplateOptionalRow', 'Invoke-OfficeExcelTemplateRow', 'Invoke-OfficeExcelTemplateSheet', 'Invoke-OfficePdfOcrMerge', 'Invoke-OfficeWordMailMerge', 'Join-OfficeExcelSheet', 'Join-OfficeExcelWorkbook', 'Join-OfficePdf', 'Join-OfficeWordDocument', 'Move-OfficeExcelSheet', 'Move-OfficePdfPage', 'New-OfficeConfluenceSession', 'New-OfficeDocumentReader', 'New-OfficeExcel', 'New-OfficeExcelDashboard', 'New-OfficeExcelPdfOptions', 'New-OfficeMarkdown', 'New-OfficeMarkdownPdfOptions', 'New-OfficeOpenDocument', 'New-OfficePdf', 'New-OfficePdfSignature', 'New-OfficePdfTableCell', 'New-OfficePdfTableCellCheckBox', 'New-OfficePdfTableCellField', 'New-OfficePdfTableCellImage', 'New-OfficePowerPoint', 'New-OfficePowerPointDeckPlan', 'New-OfficePowerPointPdfOptions', 'New-OfficeRtf', 'New-OfficeRtfPdfOptions', 'New-OfficeTextRun', 'New-OfficeVisio', 'New-OfficeVisioGallery', 'New-OfficeWord', 'New-OfficeWordPdfOptions', 'New-OfficeWordTableCell', 'Protect-OfficeExcelSheet', 'Protect-OfficeExcelWorkbook', 'Protect-OfficeWordDocument', 'Publish-OfficeConfluencePage', 'Remove-OfficeConfluencePage', 'Remove-OfficeExcelComment', 'Remove-OfficeExcelNamedRange', 'Remove-OfficePdfAnnotation', 'Remove-OfficePdfPage', 'Remove-OfficePowerPointSlide', 'Remove-OfficeWordTableOfContents', 'Rename-OfficeExcelNamedRange', 'Rename-OfficePowerPointSection', 'Repair-OfficeExcelWorkbook', 'Resolve-OfficeWordRevision', 'Save-OfficeAsciiDoc', 'Save-OfficeEmail', 'Save-OfficeEmailMailbox', 'Save-OfficeExcel', 'Save-OfficeLatex', 'Save-OfficeMarkdown', 'Save-OfficeOpenDocument', 'Save-OfficePdf', 'Save-OfficePowerPoint', 'Save-OfficeVisio', 'Save-OfficeWord', 'Search-OfficeDocument', 'Send-OfficeConfluenceAttachment', 'Set-OfficeConfluenceManagedSection', 'Set-OfficeExcelActiveSheet', 'Set-OfficeExcelAutoFilter', 'Set-OfficeExcelCell', 'Set-OfficeExcelChartAxis', 'Set-OfficeExcelChartDataLabels', 'Set-OfficeExcelChartLegend', 'Set-OfficeExcelChartPoint', 'Set-OfficeExcelChartSeries', 'Set-OfficeExcelChartStyle', 'Set-OfficeExcelChartTrendline', 'Set-OfficeExcelColumn', 'Set-OfficeExcelColumnGroup', 'Set-OfficeExcelColumnStyleByHeader', 'Set-OfficeExcelDataValidationMessage', 'Set-OfficeExcelDateSystem', 'Set-OfficeExcelDocumentProperty', 'Set-OfficeExcelExecutionPolicy', 'Set-OfficeExcelFormula', 'Set-OfficeExcelFreeze', 'Set-OfficeExcelGridlines', 'Set-OfficeExcelHeaderFooter', 'Set-OfficeExcelHostHyperlink', 'Set-OfficeExcelHyperlink', 'Set-OfficeExcelInternalLinks', 'Set-OfficeExcelInternalLinksByHeader', 'Set-OfficeExcelMargins', 'Set-OfficeExcelNamedRange', 'Set-OfficeExcelOrientation', 'Set-OfficeExcelPageSetup', 'Set-OfficeExcelPrintArea', 'Set-OfficeExcelPrintLayout', 'Set-OfficeExcelPrintTitles', 'Set-OfficeExcelRefreshOnOpen', 'Set-OfficeExcelRichText', 'Set-OfficeExcelRow', 'Set-OfficeExcelRowGroup', 'Set-OfficeExcelSheetTabColor', 'Set-OfficeExcelSheetVisibility', 'Set-OfficeExcelSmartHyperlink', 'Set-OfficeExcelTheme', 'Set-OfficeExcelUrlLinks', 'Set-OfficeExcelUrlLinksByHeader', 'Set-OfficeExcelWorksheetView', 'Set-OfficeExcelWriteReservation', 'Set-OfficePdfAnnotation', 'Set-OfficePdfBackground', 'Set-OfficePdfBackgroundImage', 'Set-OfficePdfCompliance', 'Set-OfficePdfElectronicInvoice', 'Set-OfficePdfFooter', 'Set-OfficePdfForm', 'Set-OfficePdfHeader', 'Set-OfficePdfMetadata', 'Set-OfficePdfPage', 'Set-OfficePdfPageBorder', 'Set-OfficePdfPageSetup', 'Set-OfficePdfSignature', 'Set-OfficePdfTheme', 'Set-OfficePowerPointBackground', 'Set-OfficePowerPointLayoutPlaceholderBounds', 'Set-OfficePowerPointLayoutPlaceholderTextMargins', 'Set-OfficePowerPointLayoutPlaceholderTextStyle', 'Set-OfficePowerPointNotes', 'Set-OfficePowerPointPlaceholderText', 'Set-OfficePowerPointShapeLayout', 'Set-OfficePowerPointShapeText', 'Set-OfficePowerPointSlideLayout', 'Set-OfficePowerPointSlideSize', 'Set-OfficePowerPointSlideTitle', 'Set-OfficePowerPointSlideTransition', 'Set-OfficePowerPointTableCell', 'Set-OfficePowerPointThemeColor', 'Set-OfficePowerPointThemeFonts', 'Set-OfficePowerPointThemeName', 'Set-OfficeVisioShapeLayout', 'Set-OfficeWordBackground', 'Set-OfficeWordDocumentProperty', 'Set-OfficeWordImage', 'Set-OfficeWordPageSetup', 'Set-OfficeWordParagraphStyle', 'Set-OfficeWordShape', 'Set-OfficeWordTableCell', 'Set-OfficeWordTableOfContents', 'Set-OfficeWordTextStyle', 'Split-OfficePdf', 'Test-OfficeExcelAccessibility', 'Test-OfficeExcelTemplateBinding', 'Test-OfficeExcelWorkbook', 'Test-OfficePdfRewrite', 'Unprotect-OfficeExcelSheet', 'Unprotect-OfficeExcelWorkbook', 'Update-OfficeExcelComment', 'Update-OfficeExcelText', 'Update-OfficePowerPointText', 'Update-OfficeRtfText', 'Update-OfficeWordFields', 'Update-OfficeWordTableOfContents', 'Update-OfficeWordText') CompanyName = 'Evotec' CompatiblePSEditions = @('Desktop', 'Core') Copyright = '(c) 2011 - 2026 Przemyslaw Klys @ Evotec. All rights reserved.' diff --git a/WebsiteArtifacts/apidocs/powershell/command-metadata.json b/WebsiteArtifacts/apidocs/powershell/command-metadata.json index 1c869cd7..d1027235 100644 --- a/WebsiteArtifacts/apidocs/powershell/command-metadata.json +++ b/WebsiteArtifacts/apidocs/powershell/command-metadata.json @@ -1911,8 +1911,8 @@ "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs", - "sourceLine": 36, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs#L36" + "sourceLine": 37, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs#L37" }, { "name": "Export-OfficeExcel", @@ -3285,6 +3285,14 @@ "sourceLine": 21, "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelDashboardCommand.cs#L21" }, + { + "name": "New-OfficeExcelPdfOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelPdfOptionsCommand.cs", + "sourceLine": 18, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelPdfOptionsCommand.cs#L18" + }, { "name": "New-OfficeMarkdown", "kind": "Cmdlet", @@ -3295,6 +3303,14 @@ "sourceLine": 33, "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Markdown/NewOfficeMarkdownCommand.cs#L33" }, + { + "name": "New-OfficeMarkdownPdfOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/Markdown/NewOfficeMarkdownPdfOptionsCommand.cs", + "sourceLine": 18, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Markdown/NewOfficeMarkdownPdfOptionsCommand.cs#L18" + }, { "name": "New-OfficeOpenDocument", "kind": "Cmdlet", @@ -3382,6 +3398,14 @@ "sourceLine": 27, "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointDeckPlanCommand.cs#L27" }, + { + "name": "New-OfficePowerPointPdfOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointPdfOptionsCommand.cs", + "sourceLine": 16, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointPdfOptionsCommand.cs#L16" + }, { "name": "New-OfficeRtf", "kind": "Cmdlet", @@ -3392,6 +3416,14 @@ "sourceLine": 21, "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Rtf/NewOfficeRtfCommand.cs#L21" }, + { + "name": "New-OfficeRtfPdfOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/Rtf/NewOfficeRtfPdfOptionsCommand.cs", + "sourceLine": 15, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Rtf/NewOfficeRtfPdfOptionsCommand.cs#L15" + }, { "name": "New-OfficeTextRun", "kind": "Cmdlet", @@ -3437,6 +3469,14 @@ "sourceLine": 34, "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordCommand.cs#L34" }, + { + "name": "New-OfficeWordPdfOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordPdfOptionsCommand.cs", + "sourceLine": 18, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordPdfOptionsCommand.cs#L18" + }, { "name": "New-OfficeWordTableCell", "kind": "Cmdlet", diff --git a/WebsiteArtifacts/apidocs/powershell/examples/Pdf/Example-OfficePdfExports.ps1 b/WebsiteArtifacts/apidocs/powershell/examples/Pdf/Example-OfficePdfExports.ps1 index d39a228a..f4befcbe 100644 --- a/WebsiteArtifacts/apidocs/powershell/examples/Pdf/Example-OfficePdfExports.ps1 +++ b/WebsiteArtifacts/apidocs/powershell/examples/Pdf/Example-OfficePdfExports.ps1 @@ -38,7 +38,16 @@ New-OfficeMarkdown -Path $markdownPath { MarkdownParagraph 'Markdown keeps the same authoring mindset with format-appropriate simplification.' MarkdownTable -InputObject $rows } -Export-OfficeDocumentPdf -InputPath $markdownPath -Path $markdownPdf +$markdownOptions = New-OfficeMarkdownPdfOptions ` + -Title 'Markdown PDF export' ` + -Author 'PSWriteOffice' ` + -CreateOutlineFromHeadings +Export-OfficeDocumentPdf ` + -InputPath $markdownPath ` + -Path $markdownPdf ` + -MarkdownOptions $markdownOptions ` + -PdfWarningVariable markdownWarnings ` + -PdfConversionReportVariable markdownReport New-OfficePowerPoint -Path $powerPointPath { PptSlide { diff --git a/WebsiteArtifacts/documentation/command-catalog.json b/WebsiteArtifacts/documentation/command-catalog.json index 5ce683f7..66438707 100644 --- a/WebsiteArtifacts/documentation/command-catalog.json +++ b/WebsiteArtifacts/documentation/command-catalog.json @@ -1 +1 @@ -{"schemaVersion":1,"format":"pswriteoffice.documentation-catalog","module":{"name":"PSWriteOffice","version":"3.0.6","commandCount":493,"aliasCount":371,"familyCount":18,"sourceManifest":"PSWriteOffice.psd1"},"families":[{"id":"word","title":"Word","description":"Create, inspect, update, review, merge, protect, and convert DOC and DOCX documents.","commandCount":92,"docsUrl":"/docs/pswriteoffice/word/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Word","featuredCommands":["New-OfficeWord","Add-OfficeWordTable","Get-OfficeWordReview","Invoke-OfficeWordMailMerge","ConvertTo-OfficeWordDocument"]},{"id":"excel","title":"Excel","description":"Build, read, convert, validate, repair, compare, and publish XLS and XLSX workbook workflows.","commandCount":158,"docsUrl":"/docs/pswriteoffice/excel/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Excel","featuredCommands":["New-OfficeExcel","Add-OfficeExcelTable","Add-OfficeExcelPivotTable","Test-OfficeExcelWorkbook","ConvertTo-OfficeExcelWorkbook"]},{"id":"powerpoint","title":"PowerPoint","description":"Compose, inspect, update, import, theme, and render repeatable presentation decks.","commandCount":58,"docsUrl":"/docs/pswriteoffice/powerpoint/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/PowerPoint","featuredCommands":["New-OfficePowerPoint","Add-OfficePowerPointSlide","Add-OfficePowerPointChart","Get-OfficePowerPointInspection"]},{"id":"pdf","title":"PDF","description":"Author, inspect, transform, sign, annotate, extract, preflight, and combine PDF files.","commandCount":86,"docsUrl":"/docs/pswriteoffice/pdf/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Pdf","featuredCommands":["New-OfficePdf","Join-OfficePdf","Get-OfficePdfPreflight","Set-OfficePdfSignature"]},{"id":"reader","title":"Reader and extraction","description":"Detect formats and extract normalized documents, chunks, tables, visuals, assets, and ingest results.","commandCount":13,"docsUrl":"/docs/pswriteoffice/reader/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Reader","featuredCommands":["New-OfficeDocumentReader","Get-OfficeDocumentChunk","Get-OfficeDocumentTable","Search-OfficeDocument"]},{"id":"confluence","title":"Confluence Cloud","description":"Plan and publish pages, preserve managed sections, and transfer attachments through OfficeIMO.Confluence.","commandCount":7,"docsUrl":"/docs/pswriteoffice/confluence/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Confluence","featuredCommands":["New-OfficeConfluenceSession","Publish-OfficeConfluencePage","Set-OfficeConfluenceManagedSection","Send-OfficeConfluenceAttachment"]},{"id":"visio","title":"Visio","description":"Create, inspect, arrange, and export VSDX diagrams with built-in and imported stencils.","commandCount":23,"docsUrl":"/docs/pswriteoffice/visio/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Visio","featuredCommands":["New-OfficeVisio","Add-OfficeVisioStencilShape","Get-OfficeVisioInfo","ConvertTo-OfficeVisioSvg"]},{"id":"markdown","title":"Markdown","description":"Compose typed Markdown, parse documents, and convert between Markdown and HTML or Word.","commandCount":25,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Markdown","featuredCommands":["New-OfficeMarkdown","Add-OfficeMarkdownTable","ConvertTo-OfficeMarkdownHtml","ConvertFrom-OfficeWordMarkdown"]},{"id":"rtf","title":"RTF","description":"Create, open, edit, inspect, and bridge Rich Text Format documents.","commandCount":5,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Rtf","featuredCommands":["New-OfficeRtf","Get-OfficeRtf","Update-OfficeRtfText","ConvertTo-OfficeRtf"]},{"id":"csv","title":"CSV","description":"Create, import, inspect, and export delimited data with typed options.","commandCount":5,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Csv","featuredCommands":["ConvertTo-OfficeCsv","Import-OfficeCsv","Export-OfficeCsv","Get-OfficeCsv"]},{"id":"open-document","title":"OpenDocument","description":"Create, read, and save ODT, ODS, and ODP workflows.","commandCount":5,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["New-OfficeOpenDocument","Get-OfficeOpenDocument","Save-OfficeOpenDocument"]},{"id":"email","title":"Email","description":"Read and write messages and mailbox artifacts through the managed OfficeIMO.Email engine.","commandCount":4,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeEmail","Get-OfficeEmailMailbox","Save-OfficeEmail","Save-OfficeEmailMailbox"]},{"id":"asciidoc","title":"AsciiDoc","description":"Read, create, update, and save bounded AsciiDoc workflows.","commandCount":4,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeAsciiDoc","ConvertFrom-OfficeAsciiDocMarkdown","ConvertTo-OfficeAsciiDocMarkdown","Save-OfficeAsciiDoc"]},{"id":"latex","title":"LaTeX","description":"Read, create, update, and save bounded LaTeX interoperability workflows.","commandCount":4,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeLatex","ConvertFrom-OfficeLatexMarkdown","ConvertTo-OfficeLatexMarkdown","Save-OfficeLatex"]},{"id":"html","title":"HTML assets","description":"Export images and review surfaces used by document-to-HTML workflows.","commandCount":1,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Export-OfficeHtmlImage"]},{"id":"visuals","title":"Cross-format visuals","description":"Convert reusable visual artifacts for Word, Excel, PowerPoint, and PDF placement.","commandCount":1,"docsUrl":"/docs/pswriteoffice/automation-patterns/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["ConvertTo-OfficeVisual"]},{"id":"protection","title":"Protection capabilities","description":"Discover the machine-readable protected-content support contract shared across OfficeIMO formats.","commandCount":1,"docsUrl":"/docs/pswriteoffice/automation-patterns/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeProtectionCapability"]},{"id":"shared","title":"Shared authoring primitives","description":"Create reusable text runs shared by document DSLs.","commandCount":1,"docsUrl":"/docs/pswriteoffice/automation-patterns/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["New-OfficeTextRun"]}]} +{"schemaVersion":1,"format":"pswriteoffice.documentation-catalog","module":{"name":"PSWriteOffice","version":"3.0.6","commandCount":498,"aliasCount":371,"familyCount":18,"sourceManifest":"PSWriteOffice.psd1"},"families":[{"id":"word","title":"Word","description":"Create, inspect, update, review, merge, protect, and convert DOC and DOCX documents.","commandCount":93,"docsUrl":"/docs/pswriteoffice/word/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Word","featuredCommands":["New-OfficeWord","Add-OfficeWordTable","Get-OfficeWordReview","Invoke-OfficeWordMailMerge","ConvertTo-OfficeWordDocument"]},{"id":"excel","title":"Excel","description":"Build, read, convert, validate, repair, compare, and publish XLS and XLSX workbook workflows.","commandCount":159,"docsUrl":"/docs/pswriteoffice/excel/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Excel","featuredCommands":["New-OfficeExcel","Add-OfficeExcelTable","Add-OfficeExcelPivotTable","Test-OfficeExcelWorkbook","ConvertTo-OfficeExcelWorkbook"]},{"id":"powerpoint","title":"PowerPoint","description":"Compose, inspect, update, import, theme, and render repeatable presentation decks.","commandCount":59,"docsUrl":"/docs/pswriteoffice/powerpoint/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/PowerPoint","featuredCommands":["New-OfficePowerPoint","Add-OfficePowerPointSlide","Add-OfficePowerPointChart","Get-OfficePowerPointInspection"]},{"id":"pdf","title":"PDF","description":"Author, inspect, transform, sign, annotate, extract, preflight, and combine PDF files.","commandCount":86,"docsUrl":"/docs/pswriteoffice/pdf/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Pdf","featuredCommands":["New-OfficePdf","Join-OfficePdf","Get-OfficePdfPreflight","Set-OfficePdfSignature"]},{"id":"reader","title":"Reader and extraction","description":"Detect formats and extract normalized documents, chunks, tables, visuals, assets, and ingest results.","commandCount":13,"docsUrl":"/docs/pswriteoffice/reader/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Reader","featuredCommands":["New-OfficeDocumentReader","Get-OfficeDocumentChunk","Get-OfficeDocumentTable","Search-OfficeDocument"]},{"id":"confluence","title":"Confluence Cloud","description":"Plan and publish pages, preserve managed sections, and transfer attachments through OfficeIMO.Confluence.","commandCount":7,"docsUrl":"/docs/pswriteoffice/confluence/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Confluence","featuredCommands":["New-OfficeConfluenceSession","Publish-OfficeConfluencePage","Set-OfficeConfluenceManagedSection","Send-OfficeConfluenceAttachment"]},{"id":"visio","title":"Visio","description":"Create, inspect, arrange, and export VSDX diagrams with built-in and imported stencils.","commandCount":23,"docsUrl":"/docs/pswriteoffice/visio/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Visio","featuredCommands":["New-OfficeVisio","Add-OfficeVisioStencilShape","Get-OfficeVisioInfo","ConvertTo-OfficeVisioSvg"]},{"id":"markdown","title":"Markdown","description":"Compose typed Markdown, parse documents, and convert between Markdown and HTML or Word.","commandCount":26,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Markdown","featuredCommands":["New-OfficeMarkdown","Add-OfficeMarkdownTable","ConvertTo-OfficeMarkdownHtml","ConvertFrom-OfficeWordMarkdown"]},{"id":"rtf","title":"RTF","description":"Create, open, edit, inspect, and bridge Rich Text Format documents.","commandCount":6,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Rtf","featuredCommands":["New-OfficeRtf","Get-OfficeRtf","Update-OfficeRtfText","ConvertTo-OfficeRtf"]},{"id":"csv","title":"CSV","description":"Create, import, inspect, and export delimited data with typed options.","commandCount":5,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Csv","featuredCommands":["ConvertTo-OfficeCsv","Import-OfficeCsv","Export-OfficeCsv","Get-OfficeCsv"]},{"id":"open-document","title":"OpenDocument","description":"Create, read, and save ODT, ODS, and ODP workflows.","commandCount":5,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["New-OfficeOpenDocument","Get-OfficeOpenDocument","Save-OfficeOpenDocument"]},{"id":"email","title":"Email","description":"Read and write messages and mailbox artifacts through the managed OfficeIMO.Email engine.","commandCount":4,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeEmail","Get-OfficeEmailMailbox","Save-OfficeEmail","Save-OfficeEmailMailbox"]},{"id":"asciidoc","title":"AsciiDoc","description":"Read, create, update, and save bounded AsciiDoc workflows.","commandCount":4,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeAsciiDoc","ConvertFrom-OfficeAsciiDocMarkdown","ConvertTo-OfficeAsciiDocMarkdown","Save-OfficeAsciiDoc"]},{"id":"latex","title":"LaTeX","description":"Read, create, update, and save bounded LaTeX interoperability workflows.","commandCount":4,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeLatex","ConvertFrom-OfficeLatexMarkdown","ConvertTo-OfficeLatexMarkdown","Save-OfficeLatex"]},{"id":"html","title":"HTML assets","description":"Export images and review surfaces used by document-to-HTML workflows.","commandCount":1,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Export-OfficeHtmlImage"]},{"id":"visuals","title":"Cross-format visuals","description":"Convert reusable visual artifacts for Word, Excel, PowerPoint, and PDF placement.","commandCount":1,"docsUrl":"/docs/pswriteoffice/automation-patterns/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["ConvertTo-OfficeVisual"]},{"id":"protection","title":"Protection capabilities","description":"Discover the machine-readable protected-content support contract shared across OfficeIMO formats.","commandCount":1,"docsUrl":"/docs/pswriteoffice/automation-patterns/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeProtectionCapability"]},{"id":"shared","title":"Shared authoring primitives","description":"Create reusable text runs shared by document DSLs.","commandCount":1,"docsUrl":"/docs/pswriteoffice/automation-patterns/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["New-OfficeTextRun"]}]} From 5e4b881a4f5f3b9e2f88e1458ffcfb4b0052bfc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20K=C5=82ys?= Date: Fri, 21 Aug 2026 15:44:53 +0200 Subject: [PATCH 6/8] fix: preserve markdown PDF resource context --- Docs/Generated/PSWriteOffice-help.xml | 2 +- Docs/New-OfficeRtfPdfOptions.md | 2 +- .../Pdf/ExportOfficeDocumentPdfCommand.cs | 24 ++++++++++++++----- .../Rtf/NewOfficeRtfPdfOptionsCommand.cs | 2 +- Tests/OfficePdfExport.Tests.ps1 | 21 ++++++++++++++++ .../apidocs/powershell/PSWriteOffice-help.xml | 2 +- 6 files changed, 43 insertions(+), 10 deletions(-) diff --git a/Docs/Generated/PSWriteOffice-help.xml b/Docs/Generated/PSWriteOffice-help.xml index 75fef897..de8f511e 100644 --- a/Docs/Generated/PSWriteOffice-help.xml +++ b/Docs/Generated/PSWriteOffice-help.xml @@ -142476,7 +142476,7 @@ Use -NoSave or omit -Path when a document object should be returned for further PS> - $options = New-OfficeRtfPdfOptions -IncludeImages $true -IncludeTables $true -IncludeHeaderFooters $true -MaximumSystemFontFamilies 32 + $options = New-OfficeRtfPdfOptions -IncludeImages -IncludeTables -IncludeHeaderFooters -MaximumSystemFontFamilies 32 Export-OfficeDocumentPdf -InputPath .\Report.rtf -Path .\Report.pdf -RtfOptions $options diff --git a/Docs/New-OfficeRtfPdfOptions.md b/Docs/New-OfficeRtfPdfOptions.md index 23cf1bc3..b8d3b2dc 100644 --- a/Docs/New-OfficeRtfPdfOptions.md +++ b/Docs/New-OfficeRtfPdfOptions.md @@ -21,7 +21,7 @@ Creates discoverable RTF-to-PDF conversion options for Export-OfficeDocumentPdf. ### EXAMPLE 1 ```powershell -PS> $options = New-OfficeRtfPdfOptions -IncludeImages $true -IncludeTables $true -IncludeHeaderFooters $true -MaximumSystemFontFamilies 32 +PS> $options = New-OfficeRtfPdfOptions -IncludeImages -IncludeTables -IncludeHeaderFooters -MaximumSystemFontFamilies 32 Export-OfficeDocumentPdf -InputPath .\Report.rtf -Path .\Report.pdf -RtfOptions $options ``` diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs index 44c5f2a2..b819c22f 100644 --- a/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs @@ -103,13 +103,14 @@ protected override void ProcessRecord() { PdfCommandUtilities.EnsureDirectory(outputPath); object document = UnwrapDocument(Document); Action? closeOwnedDocument = null; + string? sourcePath = null; try { if (ParameterSetName == ParameterSetPath) { - document = LoadDocument(out closeOwnedDocument); + document = LoadDocument(out closeOwnedDocument, out sourcePath); } - PdfSaveResult result = SaveDocument(document, outputPath); + PdfSaveResult result = SaveDocument(document, outputPath, sourcePath); PdfCommandUtilities.SetVariable(this, PdfWarningVariable, result.Warnings); PdfCommandUtilities.SetVariable(this, PdfConversionReportVariable, result.Report); result.RequireSuccess(); @@ -126,8 +127,8 @@ protected override void ProcessRecord() { } } - private object LoadDocument(out Action? closeOwnedDocument) { - var sourcePath = PdfCommandUtilities.ResolveExistingFilePath(this, InputPath); + private object LoadDocument(out Action? closeOwnedDocument, out string sourcePath) { + sourcePath = PdfCommandUtilities.ResolveExistingFilePath(this, InputPath); switch (System.IO.Path.GetExtension(sourcePath).ToLowerInvariant()) { case ".docx": { var document = WordDocumentService.LoadDocument(sourcePath, readOnly: true, autoSave: false, Password); @@ -156,7 +157,7 @@ private object LoadDocument(out Action? closeOwnedDocument) { } } - private PdfSaveResult SaveDocument(object document, string outputPath) { + private PdfSaveResult SaveDocument(object document, string outputPath, string? sourcePath) { switch (document) { case WordDocument word: return word.SaveAsPdf(outputPath, WordOptions ?? new WordPdfSaveOptions()); @@ -165,7 +166,7 @@ private PdfSaveResult SaveDocument(object document, string outputPath) { case PowerPointPresentation powerPoint: return powerPoint.SaveAsPdf(outputPath, PowerPointOptions ?? new PowerPointPdfSaveOptions()); case MarkdownDoc markdown: - return markdown.SaveAsPdf(outputPath, MarkdownOptions ?? new MarkdownPdfSaveOptions()); + return markdown.SaveAsPdf(outputPath, PrepareMarkdownOptions(sourcePath)); case RtfDocument rtf: return rtf.SaveAsPdf(outputPath, RtfOptions ?? new RtfPdfSaveOptions()); default: @@ -175,6 +176,17 @@ private PdfSaveResult SaveDocument(object document, string outputPath) { } } + private MarkdownPdfSaveOptions PrepareMarkdownOptions(string? sourcePath) { + var options = MarkdownOptions?.Clone() ?? new MarkdownPdfSaveOptions(); + if (options.ResourcePolicy.AllowLocalFileAccess && + string.IsNullOrWhiteSpace(options.BaseDirectory) && + !string.IsNullOrWhiteSpace(sourcePath)) { + options.BaseDirectory = System.IO.Path.GetDirectoryName(sourcePath); + } + + return options; + } + private static object UnwrapDocument(object document) { while (document is PSObject psObject && psObject.BaseObject != document) { document = psObject.BaseObject; diff --git a/Sources/PSWriteOffice/Cmdlets/Rtf/NewOfficeRtfPdfOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Rtf/NewOfficeRtfPdfOptionsCommand.cs index 517aab53..e056acdd 100644 --- a/Sources/PSWriteOffice/Cmdlets/Rtf/NewOfficeRtfPdfOptionsCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Rtf/NewOfficeRtfPdfOptionsCommand.cs @@ -7,7 +7,7 @@ namespace PSWriteOffice.Cmdlets.Rtf; /// /// Include document structure and bound system-font discovery. /// PS> -/// $options = New-OfficeRtfPdfOptions -IncludeImages $true -IncludeTables $true -IncludeHeaderFooters $true -MaximumSystemFontFamilies 32 +/// $options = New-OfficeRtfPdfOptions -IncludeImages -IncludeTables -IncludeHeaderFooters -MaximumSystemFontFamilies 32 /// Export-OfficeDocumentPdf -InputPath .\Report.rtf -Path .\Report.pdf -RtfOptions $options /// [Cmdlet(VerbsCommon.New, "OfficeRtfPdfOptions")] diff --git a/Tests/OfficePdfExport.Tests.ps1 b/Tests/OfficePdfExport.Tests.ps1 index 30bca0fb..cdfdca58 100644 --- a/Tests/OfficePdfExport.Tests.ps1 +++ b/Tests/OfficePdfExport.Tests.ps1 @@ -115,6 +115,27 @@ Describe 'Office document PDF exports' { $markdownPdfReport.Warnings | Should -Not -BeNull } + It 'resolves relative Markdown images from the source file directory' { + $sourceDirectory = Join-Path $TestDrive 'markdown-source' + $markdownPath = Join-Path $sourceDirectory 'report.md' + $imagePath = Join-Path $sourceDirectory 'relative-image.png' + $pdfPath = Join-Path $TestDrive 'markdown-relative-image.pdf' + New-Item -ItemType Directory -Path $sourceDirectory | Out-Null + Copy-Item -LiteralPath (Join-Path $PSScriptRoot 'Assets\CellImage.png') -Destination $imagePath + Set-Content -LiteralPath $markdownPath -Value '# Relative image', '![Local image](relative-image.png)' + + $options = New-OfficeMarkdownPdfOptions -IncludeLocalImages + Export-OfficeDocumentPdf ` + -InputPath $markdownPath ` + -Path $pdfPath ` + -MarkdownOptions $options ` + -PdfWarningVariable markdownImageWarnings + + Test-Path -LiteralPath $pdfPath | Should -BeTrue + @($markdownImageWarnings | Where-Object Code -Like 'LocalImage*').Count | Should -Be 0 + $options.BaseDirectory | Should -BeNullOrEmpty + } + It 'exports saved native documents through one explicit command' { $wordPath = Join-Path $TestDrive 'new-word.docx' $wordPdf = Join-Path $TestDrive 'new-word.pdf' diff --git a/WebsiteArtifacts/apidocs/powershell/PSWriteOffice-help.xml b/WebsiteArtifacts/apidocs/powershell/PSWriteOffice-help.xml index 75fef897..de8f511e 100644 --- a/WebsiteArtifacts/apidocs/powershell/PSWriteOffice-help.xml +++ b/WebsiteArtifacts/apidocs/powershell/PSWriteOffice-help.xml @@ -142476,7 +142476,7 @@ Use -NoSave or omit -Path when a document object should be returned for further PS> - $options = New-OfficeRtfPdfOptions -IncludeImages $true -IncludeTables $true -IncludeHeaderFooters $true -MaximumSystemFontFamilies 32 + $options = New-OfficeRtfPdfOptions -IncludeImages -IncludeTables -IncludeHeaderFooters -MaximumSystemFontFamilies 32 Export-OfficeDocumentPdf -InputPath .\Report.rtf -Path .\Report.pdf -RtfOptions $options From 721f0a7a19b8fb1367b891a7c5c16b4cb3515f99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20K=C5=82ys?= Date: Fri, 21 Aug 2026 18:20:00 +0200 Subject: [PATCH 7/8] Improve PowerShell API consistency end to end --- Build/Export-WebsiteDocumentationCatalog.ps1 | 8 +- Docs/Add-OfficeOpenDocumentHeading.md | 107 + Docs/Add-OfficeOpenDocumentParagraph.md | 91 + Docs/Add-OfficeOpenDocumentSheet.md | 109 + Docs/Add-OfficeOpenDocumentSlide.md | 109 + Docs/Add-OfficeOpenDocumentTextBox.md | 171 + Docs/Add-OfficeWordChart.md | 2 +- Docs/Compare-OfficePdfVisual.md | 3 +- Docs/Compare-OfficeWordDocument.md | 7 + Docs/ConvertFrom-OfficeOpenDocument.md | 3 +- Docs/ConvertTo-OfficeOpenDocument.md | 15 +- Docs/Export-OfficeDocumentPdf.md | 15 +- Docs/Export-OfficeExcelChartImage.md | 20 +- Docs/Export-OfficeExcelImage.md | 22 +- Docs/Export-OfficeExcelRangeImage.md | 20 +- Docs/Export-OfficeHtmlImage.md | 26 +- Docs/Export-OfficePdfImage.md | 20 +- Docs/Export-OfficePdfLayoutOverlay.md | 20 +- Docs/Export-OfficePowerPointImage.md | 22 +- Docs/Export-OfficeVisioImage.md | 22 +- Docs/Export-OfficeWordImage.md | 51 +- Docs/Generated/PSWriteOffice-help.xml | 19660 ++++++++++++---- Docs/Get-OfficeDocumentHierarchy.md | 3 +- Docs/Get-OfficeEmail.md | 3 +- Docs/Get-OfficeEmailMailbox.md | 3 +- Docs/Get-OfficeExcel.md | 20 +- Docs/Get-OfficeWord.md | 18 +- Docs/New-OfficeEmailMailboxReaderOptions.md | 109 + Docs/New-OfficeEmailMailboxWriterOptions.md | 77 + Docs/New-OfficeEmailReaderOptions.md | 284 + Docs/New-OfficeEmailStoreReaderOptions.md | 444 + Docs/New-OfficeEmailWriterOptions.md | 140 + Docs/New-OfficeExcelImageOptions.md | 403 + Docs/New-OfficeExcelOpenDocumentOptions.md | 124 + Docs/New-OfficeExcelWorkbookImageOptions.md | 428 + Docs/New-OfficeHtmlConversionOptions.md | 124 + Docs/New-OfficeHtmlRenderOptions.md | 492 + Docs/New-OfficeOpenDocument.md | 52 +- Docs/New-OfficePdfExcelImportOptions.md | 300 + Docs/New-OfficePdfImageOptions.md | 268 + Docs/New-OfficePdfPowerPointImportOptions.md | 364 + Docs/New-OfficePdfVisualComparisonOptions.md | 188 + Docs/New-OfficePdfWordImportOptions.md | 412 + Docs/New-OfficePowerPointImageOptions.md | 412 + ...New-OfficePowerPointOpenDocumentOptions.md | 140 + Docs/New-OfficeReaderHierarchyOptions.md | 172 + Docs/New-OfficeVisioImageOptions.md | 380 + Docs/New-OfficeWordComparisonOptions.md | 492 + Docs/New-OfficeWordImageOptions.md | 301 + Docs/New-OfficeWordOpenDocumentOptions.md | 92 + Docs/New-OfficeWordRevisionFilter.md | 252 + Docs/Readme.md | 89 +- Docs/Remove-OfficePdfAnnotation.md | 2 +- Docs/Resolve-OfficeWordRevision.md | 3 +- Docs/Save-OfficeAsciiDoc.md | 3 +- Docs/Save-OfficeEmail.md | 3 +- Docs/Save-OfficeEmailMailbox.md | 3 +- Docs/Save-OfficeLatex.md | 3 +- Docs/Set-OfficeOpenDocumentCell.md | 124 + .../Recipe-Mailozaurr-PdfDelivery.ps1 | 34 + .../Recipe-PSEventViewer-OfficeReport.ps1 | 48 + Examples/README.md | 4 +- PSWriteOffice.psd1 | 2 +- README.MD | 12 +- .../AsciiDoc/SaveOfficeAsciiDocCommand.cs | 6 + .../Cmdlets/Email/GetOfficeEmailCommand.cs | 6 + .../Email/GetOfficeEmailMailboxCommand.cs | 6 + ...wOfficeEmailMailboxReaderOptionsCommand.cs | 32 + ...wOfficeEmailMailboxWriterOptionsCommand.cs | 24 + .../NewOfficeEmailReaderOptionsCommand.cs | 64 + ...NewOfficeEmailStoreReaderOptionsCommand.cs | 104 + .../NewOfficeEmailWriterOptionsCommand.cs | 43 + .../Cmdlets/Email/SaveOfficeEmailCommand.cs | 8 +- .../Email/SaveOfficeEmailMailboxCommand.cs | 8 +- .../ExportOfficeExcelChartImageCommand.cs | 6 +- .../Excel/ExportOfficeExcelImageCommand.cs | 8 +- .../ExportOfficeExcelRangeImageCommand.cs | 6 +- .../Cmdlets/Excel/GetOfficeExcelCommand.cs | 12 +- .../Cmdlets/Excel/NewOfficeExcelCommand.cs | 7 +- .../NewOfficeExcelImageOptionsCommand.cs | 61 + ...wOfficeExcelWorkbookImageOptionsCommand.cs | 57 + .../NewOfficePdfExcelImportOptionsCommand.cs | 77 + .../Html/ExportOfficeHtmlImageCommand.cs | 30 +- .../NewOfficeHtmlConversionOptionsCommand.cs | 39 + .../Html/NewOfficeHtmlRenderOptionsCommand.cs | 71 + .../Imaging/OfficeImageOptionsCommandBase.cs | 55 + .../Cmdlets/Latex/SaveOfficeLatexCommand.cs | 6 + .../AddOfficeOpenDocumentHeadingCommand.cs | 39 + .../AddOfficeOpenDocumentParagraphCommand.cs | 34 + .../AddOfficeOpenDocumentSheetCommand.cs | 45 + .../AddOfficeOpenDocumentSlideCommand.cs | 45 + .../AddOfficeOpenDocumentTextBoxCommand.cs | 43 + .../ConvertFromOfficeOpenDocumentCommand.cs | 6 + .../ConvertToOfficeOpenDocumentCommand.cs | 6 + ...ewOfficeExcelOpenDocumentOptionsCommand.cs | 38 + .../NewOfficeOpenDocumentCommand.cs | 58 +- ...icePowerPointOpenDocumentOptionsCommand.cs | 45 + ...NewOfficeWordOpenDocumentOptionsCommand.cs | 33 + .../SetOfficeOpenDocumentCellCommand.cs | 63 + .../Pdf/CompareOfficePdfVisualCommand.cs | 3 +- .../Pdf/ExportOfficeDocumentPdfCommand.cs | 28 +- .../Pdf/ExportOfficePdfImageCommand.cs | 9 +- .../ExportOfficePdfLayoutOverlayCommand.cs | 14 +- .../Cmdlets/Pdf/NewOfficePdfCommand.cs | 6 +- .../Pdf/NewOfficePdfImageOptionsCommand.cs | 27 + ...OfficePdfVisualComparisonOptionsCommand.cs | 50 + .../Pdf/RemoveOfficePdfAnnotationCommand.cs | 7 +- .../ExportOfficePowerPointImageCommand.cs | 8 +- ...OfficePdfPowerPointImportOptionsCommand.cs | 89 + .../PowerPoint/NewOfficePowerPointCommand.cs | 6 +- .../NewOfficePowerPointImageOptionsCommand.cs | 55 + .../GetOfficeDocumentHierarchyCommand.cs | 3 +- .../NewOfficeReaderHierarchyOptionsCommand.cs | 48 + .../Visio/ExportOfficeVisioImageCommand.cs | 8 +- .../Cmdlets/Visio/NewOfficeVisioCommand.cs | 6 +- .../NewOfficeVisioImageOptionsCommand.cs | 49 + .../Cmdlets/Word/AddOfficeWordChartCommand.cs | 2 +- .../Word/CompareOfficeWordDocumentCommand.cs | 6 + .../Word/ExportOfficeWordImageCommand.cs | 54 +- .../Cmdlets/Word/GetOfficeWordCommand.cs | 21 +- .../NewOfficePdfWordImportOptionsCommand.cs | 100 + .../Cmdlets/Word/NewOfficeWordCommand.cs | 5 +- .../NewOfficeWordComparisonOptionsCommand.cs | 112 + .../Word/NewOfficeWordImageOptionsCommand.cs | 34 + .../NewOfficeWordRevisionFilterCommand.cs | 66 + .../Word/ResolveOfficeWordRevisionCommand.cs | 3 +- .../OpenDocument/OpenDocumentDslContext.cs | 73 + Tests/ExampleScripts.Tests.ps1 | 8 +- Tests/ExcelDsl.Tests.ps1 | 3 +- Tests/ExcelImageExport.Tests.ps1 | 4 +- Tests/OfficeIMONextSupport.Tests.ps1 | 133 +- Tests/PublicApiConsistency.Tests.ps1 | 98 + Tests/Visio.Tests.ps1 | 2 +- Tests/WordDsl.Tests.ps1 | 3 +- .../project-docs/docs/command-families.md | 18 +- .../project-docs/docs/object-workflows.md | 2 + .../project-docs/docs/open-text-formats.md | 26 +- Website/content/project-docs/docs/overview.md | 8 +- .../apidocs/powershell/PSWriteOffice-help.xml | 19660 ++++++++++++---- .../apidocs/powershell/PSWriteOffice.psd1 | 2 +- .../apidocs/powershell/command-metadata.json | 300 +- .../Recipe-Mailozaurr-PdfDelivery.ps1 | 34 + .../Recipe-PSEventViewer-OfficeReport.ps1 | 48 + .../apidocs/powershell/examples/README.md | 4 +- .../documentation/command-catalog.json | 2 +- 145 files changed, 41202 insertions(+), 8586 deletions(-) create mode 100644 Docs/Add-OfficeOpenDocumentHeading.md create mode 100644 Docs/Add-OfficeOpenDocumentParagraph.md create mode 100644 Docs/Add-OfficeOpenDocumentSheet.md create mode 100644 Docs/Add-OfficeOpenDocumentSlide.md create mode 100644 Docs/Add-OfficeOpenDocumentTextBox.md create mode 100644 Docs/New-OfficeEmailMailboxReaderOptions.md create mode 100644 Docs/New-OfficeEmailMailboxWriterOptions.md create mode 100644 Docs/New-OfficeEmailReaderOptions.md create mode 100644 Docs/New-OfficeEmailStoreReaderOptions.md create mode 100644 Docs/New-OfficeEmailWriterOptions.md create mode 100644 Docs/New-OfficeExcelImageOptions.md create mode 100644 Docs/New-OfficeExcelOpenDocumentOptions.md create mode 100644 Docs/New-OfficeExcelWorkbookImageOptions.md create mode 100644 Docs/New-OfficeHtmlConversionOptions.md create mode 100644 Docs/New-OfficeHtmlRenderOptions.md create mode 100644 Docs/New-OfficePdfExcelImportOptions.md create mode 100644 Docs/New-OfficePdfImageOptions.md create mode 100644 Docs/New-OfficePdfPowerPointImportOptions.md create mode 100644 Docs/New-OfficePdfVisualComparisonOptions.md create mode 100644 Docs/New-OfficePdfWordImportOptions.md create mode 100644 Docs/New-OfficePowerPointImageOptions.md create mode 100644 Docs/New-OfficePowerPointOpenDocumentOptions.md create mode 100644 Docs/New-OfficeReaderHierarchyOptions.md create mode 100644 Docs/New-OfficeVisioImageOptions.md create mode 100644 Docs/New-OfficeWordComparisonOptions.md create mode 100644 Docs/New-OfficeWordImageOptions.md create mode 100644 Docs/New-OfficeWordOpenDocumentOptions.md create mode 100644 Docs/New-OfficeWordRevisionFilter.md create mode 100644 Docs/Set-OfficeOpenDocumentCell.md create mode 100644 Examples/Integrations/Recipe-Mailozaurr-PdfDelivery.ps1 create mode 100644 Examples/Integrations/Recipe-PSEventViewer-OfficeReport.ps1 create mode 100644 Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailMailboxReaderOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailMailboxWriterOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailReaderOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailStoreReaderOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailWriterOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelImageOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelWorkbookImageOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/Excel/NewOfficePdfExcelImportOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/Html/NewOfficeHtmlConversionOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/Html/NewOfficeHtmlRenderOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/Imaging/OfficeImageOptionsCommandBase.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentHeadingCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentParagraphCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentSheetCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentSlideCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentTextBoxCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficeExcelOpenDocumentOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficePowerPointOpenDocumentOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficeWordOpenDocumentOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/OpenDocument/SetOfficeOpenDocumentCellCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/Pdf/NewOfficePdfImageOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/Pdf/NewOfficePdfVisualComparisonOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePdfPowerPointImportOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointImageOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/Reader/NewOfficeReaderHierarchyOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/Visio/NewOfficeVisioImageOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/Word/NewOfficePdfWordImportOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordComparisonOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordImageOptionsCommand.cs create mode 100644 Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordRevisionFilterCommand.cs create mode 100644 Sources/PSWriteOffice/Services/OpenDocument/OpenDocumentDslContext.cs create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Integrations/Recipe-Mailozaurr-PdfDelivery.ps1 create mode 100644 WebsiteArtifacts/apidocs/powershell/examples/Integrations/Recipe-PSEventViewer-OfficeReport.ps1 diff --git a/Build/Export-WebsiteDocumentationCatalog.ps1 b/Build/Export-WebsiteDocumentationCatalog.ps1 index 2d439086..ab43c3bb 100644 --- a/Build/Export-WebsiteDocumentationCatalog.ps1 +++ b/Build/Export-WebsiteDocumentationCatalog.ps1 @@ -54,7 +54,7 @@ $familyDefinitions = @( id = 'reader'; title = 'Reader and extraction'; description = 'Detect formats and extract normalized documents, chunks, tables, visuals, assets, and ingest results.' docs = 'reader'; api = '/api/powershell/'; examples = 'https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Reader' samples = @('New-OfficeDocumentReader', 'Get-OfficeDocumentChunk', 'Get-OfficeDocumentTable', 'Search-OfficeDocument') - match = { param($name) $name -match 'OfficeDocument' -and $name -notin 'Get-OfficeDocumentPageMarkdown', 'Export-OfficeDocumentPdf' } + match = { param($name) ($name -match 'OfficeDocument' -and $name -notin 'Get-OfficeDocumentPageMarkdown', 'Export-OfficeDocumentPdf') -or $name -match 'OfficeReader' } } [ordered]@{ id = 'confluence'; title = 'Confluence Cloud'; description = 'Plan and publish pages, preserve managed sections, and transfer attachments through OfficeIMO.Confluence.' @@ -87,9 +87,9 @@ $familyDefinitions = @( match = { param($name) $name -match 'OfficeCsv' } } [ordered]@{ - id = 'open-document'; title = 'OpenDocument'; description = 'Create, read, and save ODT, ODS, and ODP workflows.' + id = 'open-document'; title = 'OpenDocument'; description = 'Compose, read, convert, and save ODT, ODS, and ODP workflows.' docs = 'open-text-formats'; api = '/api/powershell/'; examples = 'https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples' - samples = @('New-OfficeOpenDocument', 'Get-OfficeOpenDocument', 'Save-OfficeOpenDocument') + samples = @('New-OfficeOpenDocument', 'Add-OfficeOpenDocumentParagraph', 'Set-OfficeOpenDocumentCell', 'Save-OfficeOpenDocument') match = { param($name) $name -match 'OfficeOpenDocument' } } [ordered]@{ @@ -114,7 +114,7 @@ $familyDefinitions = @( id = 'html'; title = 'HTML assets'; description = 'Export images and review surfaces used by document-to-HTML workflows.' docs = 'open-text-formats'; api = '/api/powershell/'; examples = 'https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples' samples = @('Export-OfficeHtmlImage') - match = { param($name) $name -eq 'Export-OfficeHtmlImage' } + match = { param($name) $name -match 'OfficeHtml' } } [ordered]@{ id = 'visuals'; title = 'Cross-format visuals'; description = 'Convert reusable visual artifacts for Word, Excel, PowerPoint, and PDF placement.' diff --git a/Docs/Add-OfficeOpenDocumentHeading.md b/Docs/Add-OfficeOpenDocumentHeading.md new file mode 100644 index 00000000..7ffc9030 --- /dev/null +++ b/Docs/Add-OfficeOpenDocumentHeading.md @@ -0,0 +1,107 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# Add-OfficeOpenDocumentHeading +## SYNOPSIS +Adds a heading to an OpenDocument text document. + +## SYNTAX +### __AllParameterSets +```powershell +Add-OfficeOpenDocumentHeading [-Text] [-Document ] [-Level ] [-PassThru] [] +``` + +## DESCRIPTION +Adds a heading to an OpenDocument text document. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> Add-OfficeOpenDocumentHeading -Text 'Results' -Level 2 +``` + + +## PARAMETERS + +### -Document +OpenDocument text document. Omit inside New-OfficeOpenDocument -Content. + +```yaml +Type: OdtDocument +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Level +Heading level from 1 through 10. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PassThru +Emit the created heading paragraph. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Text +Heading text. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `OfficeIMO.OpenDocument.OdtDocument` + +## OUTPUTS + +- `OfficeIMO.OpenDocument.OdtParagraph` + +## RELATED LINKS + +- None diff --git a/Docs/Add-OfficeOpenDocumentParagraph.md b/Docs/Add-OfficeOpenDocumentParagraph.md new file mode 100644 index 00000000..714206bf --- /dev/null +++ b/Docs/Add-OfficeOpenDocumentParagraph.md @@ -0,0 +1,91 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# Add-OfficeOpenDocumentParagraph +## SYNOPSIS +Adds a paragraph to an OpenDocument text document. + +## SYNTAX +### __AllParameterSets +```powershell +Add-OfficeOpenDocumentParagraph [-Text] [-Document ] [-PassThru] [] +``` + +## DESCRIPTION +Adds a paragraph to an OpenDocument text document. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> New-OfficeOpenDocument -Kind Text -Path .\Report.odt -Content { Add-OfficeOpenDocumentParagraph -Text 'Generated by PSWriteOffice' } +``` + + +## PARAMETERS + +### -Document +OpenDocument text document. Omit inside New-OfficeOpenDocument -Content. + +```yaml +Type: OdtDocument +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -PassThru +Emit the created paragraph. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Text +Paragraph text. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `OfficeIMO.OpenDocument.OdtDocument` + +## OUTPUTS + +- `OfficeIMO.OpenDocument.OdtParagraph` + +## RELATED LINKS + +- None diff --git a/Docs/Add-OfficeOpenDocumentSheet.md b/Docs/Add-OfficeOpenDocumentSheet.md new file mode 100644 index 00000000..46ee7a96 --- /dev/null +++ b/Docs/Add-OfficeOpenDocumentSheet.md @@ -0,0 +1,109 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# Add-OfficeOpenDocumentSheet +## SYNOPSIS +Adds a worksheet to an OpenDocument spreadsheet and optionally runs nested cell content. + +## SYNTAX +### __AllParameterSets +```powershell +Add-OfficeOpenDocumentSheet [-Name] [[-Content] ] [-Document ] [-PassThru] [] +``` + +## DESCRIPTION +Adds a worksheet to an OpenDocument spreadsheet and optionally runs nested cell content. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> Add-OfficeOpenDocumentSheet -Name 'Data' -Content { + Set-OfficeOpenDocumentCell -Row 0 -Column 0 -Value 'Status' +} +``` + + +## PARAMETERS + +### -Content +Nested cell commands that use this worksheet as their current target. + +```yaml +Type: ScriptBlock +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Document +OpenDocument spreadsheet. Omit inside New-OfficeOpenDocument -Content. + +```yaml +Type: OdsDocument +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Name +Worksheet name. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PassThru +Emit the created worksheet. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `OfficeIMO.OpenDocument.OdsDocument` + +## OUTPUTS + +- `OfficeIMO.OpenDocument.OdsSheet` + +## RELATED LINKS + +- None diff --git a/Docs/Add-OfficeOpenDocumentSlide.md b/Docs/Add-OfficeOpenDocumentSlide.md new file mode 100644 index 00000000..e9aa1a82 --- /dev/null +++ b/Docs/Add-OfficeOpenDocumentSlide.md @@ -0,0 +1,109 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# Add-OfficeOpenDocumentSlide +## SYNOPSIS +Adds a slide to an OpenDocument presentation and optionally runs nested slide content. + +## SYNTAX +### __AllParameterSets +```powershell +Add-OfficeOpenDocumentSlide [[-Name] ] [[-Content] ] [-Document ] [-PassThru] [] +``` + +## DESCRIPTION +Adds a slide to an OpenDocument presentation and optionally runs nested slide content. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> Add-OfficeOpenDocumentSlide -Name 'Summary' -Content { + Add-OfficeOpenDocumentTextBox -Text 'Quarterly summary' -X 2 -Y 2 -Width 20 -Height 3 +} +``` + + +## PARAMETERS + +### -Content +Nested slide commands that use this slide as their current target. + +```yaml +Type: ScriptBlock +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: 1 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Document +OpenDocument presentation. Omit inside New-OfficeOpenDocument -Content. + +```yaml +Type: OdpPresentation +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Name +Optional unique slide name. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PassThru +Emit the created slide. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `OfficeIMO.OpenDocument.OdpPresentation` + +## OUTPUTS + +- `OfficeIMO.OpenDocument.OdpSlide` + +## RELATED LINKS + +- None diff --git a/Docs/Add-OfficeOpenDocumentTextBox.md b/Docs/Add-OfficeOpenDocumentTextBox.md new file mode 100644 index 00000000..25454363 --- /dev/null +++ b/Docs/Add-OfficeOpenDocumentTextBox.md @@ -0,0 +1,171 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# Add-OfficeOpenDocumentTextBox +## SYNOPSIS +Adds a positioned text box to an OpenDocument presentation slide. + +## SYNTAX +### __AllParameterSets +```powershell +Add-OfficeOpenDocumentTextBox [-Text] [-Slide ] [-X ] [-Y ] [-Width ] [-Height ] [-Name ] [-PassThru] [] +``` + +## DESCRIPTION +Adds a positioned text box to an OpenDocument presentation slide. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> Add-OfficeOpenDocumentTextBox -Text 'Approved' -X 18 -Y 12 -Width 6 -Height 2 +``` + + +## PARAMETERS + +### -Height +Height in centimeters. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Name +Optional shape name. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PassThru +Emit the created text box. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Slide +Slide target. Omit inside Add-OfficeOpenDocumentSlide -Content. + +```yaml +Type: OdpSlide +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Text +Text box content. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Width +Width in centimeters. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -X +Horizontal position in centimeters. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Y +Vertical position in centimeters. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `OfficeIMO.OpenDocument.OdpSlide` + +## OUTPUTS + +- `OfficeIMO.OpenDocument.OdpTextBox` + +## RELATED LINKS + +- None diff --git a/Docs/Add-OfficeWordChart.md b/Docs/Add-OfficeWordChart.md index 7a67427a..ba0495e2 100644 --- a/Docs/Add-OfficeWordChart.md +++ b/Docs/Add-OfficeWordChart.md @@ -52,7 +52,7 @@ PS> $trend = @( [pscustomobject]@{ Month = 'Feb'; Sales = 12; Profit = 5 } [pscustomobject]@{ Month = 'Mar'; Sales = 15; Profit = 7 } ) -$doc = New-OfficeWord -Path .\Trend.docx -PassThru +$doc = New-OfficeWord -Path .\Trend.docx -NoSave Add-OfficeWordChart -Document $doc -Type Line -InputObject $trend -CategoryProperty Month -SeriesProperty Sales, Profit -Legend -Title 'Quarter trend' Save-OfficeWord -Document $doc ``` diff --git a/Docs/Compare-OfficePdfVisual.md b/Docs/Compare-OfficePdfVisual.md index 78c4192e..46b72432 100644 --- a/Docs/Compare-OfficePdfVisual.md +++ b/Docs/Compare-OfficePdfVisual.md @@ -21,7 +21,8 @@ Compares rendered PDF pages and returns pixel-level review artifacts. ### EXAMPLE 1 ```powershell -PS> $options = [OfficeIMO.Pdf.PdfVisualComparisonOptions]::new(); $options.AllowedDifferenceRatio = 0.001; Compare-OfficePdfVisual -ReferencePath .\Expected.pdf -DifferencePath .\Actual.pdf -PageRange '1-3' -Options $options +PS> $options = New-OfficePdfVisualComparisonOptions -AllowedDifferenceRatio 0.001 -ChannelTolerance 2 +Compare-OfficePdfVisual -ReferencePath .\Expected.pdf -DifferencePath .\Actual.pdf -PageRange '1-3' -Options $options ``` Returns per-page difference ratios, images, and diagnostics. diff --git a/Docs/Compare-OfficeWordDocument.md b/Docs/Compare-OfficeWordDocument.md index 8e21f096..86ce8846 100644 --- a/Docs/Compare-OfficeWordDocument.md +++ b/Docs/Compare-OfficeWordDocument.md @@ -26,6 +26,13 @@ PS> $result = Compare-OfficeWordDocument -ReferencePath .\Before.docx -Differenc Returns deterministic findings and saves a Word document containing revision marks. +### EXAMPLE 2 +```powershell +PS> $options = New-OfficeWordComparisonOptions -IgnoreWhitespace -CompareVolatileMetadata:$false +Compare-OfficeWordDocument -ReferencePath .\Before.docx -DifferencePath .\After.docx -Options $options +``` + + ## PARAMETERS ### -DifferencePath diff --git a/Docs/ConvertFrom-OfficeOpenDocument.md b/Docs/ConvertFrom-OfficeOpenDocument.md index 01b0c853..38605c7c 100644 --- a/Docs/ConvertFrom-OfficeOpenDocument.md +++ b/Docs/ConvertFrom-OfficeOpenDocument.md @@ -21,7 +21,8 @@ Converts native ODT, ODS, or ODP content to Word, Excel, or PowerPoint with fide ### EXAMPLE 1 ```powershell -ConvertFrom-OfficeOpenDocument -Path 'C:\Path' +PS> $options = New-OfficeExcelOpenDocumentOptions -IncludeBasicStyles -MaximumExpandedCells 250000 +ConvertFrom-OfficeOpenDocument -Path .\Status.ods -OutputPath .\Status.xlsx -ExcelOptions $options ``` diff --git a/Docs/ConvertTo-OfficeOpenDocument.md b/Docs/ConvertTo-OfficeOpenDocument.md index 8e732bfa..00d057cb 100644 --- a/Docs/ConvertTo-OfficeOpenDocument.md +++ b/Docs/ConvertTo-OfficeOpenDocument.md @@ -36,19 +36,8 @@ Converts Word, Excel, or PowerPoint content to native OpenDocument with fidelity ### EXAMPLE 1 ```powershell -ConvertTo-OfficeOpenDocument -Path 'C:\Path' -``` - - -### EXAMPLE 2 -```powershell -ConvertTo-OfficeOpenDocument -ExcelDocument 'Value' -``` - - -### EXAMPLE 3 -```powershell -ConvertTo-OfficeOpenDocument -PowerPointPresentation 'Value' +PS> $options = New-OfficeWordOpenDocumentOptions -IncludeImages -IncludeHeadersAndFooters +ConvertTo-OfficeOpenDocument -Path .\Report.docx -OutputPath .\Report.odt -WordOptions $options -FailOnLoss ``` diff --git a/Docs/Export-OfficeDocumentPdf.md b/Docs/Export-OfficeDocumentPdf.md index 4a75b18d..0eeca5a1 100644 --- a/Docs/Export-OfficeDocumentPdf.md +++ b/Docs/Export-OfficeDocumentPdf.md @@ -36,10 +36,18 @@ PS> Export-OfficeDocumentPdf -InputPath .\Report.docx -Path .\Report.pdf -PassTh ``` +### EXAMPLE 3 +```powershell +PS> $options = New-OfficeMarkdownPdfOptions -Title 'Service report' -IncludeLocalImages -BaseDirectory .\Assets +Export-OfficeDocumentPdf -InputPath .\Report.md -Path .\Report.pdf -MarkdownOptions $options +``` + +The New-Office*PdfOptions commands build every format-specific options object; no hashtable or .NET constructor is required. + ## PARAMETERS ### -Document -Live Word, Excel, PowerPoint, Markdown, or RTF document to export. +Live Word, Excel, PowerPoint, Markdown, or RTF document to export. Saved FileInfo and path strings from the pipeline are opened automatically. ```yaml Type: Object @@ -76,13 +84,13 @@ Source .docx, .xlsx, .pptx, .md, .markdown, or .rtf file. ```yaml Type: String Parameter Sets: Path -Aliases: SourcePath +Aliases: SourcePath, FullName Possible values: Required: True Position: 0 Default value: None -Accept pipeline input: False +Accept pipeline input: True (ByPropertyName) Accept wildcard characters: False ``` @@ -252,6 +260,7 @@ This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable ## INPUTS - `System.Object` +- `System.String` ## OUTPUTS diff --git a/Docs/Export-OfficeExcelChartImage.md b/Docs/Export-OfficeExcelChartImage.md index fcdfe438..0af5828f 100644 --- a/Docs/Export-OfficeExcelChartImage.md +++ b/Docs/Export-OfficeExcelChartImage.md @@ -11,12 +11,12 @@ Exports one named worksheet chart as an image file. ## SYNTAX ### Path (Default) ```powershell -Export-OfficeExcelChartImage [-Path] [[-OutputPath] ] -WorksheetName -ChartName [-Format ] [-Options ] [-Force] [-WhatIf] [-Confirm] [] +Export-OfficeExcelChartImage [-Path] [[-OutputPath] ] -WorksheetName -ChartName [-Format ] [-Options ] [-Force] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Document ```powershell -Export-OfficeExcelChartImage [[-OutputPath] ] -Document -WorksheetName -ChartName [-Format ] [-Options ] [-Force] [-WhatIf] [-Confirm] [] +Export-OfficeExcelChartImage [[-OutputPath] ] -Document -WorksheetName -ChartName [-Format ] [-Options ] [-Force] [-PassThru] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -128,6 +128,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the structured image export result when a destination path is used. + +```yaml +Type: SwitchParameter +Parameter Sets: Path, Document +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Path Path to the workbook. diff --git a/Docs/Export-OfficeExcelImage.md b/Docs/Export-OfficeExcelImage.md index cebd7a65..6ed7cd43 100644 --- a/Docs/Export-OfficeExcelImage.md +++ b/Docs/Export-OfficeExcelImage.md @@ -11,12 +11,12 @@ Exports workbook sheets as PNG or SVG images with one result per sheet. ## SYNTAX ### Path (Default) ```powershell -Export-OfficeExcelImage [-Path] [-OutputPath] [-Format ] [-Options ] [-WhatIf] [-Confirm] [] +Export-OfficeExcelImage [-Path] [-OutputPath] [-Format ] [-Options ] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Document ```powershell -Export-OfficeExcelImage [-OutputPath] -Document [-Format ] [-Options ] [-WhatIf] [-Confirm] [] +Export-OfficeExcelImage [-OutputPath] -Document [-Format ] [-Options ] [-PassThru] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -29,7 +29,7 @@ Exports workbook sheets as PNG or SVG images with one result per sheet. PS> Export-OfficeExcelImage -Path .\Report.xlsx -OutputPath .\Images ``` -Writes one image per selected sheet and returns OfficeImageExportResult objects. +Writes one image per selected sheet. Add -PassThru to receive the structured export results. ## PARAMETERS @@ -97,6 +97,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit one structured image export result per saved sheet. + +```yaml +Type: SwitchParameter +Parameter Sets: Path, Document +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Path Path to the workbook. diff --git a/Docs/Export-OfficeExcelRangeImage.md b/Docs/Export-OfficeExcelRangeImage.md index baaa746b..195109d8 100644 --- a/Docs/Export-OfficeExcelRangeImage.md +++ b/Docs/Export-OfficeExcelRangeImage.md @@ -11,12 +11,12 @@ Exports one worksheet range as an image file. ## SYNTAX ### Path (Default) ```powershell -Export-OfficeExcelRangeImage [-Path] [[-OutputPath] ] -WorksheetName -Range [-Format ] [-Options ] [-Force] [-WhatIf] [-Confirm] [] +Export-OfficeExcelRangeImage [-Path] [[-OutputPath] ] -WorksheetName -Range [-Format ] [-Options ] [-Force] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Document ```powershell -Export-OfficeExcelRangeImage [[-OutputPath] ] -Document -WorksheetName -Range [-Format ] [-Options ] [-Force] [-WhatIf] [-Confirm] [] +Export-OfficeExcelRangeImage [[-OutputPath] ] -Document -WorksheetName -Range [-Format ] [-Options ] [-Force] [-PassThru] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -112,6 +112,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the structured image export result when a destination path is used. + +```yaml +Type: SwitchParameter +Parameter Sets: Path, Document +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Path Path to the workbook. diff --git a/Docs/Export-OfficeHtmlImage.md b/Docs/Export-OfficeHtmlImage.md index 92f38004..cb1118fa 100644 --- a/Docs/Export-OfficeHtmlImage.md +++ b/Docs/Export-OfficeHtmlImage.md @@ -11,17 +11,17 @@ Exports an HTML render surface as PNG or SVG with structured diagnostics. ## SYNTAX ### Path (Default) ```powershell -Export-OfficeHtmlImage [-Path] [-OutputPath] [-Format ] [-PageIndex ] [-DocumentOptions ] [-RenderOptions ] [-WhatIf] [-Confirm] [] +Export-OfficeHtmlImage [-Path] [-OutputPath] [-Format ] [-PageIndex ] [-DocumentOptions ] [-RenderOptions ] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Html ```powershell -Export-OfficeHtmlImage [-OutputPath] -Html [-Format ] [-PageIndex ] [-DocumentOptions ] [-RenderOptions ] [-WhatIf] [-Confirm] [] +Export-OfficeHtmlImage [-OutputPath] -Html [-Format ] [-PageIndex ] [-DocumentOptions ] [-RenderOptions ] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Document ```powershell -Export-OfficeHtmlImage [-OutputPath] -Document [-Format ] [-PageIndex ] [-DocumentOptions ] [-RenderOptions ] [-WhatIf] [-Confirm] [] +Export-OfficeHtmlImage [-OutputPath] -Document [-Format ] [-PageIndex ] [-DocumentOptions ] [-RenderOptions ] [-PassThru] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -34,7 +34,7 @@ Exports an HTML render surface as PNG or SVG with structured diagnostics. PS> Export-OfficeHtmlImage -Path .\Report.html -OutputPath .\Report.png ``` -Uses the dependency-free OfficeIMO HTML renderer and returns OfficeImageExportResult. +Uses the dependency-free OfficeIMO HTML renderer. Add -PassThru to receive the structured export result. ## PARAMETERS @@ -103,7 +103,7 @@ Accept wildcard characters: False ``` ### -OutputPath -Destination PNG or SVG path. +Destination PNG, JPEG, TIFF, SVG, or WebP path. ```yaml Type: String @@ -134,6 +134,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the structured image export result. + +```yaml +Type: SwitchParameter +Parameter Sets: Path, Html, Document +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Path Path to an HTML file. diff --git a/Docs/Export-OfficePdfImage.md b/Docs/Export-OfficePdfImage.md index 8035df00..29f451f8 100644 --- a/Docs/Export-OfficePdfImage.md +++ b/Docs/Export-OfficePdfImage.md @@ -11,7 +11,7 @@ Exports PDF pages through the shared PNG, JPEG, TIFF, SVG, or WebP image contrac ## SYNTAX ### __AllParameterSets ```powershell -Export-OfficePdfImage [-Path] [-OutputPath] [-PageRange ] [-Format ] [-Options ] [-ReadOptions ] [-Password ] [-IgnorePermissionRestrictions] [-WhatIf] [-Confirm] [] +Export-OfficePdfImage [-Path] [-OutputPath] [-PageRange ] [-Format ] [-Options ] [-ReadOptions ] [-Password ] [-IgnorePermissionRestrictions] [-PassThru] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -24,7 +24,7 @@ Exports PDF pages through the shared PNG, JPEG, TIFF, SVG, or WebP image contrac PS> Export-OfficePdfImage -Path .\Report.pdf -OutputPath .\Pages -PageRange '1-3,5' ``` -Writes the selected pages and returns normalized image results with rendering diagnostics. +Writes the selected pages. Add -PassThru to receive normalized image results with rendering diagnostics. ## PARAMETERS @@ -108,6 +108,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit one structured image export result per saved page. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Password Password used to authenticate an encrypted PDF. diff --git a/Docs/Export-OfficePdfLayoutOverlay.md b/Docs/Export-OfficePdfLayoutOverlay.md index e345f7be..8e08c5bf 100644 --- a/Docs/Export-OfficePdfLayoutOverlay.md +++ b/Docs/Export-OfficePdfLayoutOverlay.md @@ -11,7 +11,7 @@ Exports PDF word, line, region, and reading-order diagnostics as PNG or SVG. ## SYNTAX ### __AllParameterSets ```powershell -Export-OfficePdfLayoutOverlay [-Path] [-OutputPath] [-Page ] [-Format ] [-Scale ] [-Options ] [-LayoutOptions ] [-ReadOptions ] [-Password ] [-IgnorePermissionRestrictions] [-WhatIf] [-Confirm] [] +Export-OfficePdfLayoutOverlay [-Path] [-OutputPath] [-Page ] [-Format ] [-Scale ] [-Options ] [-LayoutOptions ] [-ReadOptions ] [-Password ] [-IgnorePermissionRestrictions] [-PassThru] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -21,7 +21,7 @@ Exports PDF word, line, region, and reading-order diagnostics as PNG or SVG. ### EXAMPLE 1 ```powershell -Export-OfficePdfLayoutOverlay -Path 'C:\Path' +PS> $result = Export-OfficePdfLayoutOverlay -Path .\Report.pdf -OutputPath .\Report-layout.svg -Page 1 -Format Svg -PassThru ``` @@ -123,6 +123,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the structured image export result. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Password Password used to authenticate an encrypted PDF. diff --git a/Docs/Export-OfficePowerPointImage.md b/Docs/Export-OfficePowerPointImage.md index f6b84eda..ae47f7f7 100644 --- a/Docs/Export-OfficePowerPointImage.md +++ b/Docs/Export-OfficePowerPointImage.md @@ -11,12 +11,12 @@ Exports presentation slides as PNG or SVG images with one result per slide. ## SYNTAX ### Path (Default) ```powershell -Export-OfficePowerPointImage [-Path] [-OutputPath] [-Format ] [-Options ] [-WhatIf] [-Confirm] [] +Export-OfficePowerPointImage [-Path] [-OutputPath] [-Format ] [-Options ] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Presentation ```powershell -Export-OfficePowerPointImage [-OutputPath] -Presentation [-Format ] [-Options ] [-WhatIf] [-Confirm] [] +Export-OfficePowerPointImage [-OutputPath] -Presentation [-Format ] [-Options ] [-PassThru] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -29,7 +29,7 @@ Exports presentation slides as PNG or SVG images with one result per slide. PS> Export-OfficePowerPointImage -Path .\Deck.pptx -OutputPath .\Slides -Format Svg ``` -Writes one image per selected slide and returns OfficeImageExportResult objects. +Writes one image per selected slide. Add -PassThru to receive the structured export results. ## PARAMETERS @@ -81,6 +81,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit one structured image export result per saved slide. + +```yaml +Type: SwitchParameter +Parameter Sets: Path, Presentation +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Path Path to the presentation. diff --git a/Docs/Export-OfficeVisioImage.md b/Docs/Export-OfficeVisioImage.md index bd692713..6ce9a38a 100644 --- a/Docs/Export-OfficeVisioImage.md +++ b/Docs/Export-OfficeVisioImage.md @@ -11,12 +11,12 @@ Exports selected Visio pages through the format-neutral OfficeIMO image pipeline ## SYNTAX ### Path (Default) ```powershell -Export-OfficeVisioImage [-Path] [-OutputPath] [-Format ] [-Options ] [-WhatIf] [-Confirm] [] +Export-OfficeVisioImage [-Path] [-OutputPath] [-Format ] [-Options ] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Document ```powershell -Export-OfficeVisioImage [-OutputPath] -Document [-Format ] [-Options ] [-WhatIf] [-Confirm] [] +Export-OfficeVisioImage [-OutputPath] -Document [-Format ] [-Options ] [-PassThru] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -29,7 +29,7 @@ Exports selected Visio pages through the format-neutral OfficeIMO image pipeline PS> Export-OfficeVisioImage -Path .\diagram.vsdx -OutputPath .\Images -Format Png ``` -Writes one PNG per selected page and returns one result object per file. +Writes one PNG per selected page. Add -PassThru to receive one result object per file. ## PARAMETERS @@ -97,6 +97,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit one structured image export result per saved page. + +```yaml +Type: SwitchParameter +Parameter Sets: Path, Document +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Path Path to a Visio document. diff --git a/Docs/Export-OfficeWordImage.md b/Docs/Export-OfficeWordImage.md index 3e48bcca..3f284d46 100644 --- a/Docs/Export-OfficeWordImage.md +++ b/Docs/Export-OfficeWordImage.md @@ -6,21 +6,21 @@ schema: 2.0.0 --- # Export-OfficeWordImage ## SYNOPSIS -Exports a Word page as PNG or SVG with structured image diagnostics. +Exports one or more Word pages through the format-neutral OfficeIMO image pipeline. ## SYNTAX ### Path (Default) ```powershell -Export-OfficeWordImage [-Path] [-OutputPath] [-Format ] [-Options ] [-WhatIf] [-Confirm] [] +Export-OfficeWordImage [-Path] [-OutputPath] [-Format ] [-Options ] [-AllPages] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Document ```powershell -Export-OfficeWordImage [-OutputPath] -Document [-Format ] [-Options ] [-WhatIf] [-Confirm] [] +Export-OfficeWordImage [-OutputPath] -Document [-Format ] [-Options ] [-AllPages] [-PassThru] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION -Exports a Word page as PNG or SVG with structured image diagnostics. +Exports one or more Word pages through the format-neutral OfficeIMO image pipeline. ## EXAMPLES @@ -29,10 +29,33 @@ Exports a Word page as PNG or SVG with structured image diagnostics. PS> Export-OfficeWordImage -Path .\Report.docx -OutputPath .\Report.svg -Format Svg ``` -Returns the OfficeIMO image export result after writing the image. +Writes the image quietly. Add -PassThru to receive the structured export result. + +### EXAMPLE 2 +```powershell +PS> Export-OfficeWordImage -Path .\Report.docx -OutputPath .\Pages -Format Jpeg -AllPages +``` + +For a bounded batch, create options with New-OfficeWordImageOptions -PageIndex 0 -PageCount 2. ## PARAMETERS +### -AllPages +Export every estimated page to the destination folder. + +```yaml +Type: SwitchParameter +Parameter Sets: Path, Document +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Document Open Word document instance. @@ -82,7 +105,7 @@ Accept wildcard characters: False ``` ### -OutputPath -Destination PNG or SVG path. +Destination image file, or destination folder when -AllPages or Options.PageCount requests a batch. ```yaml Type: String @@ -97,6 +120,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -PassThru +Emit the structured image export result. + +```yaml +Type: SwitchParameter +Parameter Sets: Path, Document +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Path Path to the Word document. diff --git a/Docs/Generated/PSWriteOffice-help.xml b/Docs/Generated/PSWriteOffice-help.xml index de8f511e..6c4a9165 100644 --- a/Docs/Generated/PSWriteOffice-help.xml +++ b/Docs/Generated/PSWriteOffice-help.xml @@ -24932,6 +24932,822 @@ so they do not emit a live table wrapper. + + + Add-OfficeOpenDocumentHeading + Add + OfficeOpenDocumentHeading + + Adds a heading to an OpenDocument text document. + + + + Adds a heading to an OpenDocument text document. + + + + Add-OfficeOpenDocumentHeading + + Document + + OpenDocument text document. Omit inside New-OfficeOpenDocument -Content. + + OdtDocument + + OdtDocument + + + None + + + Level + + Heading level from 1 through 10. + + Int32 + + Int32 + + + None + + + PassThru + + Emit the created heading paragraph. + + SwitchParameter + + SwitchParameter + + + None + + + Text + + Heading text. + + String + + String + + + None + + + + + + Document + + OpenDocument text document. Omit inside New-OfficeOpenDocument -Content. + + OdtDocument + + OdtDocument + + + None + + + Level + + Heading level from 1 through 10. + + Int32 + + Int32 + + + None + + + PassThru + + Emit the created heading paragraph. + + SwitchParameter + + SwitchParameter + + + None + + + Text + + Heading text. + + String + + String + + + None + + + + + + OfficeIMO.OpenDocument.OdtDocument + + + + + + + OfficeIMO.OpenDocument.OdtParagraph + + + + + + + + + + + Add a level-two heading inside an OpenDocument DSL. + + PS> + + Add-OfficeOpenDocumentHeading -Text 'Results' -Level 2 + + + + + + + + + + Add-OfficeOpenDocumentParagraph + Add + OfficeOpenDocumentParagraph + + Adds a paragraph to an OpenDocument text document. + + + + Adds a paragraph to an OpenDocument text document. + + + + Add-OfficeOpenDocumentParagraph + + Document + + OpenDocument text document. Omit inside New-OfficeOpenDocument -Content. + + OdtDocument + + OdtDocument + + + None + + + PassThru + + Emit the created paragraph. + + SwitchParameter + + SwitchParameter + + + None + + + Text + + Paragraph text. + + String + + String + + + None + + + + + + Document + + OpenDocument text document. Omit inside New-OfficeOpenDocument -Content. + + OdtDocument + + OdtDocument + + + None + + + PassThru + + Emit the created paragraph. + + SwitchParameter + + SwitchParameter + + + None + + + Text + + Paragraph text. + + String + + String + + + None + + + + + + OfficeIMO.OpenDocument.OdtDocument + + + + + + + OfficeIMO.OpenDocument.OdtParagraph + + + + + + + + + + + Add body text in the OpenDocument DSL. + + PS> + + New-OfficeOpenDocument -Kind Text -Path .\Report.odt -Content { Add-OfficeOpenDocumentParagraph -Text 'Generated by PSWriteOffice' } + + + + + + + + + + Add-OfficeOpenDocumentSheet + Add + OfficeOpenDocumentSheet + + Adds a worksheet to an OpenDocument spreadsheet and optionally runs nested cell content. + + + + Adds a worksheet to an OpenDocument spreadsheet and optionally runs nested cell content. + + + + Add-OfficeOpenDocumentSheet + + Content + + Nested cell commands that use this worksheet as their current target. + + ScriptBlock + + ScriptBlock + + + None + + + Document + + OpenDocument spreadsheet. Omit inside New-OfficeOpenDocument -Content. + + OdsDocument + + OdsDocument + + + None + + + Name + + Worksheet name. + + String + + String + + + None + + + PassThru + + Emit the created worksheet. + + SwitchParameter + + SwitchParameter + + + None + + + + + + Content + + Nested cell commands that use this worksheet as their current target. + + ScriptBlock + + ScriptBlock + + + None + + + Document + + OpenDocument spreadsheet. Omit inside New-OfficeOpenDocument -Content. + + OdsDocument + + OdsDocument + + + None + + + Name + + Worksheet name. + + String + + String + + + None + + + PassThru + + Emit the created worksheet. + + SwitchParameter + + SwitchParameter + + + None + + + + + + OfficeIMO.OpenDocument.OdsDocument + + + + + + + OfficeIMO.OpenDocument.OdsSheet + + + + + + + + + + + Add a worksheet inside an OpenDocument DSL. + + PS> + + Add-OfficeOpenDocumentSheet -Name 'Data' -Content { + Set-OfficeOpenDocumentCell -Row 0 -Column 0 -Value 'Status' + } + + + + + + + + + + Add-OfficeOpenDocumentSlide + Add + OfficeOpenDocumentSlide + + Adds a slide to an OpenDocument presentation and optionally runs nested slide content. + + + + Adds a slide to an OpenDocument presentation and optionally runs nested slide content. + + + + Add-OfficeOpenDocumentSlide + + Content + + Nested slide commands that use this slide as their current target. + + ScriptBlock + + ScriptBlock + + + None + + + Document + + OpenDocument presentation. Omit inside New-OfficeOpenDocument -Content. + + OdpPresentation + + OdpPresentation + + + None + + + Name + + Optional unique slide name. + + String + + String + + + None + + + PassThru + + Emit the created slide. + + SwitchParameter + + SwitchParameter + + + None + + + + + + Content + + Nested slide commands that use this slide as their current target. + + ScriptBlock + + ScriptBlock + + + None + + + Document + + OpenDocument presentation. Omit inside New-OfficeOpenDocument -Content. + + OdpPresentation + + OdpPresentation + + + None + + + Name + + Optional unique slide name. + + String + + String + + + None + + + PassThru + + Emit the created slide. + + SwitchParameter + + SwitchParameter + + + None + + + + + + OfficeIMO.OpenDocument.OdpPresentation + + + + + + + OfficeIMO.OpenDocument.OdpSlide + + + + + + + + + + + Add a slide with positioned text. + + PS> + + Add-OfficeOpenDocumentSlide -Name 'Summary' -Content { + Add-OfficeOpenDocumentTextBox -Text 'Quarterly summary' -X 2 -Y 2 -Width 20 -Height 3 + } + + + + + + + + + + Add-OfficeOpenDocumentTextBox + Add + OfficeOpenDocumentTextBox + + Adds a positioned text box to an OpenDocument presentation slide. + + + + Adds a positioned text box to an OpenDocument presentation slide. + + + + Add-OfficeOpenDocumentTextBox + + Height + + Height in centimeters. + + Double + + Double + + + None + + + Name + + Optional shape name. + + String + + String + + + None + + + PassThru + + Emit the created text box. + + SwitchParameter + + SwitchParameter + + + None + + + Slide + + Slide target. Omit inside Add-OfficeOpenDocumentSlide -Content. + + OdpSlide + + OdpSlide + + + None + + + Text + + Text box content. + + String + + String + + + None + + + Width + + Width in centimeters. + + Double + + Double + + + None + + + X + + Horizontal position in centimeters. + + Double + + Double + + + None + + + Y + + Vertical position in centimeters. + + Double + + Double + + + None + + + + + + Height + + Height in centimeters. + + Double + + Double + + + None + + + Name + + Optional shape name. + + String + + String + + + None + + + PassThru + + Emit the created text box. + + SwitchParameter + + SwitchParameter + + + None + + + Slide + + Slide target. Omit inside Add-OfficeOpenDocumentSlide -Content. + + OdpSlide + + OdpSlide + + + None + + + Text + + Text box content. + + String + + String + + + None + + + Width + + Width in centimeters. + + Double + + Double + + + None + + + X + + Horizontal position in centimeters. + + Double + + Double + + + None + + + Y + + Vertical position in centimeters. + + Double + + Double + + + None + + + + + + OfficeIMO.OpenDocument.OdpSlide + + + + + + + OfficeIMO.OpenDocument.OdpTextBox + + + + + + + + + + + Place a text box using centimetre coordinates. + + PS> + + Add-OfficeOpenDocumentTextBox -Text 'Approved' -X 18 -Y 12 -Width 6 -Height 2 + + + + + + + Add-OfficePdfAttachment @@ -45692,7 +46508,7 @@ table formatting, borders, and style choices are preserved. [pscustomobject]@{ Month = 'Feb'; Sales = 12; Profit = 5 } [pscustomobject]@{ Month = 'Mar'; Sales = 15; Profit = 7 } ) - $doc = New-OfficeWord -Path .\Trend.docx -PassThru + $doc = New-OfficeWord -Path .\Trend.docx -NoSave Add-OfficeWordChart -Document $doc -Type Line -InputObject $trend -CategoryProperty Month -SeriesProperty Sales, Profit -Legend -Title 'Quarter trend' Save-OfficeWord -Document $doc @@ -59321,7 +60137,8 @@ cells. This keeps existing-document editing simple without forcing callers back PS> - $options = [OfficeIMO.Pdf.PdfVisualComparisonOptions]::new(); $options.AllowedDifferenceRatio = 0.001; Compare-OfficePdfVisual -ReferencePath .\Expected.pdf -DifferencePath .\Actual.pdf -PageRange '1-3' -Options $options + $options = New-OfficePdfVisualComparisonOptions -AllowedDifferenceRatio 0.001 -ChannelTolerance 2 + Compare-OfficePdfVisual -ReferencePath .\Expected.pdf -DifferencePath .\Actual.pdf -PageRange '1-3' -Options $options Returns per-page difference ratios, images, and diagnostics. @@ -59474,6 +60291,17 @@ cells. This keeps existing-document editing simple without forcing callers back Returns deterministic findings and saves a Word document containing revision marks. + + Ignore whitespace and volatile metadata. + + PS> + + $options = New-OfficeWordComparisonOptions -IgnoreWhitespace -CompareVolatileMetadata:$false + Compare-OfficeWordDocument -ReferencePath .\Before.docx -DifferencePath .\After.docx -Options $options + + + + @@ -62147,8 +62975,12 @@ cells. This keeps existing-document editing simple without forcing callers back - EXAMPLE 1 - ConvertFrom-OfficeOpenDocument -Path 'C:\Path' + Convert an ODS spreadsheet to Excel. + + PS> + + $options = New-OfficeExcelOpenDocumentOptions -IncludeBasicStyles -MaximumExpandedCells 250000 + ConvertFrom-OfficeOpenDocument -Path .\Status.ods -OutputPath .\Status.xlsx -ExcelOptions $options @@ -70182,22 +71014,12 @@ cells. This keeps existing-document editing simple without forcing callers back - EXAMPLE 1 - ConvertTo-OfficeOpenDocument -Path 'C:\Path' - - - - - - EXAMPLE 2 - ConvertTo-OfficeOpenDocument -ExcelDocument 'Value' - - - - - - EXAMPLE 3 - ConvertTo-OfficeOpenDocument -PowerPointPresentation 'Value' + Convert Word to ODT and reject lossy conversion. + + PS> + + $options = New-OfficeWordOpenDocumentOptions -IncludeImages -IncludeHeadersAndFooters + ConvertTo-OfficeOpenDocument -Path .\Report.docx -OutputPath .\Report.odt -WordOptions $options -FailOnLoss @@ -80978,7 +81800,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe Document - Live Word, Excel, PowerPoint, Markdown, or RTF document to export. + Live Word, Excel, PowerPoint, Markdown, or RTF document to export. Saved FileInfo and path strings from the pipeline are opened automatically. Object @@ -81122,7 +81944,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - + InputPath Source .docx, .xlsx, .pptx, .md, .markdown, or .rtf file. @@ -81260,7 +82082,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe Document - Live Word, Excel, PowerPoint, Markdown, or RTF document to export. + Live Word, Excel, PowerPoint, Markdown, or RTF document to export. Saved FileInfo and path strings from the pipeline are opened automatically. Object @@ -81281,7 +82103,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - + InputPath Source .docx, .xlsx, .pptx, .md, .markdown, or .rtf file. @@ -81420,6 +82242,11 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe System.Object + + + System.String + + @@ -81454,6 +82281,17 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe + + Configure Markdown PDF export with ordinary PowerShell parameters. + + PS> + + $options = New-OfficeMarkdownPdfOptions -Title 'Service report' -IncludeLocalImages -BaseDirectory .\Assets + Export-OfficeDocumentPdf -InputPath .\Report.md -Path .\Report.pdf -MarkdownOptions $options + + The New-Office*PdfOptions commands build every format-specific options object; no hashtable or .NET constructor is required. + + @@ -84709,6 +85547,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result when a destination path is used. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -84815,6 +85665,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result when a destination path is used. + + SwitchParameter + + SwitchParameter + + + None + WorksheetName @@ -84909,6 +85771,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result when a destination path is used. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -85322,6 +86196,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit one structured image export result per saved sheet. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -85392,6 +86278,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit one structured image export result per saved sheet. + + SwitchParameter + + SwitchParameter + + + None + @@ -85450,6 +86348,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit one structured image export result per saved sheet. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -85490,7 +86400,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe Export-OfficeExcelImage -Path .\Report.xlsx -OutputPath .\Images - Writes one image per selected sheet and returns OfficeImageExportResult objects. + Writes one image per selected sheet. Add -PassThru to receive the structured export results. @@ -85566,6 +86476,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result when a destination path is used. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -85672,6 +86594,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result when a destination path is used. + + SwitchParameter + + SwitchParameter + + + None + Range @@ -85766,6 +86700,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result when a destination path is used. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -85885,7 +86831,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe OutputPath - Destination PNG or SVG path. + Destination PNG, JPEG, TIFF, SVG, or WebP path. String @@ -85906,6 +86852,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -85979,7 +86937,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe OutputPath - Destination PNG or SVG path. + Destination PNG, JPEG, TIFF, SVG, or WebP path. String @@ -86000,6 +86958,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result. + + SwitchParameter + + SwitchParameter + + + None + RenderOptions @@ -86061,7 +87031,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe OutputPath - Destination PNG or SVG path. + Destination PNG, JPEG, TIFF, SVG, or WebP path. String @@ -86082,6 +87052,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result. + + SwitchParameter + + SwitchParameter + + + None + RenderOptions @@ -86155,7 +87137,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe OutputPath - Destination PNG or SVG path. + Destination PNG, JPEG, TIFF, SVG, or WebP path. String @@ -86176,6 +87158,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -86233,7 +87227,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe Export-OfficeHtmlImage -Path .\Report.html -OutputPath .\Report.png - Uses the dependency-free OfficeIMO HTML renderer and returns OfficeImageExportResult. + Uses the dependency-free OfficeIMO HTML renderer. Add -PassThru to receive the structured export result. @@ -86321,6 +87315,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit one structured image export result per saved page. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -86427,6 +87433,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit one structured image export result per saved page. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -86491,7 +87509,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe Export-OfficePdfImage -Path .\Report.pdf -OutputPath .\Pages -PageRange '1-3,5' - Writes the selected pages and returns normalized image results with rendering diagnostics. + Writes the selected pages. Add -PassThru to receive normalized image results with rendering diagnostics. @@ -86588,6 +87606,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -86715,6 +87745,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -86785,8 +87827,11 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe - EXAMPLE 1 - Export-OfficePdfLayoutOverlay -Path 'C:\Path' + Export an SVG layout overlay for the first page. + + PS> + + $result = Export-OfficePdfLayoutOverlay -Path .\Report.pdf -OutputPath .\Report-layout.svg -Page 1 -Format Svg -PassThru @@ -87050,6 +88095,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit one structured image export result per saved slide. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -87108,6 +88165,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit one structured image export result per saved slide. + + SwitchParameter + + SwitchParameter + + + None + Presentation @@ -87166,6 +88235,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit one structured image export result per saved slide. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -87218,7 +88299,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe Export-OfficePowerPointImage -Path .\Deck.pptx -OutputPath .\Slides -Format Svg - Writes one image per selected slide and returns OfficeImageExportResult objects. + Writes one image per selected slide. Add -PassThru to receive the structured export results. @@ -87282,6 +88363,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit one structured image export result per saved page. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -87352,6 +88445,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit one structured image export result per saved page. + + SwitchParameter + + SwitchParameter + + + None + @@ -87410,6 +88515,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit one structured image export result per saved page. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -87450,7 +88567,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe Export-OfficeVisioImage -Path .\diagram.vsdx -OutputPath .\Images -Format Png - Writes one PNG per selected page and returns one result object per file. + Writes one PNG per selected page. Add -PassThru to receive one result object per file. @@ -88493,15 +89610,27 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe Export OfficeWordImage - Exports a Word page as PNG or SVG with structured image diagnostics. + Exports one or more Word pages through the format-neutral OfficeIMO image pipeline. - Exports a Word page as PNG or SVG with structured image diagnostics. + Exports one or more Word pages through the format-neutral OfficeIMO image pipeline. Export-OfficeWordImage + + AllPages + + Export every estimated page to the destination folder. + + SwitchParameter + + SwitchParameter + + + None + Format @@ -88536,7 +89665,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe OutputPath - Destination PNG or SVG path. + Destination image file, or destination folder when -AllPages or Options.PageCount requests a batch. String @@ -88545,6 +89674,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -88560,6 +89701,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe Export-OfficeWordImage + + AllPages + + Export every estimated page to the destination folder. + + SwitchParameter + + SwitchParameter + + + None + Document @@ -88606,7 +89759,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe OutputPath - Destination PNG or SVG path. + Destination image file, or destination folder when -AllPages or Options.PageCount requests a batch. String @@ -88615,9 +89768,33 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result. + + SwitchParameter + + SwitchParameter + + + None + + + AllPages + + Export every estimated page to the destination folder. + + SwitchParameter + + SwitchParameter + + + None + Document @@ -88664,7 +89841,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe OutputPath - Destination PNG or SVG path. + Destination image file, or destination folder when -AllPages or Options.PageCount requests a batch. String @@ -88673,6 +89850,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -88713,7 +89902,17 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe Export-OfficeWordImage -Path .\Report.docx -OutputPath .\Report.svg -Format Svg - Returns the OfficeIMO image export result after writing the image. + Writes the image quietly. Add -PassThru to receive the structured export result. + + + + Export every page as JPEG files. + + PS> + + Export-OfficeWordImage -Path .\Report.docx -OutputPath .\Pages -Format Jpeg -AllPages + + For a bounded batch, create options with New-OfficeWordImageOptions -PageIndex 0 -PageCount 2. @@ -98268,7 +99467,8 @@ extraction, hashing, and chunk shaping. PS> - $options = [OfficeIMO.Reader.ReaderHierarchicalChunkingOptions]::new(); $options.MaxTokens = 500; $result = Get-OfficeDocumentHierarchy -Path .\handbook.pdf -ChunkingOptions $options + $options = New-OfficeReaderHierarchyOptions -MaxTokens 500 -OverlapTokens 50 -IncludeContextInText + $result = Get-OfficeDocumentHierarchy -Path .\handbook.pdf -ChunkingOptions $options Returns chunks, token evidence, overlap counts, and flattened parent/child nodes. @@ -100368,8 +101568,12 @@ extraction, hashing, and chunk shaping. - EXAMPLE 1 - Get-OfficeEmail -Path 'C:\Path' + Read a message without retaining attachment payloads. + + PS> + + $options = New-OfficeEmailReaderOptions -ExcludeAttachmentContent -MaxAttachmentBytes 25MB + Get-OfficeEmail -Path .\Message.msg -Options $options -AsResult @@ -100494,8 +101698,12 @@ extraction, hashing, and chunk shaping. - EXAMPLE 1 - Get-OfficeEmailMailbox -Path 'C:\Path' + Read a bounded mbox mailbox with diagnostics. + + PS> + + $options = New-OfficeEmailMailboxReaderOptions -MaxMessageCount 5000 + Get-OfficeEmailMailbox -Path .\Archive.mbox -Options $options -AsResult @@ -100518,18 +101726,6 @@ extraction, hashing, and chunk shaping. Get-OfficeExcel - - AutoSave - - Enable automatic saves on the underlying document. - - SwitchParameter - - SwitchParameter - - - None - Password @@ -100581,18 +101777,6 @@ extraction, hashing, and chunk shaping. None - - AutoSave - - Enable automatic saves on the underlying document. - - SwitchParameter - - SwitchParameter - - - None - Password @@ -100644,18 +101828,6 @@ extraction, hashing, and chunk shaping. None - - AutoSave - - Enable automatic saves on the underlying document. - - SwitchParameter - - SwitchParameter - - - None - Password @@ -117710,18 +118882,6 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification Get-OfficeWord - - AutoSave - - Enable AutoSave when editing. - - SwitchParameter - - SwitchParameter - - - None - Content @@ -117773,18 +118933,6 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification - - AutoSave - - Enable AutoSave when editing. - - SwitchParameter - - SwitchParameter - - - None - Content @@ -134641,125 +135789,295 @@ This does not discover, bypass, or crack a missing password. - New-OfficeExcel + New-OfficeEmailMailboxReaderOptions New - OfficeExcel + OfficeEmailMailboxReaderOptions - Creates a new Excel workbook using the DSL. + Creates bounded mbox reader settings through ordinary PowerShell parameters. - Runs the provided script block inside an ExcelSheet/ExcelCell DSL context and saves the file. + Creates bounded mbox reader settings through ordinary PowerShell parameters. - New-OfficeExcel - - ApplicationName - - Workbook application-name metadata. - - String - - String - - - None - + New-OfficeEmailMailboxReaderOptions - Author + MaxMailboxBytes - Workbook author metadata. + Maximum aggregate source bytes consumed from one mailbox. - String + Int64 - String + Int64 None - Category + MaxMessageCount - Workbook category metadata. + Maximum messages in one mailbox. - String + Int32 - String + Int32 None - - ClearCachedFormulaResults + + MessageOptions - Remove cached formula results before saving. + Bounded policy applied independently to each message. - SwitchParameter + EmailReaderOptions - SwitchParameter + EmailReaderOptions None - Company + Variant - Workbook company metadata. + Escaping convention to decode. - String + MboxVariant + + Auto + Mboxo + Mboxrd + - String + MboxVariant None - - Content + + + + + MaxMailboxBytes + + Maximum aggregate source bytes consumed from one mailbox. + + Int64 + + Int64 + + + None + + + MaxMessageCount + + Maximum messages in one mailbox. + + Int32 + + Int32 + + + None + + + MessageOptions + + Bounded policy applied independently to each message. + + EmailReaderOptions + + EmailReaderOptions + + + None + + + Variant + + Escaping convention to decode. + + MboxVariant + + Auto + Mboxo + Mboxrd + + + MboxVariant + + + None + + + + + + OfficeIMO.Email.EmailReaderOptions + + + + + + + OfficeIMO.Email.EmailMailboxReaderOptions + + + + + + + + + + + Read a bounded mailbox with a reusable per-message policy. + + PS> + + $messageOptions = New-OfficeEmailReaderOptions -ExcludeAttachmentContent + $options = New-OfficeEmailMailboxReaderOptions -MessageOptions $messageOptions -MaxMessageCount 5000 + Get-OfficeEmailMailbox -Path .\Archive.mbox -Options $options -AsResult + + + + + + + + + + New-OfficeEmailMailboxWriterOptions + New + OfficeEmailMailboxWriterOptions + + Creates deterministic mbox writer settings through ordinary PowerShell parameters. + + + + Creates deterministic mbox writer settings through ordinary PowerShell parameters. + + + + New-OfficeEmailMailboxWriterOptions + + MessageOptions - DSL scriptblock describing workbook content. + Serialization policy applied independently to each message. - ScriptBlock + EmailWriterOptions - ScriptBlock + EmailWriterOptions None - DateSystem + Variant - Workbook date system for Excel date serials. + Concrete mbox escaping convention to write. - String + MboxVariant - 1900 - 1904 - NineteenHundred - NineteenFour + Auto + Mboxo + Mboxrd - String - - - None - - - Description - - Workbook description metadata. - - String - - String + MboxVariant None + + + + + MessageOptions + + Serialization policy applied independently to each message. + + EmailWriterOptions + + EmailWriterOptions + + + None + + + Variant + + Concrete mbox escaping convention to write. + + MboxVariant + + Auto + Mboxo + Mboxrd + + + MboxVariant + + + None + + + + + + OfficeIMO.Email.EmailWriterOptions + + + + + + + OfficeIMO.Email.EmailMailboxWriterOptions + + + + + + + + + + + Write an mboxo mailbox with a reusable per-message policy. + + PS> + + $messageOptions = New-OfficeEmailWriterOptions -IncludeBccHeader + $options = New-OfficeEmailMailboxWriterOptions -MessageOptions $messageOptions -Variant Mboxo + $mailbox | Save-OfficeEmailMailbox -Path .\Archive.mbox -Options $options -PassThru + + + + + + + + + + New-OfficeEmailReaderOptions + New + OfficeEmailReaderOptions + + Creates bounded EML, MSG, and TNEF reader settings through ordinary PowerShell parameters. + + + + Creates bounded EML, MSG, and TNEF reader settings through ordinary PowerShell parameters. + + + + New-OfficeEmailReaderOptions - DisableFastPackageWriter + ExcludeAttachmentContent - Disable OfficeIMO fast package writers for this save. + Do not retain decoded attachment payloads in memory. SwitchParameter @@ -134769,201 +136087,165 @@ This does not discover, bypass, or crack a missing password. None - DocumentTitle - - Workbook document title metadata. - - String - - String - - - None - - - EvaluateFormulas + MaxAttachmentBytes - Evaluate supported formulas and write cached values before saving. + Maximum decoded bytes for one attachment. - SwitchParameter + Int64 - SwitchParameter + Int64 None - ForceFullCalculationOnOpen + MaxAttachmentCount - Request a full workbook recalculation when opened in Excel-compatible applications. + Maximum aggregate attachment count. - SwitchParameter + Int32 - SwitchParameter + Int32 None - Keywords + MaxCompoundDirectoryEntries - Workbook keyword metadata. + Maximum CFB directory entries accepted while reading MSG. - String + Int32 - String + Int32 None - LastModifiedBy + MaxDecodedPropertyBytes - Workbook last-modified-by metadata. + Maximum aggregate bytes represented by decoded MSG property streams. - String + Int64 - String + Int64 None - Manager + MaxHeaderBytes - Workbook manager metadata. + Maximum bytes allowed in one MIME header section. - String + Int32 - String + Int32 None - MarkFormulasDirty + MaxHeaderCount - Mark formula cells dirty before saving. + Maximum number of header fields in one entity. - SwitchParameter + Int32 - SwitchParameter + Int32 None - NoSave + MaxInputBytes - Skip saving the workbook after running the DSL. + Maximum artifact size accepted by the reader. - SwitchParameter + Int64 - SwitchParameter + Int64 None - Open + MaxMapiPropertyCount - Open the workbook in Excel after saving. + Maximum aggregate MAPI properties across a message and embedded messages. - SwitchParameter + Int32 - SwitchParameter + Int32 None - PassThru + MaxMimeDepth - Emit a FileInfo for convenience. + Maximum nested MIME depth. - SwitchParameter + Int32 - SwitchParameter + Int32 None - Password - - Password used to save the workbook as an encrypted package. - - String - - String - - - None - - - Path + MaxNestedMessageDepth - Destination path for the workbook. + Maximum embedded-message recursion depth. - String + Int32 - String + Int32 None - SafePreflight + MaxPartCount - Run OfficeIMO worksheet preflight cleanup before saving. + Maximum MIME entity count. - SwitchParameter + Int32 - SwitchParameter + Int32 None - SafeRepairDefinedNames + MaxTnefAttributeCount - Repair common defined-name issues before saving. + Maximum number of TNEF attributes. - SwitchParameter + Int32 - SwitchParameter + Int32 None - Subject + MaxTotalAttachmentBytes - Workbook subject metadata. - - String - - String - - - None - - - TemplatePath - - Optional workbook template package copied before running the DSL. + Maximum aggregate decoded attachment bytes. - String + Int64 - String + Int64 None - ValidateOpenXml + PreserveRawSource - Validate the saved package with OpenXmlValidator and throw on errors. + Retain original artifact bytes for an explicit lossless write. SwitchParameter @@ -134976,111 +136258,9 @@ This does not discover, bypass, or crack a missing password. - ApplicationName - - Workbook application-name metadata. - - String - - String - - - None - - - Author - - Workbook author metadata. - - String - - String - - - None - - - Category - - Workbook category metadata. - - String - - String - - - None - - - ClearCachedFormulaResults - - Remove cached formula results before saving. - - SwitchParameter - - SwitchParameter - - - None - - - Company - - Workbook company metadata. - - String - - String - - - None - - - Content - - DSL scriptblock describing workbook content. - - ScriptBlock - - ScriptBlock - - - None - - - DateSystem - - Workbook date system for Excel date serials. - - String - - 1900 - 1904 - NineteenHundred - NineteenFour - - - String - - - None - - - Description - - Workbook description metadata. - - String - - String - - - None - - - DisableFastPackageWriter + ExcludeAttachmentContent - Disable OfficeIMO fast package writers for this save. + Do not retain decoded attachment payloads in memory. SwitchParameter @@ -135090,201 +136270,165 @@ This does not discover, bypass, or crack a missing password. None - DocumentTitle - - Workbook document title metadata. - - String - - String - - - None - - - EvaluateFormulas + MaxAttachmentBytes - Evaluate supported formulas and write cached values before saving. + Maximum decoded bytes for one attachment. - SwitchParameter + Int64 - SwitchParameter + Int64 None - ForceFullCalculationOnOpen + MaxAttachmentCount - Request a full workbook recalculation when opened in Excel-compatible applications. + Maximum aggregate attachment count. - SwitchParameter + Int32 - SwitchParameter + Int32 None - Keywords + MaxCompoundDirectoryEntries - Workbook keyword metadata. + Maximum CFB directory entries accepted while reading MSG. - String + Int32 - String + Int32 None - LastModifiedBy + MaxDecodedPropertyBytes - Workbook last-modified-by metadata. + Maximum aggregate bytes represented by decoded MSG property streams. - String + Int64 - String + Int64 None - Manager + MaxHeaderBytes - Workbook manager metadata. + Maximum bytes allowed in one MIME header section. - String + Int32 - String + Int32 None - MarkFormulasDirty + MaxHeaderCount - Mark formula cells dirty before saving. + Maximum number of header fields in one entity. - SwitchParameter + Int32 - SwitchParameter + Int32 None - NoSave + MaxInputBytes - Skip saving the workbook after running the DSL. + Maximum artifact size accepted by the reader. - SwitchParameter + Int64 - SwitchParameter + Int64 None - Open + MaxMapiPropertyCount - Open the workbook in Excel after saving. + Maximum aggregate MAPI properties across a message and embedded messages. - SwitchParameter + Int32 - SwitchParameter + Int32 None - PassThru + MaxMimeDepth - Emit a FileInfo for convenience. + Maximum nested MIME depth. - SwitchParameter + Int32 - SwitchParameter + Int32 None - Password - - Password used to save the workbook as an encrypted package. - - String - - String - - - None - - - Path + MaxNestedMessageDepth - Destination path for the workbook. + Maximum embedded-message recursion depth. - String + Int32 - String + Int32 None - SafePreflight + MaxPartCount - Run OfficeIMO worksheet preflight cleanup before saving. + Maximum MIME entity count. - SwitchParameter + Int32 - SwitchParameter + Int32 None - SafeRepairDefinedNames + MaxTnefAttributeCount - Repair common defined-name issues before saving. + Maximum number of TNEF attributes. - SwitchParameter + Int32 - SwitchParameter + Int32 None - Subject - - Workbook subject metadata. - - String - - String - - - None - - - TemplatePath + MaxTotalAttachmentBytes - Optional workbook template package copied before running the DSL. + Maximum aggregate decoded attachment bytes. - String + Int64 - String + Int64 None - ValidateOpenXml + PreserveRawSource - Validate the saved package with OpenXmlValidator and throw on errors. + Retain original artifact bytes for an explicit lossless write. SwitchParameter @@ -135301,7 +136445,13 @@ This does not discover, bypass, or crack a missing password. - + + + + OfficeIMO.Email.EmailReaderOptions + + + @@ -135309,27 +136459,14 @@ This does not discover, bypass, or crack a missing password. - Create a workbook with a sheet and a few cells. - - PS> - - New-OfficeExcel -Path .\report.xlsx { ExcelSheet 'Data' { ExcelCell -Address 'A1' -Value 'Region' } } - - Creates report.xlsx and writes “Region” into cell A1 on the Data worksheet. - - - - Keep a workbook for incremental composition. + Read message diagnostics without retaining attachment payloads. PS> - $workbook = New-OfficeExcel -Path .\report.xlsx -NoSave - $sheet = $workbook | Add-OfficeExcelSheet -Name 'Data' -PassThru - $sheet | Set-OfficeExcelCell -Address A1 -Value 'Region' - $workbook | Save-OfficeExcel - $workbook | Close-OfficeExcel + $options = New-OfficeEmailReaderOptions -ExcludeAttachmentContent -MaxAttachmentBytes 25MB + Get-OfficeEmail -Path .\Message.msg -Options $options -AsResult - Associates the output path with a live workbook, changes a worksheet, then saves and closes it once. + @@ -135337,89 +136474,23 @@ This does not discover, bypass, or crack a missing password. - New-OfficeExcelDashboard + New-OfficeEmailStoreReaderOptions New - OfficeExcelDashboard + OfficeEmailStoreReaderOptions - Builds a worksheet dashboard from tabular data using OfficeIMO dashboard defaults. + Creates bounded email-store reader settings without requiring .NET constructor syntax. - Builds a worksheet dashboard from tabular data using OfficeIMO dashboard defaults. + Creates bounded email-store reader settings without requiring .NET constructor syntax. - - New-OfficeExcelDashboard - - ChartColumn - - Top-left chart column. - - Int32 - - Int32 - - - None - - - ChartPreset - - Dashboard chart preset. - - ExcelDashboardChartPreset - - Comparison - Trend - Contribution - CompactComparison - - - ExcelDashboardChartPreset - - - None - - - ChartRow - - Top-left chart row. - - Int32 - - Int32 - - - None - - - ChartTitle - - Chart title. Defaults to Title when omitted. - - String - - String - - - None - - - InputObject - - Rows to render in the dashboard table. - - Object - - Object - - - None - + + New-OfficeEmailStoreReaderOptions - NoAutoFilter + ExcludeAttachmentContent - Disable AutoFilter dropdowns on the generated table. + Do not retain decoded attachment payloads in memory. SwitchParameter @@ -135429,9 +136500,9 @@ This does not discover, bypass, or crack a missing password. None - NoAutoFit + IncludeAssociatedItems - Disable auto-fit for generated table columns. + Materialize folder-associated information items. SwitchParameter @@ -135441,9 +136512,9 @@ This does not discover, bypass, or crack a missing password. None - NoChart + IncludeOrphanedItems - Do not create a chart. + Recover item nodes absent from folder contents tables. SwitchParameter @@ -135453,57 +136524,57 @@ This does not discover, bypass, or crack a missing password. None - PassThru + MaxArchiveDecodedBytes - Emit dashboard build metadata. + Maximum total decoded size declared by archive entries. - SwitchParameter + Int64 - SwitchParameter + Int64 None - Subtitle + MaxArchiveEntries - Dashboard subtitle. + Maximum entries accepted from a compressed email-store archive. - String + Int32 - String + Int32 None - TableColumn + MaxArchiveEntryBytes - Top-left column for the generated table. + Maximum decoded size declared by one archive entry. - Int32 + Int64 - Int32 + Int64 None - TableName + MaxAttachmentBytes - Name for the generated table. + Maximum decoded bytes in one attachment. - String + Int64 - String + Int64 None - TableRow + MaxAttachmentsPerItem - Top-left row for the generated table. + Maximum attachments per item. Int32 @@ -135513,66 +136584,57 @@ This does not discover, bypass, or crack a missing password. None - TableStyle + MaxBTreeDepth - Built-in table style. + Maximum tree traversal depth. - String + Int32 - String + Int32 None - Title + MaxCachedBTreePages - Dashboard title. + Maximum PST/OST B-tree pages retained by the cache. - String + Int32 - String + Int32 None - - - New-OfficeExcelDashboard - ChartColumn + MaxDecodedPropertyBytesPerItem - Top-left chart column. + Maximum decoded property bytes per item. - Int32 + Int64 - Int32 + Int64 None - ChartPreset + MaxDecodedTableBytes - Dashboard chart preset. + Maximum decoded bytes traversed from one PST/OST table data tree. - ExcelDashboardChartPreset - - Comparison - Trend - Contribution - CompactComparison - + Int64 - ExcelDashboardChartPreset + Int64 None - ChartRow + MaxDirectoryDepth - Top-left chart row. + Maximum directory depth traversed by mailbox-directory sessions. Int32 @@ -135582,105 +136644,69 @@ This does not discover, bypass, or crack a missing password. None - ChartTitle - - Chart title. Defaults to Title when omitted. - - String - - String - - - None - - - InputObject + MaxDirectoryFileCount - Rows to render in the dashboard table. + Maximum EML, EMLX, and Maildir files indexed by one directory session. - Object + Int32 - Object + Int32 None - NoAutoFilter + MaxFolderCount - Disable AutoFilter dropdowns on the generated table. + Maximum folders materialized. - SwitchParameter + Int32 - SwitchParameter + Int32 None - NoAutoFit + MaxInputBytes - Disable auto-fit for generated table columns. + Maximum seekable source length. - SwitchParameter + Int64 - SwitchParameter + Int64 None - NoChart + MaxItemCount - Do not create a chart. + Maximum items materialized. - SwitchParameter + Int32 - SwitchParameter + Int32 None - PassThru - - Emit dashboard build metadata. - - SwitchParameter - - SwitchParameter - - - None - - - Path - - Workbook path to update. - - String - - String - - - None - - - Sheet + MaxMessageBytes - Worksheet name when using Path or Document. + Maximum RFC 5322/MIME message bytes accepted from one item. - String + Int64 - String + Int64 None - SheetIndex + MaxNestedMessageDepth - Worksheet index (0-based) when using Path or Document. + Maximum embedded-message recursion depth. Int32 @@ -135690,21 +136716,21 @@ This does not discover, bypass, or crack a missing password. None - Subtitle + MaxNodeCount - Dashboard subtitle. + Maximum NDB nodes and blocks visited. - String + Int32 - String + Int32 None - TableColumn + MaxPropertiesPerItem - Top-left column for the generated table. + Maximum MAPI properties decoded per item. Int32 @@ -135714,33 +136740,33 @@ This does not discover, bypass, or crack a missing password. None - TableName + MaxTotalAttachmentBytes - Name for the generated table. + Maximum decoded attachment bytes across the read. - String + Int64 - String + Int64 None - TableRow + MaxXmlCharactersPerItem - Top-left row for the generated table. + Maximum XML characters parsed from one archive item. - Int32 + Int64 - Int32 + Int64 None - TableStyle + PstPassword - Built-in table style. + Password used to validate legacy protected PST files. String @@ -135750,234 +136776,9 @@ This does not discover, bypass, or crack a missing password. None - Title + PstPasswordEncoding - Dashboard title. - - String - - String - - - None - - - - New-OfficeExcelDashboard - - ChartColumn - - Top-left chart column. - - Int32 - - Int32 - - - None - - - ChartPreset - - Dashboard chart preset. - - ExcelDashboardChartPreset - - Comparison - Trend - Contribution - CompactComparison - - - ExcelDashboardChartPreset - - - None - - - ChartRow - - Top-left chart row. - - Int32 - - Int32 - - - None - - - ChartTitle - - Chart title. Defaults to Title when omitted. - - String - - String - - - None - - - Document - - Workbook to update outside the DSL context. - - ExcelDocument - - ExcelDocument - - - None - - - InputObject - - Rows to render in the dashboard table. - - Object - - Object - - - None - - - NoAutoFilter - - Disable AutoFilter dropdowns on the generated table. - - SwitchParameter - - SwitchParameter - - - None - - - NoAutoFit - - Disable auto-fit for generated table columns. - - SwitchParameter - - SwitchParameter - - - None - - - NoChart - - Do not create a chart. - - SwitchParameter - - SwitchParameter - - - None - - - PassThru - - Emit dashboard build metadata. - - SwitchParameter - - SwitchParameter - - - None - - - Sheet - - Worksheet name when using Path or Document. - - String - - String - - - None - - - SheetIndex - - Worksheet index (0-based) when using Path or Document. - - Int32 - - Int32 - - - None - - - Subtitle - - Dashboard subtitle. - - String - - String - - - None - - - TableColumn - - Top-left column for the generated table. - - Int32 - - Int32 - - - None - - - TableName - - Name for the generated table. - - String - - String - - - None - - - TableRow - - Top-left row for the generated table. - - Int32 - - Int32 - - - None - - - TableStyle - - Built-in table style. - - String - - String - - - None - - - Title - - Dashboard title. + Encoding name used for the legacy PST password checksum. String @@ -135990,39 +136791,57 @@ This does not discover, bypass, or crack a missing password. - ChartColumn + ExcludeAttachmentContent - Top-left chart column. + Do not retain decoded attachment payloads in memory. - Int32 + SwitchParameter - Int32 + SwitchParameter None - ChartPreset + IncludeAssociatedItems - Dashboard chart preset. + Materialize folder-associated information items. - ExcelDashboardChartPreset - - Comparison - Trend - Contribution - CompactComparison - + SwitchParameter - ExcelDashboardChartPreset + SwitchParameter None - ChartRow + IncludeOrphanedItems - Top-left chart row. + Recover item nodes absent from folder contents tables. + + SwitchParameter + + SwitchParameter + + + None + + + MaxArchiveDecodedBytes + + Maximum total decoded size declared by archive entries. + + Int64 + + Int64 + + + None + + + MaxArchiveEntries + + Maximum entries accepted from a compressed email-store archive. Int32 @@ -136032,117 +136851,117 @@ This does not discover, bypass, or crack a missing password. None - ChartTitle + MaxArchiveEntryBytes - Chart title. Defaults to Title when omitted. + Maximum decoded size declared by one archive entry. - String + Int64 - String + Int64 None - - Document + + MaxAttachmentBytes - Workbook to update outside the DSL context. + Maximum decoded bytes in one attachment. - ExcelDocument + Int64 - ExcelDocument + Int64 None - - InputObject + + MaxAttachmentsPerItem - Rows to render in the dashboard table. + Maximum attachments per item. - Object + Int32 - Object + Int32 None - NoAutoFilter + MaxBTreeDepth - Disable AutoFilter dropdowns on the generated table. + Maximum tree traversal depth. - SwitchParameter + Int32 - SwitchParameter + Int32 None - NoAutoFit + MaxCachedBTreePages - Disable auto-fit for generated table columns. + Maximum PST/OST B-tree pages retained by the cache. - SwitchParameter + Int32 - SwitchParameter + Int32 None - NoChart + MaxDecodedPropertyBytesPerItem - Do not create a chart. + Maximum decoded property bytes per item. - SwitchParameter + Int64 - SwitchParameter + Int64 None - PassThru + MaxDecodedTableBytes - Emit dashboard build metadata. + Maximum decoded bytes traversed from one PST/OST table data tree. - SwitchParameter + Int64 - SwitchParameter + Int64 None - - Path + + MaxDirectoryDepth - Workbook path to update. + Maximum directory depth traversed by mailbox-directory sessions. - String + Int32 - String + Int32 None - - Sheet + + MaxDirectoryFileCount - Worksheet name when using Path or Document. + Maximum EML, EMLX, and Maildir files indexed by one directory session. - String + Int32 - String + Int32 None - SheetIndex + MaxFolderCount - Worksheet index (0-based) when using Path or Document. + Maximum folders materialized. Int32 @@ -136152,21 +136971,21 @@ This does not discover, bypass, or crack a missing password. None - Subtitle + MaxInputBytes - Dashboard subtitle. + Maximum seekable source length. - String + Int64 - String + Int64 None - TableColumn + MaxItemCount - Top-left column for the generated table. + Maximum items materialized. Int32 @@ -136176,21 +136995,21 @@ This does not discover, bypass, or crack a missing password. None - TableName + MaxMessageBytes - Name for the generated table. + Maximum RFC 5322/MIME message bytes accepted from one item. - String + Int64 - String + Int64 None - TableRow + MaxNestedMessageDepth - Top-left row for the generated table. + Maximum embedded-message recursion depth. Int32 @@ -136200,9 +137019,57 @@ This does not discover, bypass, or crack a missing password. None - TableStyle + MaxNodeCount - Built-in table style. + Maximum NDB nodes and blocks visited. + + Int32 + + Int32 + + + None + + + MaxPropertiesPerItem + + Maximum MAPI properties decoded per item. + + Int32 + + Int32 + + + None + + + MaxTotalAttachmentBytes + + Maximum decoded attachment bytes across the read. + + Int64 + + Int64 + + + None + + + MaxXmlCharactersPerItem + + Maximum XML characters parsed from one archive item. + + Int64 + + Int64 + + + None + + + PstPassword + + Password used to validate legacy protected PST files. String @@ -136212,9 +137079,9 @@ This does not discover, bypass, or crack a missing password. None - Title + PstPasswordEncoding - Dashboard title. + Encoding name used for the legacy PST password checksum. String @@ -136227,14 +137094,14 @@ This does not discover, bypass, or crack a missing password. - System.Object + None - System.Management.Automation.PSObject + OfficeIMO.Email.Store.EmailStoreReaderOptions @@ -136245,13 +137112,14 @@ This does not discover, bypass, or crack a missing password. - Create a dashboard table and chart. + Read an EMLX message without retaining attachment payloads. PS> - $rows | New-OfficeExcelDashboard -Title 'Sales Dashboard' -TableName Sales -ChartPreset CompactComparison + $options = New-OfficeEmailStoreReaderOptions -ExcludeAttachmentContent -MaxAttachmentsPerItem 100 + Get-OfficeEmail -Path .\Message.emlx -StoreOptions $options -AsResult - Writes a table and chart into the current Excel DSL worksheet. + @@ -136259,215 +137127,356 @@ This does not discover, bypass, or crack a missing password. - New-OfficeExcelPdfOptions + New-OfficeEmailWriterOptions New - OfficeExcelPdfOptions + OfficeEmailWriterOptions - Creates discoverable Excel-to-PDF conversion options for Export-OfficeDocumentPdf. + Creates deterministic email writer settings through ordinary PowerShell parameters. - Creates discoverable Excel-to-PDF conversion options for Export-OfficeDocumentPdf. + Creates deterministic email writer settings through ordinary PowerShell parameters. - New-OfficeExcelPdfOptions + New-OfficeEmailWriterOptions - AllowDocumentFontEmbedding + Base64LineLength - Allow embedding fonts stored in the workbook. + Maximum encoded characters on one Base64 body line. - SwitchParameter + Int32 - SwitchParameter + Int32 None - AllowSystemFontEmbedding + ConversionLossPolicy - Allow embedding fonts discovered on the current system. + Policy applied when the requested format cannot preserve known message semantics. - SwitchParameter + EmailConversionLossPolicy + + Block + Warn + Allow + - SwitchParameter + EmailConversionLossPolicy None - ChartLayout + IncludeBccHeader - Chart layout override. + Write Bcc recipients into the message header. - OfficeChartLayout + SwitchParameter - OfficeChartLayout + SwitchParameter None - ChartStyle + MaxNestedMessageDepth - Chart visual style override. + Maximum embedded-message write depth. - OfficeChartStyle + Int32 - OfficeChartStyle + Int32 None - EmptyCellText + MaxOutputBytes - Text used when a worksheet cell is empty. + Maximum serialized artifact size. - String + Int64 - String + Int64 None - FontFamily + UsePreservedRawSource - Default font family used when the workbook does not specify one. + Emit an unchanged preserved source instead of regenerating the artifact when possible. - String + SwitchParameter - String + SwitchParameter None + + + + + Base64LineLength + + Maximum encoded characters on one Base64 body line. + + Int32 + + Int32 + + + None + + + ConversionLossPolicy + + Policy applied when the requested format cannot preserve known message semantics. + + EmailConversionLossPolicy + + Block + Warn + Allow + + + EmailConversionLossPolicy + + + None + + + IncludeBccHeader + + Write Bcc recipients into the message header. + + SwitchParameter + + SwitchParameter + + + None + + + MaxNestedMessageDepth + + Maximum embedded-message write depth. + + Int32 + + Int32 + + + None + + + MaxOutputBytes + + Maximum serialized artifact size. + + Int64 + + Int64 + + + None + + + UsePreservedRawSource + + Emit an unchanged preserved source instead of regenerating the artifact when possible. + + SwitchParameter + + SwitchParameter + + + None + + + + + + None + + + + + + + OfficeIMO.Email.EmailWriterOptions + + + + + + + + + + + Preserve the original source when possible and block semantic loss. + + PS> + + $options = New-OfficeEmailWriterOptions -UsePreservedRawSource -ConversionLossPolicy Block + $message | Save-OfficeEmail -Path .\Message.eml -Options $options -PassThru + + + + + + + + + + New-OfficeExcel + New + OfficeExcel + + Creates a new Excel workbook using the DSL. + + + + Runs the provided script block inside an ExcelSheet/ExcelCell DSL context and saves the file. + + + + New-OfficeExcel - HeaderRowCount + ApplicationName - Number of leading rows treated as headers. + Workbook application-name metadata. - Int32 + String - Int32 + String None - IncludeSheetHeadings + Author - Include worksheet row and column headings. + Workbook author metadata. - SwitchParameter + String - SwitchParameter + String None - MarginBottom + Category - Bottom page margin in PDF points. + Workbook category metadata. - Double + String - Double + String None - MarginLeft + ClearCachedFormulaResults - Left page margin in PDF points. + Remove cached formula results before saving. - Double + SwitchParameter - Double + SwitchParameter None - MarginRight + Company - Right page margin in PDF points. + Workbook company metadata. - Double + String - Double + String None - - MarginTop + + Content - Top page margin in PDF points. + DSL scriptblock describing workbook content. - Double + ScriptBlock - Double + ScriptBlock None - MaxRowsPerSheet + DateSystem - Maximum worksheet rows to read and render. + Workbook date system for Excel date serials. - Int32 + String + + 1900 + 1904 + NineteenHundred + NineteenFour + - Int32 + String None - PageSize + Description - PDF page size. + Workbook description metadata. - PageSize + String - PageSize + String None - PdfOptions + DisableFastPackageWriter - Underlying low-level OfficeIMO PDF options. + Disable OfficeIMO fast package writers for this save. - PdfOptions + SwitchParameter - PdfOptions + SwitchParameter None - RespectWorkbookSheetVisibility + DocumentTitle - Exclude workbook sheets marked hidden. + Workbook document title metadata. - SwitchParameter + String - SwitchParameter + String None - RespectWorksheetHiddenRowsAndColumns + EvaluateFormulas - Exclude hidden worksheet rows and columns. + Evaluate supported formulas and write cached values before saving. SwitchParameter @@ -136476,22 +137485,10 @@ This does not discover, bypass, or crack a missing password. None - - SheetName - - Worksheet names to export. The default exports all eligible sheets. - - String[] - - String[] - - - None - - UseBoundedWorksheetRead + ForceFullCalculationOnOpen - Use bounded worksheet reads for large workbooks. + Request a full workbook recalculation when opened in Excel-compatible applications. SwitchParameter @@ -136501,45 +137498,45 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetCellStyles + Keywords - Render worksheet cell styles. + Workbook keyword metadata. - SwitchParameter + String - SwitchParameter + String None - UseWorksheetCharts + LastModifiedBy - Render worksheet charts. + Workbook last-modified-by metadata. - SwitchParameter + String - SwitchParameter + String None - UseWorksheetColumnWidths + Manager - Honor worksheet column widths. + Workbook manager metadata. - SwitchParameter + String - SwitchParameter + String None - UseWorksheetHeaderFooterImages + MarkFormulasDirty - Render images referenced by worksheet headers and footers. + Mark formula cells dirty before saving. SwitchParameter @@ -136549,9 +137546,9 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetHeadersAndFooters + NoSave - Render worksheet headers and footers. + Skip saving the workbook after running the DSL. SwitchParameter @@ -136561,9 +137558,9 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetHyperlinks + Open - Render worksheet hyperlinks. + Open the workbook in Excel after saving. SwitchParameter @@ -136573,9 +137570,9 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetImages + PassThru - Render worksheet images. + Emit a FileInfo for convenience. SwitchParameter @@ -136585,33 +137582,33 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetMergedCells + Password - Render merged worksheet cells. + Password used to save the workbook as an encrypted package. - SwitchParameter + String - SwitchParameter + String None - - UseWorksheetPageBreaks + + Path - Honor worksheet page breaks. + Destination path for the workbook. - SwitchParameter + String - SwitchParameter + String None - UseWorksheetPageSetup + SafePreflight - Honor worksheet page setup. + Run OfficeIMO worksheet preflight cleanup before saving. SwitchParameter @@ -136621,9 +137618,9 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetPrintAreas + SafeRepairDefinedNames - Honor worksheet print areas. + Repair common defined-name issues before saving. SwitchParameter @@ -136633,41 +137630,37 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetPrintTitleRows + Subject - Honor worksheet rows configured to repeat on printed pages. + Workbook subject metadata. - SwitchParameter + String - SwitchParameter + String None - - UseWorksheetRowHeights + + TemplatePath - Honor worksheet row heights. + Optional workbook template package copied before running the DSL. - SwitchParameter + String - SwitchParameter + String None - WorksheetLayout + ValidateOpenXml - Controls how worksheet content is laid out on PDF pages. + Validate the saved package with OpenXmlValidator and throw on errors. - ExcelPdfWorksheetLayoutMode - - WorksheetCanvas - FlowTable - + SwitchParameter - ExcelPdfWorksheetLayoutMode + SwitchParameter None @@ -136676,57 +137669,9 @@ This does not discover, bypass, or crack a missing password. - AllowDocumentFontEmbedding - - Allow embedding fonts stored in the workbook. - - SwitchParameter - - SwitchParameter - - - None - - - AllowSystemFontEmbedding - - Allow embedding fonts discovered on the current system. - - SwitchParameter - - SwitchParameter - - - None - - - ChartLayout - - Chart layout override. - - OfficeChartLayout - - OfficeChartLayout - - - None - - - ChartStyle - - Chart visual style override. - - OfficeChartStyle - - OfficeChartStyle - - - None - - - EmptyCellText + ApplicationName - Text used when a worksheet cell is empty. + Workbook application-name metadata. String @@ -136736,9 +137681,9 @@ This does not discover, bypass, or crack a missing password. None - FontFamily + Author - Default font family used when the workbook does not specify one. + Workbook author metadata. String @@ -136748,21 +137693,21 @@ This does not discover, bypass, or crack a missing password. None - HeaderRowCount + Category - Number of leading rows treated as headers. + Workbook category metadata. - Int32 + String - Int32 + String None - IncludeSheetHeadings + ClearCachedFormulaResults - Include worksheet row and column headings. + Remove cached formula results before saving. SwitchParameter @@ -136772,93 +137717,87 @@ This does not discover, bypass, or crack a missing password. None - MarginBottom - - Bottom page margin in PDF points. - - Double - - Double - - - None - - - MarginLeft + Company - Left page margin in PDF points. + Workbook company metadata. - Double + String - Double + String None - - MarginRight + + Content - Right page margin in PDF points. + DSL scriptblock describing workbook content. - Double + ScriptBlock - Double + ScriptBlock None - MarginTop + DateSystem - Top page margin in PDF points. + Workbook date system for Excel date serials. - Double + String + + 1900 + 1904 + NineteenHundred + NineteenFour + - Double + String None - MaxRowsPerSheet + Description - Maximum worksheet rows to read and render. + Workbook description metadata. - Int32 + String - Int32 + String None - PageSize + DisableFastPackageWriter - PDF page size. + Disable OfficeIMO fast package writers for this save. - PageSize + SwitchParameter - PageSize + SwitchParameter None - PdfOptions + DocumentTitle - Underlying low-level OfficeIMO PDF options. + Workbook document title metadata. - PdfOptions + String - PdfOptions + String None - RespectWorkbookSheetVisibility + EvaluateFormulas - Exclude workbook sheets marked hidden. + Evaluate supported formulas and write cached values before saving. SwitchParameter @@ -136868,9 +137807,9 @@ This does not discover, bypass, or crack a missing password. None - RespectWorksheetHiddenRowsAndColumns + ForceFullCalculationOnOpen - Exclude hidden worksheet rows and columns. + Request a full workbook recalculation when opened in Excel-compatible applications. SwitchParameter @@ -136879,58 +137818,46 @@ This does not discover, bypass, or crack a missing password. None - - SheetName - - Worksheet names to export. The default exports all eligible sheets. - - String[] - - String[] - - - None - - UseBoundedWorksheetRead + Keywords - Use bounded worksheet reads for large workbooks. + Workbook keyword metadata. - SwitchParameter + String - SwitchParameter + String None - UseWorksheetCellStyles + LastModifiedBy - Render worksheet cell styles. + Workbook last-modified-by metadata. - SwitchParameter + String - SwitchParameter + String None - UseWorksheetCharts + Manager - Render worksheet charts. + Workbook manager metadata. - SwitchParameter + String - SwitchParameter + String None - UseWorksheetColumnWidths + MarkFormulasDirty - Honor worksheet column widths. + Mark formula cells dirty before saving. SwitchParameter @@ -136940,9 +137867,9 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetHeaderFooterImages + NoSave - Render images referenced by worksheet headers and footers. + Skip saving the workbook after running the DSL. SwitchParameter @@ -136952,9 +137879,9 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetHeadersAndFooters + Open - Render worksheet headers and footers. + Open the workbook in Excel after saving. SwitchParameter @@ -136964,9 +137891,9 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetHyperlinks + PassThru - Render worksheet hyperlinks. + Emit a FileInfo for convenience. SwitchParameter @@ -136976,33 +137903,33 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetImages + Password - Render worksheet images. + Password used to save the workbook as an encrypted package. - SwitchParameter + String - SwitchParameter + String None - - UseWorksheetMergedCells + + Path - Render merged worksheet cells. + Destination path for the workbook. - SwitchParameter + String - SwitchParameter + String None - UseWorksheetPageBreaks + SafePreflight - Honor worksheet page breaks. + Run OfficeIMO worksheet preflight cleanup before saving. SwitchParameter @@ -137012,9 +137939,9 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetPageSetup + SafeRepairDefinedNames - Honor worksheet page setup. + Repair common defined-name issues before saving. SwitchParameter @@ -137024,33 +137951,33 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetPrintAreas + Subject - Honor worksheet print areas. + Workbook subject metadata. - SwitchParameter + String - SwitchParameter + String None - - UseWorksheetPrintTitleRows + + TemplatePath - Honor worksheet rows configured to repeat on printed pages. + Optional workbook template package copied before running the DSL. - SwitchParameter + String - SwitchParameter + String None - UseWorksheetRowHeights + ValidateOpenXml - Honor worksheet row heights. + Validate the saved package with OpenXmlValidator and throw on errors. SwitchParameter @@ -137059,22 +137986,6 @@ This does not discover, bypass, or crack a missing password. None - - WorksheetLayout - - Controls how worksheet content is laid out on PDF pages. - - ExcelPdfWorksheetLayoutMode - - WorksheetCanvas - FlowTable - - - ExcelPdfWorksheetLayoutMode - - - None - @@ -137083,13 +137994,7 @@ This does not discover, bypass, or crack a missing password. - - - - OfficeIMO.Excel.Pdf.ExcelPdfSaveOptions - - - + @@ -137097,14 +138002,27 @@ This does not discover, bypass, or crack a missing password. - Export selected visible sheets with workbook layout features. + Create a workbook with a sheet and a few cells. PS> - $options = New-OfficeExcelPdfOptions -SheetName Summary,Services -UseWorksheetCharts -UseWorksheetImages - Export-OfficeDocumentPdf -InputPath .\Report.xlsx -Path .\Report.pdf -ExcelOptions $options + New-OfficeExcel -Path .\report.xlsx { ExcelSheet 'Data' { ExcelCell -Address 'A1' -Value 'Region' } } - + Creates report.xlsx and writes “Region” into cell A1 on the Data worksheet. + + + + Keep a workbook for incremental composition. + + PS> + + $workbook = New-OfficeExcel -Path .\report.xlsx -NoSave + $sheet = $workbook | Add-OfficeExcelSheet -Name 'Data' -PassThru + $sheet | Set-OfficeExcelCell -Address A1 -Value 'Region' + $workbook | Save-OfficeExcel + $workbook | Close-OfficeExcel + + Associates the output path with a live workbook, changes a worksheet, then saves and closes it once. @@ -137112,52 +138030,65 @@ This does not discover, bypass, or crack a missing password. - New-OfficeMarkdown + New-OfficeExcelDashboard New - OfficeMarkdown + OfficeExcelDashboard - Creates a Markdown document using a DSL scriptblock. + Builds a worksheet dashboard from tabular data using OfficeIMO dashboard defaults. - Runs the scriptblock against a Markdown document and saves it to disk unless -NoSave is specified. + Builds a worksheet dashboard from tabular data using OfficeIMO dashboard defaults. - - New-OfficeMarkdown - - Content + + New-OfficeExcelDashboard + + ChartColumn - DSL scriptblock describing Markdown content. + Top-left chart column. - ScriptBlock + Int32 - ScriptBlock + Int32 None - ImageRenderingMode + ChartPreset - Controls how Markdown images are serialized. + Dashboard chart preset. - MarkdownImageRenderingMode + ExcelDashboardChartPreset - RichMarkdown - PortableMarkdown - Html + Comparison + Trend + Contribution + CompactComparison - MarkdownImageRenderingMode + ExcelDashboardChartPreset None - LineEnding + ChartRow - Markdown line ending: CRLF, LF, CR, or a literal line ending string. + Top-left chart row. + + Int32 + + Int32 + + + None + + + ChartTitle + + Chart title. Defaults to Title when omitted. String @@ -137166,10 +138097,22 @@ This does not discover, bypass, or crack a missing password. None + + InputObject + + Rows to render in the dashboard table. + + Object + + Object + + + None + - NoSave + NoAutoFilter - Skip saving after executing the DSL. + Disable AutoFilter dropdowns on the generated table. SwitchParameter @@ -137179,9 +138122,9 @@ This does not discover, bypass, or crack a missing password. None - PassThru + NoAutoFit - Emit a FileInfo for chaining. + Disable auto-fit for generated table columns. SwitchParameter @@ -137190,22 +138133,34 @@ This does not discover, bypass, or crack a missing password. None - - Path + + NoChart - Destination path for the Markdown file. + Do not create a chart. - String + SwitchParameter - String + SwitchParameter None - UnorderedListMarker + PassThru - Unordered list marker: '-', '*', or '+'. + Emit dashboard build metadata. + + SwitchParameter + + SwitchParameter + + + None + + + Subtitle + + Dashboard subtitle. String @@ -137215,240 +138170,45 @@ This does not discover, bypass, or crack a missing password. None - WriteOptions + TableColumn - Optional Markdown writer options. + Top-left column for the generated table. - MarkdownWriteOptions + Int32 - MarkdownWriteOptions + Int32 None - WriteProfile + TableName - Friendly Markdown writer profile. + Name for the generated table. - OfficeMarkdownWriteProfile - - OfficeIMO - Portable - HtmlImage - + String - OfficeMarkdownWriteProfile + String None - - - - - Content - - DSL scriptblock describing Markdown content. - - ScriptBlock - - ScriptBlock - - - None - - - ImageRenderingMode - - Controls how Markdown images are serialized. - - MarkdownImageRenderingMode - - RichMarkdown - PortableMarkdown - Html - - - MarkdownImageRenderingMode - - - None - - - LineEnding - - Markdown line ending: CRLF, LF, CR, or a literal line ending string. - - String - - String - - - None - - - NoSave - - Skip saving after executing the DSL. - - SwitchParameter - - SwitchParameter - - - None - - - PassThru - - Emit a FileInfo for chaining. - - SwitchParameter - - SwitchParameter - - - None - - - Path - - Destination path for the Markdown file. - - String - - String - - - None - - - UnorderedListMarker - - Unordered list marker: '-', '*', or '+'. - - String - - String - - - None - - - WriteOptions - - Optional Markdown writer options. - - MarkdownWriteOptions - - MarkdownWriteOptions - - - None - - - WriteProfile - - Friendly Markdown writer profile. - - OfficeMarkdownWriteProfile - - OfficeIMO - Portable - HtmlImage - - - OfficeMarkdownWriteProfile - - - None - - - - - - None - - - - - - - System.IO.FileInfo - - - - - OfficeIMO.Markdown.MarkdownDoc - - - - - - - - - - - Create a Markdown document with headings and a table. - - PS> - - New-OfficeMarkdown -Path .\README.md { MarkdownHeading -Level 1 -Text 'Report'; MarkdownTable -InputObject $data } - - Creates a README file with a heading and table content. - - - - Create a report with multiple tables. - - PS> - - New-OfficeMarkdown -Path .\Report.md { - MarkdownHeading -Level 1 -Text 'Summary' - MarkdownTable -InputObject $summary - MarkdownHeading -Level 2 -Text 'Details' - MarkdownTable -InputObject $details - } - - Creates a report with two tables separated by headings. - - - - - - - - New-OfficeMarkdownPdfOptions - New - OfficeMarkdownPdfOptions - - Creates discoverable Markdown-to-PDF conversion options for Export-OfficeDocumentPdf. - - - - Creates discoverable Markdown-to-PDF conversion options for Export-OfficeDocumentPdf. - - - - New-OfficeMarkdownPdfOptions - ApplyWordLikeTheme + TableRow - Apply the built-in Word-like Markdown PDF baseline theme. + Top-left row for the generated table. - SwitchParameter + Int32 - SwitchParameter + Int32 None - Author + TableStyle - PDF author metadata. + Built-in table style. String @@ -137458,9 +138218,9 @@ This does not discover, bypass, or crack a missing password. None - BaseDirectory + Title - Base directory used to resolve local Markdown images. + Dashboard title. String @@ -137469,46 +138229,55 @@ This does not discover, bypass, or crack a missing password. None + + + New-OfficeExcelDashboard - CreateOutlineFromHeadings + ChartColumn - Create PDF outlines from Markdown headings. + Top-left chart column. - SwitchParameter + Int32 - SwitchParameter + Int32 None - DefaultImageHeight + ChartPreset - Fallback image height in PDF points. + Dashboard chart preset. - Double + ExcelDashboardChartPreset + + Comparison + Trend + Contribution + CompactComparison + - Double + ExcelDashboardChartPreset None - DefaultImageWidth + ChartRow - Fallback image width in PDF points. + Top-left chart row. - Double + Int32 - Double + Int32 None - FontFamily + ChartTitle - Default font family. + Chart title. Defaults to Title when omitted. String @@ -137517,27 +138286,34 @@ This does not discover, bypass, or crack a missing password. None + + InputObject + + Rows to render in the dashboard table. + + Object + + Object + + + None + - FrontMatterRenderMode + NoAutoFilter - Controls how YAML front matter appears in the PDF body. + Disable AutoFilter dropdowns on the generated table. - MarkdownPdfFrontMatterRenderMode - - Hidden - DocumentHeader - Table - + SwitchParameter - MarkdownPdfFrontMatterRenderMode + SwitchParameter None - IncludeDataUriImages + NoAutoFit - Embed supported data URI images. + Disable auto-fit for generated table columns. SwitchParameter @@ -137547,9 +138323,9 @@ This does not discover, bypass, or crack a missing password. None - IncludeLocalImages + NoChart - Embed supported local image files. + Do not create a chart. SwitchParameter @@ -137559,9 +138335,33 @@ This does not discover, bypass, or crack a missing password. None - Keywords + PassThru - PDF keywords metadata. + Emit dashboard build metadata. + + SwitchParameter + + SwitchParameter + + + None + + + Path + + Workbook path to update. + + String + + String + + + None + + + Sheet + + Worksheet name when using Path or Document. String @@ -137571,9 +138371,9 @@ This does not discover, bypass, or crack a missing password. None - MaximumDataUriImageBytes + SheetIndex - Maximum decoded bytes for one data URI image. + Worksheet index (0-based) when using Path or Document. Int32 @@ -137582,46 +138382,58 @@ This does not discover, bypass, or crack a missing password. None - - Options + + Subtitle - Existing Markdown PDF options to clone and override. + Dashboard subtitle. - MarkdownPdfSaveOptions + String - MarkdownPdfSaveOptions + String None - PdfOptions + TableColumn - Underlying low-level OfficeIMO PDF options. + Top-left column for the generated table. - PdfOptions + Int32 - PdfOptions + Int32 None - RestrictLocalImagesToBaseDirectory + TableName - Require local images to resolve under BaseDirectory. + Name for the generated table. - SwitchParameter + String - SwitchParameter + String None - Subject + TableRow - PDF subject metadata. + Top-left row for the generated table. + + Int32 + + Int32 + + + None + + + TableStyle + + Built-in table style. String @@ -137631,29 +138443,66 @@ This does not discover, bypass, or crack a missing password. None - Theme + Title - Built-in visual theme. + Dashboard title. - OfficeVisualThemeKind + String + + String + + + None + + + + New-OfficeExcelDashboard + + ChartColumn + + Top-left chart column. + + Int32 + + Int32 + + + None + + + ChartPreset + + Dashboard chart preset. + + ExcelDashboardChartPreset - Plain - WordLike - TechnicalDocument - GitHubLike - Compact - Report + Comparison + Trend + Contribution + CompactComparison - OfficeVisualThemeKind + ExcelDashboardChartPreset None - Title + ChartRow - PDF title metadata. + Top-left chart row. + + Int32 + + Int32 + + + None + + + ChartTitle + + Chart title. Defaults to Title when omitted. String @@ -137662,10 +138511,34 @@ This does not discover, bypass, or crack a missing password. None + + Document + + Workbook to update outside the DSL context. + + ExcelDocument + + ExcelDocument + + + None + + + InputObject + + Rows to render in the dashboard table. + + Object + + Object + + + None + - UseFirstHeadingAsTitle + NoAutoFilter - Use the first Markdown heading as the PDF title when no title is supplied. + Disable AutoFilter dropdowns on the generated table. SwitchParameter @@ -137675,9 +138548,9 @@ This does not discover, bypass, or crack a missing password. None - UseFrontMatterMetadata + NoAutoFit - Use front matter values as PDF metadata. + Disable auto-fit for generated table columns. SwitchParameter @@ -137687,9 +138560,21 @@ This does not discover, bypass, or crack a missing password. None - UseFrontMatterVisualTheme + NoChart - Use front matter values to select a visual theme. + Do not create a chart. + + SwitchParameter + + SwitchParameter + + + None + + + PassThru + + Emit dashboard build metadata. SwitchParameter @@ -137698,114 +138583,211 @@ This does not discover, bypass, or crack a missing password. None + + Sheet + + Worksheet name when using Path or Document. + + String + + String + + + None + + + SheetIndex + + Worksheet index (0-based) when using Path or Document. + + Int32 + + Int32 + + + None + + + Subtitle + + Dashboard subtitle. + + String + + String + + + None + + + TableColumn + + Top-left column for the generated table. + + Int32 + + Int32 + + + None + + + TableName + + Name for the generated table. + + String + + String + + + None + + + TableRow + + Top-left row for the generated table. + + Int32 + + Int32 + + + None + + + TableStyle + + Built-in table style. + + String + + String + + + None + + + Title + + Dashboard title. + + String + + String + + + None + - ApplyWordLikeTheme + ChartColumn - Apply the built-in Word-like Markdown PDF baseline theme. + Top-left chart column. - SwitchParameter + Int32 - SwitchParameter + Int32 None - Author + ChartPreset - PDF author metadata. + Dashboard chart preset. - String + ExcelDashboardChartPreset + + Comparison + Trend + Contribution + CompactComparison + - String + ExcelDashboardChartPreset None - BaseDirectory + ChartRow - Base directory used to resolve local Markdown images. + Top-left chart row. - String + Int32 - String + Int32 None - CreateOutlineFromHeadings + ChartTitle - Create PDF outlines from Markdown headings. + Chart title. Defaults to Title when omitted. - SwitchParameter + String - SwitchParameter + String None - - DefaultImageHeight + + Document - Fallback image height in PDF points. + Workbook to update outside the DSL context. - Double + ExcelDocument - Double + ExcelDocument None - - DefaultImageWidth + + InputObject - Fallback image width in PDF points. + Rows to render in the dashboard table. - Double + Object - Double + Object None - FontFamily + NoAutoFilter - Default font family. + Disable AutoFilter dropdowns on the generated table. - String + SwitchParameter - String + SwitchParameter None - FrontMatterRenderMode + NoAutoFit - Controls how YAML front matter appears in the PDF body. + Disable auto-fit for generated table columns. - MarkdownPdfFrontMatterRenderMode - - Hidden - DocumentHeader - Table - + SwitchParameter - MarkdownPdfFrontMatterRenderMode + SwitchParameter None - IncludeDataUriImages + NoChart - Embed supported data URI images. + Do not create a chart. SwitchParameter @@ -137815,9 +138797,9 @@ This does not discover, bypass, or crack a missing password. None - IncludeLocalImages + PassThru - Embed supported local image files. + Emit dashboard build metadata. SwitchParameter @@ -137826,70 +138808,46 @@ This does not discover, bypass, or crack a missing password. None - - Keywords + + Path - PDF keywords metadata. + Workbook path to update. - String + String String None - - MaximumDataUriImageBytes - - Maximum decoded bytes for one data URI image. - - Int32 - - Int32 - - - None - - - Options - - Existing Markdown PDF options to clone and override. - - MarkdownPdfSaveOptions - - MarkdownPdfSaveOptions - - - None - - - PdfOptions + + Sheet - Underlying low-level OfficeIMO PDF options. + Worksheet name when using Path or Document. - PdfOptions + String - PdfOptions + String None - RestrictLocalImagesToBaseDirectory + SheetIndex - Require local images to resolve under BaseDirectory. + Worksheet index (0-based) when using Path or Document. - SwitchParameter + Int32 - SwitchParameter + Int32 None - Subject + Subtitle - PDF subject metadata. + Dashboard subtitle. String @@ -137899,29 +138857,21 @@ This does not discover, bypass, or crack a missing password. None - Theme + TableColumn - Built-in visual theme. + Top-left column for the generated table. - OfficeVisualThemeKind - - Plain - WordLike - TechnicalDocument - GitHubLike - Compact - Report - + Int32 - OfficeVisualThemeKind + Int32 None - Title + TableName - PDF title metadata. + Name for the generated table. String @@ -137931,37 +138881,37 @@ This does not discover, bypass, or crack a missing password. None - UseFirstHeadingAsTitle + TableRow - Use the first Markdown heading as the PDF title when no title is supplied. + Top-left row for the generated table. - SwitchParameter + Int32 - SwitchParameter + Int32 None - UseFrontMatterMetadata + TableStyle - Use front matter values as PDF metadata. + Built-in table style. - SwitchParameter + String - SwitchParameter + String None - UseFrontMatterVisualTheme + Title - Use front matter values to select a visual theme. + Dashboard title. - SwitchParameter + String - SwitchParameter + String None @@ -137970,14 +138920,14 @@ This does not discover, bypass, or crack a missing password. - OfficeIMO.Markdown.Pdf.MarkdownPdfSaveOptions + System.Object - OfficeIMO.Markdown.Pdf.MarkdownPdfSaveOptions + System.Management.Automation.PSObject @@ -137988,14 +138938,13 @@ This does not discover, bypass, or crack a missing password. - Allow local report images and apply PDF metadata. + Create a dashboard table and chart. PS> - $options = New-OfficeMarkdownPdfOptions -Title 'Service report' -Author 'Evotec' -IncludeLocalImages -BaseDirectory .\Assets - Export-OfficeDocumentPdf -InputPath .\Report.md -Path .\Report.pdf -MarkdownOptions $options + $rows | New-OfficeExcelDashboard -Title 'Sales Dashboard' -TableName Sales -ChartPreset CompactComparison - Builds a typed options object through ordinary PowerShell parameters; no hashtable or .NET construction is required. + Writes a table and chart into the current Excel DSL worksheet. @@ -138003,40 +138952,35 @@ This does not discover, bypass, or crack a missing password. - New-OfficeOpenDocument + New-OfficeExcelImageOptions New - OfficeOpenDocument + OfficeExcelImageOptions - Creates a native ODT, ODS, or ODP document. + Creates discoverable rendering settings for Excel range and chart image export. - Creates a native ODT, ODS, or ODP document. + Creates discoverable rendering settings for Excel range and chart image export. - New-OfficeOpenDocument - - Kind + New-OfficeExcelImageOptions + + BackgroundColor - OpenDocument text, spreadsheet, or presentation kind. + - OdfDocumentKind - - Text - Spreadsheet - Presentation - + String - OdfDocumentKind + String None - PassThru + IncludeCharts - Emit the saved file when a destination path is supplied. + Include worksheet charts. SwitchParameter @@ -138045,144 +138989,46 @@ This does not discover, bypass, or crack a missing password. None - - Path + + IncludeConditionalFormatting - Optional initial destination path. + Include conditional formatting. - String + SwitchParameter - String + SwitchParameter None - - - - - Kind - - OpenDocument text, spreadsheet, or presentation kind. - - OdfDocumentKind - - Text - Spreadsheet - Presentation - - - OdfDocumentKind - - - None - - - PassThru - - Emit the saved file when a destination path is supplied. - - SwitchParameter - - SwitchParameter - - - None - - - Path - - Optional initial destination path. - - String - - String - - - None - - - - - - None - - - - - - - OfficeIMO.OpenDocument.OdfDocument - - - - - System.IO.FileInfo - - - - - - - - - - - EXAMPLE 1 - New-OfficeOpenDocument -Path 'C:\Path' - - - - - - - - - - New-OfficePdf - New - OfficePdf - - Creates a PDF document using the OfficeIMO.Pdf composition engine. - - - - New-OfficePdf starts a generated PDF document and optionally executes a PSWriteOffice PDF DSL script block. -The DSL commands are thin adapters over OfficeIMO.Pdf and support document metadata, page setup, headers, footers, -themes, styled text, tables, panels, row layouts, form fields, attachments, compliance settings, and save/open behavior. -Use -NoSave or omit -Path when a document object should be returned for further pipeline operations. - - - - New-OfficePdf - BoldFontPath + IncludeDrawingObjects - Optional bold TrueType font path used when -FontFamily is provided. + Include drawing objects. - String + SwitchParameter - String + SwitchParameter None - BoldItalicFontPath + IncludeHidden - Optional bold italic TrueType font path used when -FontFamily is provided. + Include hidden rows and columns. - String + SwitchParameter - String + SwitchParameter None - CenterWindow + IncludeImages - Request PDF viewers to center the document window on screen. + Include worksheet images. SwitchParameter @@ -138191,60 +139037,122 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Content + + MaximumDegreeOfParallelism - DSL script block describing generated PDF content. + - ScriptBlock + Int32 - ScriptBlock + Int32 None - CreateOutlineFromHeadings + MaximumOutputCount - Create PDF outline/bookmark entries from heading elements. + - SwitchParameter + Int32 - SwitchParameter + Int32 None - DefaultFont + MaximumOutputHeight - Default standard PDF font for generated text. + - PdfStandardFont - - Helvetica - HelveticaOblique - HelveticaBold - HelveticaBoldOblique - TimesRoman - TimesItalic - TimesBold - TimesBoldItalic - Courier - CourierOblique - CourierBold - CourierBoldOblique + Int32 + + Int32 + + + None + + + MaximumOutputWidth + + + + Int32 + + Int32 + + + None + + + MaximumRasterPixels + + + + Int64 + + Int64 + + + None + + + MaximumRenderedCells + + Maximum cells rendered. + + Int32 + + Int32 + + + None + + + MaximumTotalEncodedBytes + + + + Int64 + + Int64 + + + None + + + MaximumTotalRasterPixels + + + + Int64 + + Int64 + + + None + + + RasterOverflowBehavior + + + + OfficeRasterOverflowBehavior + + ReduceScale + Throw - PdfStandardFont + OfficeRasterOverflowBehavior None - DefaultFontSize + RenderTimeoutSeconds - Default generated text font size in points. + Double @@ -138254,40 +139162,33 @@ Use -NoSave or omit -Path when a document object should be returned for further None - DisplayDocTitle + Scale - Request PDF viewers to display the document title instead of the file name. + - SwitchParameter + Double - SwitchParameter + Double None - FileVersion + ShowCommentBodies - PDF file header version emitted by OfficeIMO.Pdf. + Show cell comment bodies. - PdfFileVersion - - Pdf14 - Pdf15 - Pdf16 - Pdf17 - Pdf20 - + SwitchParameter - PdfFileVersion + SwitchParameter None - FitWindow + ShowGridlines - Request PDF viewers to fit the document window to the first displayed page. + Show worksheet gridlines. SwitchParameter @@ -138297,9 +139198,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - FlattenVisualAnnotations + ShowHyperlinkHints - Flatten generated FreeText and Highlight annotations into static page content. + Show hyperlink hints. SwitchParameter @@ -138309,9 +139210,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - FontFamily + TargetDpi - Embedded TrueType font family name for generated text. + + + Double + + Double + + + None + + + TextShapingLanguage + + String @@ -138320,10 +139233,342 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + + + + BackgroundColor + + + + String + + String + + + None + + + IncludeCharts + + Include worksheet charts. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeConditionalFormatting + + Include conditional formatting. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeDrawingObjects + + Include drawing objects. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeHidden + + Include hidden rows and columns. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeImages + + Include worksheet images. + + SwitchParameter + + SwitchParameter + + + None + + + MaximumDegreeOfParallelism + + + + Int32 + + Int32 + + + None + + + MaximumOutputCount + + + + Int32 + + Int32 + + + None + + + MaximumOutputHeight + + + + Int32 + + Int32 + + + None + + + MaximumOutputWidth + + + + Int32 + + Int32 + + + None + + + MaximumRasterPixels + + + + Int64 + + Int64 + + + None + + + MaximumRenderedCells + + Maximum cells rendered. + + Int32 + + Int32 + + + None + + + MaximumTotalEncodedBytes + + + + Int64 + + Int64 + + + None + + + MaximumTotalRasterPixels + + + + Int64 + + Int64 + + + None + + + RasterOverflowBehavior + + + + OfficeRasterOverflowBehavior + + ReduceScale + Throw + + + OfficeRasterOverflowBehavior + + + None + + + RenderTimeoutSeconds + + + + Double + + Double + + + None + + + Scale + + + + Double + + Double + + + None + + + ShowCommentBodies + + Show cell comment bodies. + + SwitchParameter + + SwitchParameter + + + None + + + ShowGridlines + + Show worksheet gridlines. + + SwitchParameter + + SwitchParameter + + + None + + + ShowHyperlinkHints + + Show hyperlink hints. + + SwitchParameter + + SwitchParameter + + + None + + + TargetDpi + + + + Double + + Double + + + None + + + TextShapingLanguage + + + + String + + String + + + None + + + + + + None + + + + + + + OfficeIMO.Excel.ExcelImageExportOptions + + + + + + + + + + + Render a range with gridlines and hyperlinks visible. + + PS> + + $options = New-OfficeExcelImageOptions -ShowGridlines -ShowHyperlinkHints -TargetDpi 144 + Export-OfficeExcelRangeImage -Path .\Workbook.xlsx -Worksheet Summary -Range A1:H20 -OutputPath .\Summary.svg -Options $options + + + + + + Reuse the same rendering controls for a chart. + + PS> + + $options = New-OfficeExcelImageOptions -TargetDpi 144 -MaximumOutputWidth 1600 + Export-OfficeExcelChartImage -Path .\Workbook.xlsx -Worksheet Summary -ChartName Revenue -OutputPath .\Revenue.svg -Options $options + + + + + + + + + + New-OfficeExcelOpenDocumentOptions + New + OfficeExcelOpenDocumentOptions + + Creates Excel/OpenDocument conversion settings. + + + + Creates Excel/OpenDocument conversion settings. + + + + New-OfficeExcelOpenDocumentOptions - HideMenubar + IncludeBasicStyles - Request PDF viewers to hide the menu bar. + Copy common font, fill, and number-format styles. SwitchParameter @@ -138333,21 +139578,180 @@ Use -NoSave or omit -Path when a document object should be returned for further None - HideToolbar + LossPolicy - Request PDF viewers to hide the toolbar. + Whether conversion loss is reported or rejected. - SwitchParameter + OdfConversionLossPolicy + + ReportOnly + ThrowOnSkippedOrUnsupported + ThrowOnAnyLoss + - SwitchParameter + OdfConversionLossPolicy None - HideWindowUI + MaximumColumns - Request PDF viewers to hide user-interface elements. + Maximum spreadsheet columns. + + Int32 + + Int32 + + + None + + + MaximumExpandedCells + + Maximum cells materialized during conversion. + + Int64 + + Int64 + + + None + + + MaximumRows + + Maximum spreadsheet rows. + + Int32 + + Int32 + + + None + + + + + + IncludeBasicStyles + + Copy common font, fill, and number-format styles. + + SwitchParameter + + SwitchParameter + + + None + + + LossPolicy + + Whether conversion loss is reported or rejected. + + OdfConversionLossPolicy + + ReportOnly + ThrowOnSkippedOrUnsupported + ThrowOnAnyLoss + + + OdfConversionLossPolicy + + + None + + + MaximumColumns + + Maximum spreadsheet columns. + + Int32 + + Int32 + + + None + + + MaximumExpandedCells + + Maximum cells materialized during conversion. + + Int64 + + Int64 + + + None + + + MaximumRows + + Maximum spreadsheet rows. + + Int32 + + Int32 + + + None + + + + + + None + + + + + + + OfficeIMO.Excel.OpenDocument.ExcelOpenDocumentConversionOptions + + + + + + + + + + + Convert a bounded worksheet area with basic styles. + + PS> + + $options = New-OfficeExcelOpenDocumentOptions -IncludeBasicStyles -MaximumRows 10000 -MaximumColumns 100 + ConvertTo-OfficeOpenDocument -Path .\Data.xlsx -OutputPath .\Data.ods -ExcelOptions $options + + + + + + + + + + New-OfficeExcelPdfOptions + New + OfficeExcelPdfOptions + + Creates discoverable Excel-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + Creates discoverable Excel-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + New-OfficeExcelPdfOptions + + AllowDocumentFontEmbedding + + Allow embedding fonts stored in the workbook. SwitchParameter @@ -138357,9 +139761,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludePageLabels + AllowSystemFontEmbedding - Emit generated catalog page labels. + Allow embedding fonts discovered on the current system. SwitchParameter @@ -138369,9 +139773,33 @@ Use -NoSave or omit -Path when a document object should be returned for further None - ItalicFontPath + ChartLayout - Optional italic TrueType font path used when -FontFamily is provided. + Chart layout override. + + OfficeChartLayout + + OfficeChartLayout + + + None + + + ChartStyle + + Chart visual style override. + + OfficeChartStyle + + OfficeChartStyle + + + None + + + EmptyCellText + + Text used when a worksheet cell is empty. String @@ -138381,21 +139809,33 @@ Use -NoSave or omit -Path when a document object should be returned for further None - NoSave + FontFamily - Skip saving even when -Path is provided. + Default font family used when the workbook does not specify one. - SwitchParameter + String - SwitchParameter + String None - - Open + + HeaderRowCount - Open the PDF after saving. + Number of leading rows treated as headers. + + Int32 + + Int32 + + + None + + + IncludeSheetHeadings + + Include worksheet row and column headings. SwitchParameter @@ -138405,43 +139845,33 @@ Use -NoSave or omit -Path when a document object should be returned for further None - OpenActionMode + MarginBottom - Open-action destination mode. + Bottom page margin in PDF points. - PdfOpenActionDestinationMode - - Xyz - Fit - FitHorizontal - FitVertical - FitRectangle - FitBoundingBox - FitBoundingBoxHorizontal - FitBoundingBoxVertical - + Double - PdfOpenActionDestinationMode + Double None - OpenActionPage + MarginLeft - Initial one-based page shown by PDF viewers that honor open actions. + Left page margin in PDF points. - Int32 + Double - Int32 + Double None - OpenActionTop + MarginRight - Optional open-action top coordinate. + Right page margin in PDF points. Double @@ -138451,9 +139881,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - OutlineExpansionLevel + MarginTop - Initial outline expansion level when heading outlines are created. + Top page margin in PDF points. + + Double + + Double + + + None + + + MaxRowsPerSheet + + Maximum worksheet rows to read and render. Int32 @@ -138463,73 +139905,69 @@ Use -NoSave or omit -Path when a document object should be returned for further None - OwnerPassword + PageSize - Optional owner password for the generated encrypted PDF. + PDF page size. - String + PageSize - String + PageSize None - PageLabelPrefix + PdfOptions - Optional generated page-label prefix. + Underlying low-level OfficeIMO PDF options. - String + PdfOptions - String + PdfOptions None - PageLayout + RespectWorkbookSheetVisibility - Catalog page layout hint emitted for generated PDFs. + Exclude workbook sheets marked hidden. - PdfCatalogPageLayout - - SinglePage - OneColumn - TwoColumnLeft - TwoColumnRight - TwoPageLeft - TwoPageRight - + SwitchParameter - PdfCatalogPageLayout + SwitchParameter None - PageMode + RespectWorksheetHiddenRowsAndColumns - Catalog page mode hint emitted for generated PDFs. + Exclude hidden worksheet rows and columns. - PdfCatalogPageMode - - UseNone - UseOutlines - UseThumbs - FullScreen - UseOC - UseAttachments - + SwitchParameter - PdfCatalogPageMode + SwitchParameter + + + None + + + SheetName + + Worksheet names to export. The default exports all eligible sheets. + + String[] + + String[] None - PassThru + UseBoundedWorksheetRead - Emit the generated document or saved file for chaining. + Use bounded worksheet reads for large workbooks. SwitchParameter @@ -138538,103 +139976,94 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Password + + UseWorksheetCellStyles - Password required to open the generated PDF. + Render worksheet cell styles. - String + SwitchParameter - String + SwitchParameter None - - Path + + UseWorksheetCharts - Optional destination PDF path. + Render worksheet charts. - String + SwitchParameter - String + SwitchParameter None - - Permission + + UseWorksheetColumnWidths - Raw PDF Standard security permission bit mask. Defaults to allowing all standard operations. + Honor worksheet column widths. - Int32 + SwitchParameter - Int32 + SwitchParameter None - - RegularFontPath + + UseWorksheetHeaderFooterImages - Regular TrueType font path used when -FontFamily is provided. + Render images referenced by worksheet headers and footers. - String + SwitchParameter - String + SwitchParameter None - Theme + UseWorksheetHeadersAndFooters - Built-in OfficeIMO.Pdf theme applied before the DSL content runs. + Render worksheet headers and footers. - OfficePdfThemePreset - - WordLike - TechnicalDocument - Compact - Report - + SwitchParameter - OfficePdfThemePreset + SwitchParameter None - - - New-OfficePdf - BoldFontPath + UseWorksheetHyperlinks - Optional bold TrueType font path used when -FontFamily is provided. + Render worksheet hyperlinks. - String + SwitchParameter - String + SwitchParameter None - BoldItalicFontPath + UseWorksheetImages - Optional bold italic TrueType font path used when -FontFamily is provided. + Render worksheet images. - String + SwitchParameter - String + SwitchParameter None - CenterWindow + UseWorksheetMergedCells - Request PDF viewers to center the document window on screen. + Render merged worksheet cells. SwitchParameter @@ -138643,22 +140072,22 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Content + + UseWorksheetPageBreaks - DSL script block describing generated PDF content. + Honor worksheet page breaks. - ScriptBlock + SwitchParameter - ScriptBlock + SwitchParameter None - CreateOutlineFromHeadings + UseWorksheetPageSetup - Create PDF outline/bookmark entries from heading elements. + Honor worksheet page setup. SwitchParameter @@ -138668,78 +140097,9104 @@ Use -NoSave or omit -Path when a document object should be returned for further None - DefaultFont + UseWorksheetPrintAreas - Default standard PDF font for generated text. + Honor worksheet print areas. - PdfStandardFont - - Helvetica - HelveticaOblique - HelveticaBold - HelveticaBoldOblique - TimesRoman - TimesItalic - TimesBold - TimesBoldItalic - Courier - CourierOblique - CourierBold - CourierBoldOblique - + SwitchParameter - PdfStandardFont + SwitchParameter None - DefaultFontSize + UseWorksheetPrintTitleRows - Default generated text font size in points. + Honor worksheet rows configured to repeat on printed pages. - Double + SwitchParameter - Double + SwitchParameter None - DisplayDocTitle + UseWorksheetRowHeights + + Honor worksheet row heights. + + SwitchParameter + + SwitchParameter + + + None + + + WorksheetLayout + + Controls how worksheet content is laid out on PDF pages. + + ExcelPdfWorksheetLayoutMode + + WorksheetCanvas + FlowTable + + + ExcelPdfWorksheetLayoutMode + + + None + + + + + + AllowDocumentFontEmbedding + + Allow embedding fonts stored in the workbook. + + SwitchParameter + + SwitchParameter + + + None + + + AllowSystemFontEmbedding + + Allow embedding fonts discovered on the current system. + + SwitchParameter + + SwitchParameter + + + None + + + ChartLayout + + Chart layout override. + + OfficeChartLayout + + OfficeChartLayout + + + None + + + ChartStyle + + Chart visual style override. + + OfficeChartStyle + + OfficeChartStyle + + + None + + + EmptyCellText + + Text used when a worksheet cell is empty. + + String + + String + + + None + + + FontFamily + + Default font family used when the workbook does not specify one. + + String + + String + + + None + + + HeaderRowCount + + Number of leading rows treated as headers. + + Int32 + + Int32 + + + None + + + IncludeSheetHeadings + + Include worksheet row and column headings. + + SwitchParameter + + SwitchParameter + + + None + + + MarginBottom + + Bottom page margin in PDF points. + + Double + + Double + + + None + + + MarginLeft + + Left page margin in PDF points. + + Double + + Double + + + None + + + MarginRight + + Right page margin in PDF points. + + Double + + Double + + + None + + + MarginTop + + Top page margin in PDF points. + + Double + + Double + + + None + + + MaxRowsPerSheet + + Maximum worksheet rows to read and render. + + Int32 + + Int32 + + + None + + + PageSize + + PDF page size. + + PageSize + + PageSize + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + RespectWorkbookSheetVisibility + + Exclude workbook sheets marked hidden. + + SwitchParameter + + SwitchParameter + + + None + + + RespectWorksheetHiddenRowsAndColumns + + Exclude hidden worksheet rows and columns. + + SwitchParameter + + SwitchParameter + + + None + + + SheetName + + Worksheet names to export. The default exports all eligible sheets. + + String[] + + String[] + + + None + + + UseBoundedWorksheetRead + + Use bounded worksheet reads for large workbooks. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetCellStyles + + Render worksheet cell styles. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetCharts + + Render worksheet charts. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetColumnWidths + + Honor worksheet column widths. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetHeaderFooterImages + + Render images referenced by worksheet headers and footers. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetHeadersAndFooters + + Render worksheet headers and footers. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetHyperlinks + + Render worksheet hyperlinks. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetImages + + Render worksheet images. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetMergedCells + + Render merged worksheet cells. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPageBreaks + + Honor worksheet page breaks. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPageSetup + + Honor worksheet page setup. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPrintAreas + + Honor worksheet print areas. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPrintTitleRows + + Honor worksheet rows configured to repeat on printed pages. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetRowHeights + + Honor worksheet row heights. + + SwitchParameter + + SwitchParameter + + + None + + + WorksheetLayout + + Controls how worksheet content is laid out on PDF pages. + + ExcelPdfWorksheetLayoutMode + + WorksheetCanvas + FlowTable + + + ExcelPdfWorksheetLayoutMode + + + None + + + + + + None + + + + + + + OfficeIMO.Excel.Pdf.ExcelPdfSaveOptions + + + + + + + + + + + Export selected visible sheets with workbook layout features. + + PS> + + $options = New-OfficeExcelPdfOptions -SheetName Summary,Services -UseWorksheetCharts -UseWorksheetImages + Export-OfficeDocumentPdf -InputPath .\Report.xlsx -Path .\Report.pdf -ExcelOptions $options + + + + + + + + + + New-OfficeExcelWorkbookImageOptions + New + OfficeExcelWorkbookImageOptions + + Creates discoverable sheet selection and rendering settings for Export-OfficeExcelImage. + + + + Creates discoverable sheet selection and rendering settings for Export-OfficeExcelImage. + + + + New-OfficeExcelWorkbookImageOptions + + BackgroundColor + + + + String + + String + + + None + + + IncludeCharts + + Include worksheet charts. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeConditionalFormatting + + Include conditional formatting. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeDrawingObjects + + Include drawing objects. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeHidden + + Include hidden rows and columns. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeHiddenSheets + + Include hidden worksheets. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeImages + + Include worksheet images. + + SwitchParameter + + SwitchParameter + + + None + + + MaximumDegreeOfParallelism + + + + Int32 + + Int32 + + + None + + + MaximumOutputCount + + + + Int32 + + Int32 + + + None + + + MaximumOutputHeight + + + + Int32 + + Int32 + + + None + + + MaximumOutputWidth + + + + Int32 + + Int32 + + + None + + + MaximumRasterPixels + + + + Int64 + + Int64 + + + None + + + MaximumRenderedCells + + Maximum cells rendered per worksheet. + + Int32 + + Int32 + + + None + + + MaximumTotalEncodedBytes + + + + Int64 + + Int64 + + + None + + + MaximumTotalRasterPixels + + + + Int64 + + Int64 + + + None + + + RasterOverflowBehavior + + + + OfficeRasterOverflowBehavior + + ReduceScale + Throw + + + OfficeRasterOverflowBehavior + + + None + + + RenderTimeoutSeconds + + + + Double + + Double + + + None + + + Scale + + + + Double + + Double + + + None + + + SheetName + + Worksheet names to export. + + String[] + + String[] + + + None + + + ShowGridlines + + Show worksheet gridlines. + + SwitchParameter + + SwitchParameter + + + None + + + SplitWorksheetsByManualPageBreaks + + Split worksheets at manual page breaks. + + SwitchParameter + + SwitchParameter + + + None + + + TargetDpi + + + + Double + + Double + + + None + + + TextShapingLanguage + + + + String + + String + + + None + + + UseWorksheetPrintAreas + + Use worksheet print areas. + + SwitchParameter + + SwitchParameter + + + None + + + + + + BackgroundColor + + + + String + + String + + + None + + + IncludeCharts + + Include worksheet charts. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeConditionalFormatting + + Include conditional formatting. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeDrawingObjects + + Include drawing objects. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeHidden + + Include hidden rows and columns. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeHiddenSheets + + Include hidden worksheets. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeImages + + Include worksheet images. + + SwitchParameter + + SwitchParameter + + + None + + + MaximumDegreeOfParallelism + + + + Int32 + + Int32 + + + None + + + MaximumOutputCount + + + + Int32 + + Int32 + + + None + + + MaximumOutputHeight + + + + Int32 + + Int32 + + + None + + + MaximumOutputWidth + + + + Int32 + + Int32 + + + None + + + MaximumRasterPixels + + + + Int64 + + Int64 + + + None + + + MaximumRenderedCells + + Maximum cells rendered per worksheet. + + Int32 + + Int32 + + + None + + + MaximumTotalEncodedBytes + + + + Int64 + + Int64 + + + None + + + MaximumTotalRasterPixels + + + + Int64 + + Int64 + + + None + + + RasterOverflowBehavior + + + + OfficeRasterOverflowBehavior + + ReduceScale + Throw + + + OfficeRasterOverflowBehavior + + + None + + + RenderTimeoutSeconds + + + + Double + + Double + + + None + + + Scale + + + + Double + + Double + + + None + + + SheetName + + Worksheet names to export. + + String[] + + String[] + + + None + + + ShowGridlines + + Show worksheet gridlines. + + SwitchParameter + + SwitchParameter + + + None + + + SplitWorksheetsByManualPageBreaks + + Split worksheets at manual page breaks. + + SwitchParameter + + SwitchParameter + + + None + + + TargetDpi + + + + Double + + Double + + + None + + + TextShapingLanguage + + + + String + + String + + + None + + + UseWorksheetPrintAreas + + Use worksheet print areas. + + SwitchParameter + + SwitchParameter + + + None + + + + + + None + + + + + + + OfficeIMO.Excel.ExcelWorkbookImageExportOptions + + + + + + + + + + + Render selected worksheets with charts and conditional formatting. + + PS> + + $options = New-OfficeExcelWorkbookImageOptions -SheetName Summary,Data -IncludeCharts -IncludeConditionalFormatting + Export-OfficeExcelImage -Path .\Workbook.xlsx -OutputPath .\Sheets -Options $options + + + + + + + + + + New-OfficeHtmlConversionOptions + New + OfficeHtmlConversionOptions + + Creates discoverable parsing, trust, and document settings for HTML conversion. + + + + Creates discoverable parsing, trust, and document settings for HTML conversion. + + + + New-OfficeHtmlConversionOptions + + BaseUri + + Base URI used to resolve relative references. + + String + + String + + + None + + + IncludeNormalizedHtml + + Retain normalized HTML in the conversion document. + + SwitchParameter + + SwitchParameter + + + None + + + Profile + + Built-in conversion profile. + + HtmlConversionProfile + + Semantic + Document + HighFidelityPrint + PositionedReview + + + HtmlConversionProfile + + + None + + + Trust + + Input trust level. + + HtmlInputTrust + + Untrusted + Trusted + + + HtmlInputTrust + + + None + + + UseBodyContentsOnly + + Convert only body contents. + + SwitchParameter + + SwitchParameter + + + None + + + + + + BaseUri + + Base URI used to resolve relative references. + + String + + String + + + None + + + IncludeNormalizedHtml + + Retain normalized HTML in the conversion document. + + SwitchParameter + + SwitchParameter + + + None + + + Profile + + Built-in conversion profile. + + HtmlConversionProfile + + Semantic + Document + HighFidelityPrint + PositionedReview + + + HtmlConversionProfile + + + None + + + Trust + + Input trust level. + + HtmlInputTrust + + Untrusted + Trusted + + + HtmlInputTrust + + + None + + + UseBodyContentsOnly + + Convert only body contents. + + SwitchParameter + + SwitchParameter + + + None + + + + + + None + + + + + + + OfficeIMO.Html.HtmlConversionDocumentOptions + + + + + + + + + + + Resolve relative resources from a trusted report directory. + + PS> + + $document = New-OfficeHtmlConversionOptions -BaseUri (Resolve-Path .\Assets) -UseBodyContentsOnly + Export-OfficeHtmlImage -Path .\Report.html -OutputPath .\Report.svg -DocumentOptions $document + + + + + + + + + + New-OfficeHtmlRenderOptions + New + OfficeHtmlRenderOptions + + Creates discoverable layout, resource-limit, and rendering settings for HTML image export. + + + + Creates discoverable layout, resource-limit, and rendering settings for HTML image export. + + + + New-OfficeHtmlRenderOptions + + BackgroundColor + + + + String + + String + + + None + + + BaseUri + + Base URI for relative resources. + + String + + String + + + None + + + DefaultFontFamily + + Default font family. + + String + + String + + + None + + + DefaultFontSize + + Default font size. + + Double + + Double + + + None + + + DefaultLineHeight + + Default line-height multiplier. + + Double + + Double + + + None + + + FidelityPolicy + + Fidelity policy for unsupported content. + + HtmlRenderFidelityPolicy + + AllowDiagnosedLoss + RequireNoLoss + + + HtmlRenderFidelityPolicy + + + None + + + HonorCssPageRules + + Honor CSS page rules. + + SwitchParameter + + SwitchParameter + + + None + + + MaxHtmlNodes + + Maximum HTML nodes. + + Int32 + + Int32 + + + None + + + MaximumDegreeOfParallelism + + + + Int32 + + Int32 + + + None + + + MaximumOutputCount + + + + Int32 + + Int32 + + + None + + + MaximumOutputHeight + + + + Int32 + + Int32 + + + None + + + MaximumOutputWidth + + + + Int32 + + Int32 + + + None + + + MaximumRasterPixels + + + + Int64 + + Int64 + + + None + + + MaximumTotalEncodedBytes + + + + Int64 + + Int64 + + + None + + + MaximumTotalRasterPixels + + + + Int64 + + Int64 + + + None + + + MaxInputCharacters + + Maximum HTML input characters. + + Int32 + + Int32 + + + None + + + MaxPageCount + + Maximum rendered page count. + + Int32 + + Int32 + + + None + + + MaxTotalResourceBytes + + Maximum resource bytes loaded for the document. + + Int64 + + Int64 + + + None + + + Mode + + HTML render mode. + + HtmlRenderMode + + Continuous + Paged + + + HtmlRenderMode + + + None + + + PageSize + + Page size used by paged rendering. + + OfficePageSize + + OfficePageSize + + + None + + + RasterOverflowBehavior + + + + OfficeRasterOverflowBehavior + + ReduceScale + Throw + + + OfficeRasterOverflowBehavior + + + None + + + RenderTimeoutSeconds + + + + Double + + Double + + + None + + + ResourceTimeoutSeconds + + Maximum duration allowed for one resource load. + + Double + + Double + + + None + + + Scale + + + + Double + + Double + + + None + + + TargetDpi + + + + Double + + Double + + + None + + + TextShapingLanguage + + + + String + + String + + + None + + + ViewportHeight + + Optional viewport height in CSS pixels. + + Double + + Double + + + None + + + ViewportWidth + + Viewport width in CSS pixels. + + Double + + Double + + + None + + + + + + BackgroundColor + + + + String + + String + + + None + + + BaseUri + + Base URI for relative resources. + + String + + String + + + None + + + DefaultFontFamily + + Default font family. + + String + + String + + + None + + + DefaultFontSize + + Default font size. + + Double + + Double + + + None + + + DefaultLineHeight + + Default line-height multiplier. + + Double + + Double + + + None + + + FidelityPolicy + + Fidelity policy for unsupported content. + + HtmlRenderFidelityPolicy + + AllowDiagnosedLoss + RequireNoLoss + + + HtmlRenderFidelityPolicy + + + None + + + HonorCssPageRules + + Honor CSS page rules. + + SwitchParameter + + SwitchParameter + + + None + + + MaxHtmlNodes + + Maximum HTML nodes. + + Int32 + + Int32 + + + None + + + MaximumDegreeOfParallelism + + + + Int32 + + Int32 + + + None + + + MaximumOutputCount + + + + Int32 + + Int32 + + + None + + + MaximumOutputHeight + + + + Int32 + + Int32 + + + None + + + MaximumOutputWidth + + + + Int32 + + Int32 + + + None + + + MaximumRasterPixels + + + + Int64 + + Int64 + + + None + + + MaximumTotalEncodedBytes + + + + Int64 + + Int64 + + + None + + + MaximumTotalRasterPixels + + + + Int64 + + Int64 + + + None + + + MaxInputCharacters + + Maximum HTML input characters. + + Int32 + + Int32 + + + None + + + MaxPageCount + + Maximum rendered page count. + + Int32 + + Int32 + + + None + + + MaxTotalResourceBytes + + Maximum resource bytes loaded for the document. + + Int64 + + Int64 + + + None + + + Mode + + HTML render mode. + + HtmlRenderMode + + Continuous + Paged + + + HtmlRenderMode + + + None + + + PageSize + + Page size used by paged rendering. + + OfficePageSize + + OfficePageSize + + + None + + + RasterOverflowBehavior + + + + OfficeRasterOverflowBehavior + + ReduceScale + Throw + + + OfficeRasterOverflowBehavior + + + None + + + RenderTimeoutSeconds + + + + Double + + Double + + + None + + + ResourceTimeoutSeconds + + Maximum duration allowed for one resource load. + + Double + + Double + + + None + + + Scale + + + + Double + + Double + + + None + + + TargetDpi + + + + Double + + Double + + + None + + + TextShapingLanguage + + + + String + + String + + + None + + + ViewportHeight + + Optional viewport height in CSS pixels. + + Double + + Double + + + None + + + ViewportWidth + + Viewport width in CSS pixels. + + Double + + Double + + + None + + + + + + None + + + + + + + OfficeIMO.Html.HtmlRenderOptions + + + + + + + + + + + Render HTML with a bounded viewport and resource budget. + + PS> + + $render = New-OfficeHtmlRenderOptions -ViewportWidth 1280 -ViewportHeight 720 -MaxPageCount 10 + Export-OfficeHtmlImage -Path .\Report.html -OutputPath .\Report.svg -RenderOptions $render + + + + + + + + + + New-OfficeMarkdown + New + OfficeMarkdown + + Creates a Markdown document using a DSL scriptblock. + + + + Runs the scriptblock against a Markdown document and saves it to disk unless -NoSave is specified. + + + + New-OfficeMarkdown + + Content + + DSL scriptblock describing Markdown content. + + ScriptBlock + + ScriptBlock + + + None + + + ImageRenderingMode + + Controls how Markdown images are serialized. + + MarkdownImageRenderingMode + + RichMarkdown + PortableMarkdown + Html + + + MarkdownImageRenderingMode + + + None + + + LineEnding + + Markdown line ending: CRLF, LF, CR, or a literal line ending string. + + String + + String + + + None + + + NoSave + + Skip saving after executing the DSL. + + SwitchParameter + + SwitchParameter + + + None + + + PassThru + + Emit a FileInfo for chaining. + + SwitchParameter + + SwitchParameter + + + None + + + Path + + Destination path for the Markdown file. + + String + + String + + + None + + + UnorderedListMarker + + Unordered list marker: '-', '*', or '+'. + + String + + String + + + None + + + WriteOptions + + Optional Markdown writer options. + + MarkdownWriteOptions + + MarkdownWriteOptions + + + None + + + WriteProfile + + Friendly Markdown writer profile. + + OfficeMarkdownWriteProfile + + OfficeIMO + Portable + HtmlImage + + + OfficeMarkdownWriteProfile + + + None + + + + + + Content + + DSL scriptblock describing Markdown content. + + ScriptBlock + + ScriptBlock + + + None + + + ImageRenderingMode + + Controls how Markdown images are serialized. + + MarkdownImageRenderingMode + + RichMarkdown + PortableMarkdown + Html + + + MarkdownImageRenderingMode + + + None + + + LineEnding + + Markdown line ending: CRLF, LF, CR, or a literal line ending string. + + String + + String + + + None + + + NoSave + + Skip saving after executing the DSL. + + SwitchParameter + + SwitchParameter + + + None + + + PassThru + + Emit a FileInfo for chaining. + + SwitchParameter + + SwitchParameter + + + None + + + Path + + Destination path for the Markdown file. + + String + + String + + + None + + + UnorderedListMarker + + Unordered list marker: '-', '*', or '+'. + + String + + String + + + None + + + WriteOptions + + Optional Markdown writer options. + + MarkdownWriteOptions + + MarkdownWriteOptions + + + None + + + WriteProfile + + Friendly Markdown writer profile. + + OfficeMarkdownWriteProfile + + OfficeIMO + Portable + HtmlImage + + + OfficeMarkdownWriteProfile + + + None + + + + + + None + + + + + + + System.IO.FileInfo + + + + + OfficeIMO.Markdown.MarkdownDoc + + + + + + + + + + + Create a Markdown document with headings and a table. + + PS> + + New-OfficeMarkdown -Path .\README.md { MarkdownHeading -Level 1 -Text 'Report'; MarkdownTable -InputObject $data } + + Creates a README file with a heading and table content. + + + + Create a report with multiple tables. + + PS> + + New-OfficeMarkdown -Path .\Report.md { + MarkdownHeading -Level 1 -Text 'Summary' + MarkdownTable -InputObject $summary + MarkdownHeading -Level 2 -Text 'Details' + MarkdownTable -InputObject $details + } + + Creates a report with two tables separated by headings. + + + + + + + + New-OfficeMarkdownPdfOptions + New + OfficeMarkdownPdfOptions + + Creates discoverable Markdown-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + Creates discoverable Markdown-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + New-OfficeMarkdownPdfOptions + + ApplyWordLikeTheme + + Apply the built-in Word-like Markdown PDF baseline theme. + + SwitchParameter + + SwitchParameter + + + None + + + Author + + PDF author metadata. + + String + + String + + + None + + + BaseDirectory + + Base directory used to resolve local Markdown images. + + String + + String + + + None + + + CreateOutlineFromHeadings + + Create PDF outlines from Markdown headings. + + SwitchParameter + + SwitchParameter + + + None + + + DefaultImageHeight + + Fallback image height in PDF points. + + Double + + Double + + + None + + + DefaultImageWidth + + Fallback image width in PDF points. + + Double + + Double + + + None + + + FontFamily + + Default font family. + + String + + String + + + None + + + FrontMatterRenderMode + + Controls how YAML front matter appears in the PDF body. + + MarkdownPdfFrontMatterRenderMode + + Hidden + DocumentHeader + Table + + + MarkdownPdfFrontMatterRenderMode + + + None + + + IncludeDataUriImages + + Embed supported data URI images. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeLocalImages + + Embed supported local image files. + + SwitchParameter + + SwitchParameter + + + None + + + Keywords + + PDF keywords metadata. + + String + + String + + + None + + + MaximumDataUriImageBytes + + Maximum decoded bytes for one data URI image. + + Int32 + + Int32 + + + None + + + Options + + Existing Markdown PDF options to clone and override. + + MarkdownPdfSaveOptions + + MarkdownPdfSaveOptions + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + RestrictLocalImagesToBaseDirectory + + Require local images to resolve under BaseDirectory. + + SwitchParameter + + SwitchParameter + + + None + + + Subject + + PDF subject metadata. + + String + + String + + + None + + + Theme + + Built-in visual theme. + + OfficeVisualThemeKind + + Plain + WordLike + TechnicalDocument + GitHubLike + Compact + Report + + + OfficeVisualThemeKind + + + None + + + Title + + PDF title metadata. + + String + + String + + + None + + + UseFirstHeadingAsTitle + + Use the first Markdown heading as the PDF title when no title is supplied. + + SwitchParameter + + SwitchParameter + + + None + + + UseFrontMatterMetadata + + Use front matter values as PDF metadata. + + SwitchParameter + + SwitchParameter + + + None + + + UseFrontMatterVisualTheme + + Use front matter values to select a visual theme. + + SwitchParameter + + SwitchParameter + + + None + + + + + + ApplyWordLikeTheme + + Apply the built-in Word-like Markdown PDF baseline theme. + + SwitchParameter + + SwitchParameter + + + None + + + Author + + PDF author metadata. + + String + + String + + + None + + + BaseDirectory + + Base directory used to resolve local Markdown images. + + String + + String + + + None + + + CreateOutlineFromHeadings + + Create PDF outlines from Markdown headings. + + SwitchParameter + + SwitchParameter + + + None + + + DefaultImageHeight + + Fallback image height in PDF points. + + Double + + Double + + + None + + + DefaultImageWidth + + Fallback image width in PDF points. + + Double + + Double + + + None + + + FontFamily + + Default font family. + + String + + String + + + None + + + FrontMatterRenderMode + + Controls how YAML front matter appears in the PDF body. + + MarkdownPdfFrontMatterRenderMode + + Hidden + DocumentHeader + Table + + + MarkdownPdfFrontMatterRenderMode + + + None + + + IncludeDataUriImages + + Embed supported data URI images. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeLocalImages + + Embed supported local image files. + + SwitchParameter + + SwitchParameter + + + None + + + Keywords + + PDF keywords metadata. + + String + + String + + + None + + + MaximumDataUriImageBytes + + Maximum decoded bytes for one data URI image. + + Int32 + + Int32 + + + None + + + Options + + Existing Markdown PDF options to clone and override. + + MarkdownPdfSaveOptions + + MarkdownPdfSaveOptions + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + RestrictLocalImagesToBaseDirectory + + Require local images to resolve under BaseDirectory. + + SwitchParameter + + SwitchParameter + + + None + + + Subject + + PDF subject metadata. + + String + + String + + + None + + + Theme + + Built-in visual theme. + + OfficeVisualThemeKind + + Plain + WordLike + TechnicalDocument + GitHubLike + Compact + Report + + + OfficeVisualThemeKind + + + None + + + Title + + PDF title metadata. + + String + + String + + + None + + + UseFirstHeadingAsTitle + + Use the first Markdown heading as the PDF title when no title is supplied. + + SwitchParameter + + SwitchParameter + + + None + + + UseFrontMatterMetadata + + Use front matter values as PDF metadata. + + SwitchParameter + + SwitchParameter + + + None + + + UseFrontMatterVisualTheme + + Use front matter values to select a visual theme. + + SwitchParameter + + SwitchParameter + + + None + + + + + + OfficeIMO.Markdown.Pdf.MarkdownPdfSaveOptions + + + + + + + OfficeIMO.Markdown.Pdf.MarkdownPdfSaveOptions + + + + + + + + + + + Allow local report images and apply PDF metadata. + + PS> + + $options = New-OfficeMarkdownPdfOptions -Title 'Service report' -Author 'Evotec' -IncludeLocalImages -BaseDirectory .\Assets + Export-OfficeDocumentPdf -InputPath .\Report.md -Path .\Report.pdf -MarkdownOptions $options + + Builds a typed options object through ordinary PowerShell parameters; no hashtable or .NET construction is required. + + + + + + + + New-OfficeOpenDocument + New + OfficeOpenDocument + + Creates a native ODT, ODS, or ODP document. + + + + Creates a native ODT, ODS, or ODP document. + + + + New-OfficeOpenDocument + + Content + + DSL scriptblock describing OpenDocument text, spreadsheet, or presentation content. + + ScriptBlock + + ScriptBlock + + + None + + + Kind + + OpenDocument text, spreadsheet, or presentation kind. + + OdfDocumentKind + + Text + Spreadsheet + Presentation + + + OdfDocumentKind + + + None + + + NoSave + + Skip saving and emit the live OpenDocument model even when -Path is supplied. + + SwitchParameter + + SwitchParameter + + + None + + + PassThru + + Emit the saved file when a destination path is supplied. + + SwitchParameter + + SwitchParameter + + + None + + + Path + + Optional initial destination path. + + String + + String + + + None + + + + + + Content + + DSL scriptblock describing OpenDocument text, spreadsheet, or presentation content. + + ScriptBlock + + ScriptBlock + + + None + + + Kind + + OpenDocument text, spreadsheet, or presentation kind. + + OdfDocumentKind + + Text + Spreadsheet + Presentation + + + OdfDocumentKind + + + None + + + NoSave + + Skip saving and emit the live OpenDocument model even when -Path is supplied. + + SwitchParameter + + SwitchParameter + + + None + + + PassThru + + Emit the saved file when a destination path is supplied. + + SwitchParameter + + SwitchParameter + + + None + + + Path + + Optional initial destination path. + + String + + String + + + None + + + + + + None + + + + + + + OfficeIMO.OpenDocument.OdfDocument + + + + + System.IO.FileInfo + + + + + + + + + + + Create an OpenDocument text report. + + PS> + + New-OfficeOpenDocument -Kind Text -Path .\Report.odt -Content { + Add-OfficeOpenDocumentHeading -Text 'Service report' -Level 1 + Add-OfficeOpenDocumentParagraph -Text 'Generated by PSWriteOffice.' + } + + + + + + Create a spreadsheet with typed cells. + + PS> + + New-OfficeOpenDocument -Kind Spreadsheet -Path .\Status.ods -Content { + Add-OfficeOpenDocumentSheet -Name 'Services' -Content { + Set-OfficeOpenDocumentCell -Row 0 -Column 0 -Value 'Service' + Set-OfficeOpenDocumentCell -Row 0 -Column 1 -Value 'Healthy' + Set-OfficeOpenDocumentCell -Row 1 -Column 0 -Value 'Directory' + Set-OfficeOpenDocumentCell -Row 1 -Column 1 -Value $true + } + } + + + + + + + + + + New-OfficePdf + New + OfficePdf + + Creates a PDF document using the OfficeIMO.Pdf composition engine. + + + + New-OfficePdf starts a generated PDF document and optionally executes a PSWriteOffice PDF DSL script block. +The DSL commands are thin adapters over OfficeIMO.Pdf and support document metadata, page setup, headers, footers, +themes, styled text, tables, panels, row layouts, form fields, attachments, compliance settings, and save/open behavior. +Use -NoSave or omit -Path when a document object should be returned for further pipeline operations. + + + + New-OfficePdf + + BoldFontPath + + Optional bold TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + BoldItalicFontPath + + Optional bold italic TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + CenterWindow + + Request PDF viewers to center the document window on screen. + + SwitchParameter + + SwitchParameter + + + None + + + Content + + DSL script block describing generated PDF content. + + ScriptBlock + + ScriptBlock + + + None + + + CreateOutlineFromHeadings + + Create PDF outline/bookmark entries from heading elements. + + SwitchParameter + + SwitchParameter + + + None + + + DefaultFont + + Default standard PDF font for generated text. + + PdfStandardFont + + Helvetica + HelveticaOblique + HelveticaBold + HelveticaBoldOblique + TimesRoman + TimesItalic + TimesBold + TimesBoldItalic + Courier + CourierOblique + CourierBold + CourierBoldOblique + + + PdfStandardFont + + + None + + + DefaultFontSize + + Default generated text font size in points. + + Double + + Double + + + None + + + DisplayDocTitle + + Request PDF viewers to display the document title instead of the file name. + + SwitchParameter + + SwitchParameter + + + None + + + FileVersion + + PDF file header version emitted by OfficeIMO.Pdf. + + PdfFileVersion + + Pdf14 + Pdf15 + Pdf16 + Pdf17 + Pdf20 + + + PdfFileVersion + + + None + + + FitWindow + + Request PDF viewers to fit the document window to the first displayed page. + + SwitchParameter + + SwitchParameter + + + None + + + FlattenVisualAnnotations + + Flatten generated FreeText and Highlight annotations into static page content. + + SwitchParameter + + SwitchParameter + + + None + + + FontFamily + + Embedded TrueType font family name for generated text. + + String + + String + + + None + + + HideMenubar + + Request PDF viewers to hide the menu bar. + + SwitchParameter + + SwitchParameter + + + None + + + HideToolbar + + Request PDF viewers to hide the toolbar. + + SwitchParameter + + SwitchParameter + + + None + + + HideWindowUI + + Request PDF viewers to hide user-interface elements. + + SwitchParameter + + SwitchParameter + + + None + + + IncludePageLabels + + Emit generated catalog page labels. + + SwitchParameter + + SwitchParameter + + + None + + + ItalicFontPath + + Optional italic TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + NoSave + + Skip saving even when -Path is provided. + + SwitchParameter + + SwitchParameter + + + None + + + Open + + Open the PDF after saving. + + SwitchParameter + + SwitchParameter + + + None + + + OpenActionMode + + Open-action destination mode. + + PdfOpenActionDestinationMode + + Xyz + Fit + FitHorizontal + FitVertical + FitRectangle + FitBoundingBox + FitBoundingBoxHorizontal + FitBoundingBoxVertical + + + PdfOpenActionDestinationMode + + + None + + + OpenActionPage + + Initial one-based page shown by PDF viewers that honor open actions. + + Int32 + + Int32 + + + None + + + OpenActionTop + + Optional open-action top coordinate. + + Double + + Double + + + None + + + OutlineExpansionLevel + + Initial outline expansion level when heading outlines are created. + + Int32 + + Int32 + + + None + + + OwnerPassword + + Optional owner password for the generated encrypted PDF. + + String + + String + + + None + + + PageLabelPrefix + + Optional generated page-label prefix. + + String + + String + + + None + + + PageLayout + + Catalog page layout hint emitted for generated PDFs. + + PdfCatalogPageLayout + + SinglePage + OneColumn + TwoColumnLeft + TwoColumnRight + TwoPageLeft + TwoPageRight + + + PdfCatalogPageLayout + + + None + + + PageMode + + Catalog page mode hint emitted for generated PDFs. + + PdfCatalogPageMode + + UseNone + UseOutlines + UseThumbs + FullScreen + UseOC + UseAttachments + + + PdfCatalogPageMode + + + None + + + PassThru + + Emit the generated document or saved file for chaining. + + SwitchParameter + + SwitchParameter + + + None + + + Password + + Password required to open the generated PDF. + + String + + String + + + None + + + Path + + Optional destination PDF path. + + String + + String + + + None + + + Permission + + Raw PDF Standard security permission bit mask. Defaults to allowing all standard operations. + + Int32 + + Int32 + + + None + + + RegularFontPath + + Regular TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + Theme + + Built-in OfficeIMO.Pdf theme applied before the DSL content runs. + + OfficePdfThemePreset + + WordLike + TechnicalDocument + Compact + Report + + + OfficePdfThemePreset + + + None + + + + New-OfficePdf + + BoldFontPath + + Optional bold TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + BoldItalicFontPath + + Optional bold italic TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + CenterWindow + + Request PDF viewers to center the document window on screen. + + SwitchParameter + + SwitchParameter + + + None + + + Content + + DSL script block describing generated PDF content. + + ScriptBlock + + ScriptBlock + + + None + + + CreateOutlineFromHeadings + + Create PDF outline/bookmark entries from heading elements. + + SwitchParameter + + SwitchParameter + + + None + + + DefaultFont + + Default standard PDF font for generated text. + + PdfStandardFont + + Helvetica + HelveticaOblique + HelveticaBold + HelveticaBoldOblique + TimesRoman + TimesItalic + TimesBold + TimesBoldItalic + Courier + CourierOblique + CourierBold + CourierBoldOblique + + + PdfStandardFont + + + None + + + DefaultFontSize + + Default generated text font size in points. + + Double + + Double + + + None + + + DisplayDocTitle + + Request PDF viewers to display the document title instead of the file name. + + SwitchParameter + + SwitchParameter + + + None + + + FileVersion + + PDF file header version emitted by OfficeIMO.Pdf. + + PdfFileVersion + + Pdf14 + Pdf15 + Pdf16 + Pdf17 + Pdf20 + + + PdfFileVersion + + + None + + + FitWindow + + Request PDF viewers to fit the document window to the first displayed page. + + SwitchParameter + + SwitchParameter + + + None + + + FlattenVisualAnnotations + + Flatten generated FreeText and Highlight annotations into static page content. + + SwitchParameter + + SwitchParameter + + + None + + + FontFamily + + Embedded TrueType font family name for generated text. + + String + + String + + + None + + + HideMenubar + + Request PDF viewers to hide the menu bar. + + SwitchParameter + + SwitchParameter + + + None + + + HideToolbar + + Request PDF viewers to hide the toolbar. + + SwitchParameter + + SwitchParameter + + + None + + + HideWindowUI + + Request PDF viewers to hide user-interface elements. + + SwitchParameter + + SwitchParameter + + + None + + + IncludePageLabels + + Emit generated catalog page labels. + + SwitchParameter + + SwitchParameter + + + None + + + ItalicFontPath + + Optional italic TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + NoSave + + Skip saving even when -Path is provided. + + SwitchParameter + + SwitchParameter + + + None + + + Open + + Open the PDF after saving. + + SwitchParameter + + SwitchParameter + + + None + + + OpenActionMode + + Open-action destination mode. + + PdfOpenActionDestinationMode + + Xyz + Fit + FitHorizontal + FitVertical + FitRectangle + FitBoundingBox + FitBoundingBoxHorizontal + FitBoundingBoxVertical + + + PdfOpenActionDestinationMode + + + None + + + OpenActionPage + + Initial one-based page shown by PDF viewers that honor open actions. + + Int32 + + Int32 + + + None + + + OpenActionTop + + Optional open-action top coordinate. + + Double + + Double + + + None + + + OutlineExpansionLevel + + Initial outline expansion level when heading outlines are created. + + Int32 + + Int32 + + + None + + + OwnerPassword + + Optional owner password for the generated encrypted PDF. + + String + + String + + + None + + + PageLabelPrefix + + Optional generated page-label prefix. + + String + + String + + + None + + + PageLayout + + Catalog page layout hint emitted for generated PDFs. + + PdfCatalogPageLayout + + SinglePage + OneColumn + TwoColumnLeft + TwoColumnRight + TwoPageLeft + TwoPageRight + + + PdfCatalogPageLayout + + + None + + + PageMode + + Catalog page mode hint emitted for generated PDFs. + + PdfCatalogPageMode + + UseNone + UseOutlines + UseThumbs + FullScreen + UseOC + UseAttachments + + + PdfCatalogPageMode + + + None + + + PassThru + + Emit the generated document or saved file for chaining. + + SwitchParameter + + SwitchParameter + + + None + + + Password + + Password required to open the generated PDF. + + String + + String + + + None + + + Permission + + Raw PDF Standard security permission bit mask. Defaults to allowing all standard operations. + + Int32 + + Int32 + + + None + + + RegularFontPath + + Regular TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + Theme + + Built-in OfficeIMO.Pdf theme applied before the DSL content runs. + + OfficePdfThemePreset + + WordLike + TechnicalDocument + Compact + Report + + + OfficePdfThemePreset + + + None + + + + + + BoldFontPath + + Optional bold TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + BoldItalicFontPath + + Optional bold italic TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + CenterWindow + + Request PDF viewers to center the document window on screen. + + SwitchParameter + + SwitchParameter + + + None + + + Content + + DSL script block describing generated PDF content. + + ScriptBlock + + ScriptBlock + + + None + + + CreateOutlineFromHeadings + + Create PDF outline/bookmark entries from heading elements. + + SwitchParameter + + SwitchParameter + + + None + + + DefaultFont + + Default standard PDF font for generated text. + + PdfStandardFont + + Helvetica + HelveticaOblique + HelveticaBold + HelveticaBoldOblique + TimesRoman + TimesItalic + TimesBold + TimesBoldItalic + Courier + CourierOblique + CourierBold + CourierBoldOblique + + + PdfStandardFont + + + None + + + DefaultFontSize + + Default generated text font size in points. + + Double + + Double + + + None + + + DisplayDocTitle + + Request PDF viewers to display the document title instead of the file name. + + SwitchParameter + + SwitchParameter + + + None + + + FileVersion + + PDF file header version emitted by OfficeIMO.Pdf. + + PdfFileVersion + + Pdf14 + Pdf15 + Pdf16 + Pdf17 + Pdf20 + + + PdfFileVersion + + + None + + + FitWindow + + Request PDF viewers to fit the document window to the first displayed page. + + SwitchParameter + + SwitchParameter + + + None + + + FlattenVisualAnnotations + + Flatten generated FreeText and Highlight annotations into static page content. + + SwitchParameter + + SwitchParameter + + + None + + + FontFamily + + Embedded TrueType font family name for generated text. + + String + + String + + + None + + + HideMenubar + + Request PDF viewers to hide the menu bar. + + SwitchParameter + + SwitchParameter + + + None + + + HideToolbar + + Request PDF viewers to hide the toolbar. + + SwitchParameter + + SwitchParameter + + + None + + + HideWindowUI + + Request PDF viewers to hide user-interface elements. + + SwitchParameter + + SwitchParameter + + + None + + + IncludePageLabels + + Emit generated catalog page labels. + + SwitchParameter + + SwitchParameter + + + None + + + ItalicFontPath + + Optional italic TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + NoSave + + Skip saving even when -Path is provided. + + SwitchParameter + + SwitchParameter + + + None + + + Open + + Open the PDF after saving. + + SwitchParameter + + SwitchParameter + + + None + + + OpenActionMode + + Open-action destination mode. + + PdfOpenActionDestinationMode + + Xyz + Fit + FitHorizontal + FitVertical + FitRectangle + FitBoundingBox + FitBoundingBoxHorizontal + FitBoundingBoxVertical + + + PdfOpenActionDestinationMode + + + None + + + OpenActionPage + + Initial one-based page shown by PDF viewers that honor open actions. + + Int32 + + Int32 + + + None + + + OpenActionTop + + Optional open-action top coordinate. + + Double + + Double + + + None + + + OutlineExpansionLevel + + Initial outline expansion level when heading outlines are created. + + Int32 + + Int32 + + + None + + + OwnerPassword + + Optional owner password for the generated encrypted PDF. + + String + + String + + + None + + + PageLabelPrefix + + Optional generated page-label prefix. + + String + + String + + + None + + + PageLayout + + Catalog page layout hint emitted for generated PDFs. + + PdfCatalogPageLayout + + SinglePage + OneColumn + TwoColumnLeft + TwoColumnRight + TwoPageLeft + TwoPageRight + + + PdfCatalogPageLayout + + + None + + + PageMode + + Catalog page mode hint emitted for generated PDFs. + + PdfCatalogPageMode + + UseNone + UseOutlines + UseThumbs + FullScreen + UseOC + UseAttachments + + + PdfCatalogPageMode + + + None + + + PassThru + + Emit the generated document or saved file for chaining. + + SwitchParameter + + SwitchParameter + + + None + + + Password + + Password required to open the generated PDF. + + String + + String + + + None + + + Path + + Optional destination PDF path. + + String + + String + + + None + + + Permission + + Raw PDF Standard security permission bit mask. Defaults to allowing all standard operations. + + Int32 + + Int32 + + + None + + + RegularFontPath + + Regular TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + Theme + + Built-in OfficeIMO.Pdf theme applied before the DSL content runs. + + OfficePdfThemePreset + + WordLike + TechnicalDocument + Compact + Report + + + OfficePdfThemePreset + + + None + + + + + + None + + + + + + + OfficeIMO.Pdf.PdfDocument + + + + + System.IO.FileInfo + + + + + + + + + + + Create a PDF report. + + PS> + + New-OfficePdf -Path .\Report.pdf { PdfHeading 'Report'; PdfParagraph 'Generated by PSWriteOffice' } -Open + + Builds a PDF and opens it after saving. + + + + Create a polished report with theme, metadata, and layout. + + PS> + + New-OfficePdf -Path .\ServiceReview.pdf { + PdfTheme Report + PdfMetadata -Title 'Service Review' -Author 'PSWriteOffice' + PdfPageSetup -PageSize A4 -Margin 42 + PdfHeader 'Service Review' + PdfFooter 'Page {page}/{pages}' + PdfHeading 'Service Review' + PdfText -Run @( + @{ Text = 'Generated with ' } + @{ Text = 'rich inline text'; Bold = $true; Color = '#0F766E' } + @{ Text = ' and OfficeIMO.Pdf layout.' } + ) + PdfRow -Column @( + @{ Width = 40; Content = @(@{ Type = 'Panel'; Text = 'Left summary' }) } + @{ Width = 60; Content = @(@{ Type = 'Paragraph'; Text = 'Right details' }) } + ) + } + + Shows the preferred high-level PDF report authoring shape. + + + + + + + + New-OfficePdfExcelImportOptions + New + OfficePdfExcelImportOptions + + Creates discoverable PDF-table-to-Excel reconstruction settings. + + + + Creates discoverable PDF-table-to-Excel reconstruction settings. + + + + New-OfficePdfExcelImportOptions + + AutoFitColumns + + Auto-fit worksheet columns. + + SwitchParameter + + SwitchParameter + + + None + + + ContinuationGeometryTolerancePoints + + Geometry tolerance in PDF points for page continuations. + + Double + + Double + + + None + + + ConvertBooleanColumns + + Convert consistently boolean columns. + + SwitchParameter + + SwitchParameter + + + None + + + ConvertDateTimeColumns + + Convert unambiguous date columns. + + SwitchParameter + + SwitchParameter + + + None + + + ConvertNumericColumns + + Convert consistently numeric columns. + + SwitchParameter + + SwitchParameter + + + None + + + ConvertPercentageColumns + + Convert percentage columns to fractional numbers. + + SwitchParameter + + SwitchParameter + + + None + + + EmptyWorkbookSheetName + + Worksheet name used when no tables are detected. + + String + + String + + + None + + + IncludeAutoFilter + + Add table-scoped AutoFilters. + + SwitchParameter + + SwitchParameter + + + None + + + MaximumContinuationSegments + + Maximum table segments merged into one table. + + Int32 + + Int32 + + + None + + + MaxRows + + Maximum body rows imported per detected table; zero means unlimited. + + Int32 + + Int32 + + + None + + + MergePageContinuations + + Merge compatible table segments across pages. + + SwitchParameter + + SwitchParameter + + + None + + + NumericCulture + + Culture name used for numeric parsing, such as en-US. + + String + + String + + + None + + + SheetNamePrefix + + Prefix for generated worksheet names. + + String + + String + + + None + + + SuppressRepeatedBodyHeaderRows + + Suppress repeated body header rows in merged segments. + + SwitchParameter + + SwitchParameter + + + None + + + TableNamePrefix + + Prefix for generated Excel table names. + + String + + String + + + None + + + TableStyle + + Excel table style. + + ExcelTableStyle + + TableStyleLight1 + TableStyleLight2 + TableStyleLight3 + TableStyleLight4 + TableStyleLight5 + TableStyleLight6 + TableStyleLight7 + TableStyleLight8 + TableStyleLight9 + TableStyleLight10 + TableStyleLight11 + TableStyleLight12 + TableStyleLight13 + TableStyleLight14 + TableStyleLight15 + TableStyleLight16 + TableStyleLight17 + TableStyleLight18 + TableStyleLight19 + TableStyleLight20 + TableStyleLight21 + TableStyleMedium1 + TableStyleMedium2 + TableStyleMedium3 + TableStyleMedium4 + TableStyleMedium5 + TableStyleMedium6 + TableStyleMedium7 + TableStyleMedium8 + TableStyleMedium9 + TableStyleMedium10 + TableStyleMedium11 + TableStyleMedium12 + TableStyleMedium13 + TableStyleMedium14 + TableStyleMedium15 + TableStyleMedium16 + TableStyleMedium17 + TableStyleMedium18 + TableStyleMedium19 + TableStyleMedium20 + TableStyleMedium21 + TableStyleMedium22 + TableStyleMedium23 + TableStyleMedium24 + TableStyleMedium25 + TableStyleMedium26 + TableStyleMedium27 + TableStyleMedium28 + TableStyleDark1 + TableStyleDark2 + TableStyleDark3 + TableStyleDark4 + TableStyleDark5 + TableStyleDark6 + TableStyleDark7 + TableStyleDark8 + TableStyleDark9 + TableStyleDark10 + TableStyleDark11 + + + ExcelTableStyle + + + None + + + + + + AutoFitColumns + + Auto-fit worksheet columns. + + SwitchParameter + + SwitchParameter + + + None + + + ContinuationGeometryTolerancePoints + + Geometry tolerance in PDF points for page continuations. + + Double + + Double + + + None + + + ConvertBooleanColumns + + Convert consistently boolean columns. + + SwitchParameter + + SwitchParameter + + + None + + + ConvertDateTimeColumns + + Convert unambiguous date columns. + + SwitchParameter + + SwitchParameter + + + None + + + ConvertNumericColumns + + Convert consistently numeric columns. + + SwitchParameter + + SwitchParameter + + + None + + + ConvertPercentageColumns + + Convert percentage columns to fractional numbers. + + SwitchParameter + + SwitchParameter + + + None + + + EmptyWorkbookSheetName + + Worksheet name used when no tables are detected. + + String + + String + + + None + + + IncludeAutoFilter + + Add table-scoped AutoFilters. + + SwitchParameter + + SwitchParameter + + + None + + + MaximumContinuationSegments + + Maximum table segments merged into one table. + + Int32 + + Int32 + + + None + + + MaxRows + + Maximum body rows imported per detected table; zero means unlimited. + + Int32 + + Int32 + + + None + + + MergePageContinuations + + Merge compatible table segments across pages. + + SwitchParameter + + SwitchParameter + + + None + + + NumericCulture + + Culture name used for numeric parsing, such as en-US. + + String + + String + + + None + + + SheetNamePrefix + + Prefix for generated worksheet names. + + String + + String + + + None + + + SuppressRepeatedBodyHeaderRows + + Suppress repeated body header rows in merged segments. + + SwitchParameter + + SwitchParameter + + + None + + + TableNamePrefix + + Prefix for generated Excel table names. + + String + + String + + + None + + + TableStyle + + Excel table style. + + ExcelTableStyle + + TableStyleLight1 + TableStyleLight2 + TableStyleLight3 + TableStyleLight4 + TableStyleLight5 + TableStyleLight6 + TableStyleLight7 + TableStyleLight8 + TableStyleLight9 + TableStyleLight10 + TableStyleLight11 + TableStyleLight12 + TableStyleLight13 + TableStyleLight14 + TableStyleLight15 + TableStyleLight16 + TableStyleLight17 + TableStyleLight18 + TableStyleLight19 + TableStyleLight20 + TableStyleLight21 + TableStyleMedium1 + TableStyleMedium2 + TableStyleMedium3 + TableStyleMedium4 + TableStyleMedium5 + TableStyleMedium6 + TableStyleMedium7 + TableStyleMedium8 + TableStyleMedium9 + TableStyleMedium10 + TableStyleMedium11 + TableStyleMedium12 + TableStyleMedium13 + TableStyleMedium14 + TableStyleMedium15 + TableStyleMedium16 + TableStyleMedium17 + TableStyleMedium18 + TableStyleMedium19 + TableStyleMedium20 + TableStyleMedium21 + TableStyleMedium22 + TableStyleMedium23 + TableStyleMedium24 + TableStyleMedium25 + TableStyleMedium26 + TableStyleMedium27 + TableStyleMedium28 + TableStyleDark1 + TableStyleDark2 + TableStyleDark3 + TableStyleDark4 + TableStyleDark5 + TableStyleDark6 + TableStyleDark7 + TableStyleDark8 + TableStyleDark9 + TableStyleDark10 + TableStyleDark11 + + + ExcelTableStyle + + + None + + + + + + None + + + + + + + OfficeIMO.Excel.Pdf.PdfExcelTableImportOptions + + + + + + + + + + + Import PDF tables with typed columns and filters. + + PS> + + $options = New-OfficePdfExcelImportOptions -IncludeAutoFilter -AutoFitColumns -ConvertNumericColumns -ConvertDateTimeColumns + ConvertTo-OfficePdfExcel -Path .\Tables.pdf -OutputPath .\Tables.xlsx -Options $options + + + + + + + + + + New-OfficePdfImageOptions + New + OfficePdfImageOptions + + Creates discoverable thumbnail and rendering settings for Export-OfficePdfImage. + + + + Creates discoverable thumbnail and rendering settings for Export-OfficePdfImage. + + + + New-OfficePdfImageOptions + + BackgroundColor + + + + String + + String + + + None + + + MaximumDegreeOfParallelism + + + + Int32 + + Int32 + + + None + + + MaximumOutputCount + + + + Int32 + + Int32 + + + None + + + MaximumOutputHeight + + + + Int32 + + Int32 + + + None + + + MaximumOutputWidth + + + + Int32 + + Int32 + + + None + + + MaximumRasterPixels + + + + Int64 + + Int64 + + + None + + + MaximumTotalEncodedBytes + + + + Int64 + + Int64 + + + None + + + MaximumTotalRasterPixels + + + + Int64 + + Int64 + + + None + + + RasterOverflowBehavior + + + + OfficeRasterOverflowBehavior + + ReduceScale + Throw + + + OfficeRasterOverflowBehavior + + + None + + + RenderTimeoutSeconds + + + + Double + + Double + + + None + + + Scale + + + + Double + + Double + + + None + + + TargetDpi + + + + Double + + Double + + + None + + + TextShapingLanguage + + + + String + + String + + + None + + + ThumbnailMaxDimension + + Maximum thumbnail width or height. + + Int32 + + Int32 + + + None + + + + + + BackgroundColor + + + + String + + String + + + None + + + MaximumDegreeOfParallelism + + + + Int32 + + Int32 + + + None + + + MaximumOutputCount + + + + Int32 + + Int32 + + + None + + + MaximumOutputHeight + + + + Int32 + + Int32 + + + None + + + MaximumOutputWidth + + + + Int32 + + Int32 + + + None + + + MaximumRasterPixels + + + + Int64 + + Int64 + + + None + + + MaximumTotalEncodedBytes + + + + Int64 + + Int64 + + + None + + + MaximumTotalRasterPixels + + + + Int64 + + Int64 + + + None + + + RasterOverflowBehavior + + + + OfficeRasterOverflowBehavior + + ReduceScale + Throw + + + OfficeRasterOverflowBehavior + + + None + + + RenderTimeoutSeconds + + + + Double + + Double + + + None + + + Scale + + + + Double + + Double + + + None + + + TargetDpi + + + + Double + + Double + + + None + + + TextShapingLanguage + + + + String + + String + + + None + + + ThumbnailMaxDimension + + Maximum thumbnail width or height. + + Int32 + + Int32 + + + None + + + + + + None + + + + + + + OfficeIMO.Pdf.PdfImageExportOptions + + + + + + + + + + + Create compact PDF thumbnails with bounded output dimensions. + + PS> + + $options = New-OfficePdfImageOptions -ThumbnailMaxDimension 320 -MaximumOutputWidth 640 + Export-OfficePdfImage -Path .\Report.pdf -OutputPath .\Thumbnails -Options $options + + + + + + + + + + New-OfficePdfPowerPointImportOptions + New + OfficePdfPowerPointImportOptions + + Creates discoverable PDF-to-PowerPoint reconstruction settings. + + + + Creates discoverable PDF-to-PowerPoint reconstruction settings. + + + + New-OfficePdfPowerPointImportOptions + + AlignNumericColumns + + Right-align inferred numeric columns. + + SwitchParameter + + SwitchParameter + + + None + + + BandedRows + + Enable banded-row styling. + + SwitchParameter + + SwitchParameter + + + None + + + Dpi + + Raster resolution used by visual import. + + Double + + Double + + + None + + + EmptyPresentationMessage + + Message used when no supported content is detected. + + String + + String + + + None + + + EmptyPresentationTitle + + Title used when no supported content is detected. + + String + + String + + + None + + + IncludeColumnHeaderRows + + Add inferred column headers. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeSourceTitles + + Add source-page titles. + + SwitchParameter + + SwitchParameter + + + None + + + MaxColumnsPerSlide + + Maximum columns written to one slide; zero means unlimited. + + Int32 + + Int32 + + + None + + + MaxEditableObjectsPerPage + + Maximum editable objects reconstructed per page. + + Int32 + + Int32 + + + None + + + MaxOutputBytesPerPage + + Maximum encoded bytes per rendered page. + + Int64 + + Int64 + + + None + + + MaxPages + + Maximum pages imported. + + Int32 + + Int32 + + + None + + + MaxPixelsPerPage + + Maximum pixels per rendered page. + + Int64 + + Int64 + + + None + + + MaxRows + + Maximum body rows imported per table; zero means unlimited. + + Int32 + + Int32 + + + None + + + MaxRowsPerSlide + + Maximum rows written to one slide; zero means unlimited. + + Int32 + + Int32 + + + None + + + MaxTotalOutputBytes + + Maximum aggregate encoded output bytes. + + Int64 + + Int64 + + + None + + + MergePageContinuations + + Merge compatible table segments across pages. + + SwitchParameter + + SwitchParameter + + + None + + + Mode + + Visual, editable-table, hybrid, editable-content, or automatic import mode. + + PdfPowerPointImportMode + + VisualPages + EditableTables + HybridVisualAndEditableTables + EditableContent + Auto + + + PdfPowerPointImportMode + + + None + + + PageRange + + Optional one-based page ranges such as 1-3,5. + + String + + String + + + None + + + SuppressRepeatedBodyHeaderRows + + Suppress repeated body header rows. + + SwitchParameter + + SwitchParameter + + + None + + + TableStyle + + PowerPoint table style. + + PowerPointTableStylePreset + + PowerPointTableStylePreset + + + None + + + + + + AlignNumericColumns + + Right-align inferred numeric columns. + + SwitchParameter + + SwitchParameter + + + None + + + BandedRows + + Enable banded-row styling. + + SwitchParameter + + SwitchParameter + + + None + + + Dpi + + Raster resolution used by visual import. + + Double + + Double + + + None + + + EmptyPresentationMessage + + Message used when no supported content is detected. + + String + + String + + + None + + + EmptyPresentationTitle + + Title used when no supported content is detected. + + String + + String + + + None + + + IncludeColumnHeaderRows + + Add inferred column headers. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeSourceTitles + + Add source-page titles. + + SwitchParameter + + SwitchParameter + + + None + + + MaxColumnsPerSlide + + Maximum columns written to one slide; zero means unlimited. + + Int32 + + Int32 + + + None + + + MaxEditableObjectsPerPage + + Maximum editable objects reconstructed per page. + + Int32 + + Int32 + + + None + + + MaxOutputBytesPerPage + + Maximum encoded bytes per rendered page. + + Int64 + + Int64 + + + None + + + MaxPages + + Maximum pages imported. + + Int32 + + Int32 + + + None + + + MaxPixelsPerPage + + Maximum pixels per rendered page. + + Int64 + + Int64 + + + None + + + MaxRows + + Maximum body rows imported per table; zero means unlimited. + + Int32 + + Int32 + + + None + + + MaxRowsPerSlide + + Maximum rows written to one slide; zero means unlimited. + + Int32 + + Int32 + + + None + + + MaxTotalOutputBytes + + Maximum aggregate encoded output bytes. + + Int64 + + Int64 + + + None + + + MergePageContinuations + + Merge compatible table segments across pages. + + SwitchParameter + + SwitchParameter + + + None + + + Mode + + Visual, editable-table, hybrid, editable-content, or automatic import mode. + + PdfPowerPointImportMode + + VisualPages + EditableTables + HybridVisualAndEditableTables + EditableContent + Auto + + + PdfPowerPointImportMode + + + None + + + PageRange + + Optional one-based page ranges such as 1-3,5. + + String + + String + + + None + + + SuppressRepeatedBodyHeaderRows + + Suppress repeated body header rows. + + SwitchParameter + + SwitchParameter + + + None + + + TableStyle + + PowerPoint table style. + + PowerPointTableStylePreset + + PowerPointTableStylePreset + + + None + + + + + + None + + + + + + + OfficeIMO.PowerPoint.Pdf.PdfPowerPointImportOptions + + + + + + + + + + + Import selected PDF pages as bounded slide content. + + PS> + + $options = New-OfficePdfPowerPointImportOptions -PageRange '1-5' -MaxPages 5 -IncludeSourceTitles + ConvertTo-OfficePdfPowerPoint -Path .\Source.pdf -OutputPath .\Slides.pptx -Options $options + + + + + + + + + + New-OfficePdfSignature + New + OfficePdfSignature + + Prepares an existing PDF for external digital signing by appending a signature field, /ByteRange, and reserved /Contents placeholder. + + + + The command does not create CMS, CAdES, timestamp, certificate-chain, or revocation data. Use the returned byte range or digest with an external signing service, then inject the produced signature bytes with Set-OfficePdfSignature. + + + + New-OfficePdfSignature + + ContactInfo + + Signer contact information stored in the signature dictionary. + + String + + String + + + None + + + FieldName + + Signature field name to append. + + String + + String + + + None + + + Filter + + Signature handler filter name. The default is Adobe.PPKLite. + + String + + String + + + None + + + IgnorePermissionRestrictions + + After successful password authentication, explicitly ignore owner-imposed signature-field restrictions. + + SwitchParameter + + SwitchParameter + + + None + + + Location + + Signing location stored in the signature dictionary. + + String + + String + + + None + + + Name + + Display signer name stored in the signature dictionary. + + String + + String + + + None + + + OutputPath + + Output prepared PDF path. + + String + + String + + + None + + + PassThruReport + + Return the OfficeIMO.Pdf preparation report instead of only the output file. + + SwitchParameter + + SwitchParameter + + + None + + + Password + + Password used to authenticate an encrypted PDF. + + String + + String + + + None + + + Path + + Input PDF path. + + String + + String + + + None + + + Reason + + Signing reason stored in the signature dictionary. + + String + + String + + + None + + + ReservedBytes + + Raw signature bytes to reserve in /Contents before hex encoding. + + Int32 + + Int32 + + + None + + + SubFilter + + Signature subfilter that describes the external signature bytes to inject later. + + PdfExternalSignatureSubFilter + + DetachedCms + CadesDetached + DocumentTimestamp + + + PdfExternalSignatureSubFilter + + + None + + + + + + ContactInfo + + Signer contact information stored in the signature dictionary. + + String + + String + + + None + + + FieldName + + Signature field name to append. + + String + + String + + + None + + + Filter + + Signature handler filter name. The default is Adobe.PPKLite. + + String + + String + + + None + + + IgnorePermissionRestrictions + + After successful password authentication, explicitly ignore owner-imposed signature-field restrictions. + + SwitchParameter + + SwitchParameter + + + None + + + Location + + Signing location stored in the signature dictionary. + + String + + String + + + None + + + Name + + Display signer name stored in the signature dictionary. + + String + + String + + + None + + + OutputPath + + Output prepared PDF path. + + String + + String + + + None + + + PassThruReport + + Return the OfficeIMO.Pdf preparation report instead of only the output file. + + SwitchParameter + + SwitchParameter + + + None + + + Password + + Password used to authenticate an encrypted PDF. + + String + + String + + + None + + + Path + + Input PDF path. + + String + + String + + + None + + + Reason + + Signing reason stored in the signature dictionary. + + String + + String + + + None + + + ReservedBytes + + Raw signature bytes to reserve in /Contents before hex encoding. + + Int32 + + Int32 + + + None + + + SubFilter + + Signature subfilter that describes the external signature bytes to inject later. + + PdfExternalSignatureSubFilter + + DetachedCms + CadesDetached + DocumentTimestamp + + + PdfExternalSignatureSubFilter + + + None + + + + + + System.String + + + + + + + System.IO.FileInfo + + + + + OfficeIMO.Pdf.PdfExternalSignaturePreparation + + + + + + + + + + + Prepare a PDF for detached CMS signing. + + PS> + + $plan = New-OfficePdfSignature -Path .\Input.pdf -OutputPath .\Prepared.pdf -FieldName Approval -Name 'Alice' -Reason Approval -PassThruReport + $plan.ByteRangeValues + $plan.ComputeSha256Digest() + + Writes a prepared PDF and returns the OfficeIMO.Pdf external signing preparation report. + + + + + + + + New-OfficePdfTableCell + New + OfficePdfTableCell + + Creates a reusable PDF table cell definition for explicit table rows. + + + + Creates a reusable PDF table cell definition for explicit table rows. + + + + New-OfficePdfTableCell + + Align + + Horizontal cell alignment. + + PdfColumnAlign + + Left + Center + Right + + + PdfColumnAlign + + + None + + + Bold + + Render the cell text in bold. + + SwitchParameter + + SwitchParameter + + + None + + + CheckBox + + Typed check boxes rendered inside the cell. + + PdfTableCellCheckBox[] + + PdfTableCellCheckBox[] + + + None + + + ColumnSpan + + Number of logical columns covered by the cell. + + Int32 + + Int32 + + + None + + + FillColor + + Cell fill color. Named colors and hexadecimal colors are accepted. + + String + + String + + + None + + + FontSize + + Cell font size in PDF points. + + Double + + Double + + + None + + + FormField + + Typed text or choice form fields rendered inside the cell. + + PdfTableCellFormField[] + + PdfTableCellFormField[] + + + None + + + Image + + Typed images rendered inside the cell. + + PdfTableCellImage[] + + PdfTableCellImage[] + + + None + + + Italic + + Render the cell text in italics. + + SwitchParameter + + SwitchParameter + + + None + + + LinkContents + + Accessible annotation text for the cell link. + + String + + String + + + None + + + LinkDestinationName + + Named PDF destination linked from the cell. + + String + + String + + + None + + + LinkUri + + Absolute or catalog-base-relative URI linked from the cell. + + String + + String + + + None + + + NamedDestinationName + + Named PDF destination defined at this cell. + + String + + String + + + None + + + NoWrap + + Keep the cell content on one visual line. + + SwitchParameter + + SwitchParameter + + + None + + + RowSpan + + Number of logical rows covered by the cell. + + Int32 + + Int32 + + + None + + + Run + + Rich text runs for the cell. Each run can be created with TextRun/PdfTextRun or provided as a hashtable/object. + + Object[] + + Object[] + + + None + + + Strike + + Render the cell text with strikethrough. + + SwitchParameter + + SwitchParameter + + + None + + + Text + + Cell text. + + String + + String + + + None + + + TextColor + + Cell text color. Named colors and hexadecimal colors are accepted. + + String + + String + + + None + + + Underline + + Render the cell text with underline. + + SwitchParameter + + SwitchParameter + + + None + + + UnderlineStyle + + Optional underline style name. PDF table rendering treats any supported value as underline. + + String + + String + + + None + + + VerticalAlign + + Vertical cell alignment. + + PdfCellVerticalAlign + + Top + Middle + Bottom + + + PdfCellVerticalAlign + + + None + + + + + + Align + + Horizontal cell alignment. + + PdfColumnAlign + + Left + Center + Right + + + PdfColumnAlign + + + None + + + Bold + + Render the cell text in bold. + + SwitchParameter + + SwitchParameter + + + None + + + CheckBox + + Typed check boxes rendered inside the cell. + + PdfTableCellCheckBox[] + + PdfTableCellCheckBox[] + + + None + + + ColumnSpan + + Number of logical columns covered by the cell. + + Int32 + + Int32 + + + None + + + FillColor + + Cell fill color. Named colors and hexadecimal colors are accepted. + + String + + String + + + None + + + FontSize + + Cell font size in PDF points. + + Double + + Double + + + None + + + FormField + + Typed text or choice form fields rendered inside the cell. + + PdfTableCellFormField[] + + PdfTableCellFormField[] + + + None + + + Image + + Typed images rendered inside the cell. + + PdfTableCellImage[] + + PdfTableCellImage[] + + + None + + + Italic + + Render the cell text in italics. + + SwitchParameter + + SwitchParameter + + + None + + + LinkContents + + Accessible annotation text for the cell link. + + String + + String + + + None + + + LinkDestinationName + + Named PDF destination linked from the cell. + + String + + String + + + None + + + LinkUri + + Absolute or catalog-base-relative URI linked from the cell. + + String + + String + + + None + + + NamedDestinationName + + Named PDF destination defined at this cell. + + String + + String + + + None + + + NoWrap + + Keep the cell content on one visual line. + + SwitchParameter + + SwitchParameter + + + None + + + RowSpan + + Number of logical rows covered by the cell. + + Int32 + + Int32 + + + None + + + Run + + Rich text runs for the cell. Each run can be created with TextRun/PdfTextRun or provided as a hashtable/object. + + Object[] + + Object[] + + + None + + + Strike + + Render the cell text with strikethrough. + + SwitchParameter + + SwitchParameter + + + None + + + Text + + Cell text. + + String + + String + + + None + + + TextColor + + Cell text color. Named colors and hexadecimal colors are accepted. + + String + + String + + + None + + + Underline + + Render the cell text with underline. + + SwitchParameter + + SwitchParameter + + + None + + + UnderlineStyle + + Optional underline style name. PDF table rendering treats any supported value as underline. + + String + + String + + + None + + + VerticalAlign + + Vertical cell alignment. + + PdfCellVerticalAlign + + Top + Middle + Bottom + + + PdfCellVerticalAlign + + + None + + + + + + None + + + + + + + PSWriteOffice.Services.Table.OfficeTableCellSpec + + + Describes a logical table cell that can be rendered by multiple Office table surfaces. + + + + + + + + + + + Create a full-width PDF table section row. + + PS> + + $row = @(New-OfficePdfTableCell -Text 'Identity systems' -ColumnSpan 3 -FillColor '#DBEAFE' -TextColor '#1E3A8A' -Bold) + + The returned cell can be passed to PdfTable inside explicit row arrays. + + + + + + + + New-OfficePdfTableCellCheckBox + New + OfficePdfTableCellCheckBox + + Creates a typed check box for a PDF table cell. + + + + Creates a typed check box for a PDF table cell. + + + + New-OfficePdfTableCellCheckBox + + Checked + + Create the check box in its checked state. + + SwitchParameter + + SwitchParameter + + + None + + + CheckedValueName + + PDF appearance-state name written when checked. + + String + + String + + + None + + + Name + + Unique AcroForm field name. + + String + + String + + + None + + + Size + + Visual square size in PDF points. + + Double + + Double + + + None + + + + + + Checked + + Create the check box in its checked state. + + SwitchParameter + + SwitchParameter + + + None + + + CheckedValueName + + PDF appearance-state name written when checked. + + String + + String + + + None + + + Name + + Unique AcroForm field name. + + String + + String + + + None + + + Size + + Visual square size in PDF points. + + Double + + Double + + + None + + + + + + None + + + + + + + OfficeIMO.Pdf.PdfTableCellCheckBox + + + + + + + + + + + Create a checked table-cell field. + + PS> + + $approved = New-OfficePdfTableCellCheckBox -Name Approved -Checked + $cell = New-OfficePdfTableCell -Text 'Approved' -CheckBox $approved + + The check box remains an AcroForm field positioned by the OfficeIMO table renderer. + + + + + + + + New-OfficePdfTableCellField + New + OfficePdfTableCellField + + Creates a typed text or choice field for a PDF table cell. + + + + Creates a typed text or choice field for a PDF table cell. + + + + New-OfficePdfTableCellField + + FontSize + + Field font size in PDF points. + + Double + + Double + + + None + + + Height + + Rendered field height in PDF points. + + Double + + Double + + + None + + + Name + + Unique AcroForm field name. + + String + + String + + + None + + + Value + + Initial field value. + + String + + String + + + None + + + Width + + Rendered field width in PDF points. + + Double + + Double + + + None + + + + New-OfficePdfTableCellField + + FontSize + + Field font size in PDF points. + + Double + + Double + + + None + + + Height + + Rendered field height in PDF points. + + Double + + Double + + + None + + + ListBox + + Render a choice field as a list box instead of a combo box. + + SwitchParameter + + SwitchParameter + + + None + + + Name + + Unique AcroForm field name. + + String + + String + + + None + + + Option + + Available values for a choice field. + + String[] + + String[] + + + None + + + Value + + Initial field value. + + String + + String + + + None + + + Width + + Rendered field width in PDF points. + + Double + + Double + + + None + + + + + + FontSize + + Field font size in PDF points. + + Double + + Double + + + None + + + Height + + Rendered field height in PDF points. + + Double + + Double + + + None + + + ListBox + + Render a choice field as a list box instead of a combo box. + + SwitchParameter + + SwitchParameter + + + None + + + Name + + Unique AcroForm field name. + + String + + String + + + None + + + Option + + Available values for a choice field. + + String[] + + String[] + + + None + + + Value + + Initial field value. + + String + + String + + + None + + + Width + + Rendered field width in PDF points. + + Double + + Double + + + None + + + + + + None + + + + + + + OfficeIMO.Pdf.PdfTableCellFormField + + + + + + + + + + + Create a reviewer choice field for a typed PDF table cell. + + PS> + + $reviewer = New-OfficePdfTableCellField -Name Reviewer -Option 'Unassigned', 'Alice', 'Bob' -Value 'Unassigned' + $cell = New-OfficePdfTableCell -Text 'Reviewer' -FormField $reviewer + + The choice field is positioned by the OfficeIMO PDF table renderer. + + + + + + + + New-OfficePdfTableCellImage + New + OfficePdfTableCellImage + + Creates a typed image for a PDF table cell. + + + + Creates a typed image for a PDF table cell. + + + + New-OfficePdfTableCellImage + + Height + + Rendered height in PDF points. + + Double + + Double + + + None + + + LinkContents + + Accessible annotation text for the image link. + + String + + String + + + None + + + LinkUri + + Optional absolute or catalog-base-relative URI linked from the image. + + String + + String + + + None + + + Path + + Raster image path. + + String + + String + + + None + + + Width + + Rendered width in PDF points. + + Double + + Double + + + None + + + + + + Height + + Rendered height in PDF points. + + Double + + Double + + + None + + + LinkContents + + Accessible annotation text for the image link. + + String + + String + + + None + + + LinkUri + + Optional absolute or catalog-base-relative URI linked from the image. + + String + + String + + + None + + + Path + + Raster image path. + + String + + String + + + None + + + Width + + Rendered width in PDF points. + + Double + + Double + + + None + + + + + + None + + + + + + + OfficeIMO.Pdf.PdfTableCellImage + + + + + + + + + + + Add a linked logo to a typed PDF table cell. + + PS> + + $logo = New-OfficePdfTableCellImage -Path .\logo.png -Width 28 -Height 28 -LinkUri 'https://example.com' + $cell = New-OfficePdfTableCell -Text 'Portal' -Image $logo + + The image remains a native PDF table-cell visual and may carry its own link. + + + + + + + + New-OfficePdfVisualComparisonOptions + New + OfficePdfVisualComparisonOptions + + Creates discoverable rendering and tolerance settings for Compare-OfficePdfVisual. + + + + Creates discoverable rendering and tolerance settings for Compare-OfficePdfVisual. + + + + New-OfficePdfVisualComparisonOptions + + Alignment + + Page alignment used for differently sized renders. + + PdfVisualPageAlignment + + TopLeft + Center + + + PdfVisualPageAlignment + + + None + + + AllowedDifferenceRatio + + Maximum differing-pixel ratio treated as equal. + + Double + + Double + + + None + + + BackgroundColor + + Background color name or hex value. + + String + + String + + + None + + + ChannelTolerance + + Maximum per-channel byte difference treated as equal. + + Byte + + Byte + + + None + + + MaxPages + + Maximum pages compared. + + Int32 + + Int32 + + + None + + + MaxPixelsPerImage + + Maximum pixels accepted per rendered image. + + Int64 + + Int64 + + + None + + + MaxTotalOutputBytes + + Maximum total bytes retained for comparison artifacts. + + Int64 + + Int64 + + + None + + + MaxTotalPixels + + Maximum pixels accepted across the comparison. + + Int64 + + Int64 + + + None + + + Scale + + Render scale applied before comparison. + + Double + + Double + + + None + + + + + + Alignment + + Page alignment used for differently sized renders. + + PdfVisualPageAlignment + + TopLeft + Center + + + PdfVisualPageAlignment + + + None + + + AllowedDifferenceRatio + + Maximum differing-pixel ratio treated as equal. + + Double + + Double + + + None + + + BackgroundColor + + Background color name or hex value. + + String + + String + + + None + + + ChannelTolerance + + Maximum per-channel byte difference treated as equal. + + Byte + + Byte + + + None + + + MaxPages + + Maximum pages compared. + + Int32 + + Int32 + + + None + + + MaxPixelsPerImage + + Maximum pixels accepted per rendered image. + + Int64 + + Int64 + + + None + + + MaxTotalOutputBytes + + Maximum total bytes retained for comparison artifacts. + + Int64 + + Int64 + + + None + + + MaxTotalPixels + + Maximum pixels accepted across the comparison. + + Int64 + + Int64 + + + None + + + Scale + + Render scale applied before comparison. + + Double + + Double + + + None + + + + + + None + + + + + + + OfficeIMO.Pdf.PdfVisualComparisonOptions + + + + + + + + + + + Compare PDFs with a small rendering tolerance. + + PS> + + $options = New-OfficePdfVisualComparisonOptions -ChannelTolerance 2 -AllowedDifferenceRatio 0.001 -MaxPages 50 + Compare-OfficePdfVisual -ReferencePath .\Expected.pdf -DifferencePath .\Actual.pdf -Options $options + + + + + + + + + + New-OfficePdfWordImportOptions + New + OfficePdfWordImportOptions + + Creates discoverable PDF-to-Word reconstruction settings. + + + + Creates discoverable PDF-to-Word reconstruction settings. + + + + New-OfficePdfWordImportOptions + + AlignNumericColumns + + Right-align inferred numeric columns. + + SwitchParameter + + SwitchParameter + + + None + + + AllowedHyperlinkUriScheme + + Allowed absolute hyperlink URI schemes. + + String[] + + String[] + + + None + + + BookmarkPrefix + + Prefix for generated Word bookmarks. + + String + + String + + + None + + + EmptyDocumentMessage + + Text used when no supported content is detected. + + String + + String + + + None + + + FitTablesToPageWidth + + Fit imported tables to page width. + + SwitchParameter + + SwitchParameter + + + None + + + ImportHeadings + + Import detected headings. + + SwitchParameter + + SwitchParameter + + + None + + + ImportImages + + Import supported embedded images. + + SwitchParameter + + SwitchParameter + + + None + + + ImportInternalLinks + + Import supported internal links. + + SwitchParameter + + SwitchParameter + + + None + + + ImportLists + + Import detected lists. + + SwitchParameter + + SwitchParameter + + + None + + + ImportParagraphs + + Import detected paragraphs. + + SwitchParameter + + SwitchParameter + + + None + + + ImportTables + + Import detected tables. + + SwitchParameter + + SwitchParameter + + + None + + + ImportUriLinks + + Import safe URI links. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeEmptyPages + + Represent empty PDF pages. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeFormFieldPlaceholders + + Represent AcroForm widgets with editable placeholders. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeImagePlaceholders + + Use paragraphs when an image cannot be embedded. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeMetadata + + Copy PDF metadata into Word properties. + + SwitchParameter + + SwitchParameter + + + None + + + MaxTableRows + + Maximum body rows imported per table; zero means unlimited. + + Int32 + + Int32 + + + None + + + PreserveImagePlacementSize + + Preserve detected image placement size. + + SwitchParameter + + SwitchParameter + + + None + + + PreservePageBreaks + + Represent source pages with Word page breaks. + + SwitchParameter + + SwitchParameter + + + None + + + RepeatHeaderRows + + Repeat inferred table header rows. + + SwitchParameter + + SwitchParameter + + + None + + + TablesOnly + + Use the built-in tables-only import profile. + + SwitchParameter + + SwitchParameter + + + None + + + TableStyle + + Word table style for imported tables. + + WordTableStyle + + TableNormal + TableGrid + PlainTable1 + PlainTable2 + PlainTable3 + PlainTable4 + PlainTable5 + GridTable1Light + GridTable1LightAccent1 + GridTable1LightAccent2 + GridTable1LightAccent3 + GridTable1LightAccent4 + GridTable1LightAccent5 + GridTable1LightAccent6 + GridTable2 + GridTable2Accent1 + GridTable2Accent2 + GridTable2Accent3 + GridTable2Accent4 + GridTable2Accent5 + GridTable2Accent6 + GridTable3 + GridTable3Accent1 + GridTable3Accent2 + GridTable3Accent3 + GridTable3Accent4 + GridTable3Accent5 + GridTable3Accent6 + GridTable4 + GridTable4Accent1 + GridTable4Accent2 + GridTable4Accent3 + GridTable4Accent4 + GridTable4Accent5 + GridTable4Accent6 + GridTable5Dark + GridTable5DarkAccent1 + GridTable5DarkAccent2 + GridTable5DarkAccent3 + GridTable5DarkAccent4 + GridTable5DarkAccent5 + GridTable5DarkAccent6 + GridTable6Colorful + GridTable6ColorfulAccent1 + GridTable6ColorfulAccent2 + GridTable6ColorfulAccent3 + GridTable6ColorfulAccent4 + GridTable6ColorfulAccent5 + GridTable6ColorfulAccent6 + GridTable7Colorful + GridTable7ColorfulAccent1 + GridTable7ColorfulAccent2 + GridTable7ColorfulAccent3 + GridTable7ColorfulAccent4 + GridTable7ColorfulAccent5 + GridTable7ColorfulAccent6 + ListTable1Light + ListTable1LightAccent1 + ListTable1LightAccent2 + ListTable1LightAccent3 + ListTable1LightAccent4 + ListTable1LightAccent5 + ListTable1LightAccent6 + ListTable2 + ListTable2Accent1 + ListTable2Accent2 + ListTable2Accent3 + ListTable2Accent4 + ListTable2Accent5 + ListTable2Accent6 + ListTable3 + ListTable3Accent1 + ListTable3Accent2 + ListTable3Accent3 + ListTable3Accent4 + ListTable3Accent5 + ListTable3Accent6 + ListTable4 + ListTable4Accent1 + ListTable4Accent2 + ListTable4Accent3 + ListTable4Accent4 + ListTable4Accent5 + ListTable4Accent6 + ListTable5Dark + ListTable5DarkAccent1 + ListTable5DarkAccent2 + ListTable5DarkAccent3 + ListTable5DarkAccent4 + ListTable5DarkAccent5 + ListTable5DarkAccent6 + ListTable6Colorful + ListTable6ColorfulAccent1 + ListTable6ColorfulAccent2 + ListTable6ColorfulAccent3 + ListTable6ColorfulAccent4 + ListTable6ColorfulAccent5 + ListTable6ColorfulAccent6 + ListTable7Colorful + ListTable7ColorfulAccent1 + ListTable7ColorfulAccent2 + ListTable7ColorfulAccent3 + ListTable7ColorfulAccent4 + ListTable7ColorfulAccent5 + ListTable7ColorfulAccent6 + + + WordTableStyle + + + None + + + UseSharedPageReadingOrder + + Use the crop-, rotation-, and column-aware reading order. + + SwitchParameter + + SwitchParameter + + + None + + + + + + AlignNumericColumns + + Right-align inferred numeric columns. + + SwitchParameter + + SwitchParameter + + + None + + + AllowedHyperlinkUriScheme + + Allowed absolute hyperlink URI schemes. + + String[] + + String[] + + + None + + + BookmarkPrefix + + Prefix for generated Word bookmarks. + + String + + String + + + None + + + EmptyDocumentMessage + + Text used when no supported content is detected. + + String + + String + + + None + + + FitTablesToPageWidth + + Fit imported tables to page width. + + SwitchParameter + + SwitchParameter + + + None + + + ImportHeadings + + Import detected headings. + + SwitchParameter + + SwitchParameter + + + None + + + ImportImages + + Import supported embedded images. + + SwitchParameter + + SwitchParameter + + + None + + + ImportInternalLinks + + Import supported internal links. + + SwitchParameter + + SwitchParameter + + + None + + + ImportLists + + Import detected lists. + + SwitchParameter + + SwitchParameter + + + None + + + ImportParagraphs + + Import detected paragraphs. + + SwitchParameter + + SwitchParameter + + + None + + + ImportTables + + Import detected tables. + + SwitchParameter + + SwitchParameter + + + None + + + ImportUriLinks + + Import safe URI links. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeEmptyPages + + Represent empty PDF pages. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeFormFieldPlaceholders + + Represent AcroForm widgets with editable placeholders. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeImagePlaceholders + + Use paragraphs when an image cannot be embedded. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeMetadata + + Copy PDF metadata into Word properties. + + SwitchParameter + + SwitchParameter + + + None + + + MaxTableRows + + Maximum body rows imported per table; zero means unlimited. + + Int32 + + Int32 + + + None + + + PreserveImagePlacementSize + + Preserve detected image placement size. + + SwitchParameter + + SwitchParameter + + + None + + + PreservePageBreaks + + Represent source pages with Word page breaks. + + SwitchParameter + + SwitchParameter + + + None + + + RepeatHeaderRows + + Repeat inferred table header rows. + + SwitchParameter + + SwitchParameter + + + None + + + TablesOnly + + Use the built-in tables-only import profile. + + SwitchParameter + + SwitchParameter + + + None + + + TableStyle + + Word table style for imported tables. + + WordTableStyle + + TableNormal + TableGrid + PlainTable1 + PlainTable2 + PlainTable3 + PlainTable4 + PlainTable5 + GridTable1Light + GridTable1LightAccent1 + GridTable1LightAccent2 + GridTable1LightAccent3 + GridTable1LightAccent4 + GridTable1LightAccent5 + GridTable1LightAccent6 + GridTable2 + GridTable2Accent1 + GridTable2Accent2 + GridTable2Accent3 + GridTable2Accent4 + GridTable2Accent5 + GridTable2Accent6 + GridTable3 + GridTable3Accent1 + GridTable3Accent2 + GridTable3Accent3 + GridTable3Accent4 + GridTable3Accent5 + GridTable3Accent6 + GridTable4 + GridTable4Accent1 + GridTable4Accent2 + GridTable4Accent3 + GridTable4Accent4 + GridTable4Accent5 + GridTable4Accent6 + GridTable5Dark + GridTable5DarkAccent1 + GridTable5DarkAccent2 + GridTable5DarkAccent3 + GridTable5DarkAccent4 + GridTable5DarkAccent5 + GridTable5DarkAccent6 + GridTable6Colorful + GridTable6ColorfulAccent1 + GridTable6ColorfulAccent2 + GridTable6ColorfulAccent3 + GridTable6ColorfulAccent4 + GridTable6ColorfulAccent5 + GridTable6ColorfulAccent6 + GridTable7Colorful + GridTable7ColorfulAccent1 + GridTable7ColorfulAccent2 + GridTable7ColorfulAccent3 + GridTable7ColorfulAccent4 + GridTable7ColorfulAccent5 + GridTable7ColorfulAccent6 + ListTable1Light + ListTable1LightAccent1 + ListTable1LightAccent2 + ListTable1LightAccent3 + ListTable1LightAccent4 + ListTable1LightAccent5 + ListTable1LightAccent6 + ListTable2 + ListTable2Accent1 + ListTable2Accent2 + ListTable2Accent3 + ListTable2Accent4 + ListTable2Accent5 + ListTable2Accent6 + ListTable3 + ListTable3Accent1 + ListTable3Accent2 + ListTable3Accent3 + ListTable3Accent4 + ListTable3Accent5 + ListTable3Accent6 + ListTable4 + ListTable4Accent1 + ListTable4Accent2 + ListTable4Accent3 + ListTable4Accent4 + ListTable4Accent5 + ListTable4Accent6 + ListTable5Dark + ListTable5DarkAccent1 + ListTable5DarkAccent2 + ListTable5DarkAccent3 + ListTable5DarkAccent4 + ListTable5DarkAccent5 + ListTable5DarkAccent6 + ListTable6Colorful + ListTable6ColorfulAccent1 + ListTable6ColorfulAccent2 + ListTable6ColorfulAccent3 + ListTable6ColorfulAccent4 + ListTable6ColorfulAccent5 + ListTable6ColorfulAccent6 + ListTable7Colorful + ListTable7ColorfulAccent1 + ListTable7ColorfulAccent2 + ListTable7ColorfulAccent3 + ListTable7ColorfulAccent4 + ListTable7ColorfulAccent5 + ListTable7ColorfulAccent6 + + + WordTableStyle + + + None + + + UseSharedPageReadingOrder + + Use the crop-, rotation-, and column-aware reading order. + + SwitchParameter + + SwitchParameter + + + None + + + + + + None + + + + + + + OfficeIMO.Word.Pdf.PdfWordImportOptions + + + + + + + + + + + Reconstruct headings, paragraphs, lists, and tables. + + PS> + + $options = New-OfficePdfWordImportOptions -ImportHeadings -ImportParagraphs -ImportLists -ImportTables + ConvertTo-OfficePdfWord -Path .\Source.pdf -OutputPath .\Rebuilt.docx -Options $options + + + + + + + + + + New-OfficePowerPoint + New + OfficePowerPoint + + Creates a PowerPoint presentation using the DSL. + + + + Initializes a presentation, runs the DSL script block, and optionally saves the deck. + + + + New-OfficePowerPoint + + Content + + DSL scriptblock describing presentation content. + + ScriptBlock + + ScriptBlock + + + None + + + NoSave + + Skip saving after executing the DSL. + + SwitchParameter + + SwitchParameter + + + None + + + Open + + Open the presentation after saving. + + SwitchParameter + + SwitchParameter + + + None + + + PassThru + + Emit the saved FileInfo for chaining. + + SwitchParameter + + SwitchParameter + + + None + + + Password + + Password used to save the presentation as an encrypted package. + + String + + String + + + None + + + Path + + Destination path for the new .pptx. + + String + + String + + + None + + + + + + Content + + DSL scriptblock describing presentation content. + + ScriptBlock + + ScriptBlock + + + None + + + NoSave + + Skip saving after executing the DSL. + + SwitchParameter + + SwitchParameter + + + None + + + Open + + Open the presentation after saving. + + SwitchParameter + + SwitchParameter + + + None + + + PassThru + + Emit the saved FileInfo for chaining. + + SwitchParameter + + SwitchParameter + + + None + + + Password + + Password used to save the presentation as an encrypted package. + + String + + String + + + None + + + Path + + Destination path for the new .pptx. + + String + + String + + + None + + + + + + None + + + + + + + + + + + + Create and capture the presentation object. + + PS> + + $ppt = New-OfficePowerPoint -Path .\deck.pptx -NoSave + + Creates a live presentation associated with deck.pptx for incremental composition. + + + + Create a deck with a title slide. + + PS> + + New-OfficePowerPoint -Path .\deck.pptx { PptSlide { PptTitle -Title 'Status Update' } } -Open + + Creates, saves, and opens a deck with one titled slide. + + + + + + + + New-OfficePowerPointDeckPlan + New + OfficePowerPointDeckPlan + + Creates a semantic PowerPoint deck plan for designer rendering. + + + + Creates a semantic PowerPoint deck plan for designer rendering. + + + + New-OfficePowerPointDeckPlan + + Content - Request PDF viewers to display the document title instead of the file name. + Nested deck-plan DSL content. - SwitchParameter + ScriptBlock - SwitchParameter + ScriptBlock None + + + + + Content + + Nested deck-plan DSL content. + + ScriptBlock + + ScriptBlock + + + None + + + + + + None + + + + + + + OfficeIMO.PowerPoint.PowerPointDeckPlan + + + + + + + + + + + Create a semantic service brief plan. + + PS> + + $plan = New-OfficePowerPointDeckPlan { + Add-OfficePowerPointPlanSection -Title 'Service Review' -Subtitle 'Monthly operating brief' + Add-OfficePowerPointPlanProcess -Title 'Operating rhythm' -Steps @( + @{ Title = 'Collect'; Body = 'Gather health signals' } + @{ Title = 'Review'; Body = 'Confirm owner decisions' } + @{ Title = 'Publish'; Body = 'Share the final brief' } + ) + } + New-OfficePowerPoint -Path .\Examples\Documents\DesignerDeck.pptx { + Add-OfficePowerPointDesignerDeck -Plan $plan + } + + Builds a deck plan and renders it through the OfficeIMO designer helpers. + + + + + + + + New-OfficePowerPointImageOptions + New + OfficePowerPointImageOptions + + Creates discoverable slide selection and rendering settings for Export-OfficePowerPointImage. + + + + Creates discoverable slide selection and rendering settings for Export-OfficePowerPointImage. + + + + New-OfficePowerPointImageOptions - FileVersion + BackgroundColor - PDF file header version emitted by OfficeIMO.Pdf. + - PdfFileVersion - - Pdf14 - Pdf15 - Pdf16 - Pdf17 - Pdf20 - + String - PdfFileVersion + String None - FitWindow + IncludeAutoShapes - Request PDF viewers to fit the document window to the first displayed page. + Render auto shapes. SwitchParameter @@ -138749,9 +149204,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - FlattenVisualAnnotations + IncludeCharts - Flatten generated FreeText and Highlight annotations into static page content. + Render charts. SwitchParameter @@ -138761,21 +149216,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - FontFamily - - Embedded TrueType font family name for generated text. - - String - - String - - - None - - - HideMenubar + IncludeHiddenShapes - Request PDF viewers to hide the menu bar. + Render hidden shapes. SwitchParameter @@ -138785,9 +149228,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - HideToolbar + IncludeHiddenSlides - Request PDF viewers to hide the toolbar. + Include hidden slides. SwitchParameter @@ -138797,9 +149240,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - HideWindowUI + IncludePictures - Request PDF viewers to hide user-interface elements. + Render pictures. SwitchParameter @@ -138809,9 +149252,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludePageLabels + IncludeSlideBackground - Emit generated catalog page labels. + Render slide backgrounds. SwitchParameter @@ -138821,21 +149264,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - ItalicFontPath + IncludeSlideContent - Optional italic TrueType font path used when -FontFamily is provided. + Render slide content. - String + SwitchParameter - String + SwitchParameter None - NoSave + IncludeTables - Skip saving even when -Path is provided. + Render tables. SwitchParameter @@ -138844,10 +149287,10 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Open + + IncludeTextBoxes - Open the PDF after saving. + Render text boxes. SwitchParameter @@ -138857,31 +149300,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - OpenActionMode + MaximumDegreeOfParallelism - Open-action destination mode. + - PdfOpenActionDestinationMode - - Xyz - Fit - FitHorizontal - FitVertical - FitRectangle - FitBoundingBox - FitBoundingBoxHorizontal - FitBoundingBoxVertical - + Int32 - PdfOpenActionDestinationMode + Int32 None - OpenActionPage + MaximumOutputCount - Initial one-based page shown by PDF viewers that honor open actions. + Int32 @@ -138891,21 +149324,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - OpenActionTop + MaximumOutputHeight - Optional open-action top coordinate. + - Double + Int32 - Double + Int32 None - OutlineExpansionLevel + MaximumOutputWidth - Initial outline expansion level when heading outlines are created. + Int32 @@ -138915,131 +149348,113 @@ Use -NoSave or omit -Path when a document object should be returned for further None - OwnerPassword + MaximumRasterPixels - Optional owner password for the generated encrypted PDF. + - String + Int64 - String + Int64 None - PageLabelPrefix + MaximumTotalEncodedBytes - Optional generated page-label prefix. + - String + Int64 - String + Int64 None - PageLayout + MaximumTotalRasterPixels - Catalog page layout hint emitted for generated PDFs. + - PdfCatalogPageLayout - - SinglePage - OneColumn - TwoColumnLeft - TwoColumnRight - TwoPageLeft - TwoPageRight - + Int64 - PdfCatalogPageLayout + Int64 None - PageMode + RasterOverflowBehavior - Catalog page mode hint emitted for generated PDFs. + - PdfCatalogPageMode + OfficeRasterOverflowBehavior - UseNone - UseOutlines - UseThumbs - FullScreen - UseOC - UseAttachments + ReduceScale + Throw - PdfCatalogPageMode + OfficeRasterOverflowBehavior None - PassThru + RenderTimeoutSeconds - Emit the generated document or saved file for chaining. + - SwitchParameter + Double - SwitchParameter + Double None - - Password + + Scale - Password required to open the generated PDF. + - String + Double - String + Double None - - Permission + + SlideNumber - Raw PDF Standard security permission bit mask. Defaults to allowing all standard operations. + One-based slide numbers to export. - Int32 + Int32[] - Int32 + Int32[] None - - RegularFontPath + + TargetDpi - Regular TrueType font path used when -FontFamily is provided. + - String + Double - String + Double None - Theme + TextShapingLanguage - Built-in OfficeIMO.Pdf theme applied before the DSL content runs. + - OfficePdfThemePreset - - WordLike - TechnicalDocument - Compact - Report - + String - OfficePdfThemePreset + String None @@ -139048,21 +149463,9 @@ Use -NoSave or omit -Path when a document object should be returned for further - BoldFontPath - - Optional bold TrueType font path used when -FontFamily is provided. - - String - - String - - - None - - - BoldItalicFontPath + BackgroundColor - Optional bold italic TrueType font path used when -FontFamily is provided. + String @@ -139072,33 +149475,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - CenterWindow - - Request PDF viewers to center the document window on screen. - - SwitchParameter - - SwitchParameter - - - None - - - Content - - DSL script block describing generated PDF content. - - ScriptBlock - - ScriptBlock - - - None - - - CreateOutlineFromHeadings + IncludeAutoShapes - Create PDF outline/bookmark entries from heading elements. + Render auto shapes. SwitchParameter @@ -139108,47 +149487,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - DefaultFont - - Default standard PDF font for generated text. - - PdfStandardFont - - Helvetica - HelveticaOblique - HelveticaBold - HelveticaBoldOblique - TimesRoman - TimesItalic - TimesBold - TimesBoldItalic - Courier - CourierOblique - CourierBold - CourierBoldOblique - - - PdfStandardFont - - - None - - - DefaultFontSize - - Default generated text font size in points. - - Double - - Double - - - None - - - DisplayDocTitle + IncludeCharts - Request PDF viewers to display the document title instead of the file name. + Render charts. SwitchParameter @@ -139158,28 +149499,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - FileVersion - - PDF file header version emitted by OfficeIMO.Pdf. - - PdfFileVersion - - Pdf14 - Pdf15 - Pdf16 - Pdf17 - Pdf20 - - - PdfFileVersion - - - None - - - FitWindow + IncludeHiddenShapes - Request PDF viewers to fit the document window to the first displayed page. + Render hidden shapes. SwitchParameter @@ -139189,9 +149511,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - FlattenVisualAnnotations + IncludeHiddenSlides - Flatten generated FreeText and Highlight annotations into static page content. + Include hidden slides. SwitchParameter @@ -139201,21 +149523,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - FontFamily - - Embedded TrueType font family name for generated text. - - String - - String - - - None - - - HideMenubar + IncludePictures - Request PDF viewers to hide the menu bar. + Render pictures. SwitchParameter @@ -139225,9 +149535,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - HideToolbar + IncludeSlideBackground - Request PDF viewers to hide the toolbar. + Render slide backgrounds. SwitchParameter @@ -139237,9 +149547,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - HideWindowUI + IncludeSlideContent - Request PDF viewers to hide user-interface elements. + Render slide content. SwitchParameter @@ -139249,9 +149559,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludePageLabels + IncludeTables - Emit generated catalog page labels. + Render tables. SwitchParameter @@ -139261,33 +149571,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - ItalicFontPath - - Optional italic TrueType font path used when -FontFamily is provided. - - String - - String - - - None - - - NoSave - - Skip saving even when -Path is provided. - - SwitchParameter - - SwitchParameter - - - None - - - Open + IncludeTextBoxes - Open the PDF after saving. + Render text boxes. SwitchParameter @@ -139297,31 +149583,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - OpenActionMode + MaximumDegreeOfParallelism - Open-action destination mode. + - PdfOpenActionDestinationMode - - Xyz - Fit - FitHorizontal - FitVertical - FitRectangle - FitBoundingBox - FitBoundingBoxHorizontal - FitBoundingBoxVertical - + Int32 - PdfOpenActionDestinationMode + Int32 None - OpenActionPage + MaximumOutputCount - Initial one-based page shown by PDF viewers that honor open actions. + Int32 @@ -139331,21 +149607,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - OpenActionTop + MaximumOutputHeight - Optional open-action top coordinate. + - Double + Int32 - Double + Int32 None - OutlineExpansionLevel + MaximumOutputWidth - Initial outline expansion level when heading outlines are created. + Int32 @@ -139355,121 +149631,109 @@ Use -NoSave or omit -Path when a document object should be returned for further None - OwnerPassword + MaximumRasterPixels - Optional owner password for the generated encrypted PDF. + - String + Int64 - String + Int64 None - PageLabelPrefix + MaximumTotalEncodedBytes - Optional generated page-label prefix. + - String + Int64 - String + Int64 None - PageLayout + MaximumTotalRasterPixels - Catalog page layout hint emitted for generated PDFs. + - PdfCatalogPageLayout - - SinglePage - OneColumn - TwoColumnLeft - TwoColumnRight - TwoPageLeft - TwoPageRight - + Int64 - PdfCatalogPageLayout + Int64 None - PageMode + RasterOverflowBehavior - Catalog page mode hint emitted for generated PDFs. + - PdfCatalogPageMode + OfficeRasterOverflowBehavior - UseNone - UseOutlines - UseThumbs - FullScreen - UseOC - UseAttachments + ReduceScale + Throw - PdfCatalogPageMode + OfficeRasterOverflowBehavior None - PassThru + RenderTimeoutSeconds - Emit the generated document or saved file for chaining. + - SwitchParameter + Double - SwitchParameter + Double None - - Password + + Scale - Password required to open the generated PDF. + - String + Double - String + Double None - - Path + + SlideNumber - Optional destination PDF path. + One-based slide numbers to export. - String + Int32[] - String + Int32[] None - - Permission + + TargetDpi - Raw PDF Standard security permission bit mask. Defaults to allowing all standard operations. + - Int32 + Double - Int32 + Double None - - RegularFontPath + + TextShapingLanguage - Regular TrueType font path used when -FontFamily is provided. + String @@ -139478,24 +149742,6 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Theme - - Built-in OfficeIMO.Pdf theme applied before the DSL content runs. - - OfficePdfThemePreset - - WordLike - TechnicalDocument - Compact - Report - - - OfficePdfThemePreset - - - None - @@ -139507,12 +149753,7 @@ Use -NoSave or omit -Path when a document object should be returned for further - OfficeIMO.Pdf.PdfDocument - - - - - System.IO.FileInfo + OfficeIMO.PowerPoint.PowerPointPresentationImageExportOptions @@ -139523,39 +149764,14 @@ Use -NoSave or omit -Path when a document object should be returned for further - Create a PDF report. - - PS> - - New-OfficePdf -Path .\Report.pdf { PdfHeading 'Report'; PdfParagraph 'Generated by PSWriteOffice' } -Open - - Builds a PDF and opens it after saving. - - - - Create a polished report with theme, metadata, and layout. + Render selected slides with their backgrounds and content. PS> - New-OfficePdf -Path .\ServiceReview.pdf { - PdfTheme Report - PdfMetadata -Title 'Service Review' -Author 'PSWriteOffice' - PdfPageSetup -PageSize A4 -Margin 42 - PdfHeader 'Service Review' - PdfFooter 'Page {page}/{pages}' - PdfHeading 'Service Review' - PdfText -Run @( - @{ Text = 'Generated with ' } - @{ Text = 'rich inline text'; Bold = $true; Color = '#0F766E' } - @{ Text = ' and OfficeIMO.Pdf layout.' } - ) - PdfRow -Column @( - @{ Width = 40; Content = @(@{ Type = 'Panel'; Text = 'Left summary' }) } - @{ Width = 60; Content = @(@{ Type = 'Paragraph'; Text = 'Right details' }) } - ) - } + $options = New-OfficePowerPointImageOptions -SlideNumber 1,3 -IncludeSlideBackground -IncludeSlideContent + Export-OfficePowerPointImage -Path .\Deck.pptx -OutputPath .\Slides -Options $options - Shows the preferred high-level PDF report authoring shape. + @@ -139563,59 +149779,23 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficePdfSignature + New-OfficePowerPointOpenDocumentOptions New - OfficePdfSignature + OfficePowerPointOpenDocumentOptions - Prepares an existing PDF for external digital signing by appending a signature field, /ByteRange, and reserved /Contents placeholder. + Creates PowerPoint/OpenDocument conversion settings. - The command does not create CMS, CAdES, timestamp, certificate-chain, or revocation data. Use the returned byte range or digest with an external signing service, then inject the produced signature bytes with Set-OfficePdfSignature. + Creates PowerPoint/OpenDocument conversion settings. - New-OfficePdfSignature + New-OfficePowerPointOpenDocumentOptions - ContactInfo - - Signer contact information stored in the signature dictionary. - - String - - String - - - None - - - FieldName - - Signature field name to append. - - String - - String - - - None - - - Filter - - Signature handler filter name. The default is Adobe.PPKLite. - - String - - String - - - None - - - IgnorePermissionRestrictions + IncludeBasicFormatting - After successful password authentication, explicitly ignore owner-imposed signature-field restrictions. + Copy common fills, outlines, and text-run formatting. SwitchParameter @@ -139625,45 +149805,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Location - - Signing location stored in the signature dictionary. - - String - - String - - - None - - - Name - - Display signer name stored in the signature dictionary. - - String - - String - - - None - - - OutputPath - - Output prepared PDF path. - - String - - String - - - None - - - PassThruReport + IncludeImages - Return the OfficeIMO.Pdf preparation report instead of only the output file. + Copy supported embedded images. SwitchParameter @@ -139673,45 +149817,38 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Password - - Password used to authenticate an encrypted PDF. - - String - - String - - - None - - - Path + IncludeSpeakerNotes - Input PDF path. + Copy plain speaker-note text. - String + SwitchParameter - String + SwitchParameter None - Reason + LossPolicy - Signing reason stored in the signature dictionary. + Whether conversion loss is reported or rejected. - String + OdfConversionLossPolicy + + ReportOnly + ThrowOnSkippedOrUnsupported + ThrowOnAnyLoss + - String + OdfConversionLossPolicy None - ReservedBytes + MaxTableColumns - Raw signature bytes to reserve in /Contents before hex encoding. + Maximum columns in converted presentation tables. Int32 @@ -139721,18 +149858,13 @@ Use -NoSave or omit -Path when a document object should be returned for further None - SubFilter + MaxTableRows - Signature subfilter that describes the external signature bytes to inject later. + Maximum rows in converted presentation tables. - PdfExternalSignatureSubFilter - - DetachedCms - CadesDetached - DocumentTimestamp - + Int32 - PdfExternalSignatureSubFilter + Int32 None @@ -139741,45 +149873,9 @@ Use -NoSave or omit -Path when a document object should be returned for further - ContactInfo - - Signer contact information stored in the signature dictionary. - - String - - String - - - None - - - FieldName - - Signature field name to append. - - String - - String - - - None - - - Filter - - Signature handler filter name. The default is Adobe.PPKLite. - - String - - String - - - None - - - IgnorePermissionRestrictions + IncludeBasicFormatting - After successful password authentication, explicitly ignore owner-imposed signature-field restrictions. + Copy common fills, outlines, and text-run formatting. SwitchParameter @@ -139789,45 +149885,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Location - - Signing location stored in the signature dictionary. - - String - - String - - - None - - - Name - - Display signer name stored in the signature dictionary. - - String - - String - - - None - - - OutputPath - - Output prepared PDF path. - - String - - String - - - None - - - PassThruReport + IncludeImages - Return the OfficeIMO.Pdf preparation report instead of only the output file. + Copy supported embedded images. SwitchParameter @@ -139837,45 +149897,38 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Password - - Password used to authenticate an encrypted PDF. - - String - - String - - - None - - - Path + IncludeSpeakerNotes - Input PDF path. + Copy plain speaker-note text. - String + SwitchParameter - String + SwitchParameter None - Reason + LossPolicy - Signing reason stored in the signature dictionary. + Whether conversion loss is reported or rejected. - String + OdfConversionLossPolicy + + ReportOnly + ThrowOnSkippedOrUnsupported + ThrowOnAnyLoss + - String + OdfConversionLossPolicy None - ReservedBytes + MaxTableColumns - Raw signature bytes to reserve in /Contents before hex encoding. + Maximum columns in converted presentation tables. Int32 @@ -139885,18 +149938,13 @@ Use -NoSave or omit -Path when a document object should be returned for further None - SubFilter + MaxTableRows - Signature subfilter that describes the external signature bytes to inject later. + Maximum rows in converted presentation tables. - PdfExternalSignatureSubFilter - - DetachedCms - CadesDetached - DocumentTimestamp - + Int32 - PdfExternalSignatureSubFilter + Int32 None @@ -139905,19 +149953,14 @@ Use -NoSave or omit -Path when a document object should be returned for further - System.String + None - System.IO.FileInfo - - - - - OfficeIMO.Pdf.PdfExternalSignaturePreparation + OfficeIMO.PowerPoint.OpenDocument.PowerPointOpenDocumentConversionOptions @@ -139928,15 +149971,14 @@ Use -NoSave or omit -Path when a document object should be returned for further - Prepare a PDF for detached CMS signing. + Include slide images, notes, and basic formatting. PS> - $plan = New-OfficePdfSignature -Path .\Input.pdf -OutputPath .\Prepared.pdf -FieldName Approval -Name 'Alice' -Reason Approval -PassThruReport - $plan.ByteRangeValues - $plan.ComputeSha256Digest() + $options = New-OfficePowerPointOpenDocumentOptions -IncludeImages -IncludeSpeakerNotes -IncludeBasicFormatting + ConvertTo-OfficeOpenDocument -Path .\Deck.pptx -OutputPath .\Deck.odp -PowerPointOptions $options - Writes a prepared PDF and returns the OfficeIMO.Pdf external signing preparation report. + @@ -139944,40 +149986,35 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficePdfTableCell + New-OfficePowerPointPdfOptions New - OfficePdfTableCell + OfficePowerPointPdfOptions - Creates a reusable PDF table cell definition for explicit table rows. + Creates discoverable PowerPoint-to-PDF conversion options for Export-OfficeDocumentPdf. - Creates a reusable PDF table cell definition for explicit table rows. + Creates discoverable PowerPoint-to-PDF conversion options for Export-OfficeDocumentPdf. - New-OfficePdfTableCell + New-OfficePowerPointPdfOptions - Align + AllowDocumentFontEmbedding - Horizontal cell alignment. + Allow embedding fonts stored in the presentation. - PdfColumnAlign - - Left - Center - Right - + SwitchParameter - PdfColumnAlign + SwitchParameter None - Bold + AllowSystemFontEmbedding - Render the cell text in bold. + Allow embedding fonts discovered on the current system. SwitchParameter @@ -139986,34 +150023,34 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - CheckBox + + ChartLayout - Typed check boxes rendered inside the cell. + Chart layout override. - PdfTableCellCheckBox[] + OfficeChartLayout - PdfTableCellCheckBox[] + OfficeChartLayout None - ColumnSpan + ChartStyle - Number of logical columns covered by the cell. + Chart visual style override. - Int32 + OfficeChartStyle - Int32 + OfficeChartStyle None - - FillColor + + FontFamily - Cell fill color. Named colors and hexadecimal colors are accepted. + Default font family used when the presentation does not specify one. String @@ -140023,45 +150060,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - FontSize - - Cell font size in PDF points. - - Double - - Double - - - None - - - FormField - - Typed text or choice form fields rendered inside the cell. - - PdfTableCellFormField[] - - PdfTableCellFormField[] - - - None - - - Image + HandoutSlidesPerPage - Typed images rendered inside the cell. + Number of slides on each handout page. - PdfTableCellImage[] + Int32 - PdfTableCellImage[] + Int32 None - Italic + IncludeAutoShapes - Render the cell text in italics. + Render automatic shapes. SwitchParameter @@ -140071,57 +150084,57 @@ Use -NoSave or omit -Path when a document object should be returned for further None - LinkContents + IncludeCharts - Accessible annotation text for the cell link. + Render charts. - String + SwitchParameter - String + SwitchParameter None - LinkDestinationName + IncludeHiddenSlides - Named PDF destination linked from the cell. + Include slides marked hidden. - String + SwitchParameter - String + SwitchParameter None - LinkUri + IncludePictures - Absolute or catalog-base-relative URI linked from the cell. + Render pictures. - String + SwitchParameter - String + SwitchParameter None - NamedDestinationName + IncludeSlideBackgrounds - Named PDF destination defined at this cell. + Render slide backgrounds. - String + SwitchParameter - String + SwitchParameter None - NoWrap + IncludeSmartArt - Keep the cell content on one visual line. + Render SmartArt. SwitchParameter @@ -140131,33 +150144,33 @@ Use -NoSave or omit -Path when a document object should be returned for further None - RowSpan + IncludeSpeakerNotes - Number of logical rows covered by the cell. + Include speaker notes. - Int32 + SwitchParameter - Int32 + SwitchParameter None - - Run + + IncludeTables - Rich text runs for the cell. Each run can be created with TextRun/PdfTextRun or provided as a hashtable/object. + Render tables. - Object[] + SwitchParameter - Object[] + SwitchParameter None - Strike + IncludeTextBoxes - Render the cell text with strikethrough. + Render text boxes. SwitchParameter @@ -140166,67 +150179,72 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Text + + MaxGroupShapeDepth - Cell text. + Maximum nested group-shape depth to render. - String + Int32 - String + Int32 None - - TextColor + + PageLayout - Cell text color. Named colors and hexadecimal colors are accepted. + PDF page layout, such as slides, notes, or handouts. - String + PowerPointPdfPageLayout + + Slides + NotesPages + Handouts + - String + PowerPointPdfPageLayout None - Underline + PdfOptions - Render the cell text with underline. + Underlying low-level OfficeIMO PDF options. - SwitchParameter + PdfOptions - SwitchParameter + PdfOptions None - UnderlineStyle + PictureFit - Optional underline style name. PDF table rendering treats any supported value as underline. + How pictures fit their shape bounds. - String + OfficeImageFit + + Stretch + Contain + Cover + - String + OfficeImageFit None - VerticalAlign + WarnOnPictureAspectRatioDistortion - Vertical cell alignment. + Report pictures whose requested fit distorts their aspect ratio. - PdfCellVerticalAlign - - Top - Middle - Bottom - + SwitchParameter - PdfCellVerticalAlign + SwitchParameter None @@ -140235,26 +150253,21 @@ Use -NoSave or omit -Path when a document object should be returned for further - Align + AllowDocumentFontEmbedding - Horizontal cell alignment. + Allow embedding fonts stored in the presentation. - PdfColumnAlign - - Left - Center - Right - + SwitchParameter - PdfColumnAlign + SwitchParameter None - Bold + AllowSystemFontEmbedding - Render the cell text in bold. + Allow embedding fonts discovered on the current system. SwitchParameter @@ -140263,34 +150276,34 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - CheckBox + + ChartLayout - Typed check boxes rendered inside the cell. + Chart layout override. - PdfTableCellCheckBox[] + OfficeChartLayout - PdfTableCellCheckBox[] + OfficeChartLayout None - ColumnSpan + ChartStyle - Number of logical columns covered by the cell. + Chart visual style override. - Int32 + OfficeChartStyle - Int32 + OfficeChartStyle None - - FillColor + + FontFamily - Cell fill color. Named colors and hexadecimal colors are accepted. + Default font family used when the presentation does not specify one. String @@ -140300,45 +150313,45 @@ Use -NoSave or omit -Path when a document object should be returned for further None - FontSize + HandoutSlidesPerPage - Cell font size in PDF points. + Number of slides on each handout page. - Double + Int32 - Double + Int32 None - - FormField + + IncludeAutoShapes - Typed text or choice form fields rendered inside the cell. + Render automatic shapes. - PdfTableCellFormField[] + SwitchParameter - PdfTableCellFormField[] + SwitchParameter None - - Image + + IncludeCharts - Typed images rendered inside the cell. + Render charts. - PdfTableCellImage[] + SwitchParameter - PdfTableCellImage[] + SwitchParameter None - Italic + IncludeHiddenSlides - Render the cell text in italics. + Include slides marked hidden. SwitchParameter @@ -140348,57 +150361,57 @@ Use -NoSave or omit -Path when a document object should be returned for further None - LinkContents + IncludePictures - Accessible annotation text for the cell link. + Render pictures. - String + SwitchParameter - String + SwitchParameter None - LinkDestinationName + IncludeSlideBackgrounds - Named PDF destination linked from the cell. + Render slide backgrounds. - String + SwitchParameter - String + SwitchParameter None - LinkUri + IncludeSmartArt - Absolute or catalog-base-relative URI linked from the cell. + Render SmartArt. - String + SwitchParameter - String + SwitchParameter None - NamedDestinationName + IncludeSpeakerNotes - Named PDF destination defined at this cell. + Include speaker notes. - String + SwitchParameter - String + SwitchParameter None - NoWrap + IncludeTables - Keep the cell content on one visual line. + Render tables. SwitchParameter @@ -140408,9 +150421,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - RowSpan + IncludeTextBoxes - Number of logical rows covered by the cell. + Render text boxes. + + SwitchParameter + + SwitchParameter + + + None + + + MaxGroupShapeDepth + + Maximum nested group-shape depth to render. Int32 @@ -140419,58 +150444,217 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Run + + PageLayout - Rich text runs for the cell. Each run can be created with TextRun/PdfTextRun or provided as a hashtable/object. + PDF page layout, such as slides, notes, or handouts. - Object[] + PowerPointPdfPageLayout + + Slides + NotesPages + Handouts + - Object[] + PowerPointPdfPageLayout None - Strike + PdfOptions - Render the cell text with strikethrough. + Underlying low-level OfficeIMO PDF options. - SwitchParameter + PdfOptions - SwitchParameter + PdfOptions None - - Text + + PictureFit - Cell text. + How pictures fit their shape bounds. - String + OfficeImageFit + + Stretch + Contain + Cover + - String + OfficeImageFit None - - TextColor + + WarnOnPictureAspectRatioDistortion - Cell text color. Named colors and hexadecimal colors are accepted. + Report pictures whose requested fit distorts their aspect ratio. - String + SwitchParameter - String + SwitchParameter None + + + + + None + + + + + + + OfficeIMO.PowerPoint.Pdf.PowerPointPdfSaveOptions + + + + + + + + + + + Create a handout PDF with notes and hidden slides. + + PS> + + $options = New-OfficePowerPointPdfOptions -PageLayout Handouts -HandoutSlidesPerPage 3 -IncludeSpeakerNotes -IncludeHiddenSlides + Export-OfficeDocumentPdf -InputPath .\Briefing.pptx -Path .\Briefing.pdf -PowerPointOptions $options + + + + + + + + + + New-OfficeReaderHierarchyOptions + New + OfficeReaderHierarchyOptions + + Creates discoverable token and hierarchy settings for Get-OfficeDocumentHierarchy. + + + + Creates discoverable token and hierarchy settings for Get-OfficeDocumentHierarchy. + + + + New-OfficeReaderHierarchyOptions + + IncludeContextInText + + Include hierarchy context in chunk text. + + SwitchParameter + + SwitchParameter + + + None + + + MaxContextCharacters + + Maximum heading-context characters retained. + + Int32 + + Int32 + + + None + + + MaxHierarchyDepth + + Maximum heading hierarchy depth. + + Int32 + + Int32 + + + None + + + MaxInputChunks + + Maximum source chunks accepted. + + Int32 + + Int32 + + + None + + + MaxOutputChunks + + Maximum chunks returned. + + Int32 + + Int32 + + + None + + + MaxTokens + + Maximum tokens per output chunk. + + Int32 + + Int32 + + + None + + + OverlapTokens + + Tokens repeated between adjacent chunks. + + Int32 + + Int32 + + + None + + + PreferMarkdown + + Prefer Markdown text where the reader supports it. + + SwitchParameter + + SwitchParameter + + + None + + + + - Underline + IncludeContextInText - Render the cell text with underline. + Include hierarchy context in chunk text. SwitchParameter @@ -140480,30 +150664,85 @@ Use -NoSave or omit -Path when a document object should be returned for further None - UnderlineStyle + MaxContextCharacters - Optional underline style name. PDF table rendering treats any supported value as underline. + Maximum heading-context characters retained. - String + Int32 - String + Int32 None - VerticalAlign + MaxHierarchyDepth - Vertical cell alignment. + Maximum heading hierarchy depth. - PdfCellVerticalAlign - - Top - Middle - Bottom - + Int32 - PdfCellVerticalAlign + Int32 + + + None + + + MaxInputChunks + + Maximum source chunks accepted. + + Int32 + + Int32 + + + None + + + MaxOutputChunks + + Maximum chunks returned. + + Int32 + + Int32 + + + None + + + MaxTokens + + Maximum tokens per output chunk. + + Int32 + + Int32 + + + None + + + OverlapTokens + + Tokens repeated between adjacent chunks. + + Int32 + + Int32 + + + None + + + PreferMarkdown + + Prefer Markdown text where the reader supports it. + + SwitchParameter + + SwitchParameter None @@ -140519,11 +150758,8 @@ Use -NoSave or omit -Path when a document object should be returned for further - PSWriteOffice.Services.Table.OfficeTableCellSpec + OfficeIMO.Reader.ReaderHierarchicalChunkingOptions - - Describes a logical table cell that can be rendered by multiple Office table surfaces. - @@ -140533,13 +150769,14 @@ Use -NoSave or omit -Path when a document object should be returned for further - Create a full-width PDF table section row. + Create embedding-ready chunks. PS> - $row = @(New-OfficePdfTableCell -Text 'Identity systems' -ColumnSpan 3 -FillColor '#DBEAFE' -TextColor '#1E3A8A' -Bold) + $options = New-OfficeReaderHierarchyOptions -MaxTokens 500 -OverlapTokens 50 -IncludeContextInText + Get-OfficeDocumentHierarchy -Path .\handbook.pdf -ChunkingOptions $options - The returned cell can be passed to PdfTable inside explicit row arrays. + @@ -140547,23 +150784,23 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficePdfTableCellCheckBox + New-OfficeRtf New - OfficePdfTableCellCheckBox + OfficeRtf - Creates a typed check box for a PDF table cell. + Creates an RTF document with plain paragraph content. - Creates a typed check box for a PDF table cell. + Creates an RTF document with plain paragraph content. - New-OfficePdfTableCellCheckBox + New-OfficeRtf - Checked + NoSave - Create the check box in its checked state. + Return the OfficeIMO RTF document without saving. SwitchParameter @@ -140573,21 +150810,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - CheckedValueName + PassThru - PDF appearance-state name written when checked. + Emit a FileInfo for chaining. - String + SwitchParameter - String + SwitchParameter None - - Name + + Path - Unique AcroForm field name. + Destination path for the RTF file. String @@ -140596,14 +150833,14 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Size + + Text - Visual square size in PDF points. + Plain paragraph text to add to the document. - Double + String[] - Double + String[] None @@ -140612,9 +150849,9 @@ Use -NoSave or omit -Path when a document object should be returned for further - Checked + NoSave - Create the check box in its checked state. + Return the OfficeIMO RTF document without saving. SwitchParameter @@ -140624,21 +150861,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - CheckedValueName + PassThru - PDF appearance-state name written when checked. + Emit a FileInfo for chaining. - String + SwitchParameter - String + SwitchParameter None - - Name + + Path - Unique AcroForm field name. + Destination path for the RTF file. String @@ -140647,14 +150884,14 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Size + + Text - Visual square size in PDF points. + Plain paragraph text to add to the document. - Double + String[] - Double + String[] None @@ -140663,14 +150900,19 @@ Use -NoSave or omit -Path when a document object should be returned for further - None + System.String[] - OfficeIMO.Pdf.PdfTableCellCheckBox + System.IO.FileInfo + + + + + OfficeIMO.Rtf.RtfDocument @@ -140681,14 +150923,14 @@ Use -NoSave or omit -Path when a document object should be returned for further - Create a checked table-cell field. + Create a small RTF file. PS> - $approved = New-OfficePdfTableCellCheckBox -Name Approved -Checked - $cell = New-OfficePdfTableCell -Text 'Approved' -CheckBox $approved + $file = New-OfficeRtf -Path .\Report.rtf -Text 'Summary', 'Ready for review' -PassThru + Get-OfficeRtf -Path $file.FullName - The check box remains an AcroForm field positioned by the OfficeIMO table renderer. + Creates an RTF document with two paragraphs and returns the file. @@ -140696,110 +150938,107 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficePdfTableCellField + New-OfficeRtfPdfOptions New - OfficePdfTableCellField + OfficeRtfPdfOptions - Creates a typed text or choice field for a PDF table cell. + Creates discoverable RTF-to-PDF conversion options for Export-OfficeDocumentPdf. - Creates a typed text or choice field for a PDF table cell. + Creates discoverable RTF-to-PDF conversion options for Export-OfficeDocumentPdf. - - New-OfficePdfTableCellField + + New-OfficeRtfPdfOptions - FontSize + AllowDocumentFontEmbedding - Field font size in PDF points. + Allow embedding fonts referenced by the RTF document. - Double + SwitchParameter - Double + SwitchParameter None - Height + AllowSystemFontEmbedding - Rendered field height in PDF points. + Allow embedding fonts discovered on the current system. - Double + SwitchParameter - Double + SwitchParameter None - - Name + + DefaultImageHeight - Unique AcroForm field name. + Fallback image height in PDF points. - String + Double - String + Double None - - Value + + DefaultImageWidth - Initial field value. + Fallback image width in PDF points. - String + Double - String + Double None - Width + IncludeHeaderFooters - Rendered field width in PDF points. + Render headers and footers. - Double + SwitchParameter - Double + SwitchParameter None - - - New-OfficePdfTableCellField - FontSize + IncludeHiddenText - Field font size in PDF points. + Include text marked hidden. - Double + SwitchParameter - Double + SwitchParameter None - Height + IncludeImages - Rendered field height in PDF points. + Render images. - Double + SwitchParameter - Double + SwitchParameter None - ListBox + IncludeMetadata - Render a choice field as a list box instead of a combo box. + Copy document metadata into the PDF. SwitchParameter @@ -140808,50 +151047,50 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Name + + IncludeNotes - Unique AcroForm field name. + Render document notes. - String + SwitchParameter - String + SwitchParameter None - - Option + + IncludeTables - Available values for a choice field. + Render tables. - String[] + SwitchParameter - String[] + SwitchParameter None - - Value + + MaximumSystemFontFamilies - Initial field value. + Maximum number of system font families to discover. - String + Int32 - String + Int32 None - Width + PdfOptions - Rendered field width in PDF points. + Underlying low-level OfficeIMO PDF options. - Double + PdfOptions - Double + PdfOptions None @@ -140860,9 +151099,33 @@ Use -NoSave or omit -Path when a document object should be returned for further - FontSize + AllowDocumentFontEmbedding - Field font size in PDF points. + Allow embedding fonts referenced by the RTF document. + + SwitchParameter + + SwitchParameter + + + None + + + AllowSystemFontEmbedding + + Allow embedding fonts discovered on the current system. + + SwitchParameter + + SwitchParameter + + + None + + + DefaultImageHeight + + Fallback image height in PDF points. Double @@ -140872,9 +151135,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Height + DefaultImageWidth - Rendered field height in PDF points. + Fallback image width in PDF points. Double @@ -140884,9 +151147,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - ListBox + IncludeHeaderFooters - Render a choice field as a list box instead of a combo box. + Render headers and footers. SwitchParameter @@ -140895,50 +151158,86 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Name + + IncludeHiddenText - Unique AcroForm field name. + Include text marked hidden. - String + SwitchParameter - String + SwitchParameter None - - Option + + IncludeImages - Available values for a choice field. + Render images. - String[] + SwitchParameter - String[] + SwitchParameter None - - Value + + IncludeMetadata - Initial field value. + Copy document metadata into the PDF. - String + SwitchParameter - String + SwitchParameter None - Width + IncludeNotes - Rendered field width in PDF points. + Render document notes. - Double + SwitchParameter - Double + SwitchParameter + + + None + + + IncludeTables + + Render tables. + + SwitchParameter + + SwitchParameter + + + None + + + MaximumSystemFontFamilies + + Maximum number of system font families to discover. + + Int32 + + Int32 + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions None @@ -140954,7 +151253,7 @@ Use -NoSave or omit -Path when a document object should be returned for further - OfficeIMO.Pdf.PdfTableCellFormField + OfficeIMO.Rtf.Pdf.RtfPdfSaveOptions @@ -140965,14 +151264,14 @@ Use -NoSave or omit -Path when a document object should be returned for further - Create a reviewer choice field for a typed PDF table cell. + Include document structure and bound system-font discovery. PS> - $reviewer = New-OfficePdfTableCellField -Name Reviewer -Option 'Unassigned', 'Alice', 'Bob' -Value 'Unassigned' - $cell = New-OfficePdfTableCell -Text 'Reviewer' -FormField $reviewer + $options = New-OfficeRtfPdfOptions -IncludeImages -IncludeTables -IncludeHeaderFooters -MaximumSystemFontFamilies 32 + Export-OfficeDocumentPdf -InputPath .\Report.rtf -Path .\Report.pdf -RtfOptions $options - The choice field is positioned by the OfficeIMO PDF table renderer. + @@ -140980,25 +151279,85 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficePdfTableCellImage + New-OfficeTextRun New - OfficePdfTableCellImage + OfficeTextRun - Creates a typed image for a PDF table cell. + Creates a reusable rich text run specification for Word, Excel, PowerPoint, and PDF commands. - Creates a typed image for a PDF table cell. + Creates a reusable rich text run specification for Word, Excel, PowerPoint, and PDF commands. - New-OfficePdfTableCellImage - - Height + New-OfficeTextRun + + BackgroundColor - Rendered height in PDF points. + Run background or highlight color. Named colors and hexadecimal colors are accepted. - Double + String + + String + + + None + + + Baseline + + Target-specific baseline name, such as Superscript or Subscript. + + String + + String + + + None + + + Bold + + Render the run in bold. + + SwitchParameter + + SwitchParameter + + + None + + + Color + + Text color. Named colors and hexadecimal colors are accepted. + + String + + String + + + None + + + FontName + + Font name, family, or target-specific font identifier. + + String + + String + + + None + + + FontSize + + Font size in points. + + Double Double @@ -141006,9 +151365,33 @@ Use -NoSave or omit -Path when a document object should be returned for further None + Italic + + Render the run in italics. + + SwitchParameter + + SwitchParameter + + + None + + + Kind + + Run kind such as Text, LineBreak, Tab, Superscript, or Subscript. + + String + + String + + + None + + LinkContents - Accessible annotation text for the image link. + Optional link tooltip or annotation contents. String @@ -141017,10 +151400,22 @@ Use -NoSave or omit -Path when a document object should be returned for further None - + + LinkDestinationName + + Named destination or bookmark target when supported by the target format. + + String + + String + + + None + + LinkUri - Optional absolute or catalog-base-relative URI linked from the image. + URI link target when supported by the target format. String @@ -141029,26 +151424,74 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Path + + Strike - Raster image path. + Render the run with strikethrough. - String + SwitchParameter + + SwitchParameter + + + None + + + TabAlignment + + Tab alignment name. + + String String None - - Width + + TabLeader - Rendered width in PDF points. + PDF tab leader style name. - Double + String - Double + String + + + None + + + Text + + Run text. + + String + + String + + + None + + + Underline + + Render the run with underline. + + SwitchParameter + + SwitchParameter + + + None + + + UnderlineStyle + + Optional underline style name when the target format supports it. + + String + + String None @@ -141056,22 +151499,154 @@ Use -NoSave or omit -Path when a document object should be returned for further - - Height + + BackgroundColor - Rendered height in PDF points. + Run background or highlight color. Named colors and hexadecimal colors are accepted. + + String + + String + + + None + + + Baseline + + Target-specific baseline name, such as Superscript or Subscript. + + String + + String + + + None + + + Bold + + Render the run in bold. + + SwitchParameter + + SwitchParameter + + + None + + + Color + + Text color. Named colors and hexadecimal colors are accepted. + + String + + String + + + None + + + FontName + + Font name, family, or target-specific font identifier. + + String + + String + + + None + + + FontSize + + Font size in points. + + Double + + Double + + + None + + + Italic + + Render the run in italics. + + SwitchParameter + + SwitchParameter + + + None + + + Kind + + Run kind such as Text, LineBreak, Tab, Superscript, or Subscript. + + String + + String + + + None + + + LinkContents + + Optional link tooltip or annotation contents. + + String + + String + + + None + + + LinkDestinationName + + Named destination or bookmark target when supported by the target format. + + String + + String + + + None + + + LinkUri + + URI link target when supported by the target format. + + String + + String + + + None + + + Strike + + Render the run with strikethrough. - Double + SwitchParameter - Double + SwitchParameter None - - LinkContents + + TabAlignment - Accessible annotation text for the image link. + Tab alignment name. String @@ -141080,10 +151655,10 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - LinkUri + + TabLeader - Optional absolute or catalog-base-relative URI linked from the image. + PDF tab leader style name. String @@ -141092,26 +151667,38 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Path + + Text - Raster image path. + Run text. - String + String String None - - Width + + Underline - Rendered width in PDF points. + Render the run with underline. - Double + SwitchParameter - Double + SwitchParameter + + + None + + + UnderlineStyle + + Optional underline style name when the target format supports it. + + String + + String None @@ -141127,8 +151714,11 @@ Use -NoSave or omit -Path when a document object should be returned for further - OfficeIMO.Pdf.PdfTableCellImage + PSWriteOffice.Services.Text.OfficeTextRunSpec + + PowerShell-friendly rich text run specification used by document adapters. + @@ -141138,14 +151728,10 @@ Use -NoSave or omit -Path when a document object should be returned for further - Add a linked logo to a typed PDF table cell. - - PS> - - $logo = New-OfficePdfTableCellImage -Path .\logo.png -Width 28 -Height 28 -LinkUri 'https://example.com' - $cell = New-OfficePdfTableCell -Text 'Portal' -Image $logo + EXAMPLE 1 + New-OfficeTextRun -BackgroundColor 'Value' - The image remains a native PDF table-cell visual and may carry its own link. + @@ -141153,23 +151739,35 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficePowerPoint + New-OfficeVisio New - OfficePowerPoint + OfficeVisio - Creates a PowerPoint presentation using the DSL. + Creates a new OfficeIMO.Visio document with an initial page and optional DSL content. - Initializes a presentation, runs the DSL script block, and optionally saves the deck. + Creates a new OfficeIMO.Visio document with an initial page and optional DSL content. - New-OfficePowerPoint + New-OfficeVisio + + Author + + Optional document author. + + String + + String + + + None + Content - DSL scriptblock describing presentation content. + DSL script block describing Visio pages, shapes, and connectors. ScriptBlock @@ -141178,10 +151776,22 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + Height + + Initial page height. + + Double + + Double + + + None + NoSave - Skip saving after executing the DSL. + Skip saving and emit the document object. SwitchParameter @@ -141190,10 +151800,10 @@ Use -NoSave or omit -Path when a document object should be returned for further None - + Open - Open the presentation after saving. + Open the document after saving. SwitchParameter @@ -141202,10 +151812,46 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + PageName + + Initial page name. + + String + + String + + + None + PassThru - Emit the saved FileInfo for chaining. + Emit the document object instead of the saved file. + + SwitchParameter + + SwitchParameter + + + None + + + Path + + Destination .vsdx path. + + String + + String + + + None + + + RequestRecalcOnOpen + + Ask Visio to recalculate layout and connector routing when the document opens. SwitchParameter @@ -141215,9 +151861,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Password + Title - Password used to save the presentation as an encrypted package. + Optional document title. String @@ -141226,14 +151872,43 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Path + + Unit - Destination path for the new .pptx. + Measurement unit for page width and height. - String + VisioMeasurementUnit + + Inches + Centimeters + Millimeters + - String + VisioMeasurementUnit + + + None + + + UseMastersByDefault + + Use Visio masters for supported built-in stencil shapes when saving. + + SwitchParameter + + SwitchParameter + + + None + + + Width + + Initial page width. + + Double + + Double None @@ -141241,10 +151916,22 @@ Use -NoSave or omit -Path when a document object should be returned for further + + Author + + Optional document author. + + String + + String + + + None + Content - DSL scriptblock describing presentation content. + DSL script block describing Visio pages, shapes, and connectors. ScriptBlock @@ -141253,10 +151940,22 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + Height + + Initial page height. + + Double + + Double + + + None + NoSave - Skip saving after executing the DSL. + Skip saving and emit the document object. SwitchParameter @@ -141265,10 +151964,10 @@ Use -NoSave or omit -Path when a document object should be returned for further None - + Open - Open the presentation after saving. + Open the document after saving. SwitchParameter @@ -141277,10 +151976,22 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + PageName + + Initial page name. + + String + + String + + + None + PassThru - Emit the saved FileInfo for chaining. + Emit the document object instead of the saved file. SwitchParameter @@ -141289,10 +152000,34 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + Path + + Destination .vsdx path. + + String + + String + + + None + - Password + RequestRecalcOnOpen - Password used to save the presentation as an encrypted package. + Ask Visio to recalculate layout and connector routing when the document opens. + + SwitchParameter + + SwitchParameter + + + None + + + Title + + Optional document title. String @@ -141301,14 +152036,43 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Path + + Unit - Destination path for the new .pptx. + Measurement unit for page width and height. - String + VisioMeasurementUnit + + Inches + Centimeters + Millimeters + - String + VisioMeasurementUnit + + + None + + + UseMastersByDefault + + Use Visio masters for supported built-in stencil shapes when saving. + + SwitchParameter + + SwitchParameter + + + None + + + Width + + Initial page width. + + Double + + Double None @@ -141321,7 +152085,18 @@ Use -NoSave or omit -Path when a document object should be returned for further - + + + + OfficeIMO.Visio.VisioDocument + + + + + System.IO.FileInfo + + + @@ -141329,23 +152104,17 @@ Use -NoSave or omit -Path when a document object should be returned for further - Create and capture the presentation object. - - PS> - - $ppt = New-OfficePowerPoint -Path .\deck.pptx -NoSave - - Creates a live presentation associated with deck.pptx for incremental composition. - - - - Create a deck with a title slide. + Create a simple service map. PS> - New-OfficePowerPoint -Path .\deck.pptx { PptSlide { PptTitle -Title 'Status Update' } } -Open + New-OfficeVisio -Path .\ServiceMap.vsdx -Title 'Service map' -RequestRecalcOnOpen { + VisioRectangle -Key web -Text 'Web' -X 1 -Y 4 -FillColor LightBlue + VisioRectangle -Key api -Text 'API' -X 4 -Y 4 -FillColor LightGreen + VisioConnector -From web -To api -EndArrow Triangle -Label 'calls' + } - Creates, saves, and opens a deck with one titled slide. + Creates an editable .vsdx diagram with two shapes and a connector. @@ -141353,27 +152122,51 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficePowerPointDeckPlan + New-OfficeVisioGallery New - OfficePowerPointDeckPlan + OfficeVisioGallery - Creates a semantic PowerPoint deck plan for designer rendering. + Generates the OfficeIMO Visio reference gallery as editable .vsdx diagrams. - Creates a semantic PowerPoint deck plan for designer rendering. + Generates the OfficeIMO Visio reference gallery as editable .vsdx diagrams. - New-OfficePowerPointDeckPlan - - Content + New-OfficeVisioGallery + + NoPackageValidation - Nested deck-plan DSL content. + Skip structural package validation after gallery documents are generated. - ScriptBlock + SwitchParameter - ScriptBlock + SwitchParameter + + + None + + + NoVisualQualityAnalysis + + Skip visual quality analysis after gallery documents are generated. + + SwitchParameter + + SwitchParameter + + + None + + + OutputDirectory + + Directory that receives generated .vsdx gallery documents. + + String + + String None @@ -141381,14 +152174,38 @@ Use -NoSave or omit -Path when a document object should be returned for further - - Content + + NoPackageValidation - Nested deck-plan DSL content. + Skip structural package validation after gallery documents are generated. - ScriptBlock + SwitchParameter - ScriptBlock + SwitchParameter + + + None + + + NoVisualQualityAnalysis + + Skip visual quality analysis after gallery documents are generated. + + SwitchParameter + + SwitchParameter + + + None + + + OutputDirectory + + Directory that receives generated .vsdx gallery documents. + + String + + String None @@ -141404,7 +152221,7 @@ Use -NoSave or omit -Path when a document object should be returned for further - OfficeIMO.PowerPoint.PowerPointDeckPlan + OfficeIMO.Visio.VisioGalleryResult @@ -141415,23 +152232,14 @@ Use -NoSave or omit -Path when a document object should be returned for further - Create a semantic service brief plan. + Generate the Visio reference gallery. PS> - $plan = New-OfficePowerPointDeckPlan { - Add-OfficePowerPointPlanSection -Title 'Service Review' -Subtitle 'Monthly operating brief' - Add-OfficePowerPointPlanProcess -Title 'Operating rhythm' -Steps @( - @{ Title = 'Collect'; Body = 'Gather health signals' } - @{ Title = 'Review'; Body = 'Confirm owner decisions' } - @{ Title = 'Publish'; Body = 'Share the final brief' } - ) - } - New-OfficePowerPoint -Path .\Examples\Documents\DesignerDeck.pptx { - Add-OfficePowerPointDesignerDeck -Plan $plan - } + New-OfficeVisioGallery -OutputDirectory .\VisioGallery | + Select-Object Name, FilePath, IsClean - Builds a deck plan and renders it through the OfficeIMO designer helpers. + Creates polished, editable Visio samples for flowcharts, architecture, network, timeline, swimlane, org chart, and graph diagrams. @@ -141439,35 +152247,35 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficePowerPointPdfOptions + New-OfficeVisioImageOptions New - OfficePowerPointPdfOptions + OfficeVisioImageOptions - Creates discoverable PowerPoint-to-PDF conversion options for Export-OfficeDocumentPdf. + Creates discoverable page and rendering settings for Export-OfficeVisioImage. - Creates discoverable PowerPoint-to-PDF conversion options for Export-OfficeDocumentPdf. + Creates discoverable page and rendering settings for Export-OfficeVisioImage. - New-OfficePowerPointPdfOptions + New-OfficeVisioImageOptions - AllowDocumentFontEmbedding + BackgroundColor - Allow embedding fonts stored in the presentation. + - SwitchParameter + String - SwitchParameter + String None - AllowSystemFontEmbedding + IncludeSvgXmlDeclaration - Allow embedding fonts discovered on the current system. + Include an XML declaration in SVG output. SwitchParameter @@ -141477,45 +152285,45 @@ Use -NoSave or omit -Path when a document object should be returned for further None - ChartLayout + MaximumDegreeOfParallelism - Chart layout override. + - OfficeChartLayout + Int32 - OfficeChartLayout + Int32 None - ChartStyle + MaximumOutputCount - Chart visual style override. + - OfficeChartStyle + Int32 - OfficeChartStyle + Int32 None - FontFamily + MaximumOutputHeight - Default font family used when the presentation does not specify one. + - String + Int32 - String + Int32 None - HandoutSlidesPerPage + MaximumOutputWidth - Number of slides on each handout page. + Int32 @@ -141525,81 +152333,85 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeAutoShapes + MaximumRasterPixels - Render automatic shapes. + - SwitchParameter + Int64 - SwitchParameter + Int64 None - IncludeCharts + MaximumTotalEncodedBytes - Render charts. + - SwitchParameter + Int64 - SwitchParameter + Int64 None - IncludeHiddenSlides + MaximumTotalRasterPixels - Include slides marked hidden. + - SwitchParameter + Int64 - SwitchParameter + Int64 None - IncludePictures + PageCount - Render pictures. + Maximum pages exported. - SwitchParameter + Int32 - SwitchParameter + Int32 None - IncludeSlideBackgrounds + PageIndex - Render slide backgrounds. + Zero-based first page index. - SwitchParameter + Int32 - SwitchParameter + Int32 None - IncludeSmartArt + RasterOverflowBehavior - Render SmartArt. + - SwitchParameter + OfficeRasterOverflowBehavior + + ReduceScale + Throw + - SwitchParameter + OfficeRasterOverflowBehavior None - IncludeSpeakerNotes + RenderConnectorLabels - Include speaker notes. + Render connector labels. SwitchParameter @@ -141609,9 +152421,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeTables + RenderStencilArtwork - Render tables. + Render supported stencil artwork. SwitchParameter @@ -141621,9 +152433,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeTextBoxes + RenderText - Render text boxes. + Render page text. SwitchParameter @@ -141633,71 +152445,73 @@ Use -NoSave or omit -Path when a document object should be returned for further None - MaxGroupShapeDepth + RenderTimeoutSeconds - Maximum nested group-shape depth to render. + - Int32 + Double - Int32 + Double None - PageLayout + ResolveConnectorLabelOverlaps - PDF page layout, such as slides, notes, or handouts. + Resolve connector-label overlaps. - PowerPointPdfPageLayout - - Slides - NotesPages - Handouts - + SwitchParameter - PowerPointPdfPageLayout + SwitchParameter None - PdfOptions + Scale - Underlying low-level OfficeIMO PDF options. + - PdfOptions + Double - PdfOptions + Double None - PictureFit + Supersampling - How pictures fit their shape bounds. + Raster supersampling factor. - OfficeImageFit - - Stretch - Contain - Cover - + Int32 - OfficeImageFit + Int32 None - WarnOnPictureAspectRatioDistortion + TargetDpi - Report pictures whose requested fit distorts their aspect ratio. + - SwitchParameter + Double - SwitchParameter + Double + + + None + + + TextShapingLanguage + + + + String + + String None @@ -141706,21 +152520,21 @@ Use -NoSave or omit -Path when a document object should be returned for further - AllowDocumentFontEmbedding + BackgroundColor - Allow embedding fonts stored in the presentation. + - SwitchParameter + String - SwitchParameter + String None - AllowSystemFontEmbedding + IncludeSvgXmlDeclaration - Allow embedding fonts discovered on the current system. + Include an XML declaration in SVG output. SwitchParameter @@ -141730,45 +152544,45 @@ Use -NoSave or omit -Path when a document object should be returned for further None - ChartLayout + MaximumDegreeOfParallelism - Chart layout override. + - OfficeChartLayout + Int32 - OfficeChartLayout + Int32 None - ChartStyle + MaximumOutputCount - Chart visual style override. + - OfficeChartStyle + Int32 - OfficeChartStyle + Int32 None - FontFamily + MaximumOutputHeight - Default font family used when the presentation does not specify one. + - String + Int32 - String + Int32 None - HandoutSlidesPerPage + MaximumOutputWidth - Number of slides on each handout page. + Int32 @@ -141778,81 +152592,85 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeAutoShapes + MaximumRasterPixels - Render automatic shapes. + - SwitchParameter + Int64 - SwitchParameter + Int64 None - IncludeCharts + MaximumTotalEncodedBytes - Render charts. + - SwitchParameter + Int64 - SwitchParameter + Int64 None - IncludeHiddenSlides + MaximumTotalRasterPixels - Include slides marked hidden. + - SwitchParameter + Int64 - SwitchParameter + Int64 None - IncludePictures + PageCount - Render pictures. + Maximum pages exported. - SwitchParameter + Int32 - SwitchParameter + Int32 None - IncludeSlideBackgrounds + PageIndex - Render slide backgrounds. + Zero-based first page index. - SwitchParameter + Int32 - SwitchParameter + Int32 None - IncludeSmartArt + RasterOverflowBehavior - Render SmartArt. + - SwitchParameter + OfficeRasterOverflowBehavior + + ReduceScale + Throw + - SwitchParameter + OfficeRasterOverflowBehavior None - IncludeSpeakerNotes + RenderConnectorLabels - Include speaker notes. + Render connector labels. SwitchParameter @@ -141862,9 +152680,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeTables + RenderStencilArtwork - Render tables. + Render supported stencil artwork. SwitchParameter @@ -141874,9 +152692,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeTextBoxes + RenderText - Render text boxes. + Render page text. SwitchParameter @@ -141886,241 +152704,89 @@ Use -NoSave or omit -Path when a document object should be returned for further None - MaxGroupShapeDepth + RenderTimeoutSeconds - Maximum nested group-shape depth to render. + - Int32 + Double - Int32 + Double None - PageLayout + ResolveConnectorLabelOverlaps - PDF page layout, such as slides, notes, or handouts. + Resolve connector-label overlaps. - PowerPointPdfPageLayout - - Slides - NotesPages - Handouts - + SwitchParameter - PowerPointPdfPageLayout + SwitchParameter None - PdfOptions + Scale - Underlying low-level OfficeIMO PDF options. + - PdfOptions + Double - PdfOptions + Double None - PictureFit + Supersampling - How pictures fit their shape bounds. + Raster supersampling factor. - OfficeImageFit - - Stretch - Contain - Cover - + Int32 - OfficeImageFit + Int32 None - WarnOnPictureAspectRatioDistortion + TargetDpi - Report pictures whose requested fit distorts their aspect ratio. - - SwitchParameter - - SwitchParameter - - - None - - - - - - None - - - - - - - OfficeIMO.PowerPoint.Pdf.PowerPointPdfSaveOptions - - - - - - - - - - - Create a handout PDF with notes and hidden slides. - - PS> - - $options = New-OfficePowerPointPdfOptions -PageLayout Handouts -HandoutSlidesPerPage 3 -IncludeSpeakerNotes -IncludeHiddenSlides - Export-OfficeDocumentPdf -InputPath .\Briefing.pptx -Path .\Briefing.pdf -PowerPointOptions $options - - - - - - - - - New-OfficeRtf - New - OfficeRtf - - Creates an RTF document with plain paragraph content. - - - - Creates an RTF document with plain paragraph content. - - - - New-OfficeRtf - - NoSave - - Return the OfficeIMO RTF document without saving. - - SwitchParameter - - SwitchParameter - - - None - - - PassThru - - Emit a FileInfo for chaining. - - SwitchParameter - - SwitchParameter - - - None - - - Path - - Destination path for the RTF file. - - String - - String - - - None - - - Text - - Plain paragraph text to add to the document. - - String[] - - String[] - - - None - - - - - - NoSave - - Return the OfficeIMO RTF document without saving. - SwitchParameter + Double - SwitchParameter + Double None - PassThru - - Emit a FileInfo for chaining. - - SwitchParameter - - SwitchParameter - - - None - - - Path + TextShapingLanguage - Destination path for the RTF file. + - String + String String None - - Text - - Plain paragraph text to add to the document. - - String[] - - String[] - - - None - - System.String[] + None - System.IO.FileInfo - - - - - OfficeIMO.Rtf.RtfDocument + OfficeIMO.Visio.VisioImageExportOptions @@ -142131,14 +152797,14 @@ Use -NoSave or omit -Path when a document object should be returned for further - Create a small RTF file. + Render the first Visio page with text and connector labels. PS> - $file = New-OfficeRtf -Path .\Report.rtf -Text 'Summary', 'Ready for review' -PassThru - Get-OfficeRtf -Path $file.FullName + $options = New-OfficeVisioImageOptions -PageIndex 0 -PageCount 1 -RenderText -RenderConnectorLabels + Export-OfficeVisioImage -Path .\Diagram.vsdx -OutputPath .\Preview.svg -Options $options - Creates an RTF document with two paragraphs and returns the file. + @@ -142146,95 +152812,35 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficeRtfPdfOptions + New-OfficeWord New - OfficeRtfPdfOptions + OfficeWord - Creates discoverable RTF-to-PDF conversion options for Export-OfficeDocumentPdf. + Creates a Word document using the DSL. - Creates discoverable RTF-to-PDF conversion options for Export-OfficeDocumentPdf. + Handles file creation or template cloning, scriptblock execution, explicit save or live-document composition, and emits the document path when -PassThru is used. - New-OfficeRtfPdfOptions - - AllowDocumentFontEmbedding - - Allow embedding fonts referenced by the RTF document. - - SwitchParameter - - SwitchParameter - - - None - - - AllowSystemFontEmbedding - - Allow embedding fonts discovered on the current system. - - SwitchParameter - - SwitchParameter - - - None - - - DefaultImageHeight - - Fallback image height in PDF points. - - Double - - Double - - - None - - - DefaultImageWidth - - Fallback image width in PDF points. - - Double - - Double - - - None - - - IncludeHeaderFooters - - Render headers and footers. - - SwitchParameter - - SwitchParameter - - - None - - - IncludeHiddenText + New-OfficeWord + + Content - Include text marked hidden. + DSL scriptblock describing document content. - SwitchParameter + ScriptBlock - SwitchParameter + ScriptBlock None - IncludeImages + NoSave - Render images. + Skip saving after executing the DSL. SwitchParameter @@ -142244,9 +152850,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeMetadata + Open - Copy document metadata into the PDF. + Open the document after saving. SwitchParameter @@ -142256,9 +152862,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeNotes + PassThru - Render document notes. + Emit a FileInfo for chaining. SwitchParameter @@ -142268,37 +152874,37 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeTables + Password - Render tables. + Password used to save the document as an encrypted package. - SwitchParameter + String - SwitchParameter + String None - - MaximumSystemFontFamilies + + Path - Maximum number of system font families to discover. + Destination path for the document. - Int32 + String - Int32 + String None - PdfOptions + TemplatePath - Underlying low-level OfficeIMO PDF options. + Existing .docx file to clone before running the DSL. - PdfOptions + String - PdfOptions + String None @@ -142306,82 +152912,22 @@ Use -NoSave or omit -Path when a document object should be returned for further - - AllowDocumentFontEmbedding - - Allow embedding fonts referenced by the RTF document. - - SwitchParameter - - SwitchParameter - - - None - - - AllowSystemFontEmbedding - - Allow embedding fonts discovered on the current system. - - SwitchParameter - - SwitchParameter - - - None - - - DefaultImageHeight - - Fallback image height in PDF points. - - Double - - Double - - - None - - - DefaultImageWidth - - Fallback image width in PDF points. - - Double - - Double - - - None - - - IncludeHeaderFooters - - Render headers and footers. - - SwitchParameter - - SwitchParameter - - - None - - - IncludeHiddenText + + Content - Include text marked hidden. + DSL scriptblock describing document content. - SwitchParameter + ScriptBlock - SwitchParameter + ScriptBlock None - IncludeImages + NoSave - Render images. + Skip saving after executing the DSL. SwitchParameter @@ -142391,9 +152937,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeMetadata + Open - Copy document metadata into the PDF. + Open the document after saving. SwitchParameter @@ -142403,9 +152949,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeNotes + PassThru - Render document notes. + Emit a FileInfo for chaining. SwitchParameter @@ -142415,37 +152961,37 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeTables + Password - Render tables. + Password used to save the document as an encrypted package. - SwitchParameter + String - SwitchParameter + String None - - MaximumSystemFontFamilies + + Path - Maximum number of system font families to discover. + Destination path for the document. - Int32 + String - Int32 + String None - PdfOptions + TemplatePath - Underlying low-level OfficeIMO PDF options. + Existing .docx file to clone before running the DSL. - PdfOptions + String - PdfOptions + String None @@ -142458,13 +153004,7 @@ Use -NoSave or omit -Path when a document object should be returned for further - - - - OfficeIMO.Rtf.Pdf.RtfPdfSaveOptions - - - + @@ -142472,14 +153012,36 @@ Use -NoSave or omit -Path when a document object should be returned for further - Include document structure and bound system-font discovery. + Create a document inline. PS> - $options = New-OfficeRtfPdfOptions -IncludeImages -IncludeTables -IncludeHeaderFooters -MaximumSystemFontFamilies 32 - Export-OfficeDocumentPdf -InputPath .\Report.rtf -Path .\Report.pdf -RtfOptions $options + New-OfficeWord -Path .\Report.docx { WordSection { WordParagraph 'Hello DSL' } } -Open - + Builds a document, adds one paragraph, saves it to disk, and opens it. + + + + Create a document from a template. + + PS> + + New-OfficeWord -TemplatePath .\Template.docx -Path .\Report.docx { WordParagraph -Text 'Generated content' -StyleId 'ReportBody' } + + Copies the template to the output path, runs the DSL against the copied document, and saves it. + + + + Keep a document for incremental composition. + + PS> + + $document = New-OfficeWord -Path .\Report.docx -NoSave + $document | Add-OfficeWordParagraph -Text 'Status report' -Style Heading1 + $document | Save-OfficeWord + $document | Close-OfficeWord + + Associates the output path with a live document, adds content through the pipeline, then saves and closes it once. @@ -142487,47 +153049,47 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficeTextRun + New-OfficeWordComparisonOptions New - OfficeTextRun + OfficeWordComparisonOptions - Creates a reusable rich text run specification for Word, Excel, PowerPoint, and PDF commands. + Creates discoverable structural comparison settings for Compare-OfficeWordDocument. - Creates a reusable rich text run specification for Word, Excel, PowerPoint, and PDF commands. + Creates discoverable structural comparison settings for Compare-OfficeWordDocument. - New-OfficeTextRun - - BackgroundColor + New-OfficeWordComparisonOptions + + CompareBlockOrder - Run background or highlight color. Named colors and hexadecimal colors are accepted. + Compare document block order. - String + SwitchParameter - String + SwitchParameter None - Baseline + CompareBookmarks - Target-specific baseline name, such as Superscript or Subscript. + Compare bookmarks. - String + SwitchParameter - String + SwitchParameter None - Bold + CompareCommentAuthors - Render the run in bold. + Compare comment authors. SwitchParameter @@ -142536,46 +153098,46 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Color + + CompareCommentReplies - Text color. Named colors and hexadecimal colors are accepted. + Compare comment replies. - String + SwitchParameter - String + SwitchParameter None - - FontName + + CompareCommentResolvedState - Font name, family, or target-specific font identifier. + Compare comment resolved state. - String + SwitchParameter - String + SwitchParameter None - FontSize + CompareComments - Font size in points. + Compare comments. - Double + SwitchParameter - Double + SwitchParameter None - Italic + CompareCommentTargets - Render the run in italics. + Compare comment targets. SwitchParameter @@ -142585,57 +153147,57 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Kind + CompareCommentText - Run kind such as Text, LineBreak, Tab, Superscript, or Subscript. + Compare comment text. - String + SwitchParameter - String + SwitchParameter None - - LinkContents + + CompareContentControls - Optional link tooltip or annotation contents. + Compare content controls. - String + SwitchParameter - String + SwitchParameter None - - LinkDestinationName + + CompareEffectiveFormatting - Named destination or bookmark target when supported by the target format. + Compare resolved effective formatting. - String + SwitchParameter - String + SwitchParameter None - - LinkUri + + CompareFields - URI link target when supported by the target format. + Compare fields. - String + SwitchParameter - String + SwitchParameter None - Strike + CompareGeneratedIds - Render the run with strikethrough. + Compare generated identifiers. SwitchParameter @@ -142644,46 +153206,46 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - TabAlignment + + CompareHyperlinks - Tab alignment name. + Compare hyperlinks. - String + SwitchParameter - String + SwitchParameter None - - TabLeader + + CompareImages - PDF tab leader style name. + Compare images. - String + SwitchParameter - String + SwitchParameter None - - Text + + CompareLists - Run text. + Compare lists. - String + SwitchParameter - String + SwitchParameter None - Underline + CompareParagraphStyleIds - Render the run with underline. + Compare paragraph style identifiers. SwitchParameter @@ -142693,13 +153255,177 @@ Use -NoSave or omit -Path when a document object should be returned for further None - UnderlineStyle + CompareRevisionAuthors - Optional underline style name when the target format supports it. + Compare revision authors. - String + SwitchParameter - String + SwitchParameter + + + None + + + CompareRevisionLocations + + Compare revision locations. + + SwitchParameter + + SwitchParameter + + + None + + + CompareRevisions + + Compare tracked revisions. + + SwitchParameter + + SwitchParameter + + + None + + + CompareRevisionText + + Compare revision text. + + SwitchParameter + + SwitchParameter + + + None + + + CompareRunFormatting + + Compare direct run formatting. + + SwitchParameter + + SwitchParameter + + + None + + + CompareRunStyleIds + + Compare run style identifiers. + + SwitchParameter + + SwitchParameter + + + None + + + CompareShapes + + Compare supported shapes. + + SwitchParameter + + SwitchParameter + + + None + + + CompareVolatileMetadata + + Compare volatile timestamps and metadata. + + SwitchParameter + + SwitchParameter + + + None + + + ExcludeScope + + Remove these comparison scopes from results. + + WordComparisonScope[] + + Paragraph + Run + Field + ContentControl + Bookmark + Hyperlink + List + Comment + Revision + Table + TableRow + TableCell + Image + Shape + + + WordComparisonScope[] + + + None + + + IgnoreCase + + Ignore character casing. + + SwitchParameter + + SwitchParameter + + + None + + + IgnoreWhitespace + + Ignore differences caused only by whitespace runs. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeScope + + Limit results to these comparison scopes. + + WordComparisonScope[] + + Paragraph + Run + Field + ContentControl + Bookmark + Hyperlink + List + Comment + Revision + Table + TableRow + TableCell + Image + Shape + + + WordComparisonScope[] None @@ -142707,34 +153433,34 @@ Use -NoSave or omit -Path when a document object should be returned for further - - BackgroundColor + + CompareBlockOrder - Run background or highlight color. Named colors and hexadecimal colors are accepted. + Compare document block order. - String + SwitchParameter - String + SwitchParameter None - Baseline + CompareBookmarks - Target-specific baseline name, such as Superscript or Subscript. + Compare bookmarks. - String + SwitchParameter - String + SwitchParameter None - Bold + CompareCommentAuthors - Render the run in bold. + Compare comment authors. SwitchParameter @@ -142743,46 +153469,46 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Color + + CompareCommentReplies - Text color. Named colors and hexadecimal colors are accepted. + Compare comment replies. - String + SwitchParameter - String + SwitchParameter None - - FontName + + CompareCommentResolvedState - Font name, family, or target-specific font identifier. + Compare comment resolved state. - String + SwitchParameter - String + SwitchParameter None - FontSize + CompareComments - Font size in points. + Compare comments. - Double + SwitchParameter - Double + SwitchParameter None - Italic + CompareCommentTargets - Render the run in italics. + Compare comment targets. SwitchParameter @@ -142792,57 +153518,57 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Kind + CompareCommentText - Run kind such as Text, LineBreak, Tab, Superscript, or Subscript. + Compare comment text. - String + SwitchParameter - String + SwitchParameter None - - LinkContents + + CompareContentControls - Optional link tooltip or annotation contents. + Compare content controls. - String + SwitchParameter - String + SwitchParameter None - - LinkDestinationName + + CompareEffectiveFormatting - Named destination or bookmark target when supported by the target format. + Compare resolved effective formatting. - String + SwitchParameter - String + SwitchParameter None - - LinkUri + + CompareFields - URI link target when supported by the target format. + Compare fields. - String + SwitchParameter - String + SwitchParameter None - Strike + CompareGeneratedIds - Render the run with strikethrough. + Compare generated identifiers. SwitchParameter @@ -142851,46 +153577,46 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - TabAlignment + + CompareHyperlinks - Tab alignment name. + Compare hyperlinks. - String + SwitchParameter - String + SwitchParameter None - - TabLeader + + CompareImages - PDF tab leader style name. + Compare images. - String + SwitchParameter - String + SwitchParameter None - - Text + + CompareLists - Run text. + Compare lists. - String + SwitchParameter - String + SwitchParameter None - Underline + CompareParagraphStyleIds - Render the run with underline. + Compare paragraph style identifiers. SwitchParameter @@ -142900,13 +153626,177 @@ Use -NoSave or omit -Path when a document object should be returned for further None - UnderlineStyle + CompareRevisionAuthors - Optional underline style name when the target format supports it. + Compare revision authors. - String + SwitchParameter - String + SwitchParameter + + + None + + + CompareRevisionLocations + + Compare revision locations. + + SwitchParameter + + SwitchParameter + + + None + + + CompareRevisions + + Compare tracked revisions. + + SwitchParameter + + SwitchParameter + + + None + + + CompareRevisionText + + Compare revision text. + + SwitchParameter + + SwitchParameter + + + None + + + CompareRunFormatting + + Compare direct run formatting. + + SwitchParameter + + SwitchParameter + + + None + + + CompareRunStyleIds + + Compare run style identifiers. + + SwitchParameter + + SwitchParameter + + + None + + + CompareShapes + + Compare supported shapes. + + SwitchParameter + + SwitchParameter + + + None + + + CompareVolatileMetadata + + Compare volatile timestamps and metadata. + + SwitchParameter + + SwitchParameter + + + None + + + ExcludeScope + + Remove these comparison scopes from results. + + WordComparisonScope[] + + Paragraph + Run + Field + ContentControl + Bookmark + Hyperlink + List + Comment + Revision + Table + TableRow + TableCell + Image + Shape + + + WordComparisonScope[] + + + None + + + IgnoreCase + + Ignore character casing. + + SwitchParameter + + SwitchParameter + + + None + + + IgnoreWhitespace + + Ignore differences caused only by whitespace runs. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeScope + + Limit results to these comparison scopes. + + WordComparisonScope[] + + Paragraph + Run + Field + ContentControl + Bookmark + Hyperlink + List + Comment + Revision + Table + TableRow + TableCell + Image + Shape + + + WordComparisonScope[] None @@ -142922,11 +153812,8 @@ Use -NoSave or omit -Path when a document object should be returned for further - PSWriteOffice.Services.Text.OfficeTextRunSpec + OfficeIMO.Word.WordComparisonOptions - - PowerShell-friendly rich text run specification used by document adapters. - @@ -142936,8 +153823,12 @@ Use -NoSave or omit -Path when a document object should be returned for further - EXAMPLE 1 - New-OfficeTextRun -BackgroundColor 'Value' + Ignore text normalization differences and exclude volatile metadata. + + PS> + + $options = New-OfficeWordComparisonOptions -IgnoreWhitespace -IgnoreCase -CompareVolatileMetadata:$false + Compare-OfficeWordDocument -ReferencePath .\Before.docx -DifferencePath .\After.docx -Options $options @@ -142947,23 +153838,23 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficeVisio + New-OfficeWordImageOptions New - OfficeVisio + OfficeWordImageOptions - Creates a new OfficeIMO.Visio document with an initial page and optional DSL content. + Creates discoverable page and rendering settings for Export-OfficeWordImage. - Creates a new OfficeIMO.Visio document with an initial page and optional DSL content. + Creates discoverable page and rendering settings for Export-OfficeWordImage. - New-OfficeVisio + New-OfficeWordImageOptions - Author + BackgroundColor - Optional document author. + String @@ -142972,147 +153863,170 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Content + + IncludeDocumentContent - DSL script block describing Visio pages, shapes, and connectors. + Render document content. - ScriptBlock + SwitchParameter - ScriptBlock + SwitchParameter None - Height + MaximumDegreeOfParallelism - Initial page height. + - Double + Int32 - Double + Int32 None - NoSave + MaximumOutputCount - Skip saving and emit the document object. + - SwitchParameter + Int32 - SwitchParameter + Int32 None - - Open + + MaximumOutputHeight - Open the document after saving. + - SwitchParameter + Int32 - SwitchParameter + Int32 None - PageName + MaximumOutputWidth - Initial page name. + - String + Int32 - String + Int32 None - PassThru + MaximumRasterPixels - Emit the document object instead of the saved file. + - SwitchParameter + Int64 - SwitchParameter + Int64 None - - Path + + MaximumTotalEncodedBytes - Destination .vsdx path. + - String + Int64 - String + Int64 None - RequestRecalcOnOpen + MaximumTotalRasterPixels - Ask Visio to recalculate layout and connector routing when the document opens. + - SwitchParameter + Int64 - SwitchParameter + Int64 None - Title + PageCount - Optional document title. + Maximum pages exported. Supplying this value selects batch export. - String + Int32 - String + Int32 None - Unit + PageIndex - Measurement unit for page width and height. + Zero-based first page index. - VisioMeasurementUnit + Int32 + + Int32 + + + None + + + RasterOverflowBehavior + + + + OfficeRasterOverflowBehavior - Inches - Centimeters - Millimeters + ReduceScale + Throw - VisioMeasurementUnit + OfficeRasterOverflowBehavior None - UseMastersByDefault + RenderTimeoutSeconds - Use Visio masters for supported built-in stencil shapes when saving. + - SwitchParameter + Double - SwitchParameter + Double None - Width + Scale - Initial page width. + + + Double + + Double + + + None + + + TargetDpi + + Double @@ -143121,13 +154035,25 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + TextShapingLanguage + + + + String + + String + + + None + - Author + BackgroundColor - Optional document author. + String @@ -143136,147 +154062,146 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Content + + IncludeDocumentContent - DSL script block describing Visio pages, shapes, and connectors. + Render document content. - ScriptBlock + SwitchParameter - ScriptBlock + SwitchParameter None - Height + MaximumDegreeOfParallelism - Initial page height. + - Double + Int32 - Double + Int32 None - NoSave + MaximumOutputCount - Skip saving and emit the document object. + - SwitchParameter + Int32 - SwitchParameter + Int32 None - - Open + + MaximumOutputHeight - Open the document after saving. + - SwitchParameter + Int32 - SwitchParameter + Int32 None - PageName + MaximumOutputWidth - Initial page name. + - String + Int32 - String + Int32 None - PassThru + MaximumRasterPixels - Emit the document object instead of the saved file. + - SwitchParameter + Int64 - SwitchParameter + Int64 None - - Path + + MaximumTotalEncodedBytes - Destination .vsdx path. + - String + Int64 - String + Int64 None - RequestRecalcOnOpen + MaximumTotalRasterPixels - Ask Visio to recalculate layout and connector routing when the document opens. + - SwitchParameter + Int64 - SwitchParameter + Int64 None - Title + PageCount - Optional document title. + Maximum pages exported. Supplying this value selects batch export. - String + Int32 - String + Int32 None - Unit + PageIndex - Measurement unit for page width and height. + Zero-based first page index. - VisioMeasurementUnit - - Inches - Centimeters - Millimeters - + Int32 - VisioMeasurementUnit + Int32 None - UseMastersByDefault + RasterOverflowBehavior - Use Visio masters for supported built-in stencil shapes when saving. + - SwitchParameter + OfficeRasterOverflowBehavior + + ReduceScale + Throw + - SwitchParameter + OfficeRasterOverflowBehavior None - Width + RenderTimeoutSeconds - Initial page width. + Double @@ -143285,133 +154210,36 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - - - - None - - - - - - - OfficeIMO.Visio.VisioDocument - - - - - System.IO.FileInfo - - - - - - - - - - - Create a simple service map. - - PS> - - New-OfficeVisio -Path .\ServiceMap.vsdx -Title 'Service map' -RequestRecalcOnOpen { - VisioRectangle -Key web -Text 'Web' -X 1 -Y 4 -FillColor LightBlue - VisioRectangle -Key api -Text 'API' -X 4 -Y 4 -FillColor LightGreen - VisioConnector -From web -To api -EndArrow Triangle -Label 'calls' - } - - Creates an editable .vsdx diagram with two shapes and a connector. - - - - - - - - New-OfficeVisioGallery - New - OfficeVisioGallery - - Generates the OfficeIMO Visio reference gallery as editable .vsdx diagrams. - - - - Generates the OfficeIMO Visio reference gallery as editable .vsdx diagrams. - - - - New-OfficeVisioGallery - - NoPackageValidation - - Skip structural package validation after gallery documents are generated. - - SwitchParameter - - SwitchParameter - - - None - - - NoVisualQualityAnalysis - - Skip visual quality analysis after gallery documents are generated. - - SwitchParameter - - SwitchParameter - - - None - - - OutputDirectory - - Directory that receives generated .vsdx gallery documents. - - String - - String - - - None - - - - - NoPackageValidation + Scale - Skip structural package validation after gallery documents are generated. + - SwitchParameter + Double - SwitchParameter + Double None - NoVisualQualityAnalysis + TargetDpi - Skip visual quality analysis after gallery documents are generated. + - SwitchParameter + Double - SwitchParameter + Double None - - OutputDirectory + + TextShapingLanguage - Directory that receives generated .vsdx gallery documents. + - String + String String @@ -143429,7 +154257,7 @@ Use -NoSave or omit -Path when a document object should be returned for further - OfficeIMO.Visio.VisioGalleryResult + OfficeIMO.Word.WordImageExportOptions @@ -143440,14 +154268,14 @@ Use -NoSave or omit -Path when a document object should be returned for further - Generate the Visio reference gallery. + Render the first two pages at higher density. PS> - New-OfficeVisioGallery -OutputDirectory .\VisioGallery | - Select-Object Name, FilePath, IsClean + $options = New-OfficeWordImageOptions -PageIndex 0 -PageCount 2 -TargetDpi 144 -IncludeDocumentContent + Export-OfficeWordImage -Path .\Report.docx -OutputPath .\Pages -Options $options - Creates polished, editable Visio samples for flowcharts, architecture, network, timeline, swimlane, org chart, and graph diagrams. + Supplying PageCount selects batch export, so OutputPath is a folder. Use -AllPages on the export command for the complete document. @@ -143455,47 +154283,23 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficeWord + New-OfficeWordOpenDocumentOptions New - OfficeWord + OfficeWordOpenDocumentOptions - Creates a Word document using the DSL. + Creates Word/OpenDocument conversion settings. - Handles file creation or template cloning, scriptblock execution, explicit save or live-document composition, and emits the document path when -PassThru is used. + Creates Word/OpenDocument conversion settings. - New-OfficeWord - - Content - - DSL scriptblock describing document content. - - ScriptBlock - - ScriptBlock - - - None - - - NoSave - - Skip saving after executing the DSL. - - SwitchParameter - - SwitchParameter - - - None - + New-OfficeWordOpenDocumentOptions - Open + IncludeHeadersAndFooters - Open the document after saving. + Copy default headers and footers. SwitchParameter @@ -143505,9 +154309,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - PassThru + IncludeImages - Emit a FileInfo for chaining. + Copy supported inline images. SwitchParameter @@ -143517,37 +154321,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Password - - Password used to save the document as an encrypted package. - - String - - String - - - None - - - Path - - Destination path for the document. - - String - - String - - - None - - - TemplatePath + LossPolicy - Existing .docx file to clone before running the DSL. + Whether conversion loss is reported or rejected. - String + OdfConversionLossPolicy + + ReportOnly + ThrowOnSkippedOrUnsupported + ThrowOnAnyLoss + - String + OdfConversionLossPolicy None @@ -143555,34 +154340,10 @@ Use -NoSave or omit -Path when a document object should be returned for further - - Content - - DSL scriptblock describing document content. - - ScriptBlock - - ScriptBlock - - - None - - - NoSave - - Skip saving after executing the DSL. - - SwitchParameter - - SwitchParameter - - - None - - Open + IncludeHeadersAndFooters - Open the document after saving. + Copy default headers and footers. SwitchParameter @@ -143592,9 +154353,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - PassThru + IncludeImages - Emit a FileInfo for chaining. + Copy supported inline images. SwitchParameter @@ -143604,37 +154365,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Password - - Password used to save the document as an encrypted package. - - String - - String - - - None - - - Path - - Destination path for the document. - - String - - String - - - None - - - TemplatePath + LossPolicy - Existing .docx file to clone before running the DSL. + Whether conversion loss is reported or rejected. - String + OdfConversionLossPolicy + + ReportOnly + ThrowOnSkippedOrUnsupported + ThrowOnAnyLoss + - String + OdfConversionLossPolicy None @@ -143647,7 +154389,13 @@ Use -NoSave or omit -Path when a document object should be returned for further - + + + + OfficeIMO.Word.OpenDocument.WordOpenDocumentConversionOptions + + + @@ -143655,36 +154403,14 @@ Use -NoSave or omit -Path when a document object should be returned for further - Create a document inline. - - PS> - - New-OfficeWord -Path .\Report.docx { WordSection { WordParagraph 'Hello DSL' } } -Open - - Builds a document, adds one paragraph, saves it to disk, and opens it. - - - - Create a document from a template. - - PS> - - New-OfficeWord -TemplatePath .\Template.docx -Path .\Report.docx { WordParagraph -Text 'Generated content' -StyleId 'ReportBody' } - - Copies the template to the output path, runs the DSL against the copied document, and saves it. - - - - Keep a document for incremental composition. + Include Word images and headers during conversion. PS> - $document = New-OfficeWord -Path .\Report.docx -NoSave - $document | Add-OfficeWordParagraph -Text 'Status report' -Style Heading1 - $document | Save-OfficeWord - $document | Close-OfficeWord + $options = New-OfficeWordOpenDocumentOptions -IncludeImages -IncludeHeadersAndFooters + ConvertTo-OfficeOpenDocument -Path .\Report.docx -OutputPath .\Report.odt -WordOptions $options - Associates the output path with a live document, adds content through the pipeline, then saves and closes it once. + @@ -144239,6 +154965,411 @@ Use -NoSave or omit -Path when a document object should be returned for further + + + New-OfficeWordRevisionFilter + New + OfficeWordRevisionFilter + + Creates a discoverable Word revision filter for Resolve-OfficeWordRevision. + + + + Creates a discoverable Word revision filter for Resolve-OfficeWordRevision. + + + + New-OfficeWordRevisionFilter + + Author + + Revision author. + + String + + String + + + None + + + DateFrom + + Earliest revision date. + + DateTime + + DateTime + + + None + + + DateTo + + Latest revision date. + + DateTime + + DateTime + + + None + + + InContentControl + + Limit results to revisions inside content controls. + + SwitchParameter + + SwitchParameter + + + None + + + InTable + + Limit results to revisions inside tables. + + SwitchParameter + + SwitchParameter + + + None + + + InTextBox + + Limit results to revisions inside text boxes. + + SwitchParameter + + SwitchParameter + + + None + + + LocationKind + + Word part or container location kind. + + WordReviewLocationKind + + Body + Header + Footer + Footnote + Endnote + + + WordReviewLocationKind + + + None + + + NotInContentControl + + Limit results to revisions outside content controls. + + SwitchParameter + + SwitchParameter + + + None + + + NotInTable + + Limit results to revisions outside tables. + + SwitchParameter + + SwitchParameter + + + None + + + NotInTextBox + + Limit results to revisions outside text boxes. + + SwitchParameter + + SwitchParameter + + + None + + + PartUri + + Package part URI. + + String + + String + + + None + + + RevisionId + + Revision identifier. + + String + + String + + + None + + + RevisionType + + Revision operation type. + + WordReviewRevisionType + + Insertion + Deletion + MoveFrom + MoveTo + ParagraphFormatting + RunFormatting + TableFormatting + TableRowFormatting + TableCellFormatting + SectionFormatting + Unknown + + + WordReviewRevisionType + + + None + + + + + + Author + + Revision author. + + String + + String + + + None + + + DateFrom + + Earliest revision date. + + DateTime + + DateTime + + + None + + + DateTo + + Latest revision date. + + DateTime + + DateTime + + + None + + + InContentControl + + Limit results to revisions inside content controls. + + SwitchParameter + + SwitchParameter + + + None + + + InTable + + Limit results to revisions inside tables. + + SwitchParameter + + SwitchParameter + + + None + + + InTextBox + + Limit results to revisions inside text boxes. + + SwitchParameter + + SwitchParameter + + + None + + + LocationKind + + Word part or container location kind. + + WordReviewLocationKind + + Body + Header + Footer + Footnote + Endnote + + + WordReviewLocationKind + + + None + + + NotInContentControl + + Limit results to revisions outside content controls. + + SwitchParameter + + SwitchParameter + + + None + + + NotInTable + + Limit results to revisions outside tables. + + SwitchParameter + + SwitchParameter + + + None + + + NotInTextBox + + Limit results to revisions outside text boxes. + + SwitchParameter + + SwitchParameter + + + None + + + PartUri + + Package part URI. + + String + + String + + + None + + + RevisionId + + Revision identifier. + + String + + String + + + None + + + RevisionType + + Revision operation type. + + WordReviewRevisionType + + Insertion + Deletion + MoveFrom + MoveTo + ParagraphFormatting + RunFormatting + TableFormatting + TableRowFormatting + TableCellFormatting + SectionFormatting + Unknown + + + WordReviewRevisionType + + + None + + + + + + None + + + + + + + OfficeIMO.Word.WordRevisionFilter + + + + + + + + + + + Accept only table revisions from one author. + + PS> + + $filter = New-OfficeWordRevisionFilter -Author 'Alex' -InTable + Resolve-OfficeWordRevision -Path .\Review.docx -Action Accept -Filter $filter + + + + + + + New-OfficeWordTableCell @@ -147370,8 +158501,11 @@ Use -NoSave or omit -Path when a document object should be returned for further - EXAMPLE 1 - Remove-OfficePdfAnnotation -Path 'C:\Path' + Remove text annotations from the first page. + + PS> + + Remove-OfficePdfAnnotation -Path .\Reviewed.pdf -OutputPath .\Clean.pdf -PageNumber 1 -Subtype Text -Confirm:$false @@ -148945,7 +160079,8 @@ Use -NoSave or omit -Path when a document object should be returned for further PS> - $filter = [OfficeIMO.Word.WordRevisionFilter]::new(); $filter.Author = 'Reviewer'; Resolve-OfficeWordRevision -Path .\Draft.docx -OutputPath .\Accepted.docx -Action Accept -Filter $filter + $filter = New-OfficeWordRevisionFilter -Author 'Reviewer' -InContentControl + Resolve-OfficeWordRevision -Path .\Draft.docx -OutputPath .\Accepted.docx -Action Accept -Filter $filter Applies only matching revisions, saves the result, and returns the matched revision report. @@ -149155,8 +160290,12 @@ Use -NoSave or omit -Path when a document object should be returned for further - EXAMPLE 1 - Save-OfficeAsciiDoc -Path 'C:\Path' + Load, edit, and save an AsciiDoc document. + + PS> + + $document = Get-OfficeAsciiDoc -Path .\Guide.adoc + $document | Save-OfficeAsciiDoc -Path .\Guide-normalized.adoc -Mode Canonical @@ -149342,8 +160481,12 @@ Use -NoSave or omit -Path when a document object should be returned for further - EXAMPLE 1 - Save-OfficeEmail -Document 'Value' + Save a message with an explicit loss policy. + + PS> + + $options = New-OfficeEmailWriterOptions -ConversionLossPolicy Block + $message | Save-OfficeEmail -Path .\Message.eml -Options $options -PassThru @@ -149487,8 +160630,12 @@ Use -NoSave or omit -Path when a document object should be returned for further - EXAMPLE 1 - Save-OfficeEmailMailbox -Mailbox 'Value' + Save an mboxrd mailbox and return its diagnostics. + + PS> + + $options = New-OfficeEmailMailboxWriterOptions -Variant Mboxrd + $mailbox | Save-OfficeEmailMailbox -Path .\Archive.mbox -Options $options -PassThru @@ -150098,8 +161245,12 @@ Use -NoSave or omit -Path when a document object should be returned for further - EXAMPLE 1 - Save-OfficeLatex -Path 'C:\Path' + Load and save a canonical LaTeX document. + + PS> + + $document = Get-OfficeLatex -Path .\Article.tex + $document | Save-OfficeLatex -Path .\Article-normalized.tex -Mode Canonical @@ -170636,6 +181787,179 @@ The document is saved through the normal OfficeIMO.Pdf save path. + + + Set-OfficeOpenDocumentCell + Set + OfficeOpenDocumentCell + + Sets a typed zero-based cell value in an OpenDocument spreadsheet. + + + + Sets a typed zero-based cell value in an OpenDocument spreadsheet. + + + + Set-OfficeOpenDocumentCell + + Column + + Zero-based column index. + + Int64 + + Int64 + + + None + + + PassThru + + Emit the updated cell. + + SwitchParameter + + SwitchParameter + + + None + + + Row + + Zero-based row index. + + Int64 + + Int64 + + + None + + + Sheet + + Worksheet target. Omit inside Add-OfficeOpenDocumentSheet -Content. + + OdsSheet + + OdsSheet + + + None + + + Value + + String, number, decimal, boolean, date, date-time offset, or time span value. + + Object + + Object + + + None + + + + + + Column + + Zero-based column index. + + Int64 + + Int64 + + + None + + + PassThru + + Emit the updated cell. + + SwitchParameter + + SwitchParameter + + + None + + + Row + + Zero-based row index. + + Int64 + + Int64 + + + None + + + Sheet + + Worksheet target. Omit inside Add-OfficeOpenDocumentSheet -Content. + + OdsSheet + + OdsSheet + + + None + + + Value + + String, number, decimal, boolean, date, date-time offset, or time span value. + + Object + + Object + + + None + + + + + + OfficeIMO.OpenDocument.OdsSheet + + + + + + + OfficeIMO.OpenDocument.OdsCell + + + + + + + + + + + Set typed values inside the active worksheet. + + PS> + + Set-OfficeOpenDocumentCell -Row 0 -Column 0 -Value 'Healthy' + Set-OfficeOpenDocumentCell -Row 0 -Column 1 -Value $true + + + + + + + Set-OfficePdfAnnotation diff --git a/Docs/Get-OfficeDocumentHierarchy.md b/Docs/Get-OfficeDocumentHierarchy.md index 1fcb0089..e4cb233d 100644 --- a/Docs/Get-OfficeDocumentHierarchy.md +++ b/Docs/Get-OfficeDocumentHierarchy.md @@ -21,7 +21,8 @@ Creates bounded token-aware chunks and a deterministic document hierarchy. ### EXAMPLE 1 ```powershell -PS> $options = [OfficeIMO.Reader.ReaderHierarchicalChunkingOptions]::new(); $options.MaxTokens = 500; $result = Get-OfficeDocumentHierarchy -Path .\handbook.pdf -ChunkingOptions $options +PS> $options = New-OfficeReaderHierarchyOptions -MaxTokens 500 -OverlapTokens 50 -IncludeContextInText +$result = Get-OfficeDocumentHierarchy -Path .\handbook.pdf -ChunkingOptions $options ``` Returns chunks, token evidence, overlap counts, and flattened parent/child nodes. diff --git a/Docs/Get-OfficeEmail.md b/Docs/Get-OfficeEmail.md index 780dfb01..7c6c38ec 100644 --- a/Docs/Get-OfficeEmail.md +++ b/Docs/Get-OfficeEmail.md @@ -21,7 +21,8 @@ Reads a native EML, EMLX, MSG, or TNEF artifact with bounded diagnostics. ### EXAMPLE 1 ```powershell -Get-OfficeEmail -Path 'C:\Path' +PS> $options = New-OfficeEmailReaderOptions -ExcludeAttachmentContent -MaxAttachmentBytes 25MB +Get-OfficeEmail -Path .\Message.msg -Options $options -AsResult ``` diff --git a/Docs/Get-OfficeEmailMailbox.md b/Docs/Get-OfficeEmailMailbox.md index 1602b30f..7d185131 100644 --- a/Docs/Get-OfficeEmailMailbox.md +++ b/Docs/Get-OfficeEmailMailbox.md @@ -21,7 +21,8 @@ Reads a native mbox mailbox with bounded per-message diagnostics. ### EXAMPLE 1 ```powershell -Get-OfficeEmailMailbox -Path 'C:\Path' +PS> $options = New-OfficeEmailMailboxReaderOptions -MaxMessageCount 5000 +Get-OfficeEmailMailbox -Path .\Archive.mbox -Options $options -AsResult ``` diff --git a/Docs/Get-OfficeExcel.md b/Docs/Get-OfficeExcel.md index 8fed0f0a..05eaa616 100644 --- a/Docs/Get-OfficeExcel.md +++ b/Docs/Get-OfficeExcel.md @@ -11,12 +11,12 @@ Opens an existing Excel workbook. ## SYNTAX ### Path (Default) ```powershell -Get-OfficeExcel [-Path] [-ReadOnly] [-AutoSave] [-Password ] [] +Get-OfficeExcel [-Path] [-ReadOnly] [-Password ] [] ``` ### Uri ```powershell -Get-OfficeExcel [-Uri] [-AllowHttp] [-ReadOnly] [-AutoSave] [-Password ] [] +Get-OfficeExcel [-Uri] [-AllowHttp] [-ReadOnly] [-Password ] [] ``` ## DESCRIPTION @@ -49,22 +49,6 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -AutoSave -Enable automatic saves on the underlying document. - -```yaml -Type: SwitchParameter -Parameter Sets: Path, Uri -Aliases: None -Possible values: - -Required: False -Position: named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - ### -Password Password used to open an encrypted workbook package. diff --git a/Docs/Get-OfficeWord.md b/Docs/Get-OfficeWord.md index ac8ff6b0..cf2f253c 100644 --- a/Docs/Get-OfficeWord.md +++ b/Docs/Get-OfficeWord.md @@ -11,7 +11,7 @@ Opens an existing Word document. ## SYNTAX ### __AllParameterSets ```powershell -Get-OfficeWord [-Path] [[-Content] ] [-ReadOnly] [-AutoSave] [-Password ] [] +Get-OfficeWord [-Path] [[-Content] ] [-ReadOnly] [-Password ] [] ``` ## DESCRIPTION @@ -35,22 +35,6 @@ Loads the document, appends content through the DSL, and returns the open docume ## PARAMETERS -### -AutoSave -Enable AutoSave when editing. - -```yaml -Type: SwitchParameter -Parameter Sets: __AllParameterSets -Aliases: None -Possible values: - -Required: False -Position: named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - ### -Content Optional DSL scriptblock to execute against the loaded document. diff --git a/Docs/New-OfficeEmailMailboxReaderOptions.md b/Docs/New-OfficeEmailMailboxReaderOptions.md new file mode 100644 index 00000000..86aa6cea --- /dev/null +++ b/Docs/New-OfficeEmailMailboxReaderOptions.md @@ -0,0 +1,109 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficeEmailMailboxReaderOptions +## SYNOPSIS +Creates bounded mbox reader settings through ordinary PowerShell parameters. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficeEmailMailboxReaderOptions [-MessageOptions ] [-Variant ] [-MaxMessageCount ] [-MaxMailboxBytes ] [] +``` + +## DESCRIPTION +Creates bounded mbox reader settings through ordinary PowerShell parameters. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $messageOptions = New-OfficeEmailReaderOptions -ExcludeAttachmentContent +$options = New-OfficeEmailMailboxReaderOptions -MessageOptions $messageOptions -MaxMessageCount 5000 +Get-OfficeEmailMailbox -Path .\Archive.mbox -Options $options -AsResult +``` + + +## PARAMETERS + +### -MaxMailboxBytes +Maximum aggregate source bytes consumed from one mailbox. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxMessageCount +Maximum messages in one mailbox. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MessageOptions +Bounded policy applied independently to each message. + +```yaml +Type: EmailReaderOptions +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Variant +Escaping convention to decode. + +```yaml +Type: MboxVariant +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: Auto, Mboxo, Mboxrd + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `OfficeIMO.Email.EmailReaderOptions` + +## OUTPUTS + +- `OfficeIMO.Email.EmailMailboxReaderOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficeEmailMailboxWriterOptions.md b/Docs/New-OfficeEmailMailboxWriterOptions.md new file mode 100644 index 00000000..8d6e2355 --- /dev/null +++ b/Docs/New-OfficeEmailMailboxWriterOptions.md @@ -0,0 +1,77 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficeEmailMailboxWriterOptions +## SYNOPSIS +Creates deterministic mbox writer settings through ordinary PowerShell parameters. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficeEmailMailboxWriterOptions [-MessageOptions ] [-Variant ] [] +``` + +## DESCRIPTION +Creates deterministic mbox writer settings through ordinary PowerShell parameters. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $messageOptions = New-OfficeEmailWriterOptions -IncludeBccHeader +$options = New-OfficeEmailMailboxWriterOptions -MessageOptions $messageOptions -Variant Mboxo +$mailbox | Save-OfficeEmailMailbox -Path .\Archive.mbox -Options $options -PassThru +``` + + +## PARAMETERS + +### -MessageOptions +Serialization policy applied independently to each message. + +```yaml +Type: EmailWriterOptions +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Variant +Concrete mbox escaping convention to write. + +```yaml +Type: MboxVariant +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: Auto, Mboxo, Mboxrd + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `OfficeIMO.Email.EmailWriterOptions` + +## OUTPUTS + +- `OfficeIMO.Email.EmailMailboxWriterOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficeEmailReaderOptions.md b/Docs/New-OfficeEmailReaderOptions.md new file mode 100644 index 00000000..875ef739 --- /dev/null +++ b/Docs/New-OfficeEmailReaderOptions.md @@ -0,0 +1,284 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficeEmailReaderOptions +## SYNOPSIS +Creates bounded EML, MSG, and TNEF reader settings through ordinary PowerShell parameters. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficeEmailReaderOptions [-MaxInputBytes ] [-MaxHeaderBytes ] [-MaxHeaderCount ] [-MaxPartCount ] [-MaxMimeDepth ] [-MaxAttachmentBytes ] [-MaxTotalAttachmentBytes ] [-MaxNestedMessageDepth ] [-ExcludeAttachmentContent] [-PreserveRawSource] [-MaxCompoundDirectoryEntries ] [-MaxMapiPropertyCount ] [-MaxDecodedPropertyBytes ] [-MaxTnefAttributeCount ] [-MaxAttachmentCount ] [] +``` + +## DESCRIPTION +Creates bounded EML, MSG, and TNEF reader settings through ordinary PowerShell parameters. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $options = New-OfficeEmailReaderOptions -ExcludeAttachmentContent -MaxAttachmentBytes 25MB +Get-OfficeEmail -Path .\Message.msg -Options $options -AsResult +``` + + +## PARAMETERS + +### -ExcludeAttachmentContent +Do not retain decoded attachment payloads in memory. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxAttachmentBytes +Maximum decoded bytes for one attachment. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxAttachmentCount +Maximum aggregate attachment count. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxCompoundDirectoryEntries +Maximum CFB directory entries accepted while reading MSG. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxDecodedPropertyBytes +Maximum aggregate bytes represented by decoded MSG property streams. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxHeaderBytes +Maximum bytes allowed in one MIME header section. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxHeaderCount +Maximum number of header fields in one entity. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxInputBytes +Maximum artifact size accepted by the reader. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxMapiPropertyCount +Maximum aggregate MAPI properties across a message and embedded messages. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxMimeDepth +Maximum nested MIME depth. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxNestedMessageDepth +Maximum embedded-message recursion depth. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxPartCount +Maximum MIME entity count. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxTnefAttributeCount +Maximum number of TNEF attributes. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxTotalAttachmentBytes +Maximum aggregate decoded attachment bytes. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PreserveRawSource +Retain original artifact bytes for an explicit lossless write. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.Email.EmailReaderOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficeEmailStoreReaderOptions.md b/Docs/New-OfficeEmailStoreReaderOptions.md new file mode 100644 index 00000000..92500e81 --- /dev/null +++ b/Docs/New-OfficeEmailStoreReaderOptions.md @@ -0,0 +1,444 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficeEmailStoreReaderOptions +## SYNOPSIS +Creates bounded email-store reader settings without requiring .NET constructor syntax. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficeEmailStoreReaderOptions [-MaxInputBytes ] [-MaxNodeCount ] [-MaxBTreeDepth ] [-MaxCachedBTreePages ] [-MaxFolderCount ] [-MaxItemCount ] [-MaxPropertiesPerItem ] [-MaxDecodedPropertyBytesPerItem ] [-MaxAttachmentsPerItem ] [-MaxAttachmentBytes ] [-MaxTotalAttachmentBytes ] [-ExcludeAttachmentContent] [-PstPassword ] [-PstPasswordEncoding ] [-IncludeAssociatedItems] [-IncludeOrphanedItems] [-MaxNestedMessageDepth ] [-MaxArchiveEntries ] [-MaxArchiveEntryBytes ] [-MaxArchiveDecodedBytes ] [-MaxXmlCharactersPerItem ] [-MaxMessageBytes ] [-MaxDirectoryDepth ] [-MaxDirectoryFileCount ] [-MaxDecodedTableBytes ] [] +``` + +## DESCRIPTION +Creates bounded email-store reader settings without requiring .NET constructor syntax. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $options = New-OfficeEmailStoreReaderOptions -ExcludeAttachmentContent -MaxAttachmentsPerItem 100 +Get-OfficeEmail -Path .\Message.emlx -StoreOptions $options -AsResult +``` + + +## PARAMETERS + +### -ExcludeAttachmentContent +Do not retain decoded attachment payloads in memory. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeAssociatedItems +Materialize folder-associated information items. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeOrphanedItems +Recover item nodes absent from folder contents tables. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxArchiveDecodedBytes +Maximum total decoded size declared by archive entries. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxArchiveEntries +Maximum entries accepted from a compressed email-store archive. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxArchiveEntryBytes +Maximum decoded size declared by one archive entry. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxAttachmentBytes +Maximum decoded bytes in one attachment. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxAttachmentsPerItem +Maximum attachments per item. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxBTreeDepth +Maximum tree traversal depth. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxCachedBTreePages +Maximum PST/OST B-tree pages retained by the cache. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxDecodedPropertyBytesPerItem +Maximum decoded property bytes per item. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxDecodedTableBytes +Maximum decoded bytes traversed from one PST/OST table data tree. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxDirectoryDepth +Maximum directory depth traversed by mailbox-directory sessions. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxDirectoryFileCount +Maximum EML, EMLX, and Maildir files indexed by one directory session. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxFolderCount +Maximum folders materialized. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxInputBytes +Maximum seekable source length. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxItemCount +Maximum items materialized. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxMessageBytes +Maximum RFC 5322/MIME message bytes accepted from one item. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxNestedMessageDepth +Maximum embedded-message recursion depth. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxNodeCount +Maximum NDB nodes and blocks visited. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxPropertiesPerItem +Maximum MAPI properties decoded per item. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxTotalAttachmentBytes +Maximum decoded attachment bytes across the read. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxXmlCharactersPerItem +Maximum XML characters parsed from one archive item. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PstPassword +Password used to validate legacy protected PST files. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PstPasswordEncoding +Encoding name used for the legacy PST password checksum. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.Email.Store.EmailStoreReaderOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficeEmailWriterOptions.md b/Docs/New-OfficeEmailWriterOptions.md new file mode 100644 index 00000000..d589c719 --- /dev/null +++ b/Docs/New-OfficeEmailWriterOptions.md @@ -0,0 +1,140 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficeEmailWriterOptions +## SYNOPSIS +Creates deterministic email writer settings through ordinary PowerShell parameters. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficeEmailWriterOptions [-ConversionLossPolicy ] [-UsePreservedRawSource] [-IncludeBccHeader] [-Base64LineLength ] [-MaxNestedMessageDepth ] [-MaxOutputBytes ] [] +``` + +## DESCRIPTION +Creates deterministic email writer settings through ordinary PowerShell parameters. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $options = New-OfficeEmailWriterOptions -UsePreservedRawSource -ConversionLossPolicy Block +$message | Save-OfficeEmail -Path .\Message.eml -Options $options -PassThru +``` + + +## PARAMETERS + +### -Base64LineLength +Maximum encoded characters on one Base64 body line. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ConversionLossPolicy +Policy applied when the requested format cannot preserve known message semantics. + +```yaml +Type: EmailConversionLossPolicy +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: Block, Warn, Allow + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeBccHeader +Write Bcc recipients into the message header. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxNestedMessageDepth +Maximum embedded-message write depth. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxOutputBytes +Maximum serialized artifact size. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UsePreservedRawSource +Emit an unchanged preserved source instead of regenerating the artifact when possible. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.Email.EmailWriterOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficeExcelImageOptions.md b/Docs/New-OfficeExcelImageOptions.md new file mode 100644 index 00000000..d6025d9c --- /dev/null +++ b/Docs/New-OfficeExcelImageOptions.md @@ -0,0 +1,403 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficeExcelImageOptions +## SYNOPSIS +Creates discoverable rendering settings for Excel range and chart image export. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficeExcelImageOptions [-ShowGridlines] [-IncludeHidden] [-IncludeImages] [-IncludeCharts] [-IncludeDrawingObjects] [-IncludeConditionalFormatting] [-ShowHyperlinkHints] [-ShowCommentBodies] [-MaximumRenderedCells ] [-Scale ] [-MaximumOutputWidth ] [-MaximumOutputHeight ] [-BackgroundColor ] [-TargetDpi ] [-MaximumRasterPixels ] [-RasterOverflowBehavior ] [-MaximumOutputCount ] [-MaximumTotalRasterPixels ] [-MaximumTotalEncodedBytes ] [-RenderTimeoutSeconds ] [-MaximumDegreeOfParallelism ] [-TextShapingLanguage ] [] +``` + +## DESCRIPTION +Creates discoverable rendering settings for Excel range and chart image export. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $options = New-OfficeExcelImageOptions -ShowGridlines -ShowHyperlinkHints -TargetDpi 144 +Export-OfficeExcelRangeImage -Path .\Workbook.xlsx -Worksheet Summary -Range A1:H20 -OutputPath .\Summary.svg -Options $options +``` + + +### EXAMPLE 2 +```powershell +PS> $options = New-OfficeExcelImageOptions -TargetDpi 144 -MaximumOutputWidth 1600 +Export-OfficeExcelChartImage -Path .\Workbook.xlsx -Worksheet Summary -ChartName Revenue -OutputPath .\Revenue.svg -Options $options +``` + + +## PARAMETERS + +### -BackgroundColor +{{ Fill BackgroundColor Description }} + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeCharts +Include worksheet charts. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeConditionalFormatting +Include conditional formatting. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeDrawingObjects +Include drawing objects. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeHidden +Include hidden rows and columns. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeImages +Include worksheet images. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumDegreeOfParallelism +{{ Fill MaximumDegreeOfParallelism Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumOutputCount +{{ Fill MaximumOutputCount Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumOutputHeight +{{ Fill MaximumOutputHeight Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumOutputWidth +{{ Fill MaximumOutputWidth Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumRasterPixels +{{ Fill MaximumRasterPixels Description }} + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumRenderedCells +Maximum cells rendered. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumTotalEncodedBytes +{{ Fill MaximumTotalEncodedBytes Description }} + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumTotalRasterPixels +{{ Fill MaximumTotalRasterPixels Description }} + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RasterOverflowBehavior +{{ Fill RasterOverflowBehavior Description }} + +```yaml +Type: OfficeRasterOverflowBehavior +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: ReduceScale, Throw + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RenderTimeoutSeconds +{{ Fill RenderTimeoutSeconds Description }} + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Scale +{{ Fill Scale Description }} + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ShowCommentBodies +Show cell comment bodies. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ShowGridlines +Show worksheet gridlines. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ShowHyperlinkHints +Show hyperlink hints. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TargetDpi +{{ Fill TargetDpi Description }} + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TextShapingLanguage +{{ Fill TextShapingLanguage Description }} + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.Excel.ExcelImageExportOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficeExcelOpenDocumentOptions.md b/Docs/New-OfficeExcelOpenDocumentOptions.md new file mode 100644 index 00000000..dccf52de --- /dev/null +++ b/Docs/New-OfficeExcelOpenDocumentOptions.md @@ -0,0 +1,124 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficeExcelOpenDocumentOptions +## SYNOPSIS +Creates Excel/OpenDocument conversion settings. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficeExcelOpenDocumentOptions [-LossPolicy ] [-IncludeBasicStyles] [-MaximumExpandedCells ] [-MaximumRows ] [-MaximumColumns ] [] +``` + +## DESCRIPTION +Creates Excel/OpenDocument conversion settings. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $options = New-OfficeExcelOpenDocumentOptions -IncludeBasicStyles -MaximumRows 10000 -MaximumColumns 100 +ConvertTo-OfficeOpenDocument -Path .\Data.xlsx -OutputPath .\Data.ods -ExcelOptions $options +``` + + +## PARAMETERS + +### -IncludeBasicStyles +Copy common font, fill, and number-format styles. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LossPolicy +Whether conversion loss is reported or rejected. + +```yaml +Type: OdfConversionLossPolicy +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: ReportOnly, ThrowOnSkippedOrUnsupported, ThrowOnAnyLoss + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumColumns +Maximum spreadsheet columns. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumExpandedCells +Maximum cells materialized during conversion. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumRows +Maximum spreadsheet rows. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.Excel.OpenDocument.ExcelOpenDocumentConversionOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficeExcelWorkbookImageOptions.md b/Docs/New-OfficeExcelWorkbookImageOptions.md new file mode 100644 index 00000000..2e7be804 --- /dev/null +++ b/Docs/New-OfficeExcelWorkbookImageOptions.md @@ -0,0 +1,428 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficeExcelWorkbookImageOptions +## SYNOPSIS +Creates discoverable sheet selection and rendering settings for Export-OfficeExcelImage. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficeExcelWorkbookImageOptions [-SheetName ] [-IncludeHiddenSheets] [-UseWorksheetPrintAreas] [-SplitWorksheetsByManualPageBreaks] [-ShowGridlines] [-IncludeHidden] [-IncludeImages] [-IncludeCharts] [-IncludeDrawingObjects] [-IncludeConditionalFormatting] [-MaximumRenderedCells ] [-Scale ] [-MaximumOutputWidth ] [-MaximumOutputHeight ] [-BackgroundColor ] [-TargetDpi ] [-MaximumRasterPixels ] [-RasterOverflowBehavior ] [-MaximumOutputCount ] [-MaximumTotalRasterPixels ] [-MaximumTotalEncodedBytes ] [-RenderTimeoutSeconds ] [-MaximumDegreeOfParallelism ] [-TextShapingLanguage ] [] +``` + +## DESCRIPTION +Creates discoverable sheet selection and rendering settings for Export-OfficeExcelImage. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $options = New-OfficeExcelWorkbookImageOptions -SheetName Summary,Data -IncludeCharts -IncludeConditionalFormatting +Export-OfficeExcelImage -Path .\Workbook.xlsx -OutputPath .\Sheets -Options $options +``` + + +## PARAMETERS + +### -BackgroundColor +{{ Fill BackgroundColor Description }} + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeCharts +Include worksheet charts. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeConditionalFormatting +Include conditional formatting. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeDrawingObjects +Include drawing objects. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeHidden +Include hidden rows and columns. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeHiddenSheets +Include hidden worksheets. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeImages +Include worksheet images. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumDegreeOfParallelism +{{ Fill MaximumDegreeOfParallelism Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumOutputCount +{{ Fill MaximumOutputCount Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumOutputHeight +{{ Fill MaximumOutputHeight Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumOutputWidth +{{ Fill MaximumOutputWidth Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumRasterPixels +{{ Fill MaximumRasterPixels Description }} + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumRenderedCells +Maximum cells rendered per worksheet. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumTotalEncodedBytes +{{ Fill MaximumTotalEncodedBytes Description }} + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumTotalRasterPixels +{{ Fill MaximumTotalRasterPixels Description }} + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RasterOverflowBehavior +{{ Fill RasterOverflowBehavior Description }} + +```yaml +Type: OfficeRasterOverflowBehavior +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: ReduceScale, Throw + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RenderTimeoutSeconds +{{ Fill RenderTimeoutSeconds Description }} + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Scale +{{ Fill Scale Description }} + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SheetName +Worksheet names to export. + +```yaml +Type: String[] +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ShowGridlines +Show worksheet gridlines. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SplitWorksheetsByManualPageBreaks +Split worksheets at manual page breaks. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TargetDpi +{{ Fill TargetDpi Description }} + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TextShapingLanguage +{{ Fill TextShapingLanguage Description }} + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UseWorksheetPrintAreas +Use worksheet print areas. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.Excel.ExcelWorkbookImageExportOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficeHtmlConversionOptions.md b/Docs/New-OfficeHtmlConversionOptions.md new file mode 100644 index 00000000..167d3fa8 --- /dev/null +++ b/Docs/New-OfficeHtmlConversionOptions.md @@ -0,0 +1,124 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficeHtmlConversionOptions +## SYNOPSIS +Creates discoverable parsing, trust, and document settings for HTML conversion. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficeHtmlConversionOptions [-Profile ] [-Trust ] [-BaseUri ] [-UseBodyContentsOnly] [-IncludeNormalizedHtml] [] +``` + +## DESCRIPTION +Creates discoverable parsing, trust, and document settings for HTML conversion. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $document = New-OfficeHtmlConversionOptions -BaseUri (Resolve-Path .\Assets) -UseBodyContentsOnly +Export-OfficeHtmlImage -Path .\Report.html -OutputPath .\Report.svg -DocumentOptions $document +``` + + +## PARAMETERS + +### -BaseUri +Base URI used to resolve relative references. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeNormalizedHtml +Retain normalized HTML in the conversion document. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Profile +Built-in conversion profile. + +```yaml +Type: HtmlConversionProfile +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: Semantic, Document, HighFidelityPrint, PositionedReview + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Trust +Input trust level. + +```yaml +Type: HtmlInputTrust +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: Untrusted, Trusted + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UseBodyContentsOnly +Convert only body contents. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.Html.HtmlConversionDocumentOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficeHtmlRenderOptions.md b/Docs/New-OfficeHtmlRenderOptions.md new file mode 100644 index 00000000..5c3804a8 --- /dev/null +++ b/Docs/New-OfficeHtmlRenderOptions.md @@ -0,0 +1,492 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficeHtmlRenderOptions +## SYNOPSIS +Creates discoverable layout, resource-limit, and rendering settings for HTML image export. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficeHtmlRenderOptions [-Mode ] [-FidelityPolicy ] [-ViewportWidth ] [-ViewportHeight ] [-PageSize ] [-HonorCssPageRules] [-DefaultFontFamily ] [-DefaultFontSize ] [-DefaultLineHeight ] [-BaseUri ] [-MaxPageCount ] [-MaxInputCharacters ] [-MaxHtmlNodes ] [-MaxTotalResourceBytes ] [-ResourceTimeoutSeconds ] [-Scale ] [-MaximumOutputWidth ] [-MaximumOutputHeight ] [-BackgroundColor ] [-TargetDpi ] [-MaximumRasterPixels ] [-RasterOverflowBehavior ] [-MaximumOutputCount ] [-MaximumTotalRasterPixels ] [-MaximumTotalEncodedBytes ] [-RenderTimeoutSeconds ] [-MaximumDegreeOfParallelism ] [-TextShapingLanguage ] [] +``` + +## DESCRIPTION +Creates discoverable layout, resource-limit, and rendering settings for HTML image export. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $render = New-OfficeHtmlRenderOptions -ViewportWidth 1280 -ViewportHeight 720 -MaxPageCount 10 +Export-OfficeHtmlImage -Path .\Report.html -OutputPath .\Report.svg -RenderOptions $render +``` + + +## PARAMETERS + +### -BackgroundColor +{{ Fill BackgroundColor Description }} + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -BaseUri +Base URI for relative resources. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultFontFamily +Default font family. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultFontSize +Default font size. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultLineHeight +Default line-height multiplier. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -FidelityPolicy +Fidelity policy for unsupported content. + +```yaml +Type: HtmlRenderFidelityPolicy +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: AllowDiagnosedLoss, RequireNoLoss + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -HonorCssPageRules +Honor CSS page rules. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxHtmlNodes +Maximum HTML nodes. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumDegreeOfParallelism +{{ Fill MaximumDegreeOfParallelism Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumOutputCount +{{ Fill MaximumOutputCount Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumOutputHeight +{{ Fill MaximumOutputHeight Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumOutputWidth +{{ Fill MaximumOutputWidth Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumRasterPixels +{{ Fill MaximumRasterPixels Description }} + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumTotalEncodedBytes +{{ Fill MaximumTotalEncodedBytes Description }} + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumTotalRasterPixels +{{ Fill MaximumTotalRasterPixels Description }} + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxInputCharacters +Maximum HTML input characters. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxPageCount +Maximum rendered page count. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxTotalResourceBytes +Maximum resource bytes loaded for the document. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Mode +HTML render mode. + +```yaml +Type: HtmlRenderMode +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: Continuous, Paged + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PageSize +Page size used by paged rendering. + +```yaml +Type: OfficePageSize +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RasterOverflowBehavior +{{ Fill RasterOverflowBehavior Description }} + +```yaml +Type: OfficeRasterOverflowBehavior +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: ReduceScale, Throw + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RenderTimeoutSeconds +{{ Fill RenderTimeoutSeconds Description }} + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceTimeoutSeconds +Maximum duration allowed for one resource load. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Scale +{{ Fill Scale Description }} + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TargetDpi +{{ Fill TargetDpi Description }} + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TextShapingLanguage +{{ Fill TextShapingLanguage Description }} + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ViewportHeight +Optional viewport height in CSS pixels. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ViewportWidth +Viewport width in CSS pixels. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.Html.HtmlRenderOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficeOpenDocument.md b/Docs/New-OfficeOpenDocument.md index fb23fa89..782611a0 100644 --- a/Docs/New-OfficeOpenDocument.md +++ b/Docs/New-OfficeOpenDocument.md @@ -11,7 +11,7 @@ Creates a native ODT, ODS, or ODP document. ## SYNTAX ### __AllParameterSets ```powershell -New-OfficeOpenDocument [-Kind] [[-Path] ] [-PassThru] [-WhatIf] [-Confirm] [] +New-OfficeOpenDocument [-Kind] [[-Path] ] [[-Content] ] [-NoSave] [-PassThru] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION @@ -21,12 +21,44 @@ Creates a native ODT, ODS, or ODP document. ### EXAMPLE 1 ```powershell -New-OfficeOpenDocument -Path 'C:\Path' +PS> New-OfficeOpenDocument -Kind Text -Path .\Report.odt -Content { + Add-OfficeOpenDocumentHeading -Text 'Service report' -Level 1 + Add-OfficeOpenDocumentParagraph -Text 'Generated by PSWriteOffice.' +} +``` + + +### EXAMPLE 2 +```powershell +PS> New-OfficeOpenDocument -Kind Spreadsheet -Path .\Status.ods -Content { + Add-OfficeOpenDocumentSheet -Name 'Services' -Content { + Set-OfficeOpenDocumentCell -Row 0 -Column 0 -Value 'Service' + Set-OfficeOpenDocumentCell -Row 0 -Column 1 -Value 'Healthy' + Set-OfficeOpenDocumentCell -Row 1 -Column 0 -Value 'Directory' + Set-OfficeOpenDocumentCell -Row 1 -Column 1 -Value $true + } +} ``` ## PARAMETERS +### -Content +DSL scriptblock describing OpenDocument text, spreadsheet, or presentation content. + +```yaml +Type: ScriptBlock +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: 2 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -Kind OpenDocument text, spreadsheet, or presentation kind. @@ -43,6 +75,22 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -NoSave +Skip saving and emit the live OpenDocument model even when -Path is supplied. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### -PassThru Emit the saved file when a destination path is supplied. diff --git a/Docs/New-OfficePdfExcelImportOptions.md b/Docs/New-OfficePdfExcelImportOptions.md new file mode 100644 index 00000000..0bcbb7c3 --- /dev/null +++ b/Docs/New-OfficePdfExcelImportOptions.md @@ -0,0 +1,300 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficePdfExcelImportOptions +## SYNOPSIS +Creates discoverable PDF-table-to-Excel reconstruction settings. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficePdfExcelImportOptions [-MaxRows ] [-SheetNamePrefix ] [-TableNamePrefix ] [-TableStyle ] [-IncludeAutoFilter] [-AutoFitColumns] [-ConvertNumericColumns] [-ConvertBooleanColumns] [-ConvertDateTimeColumns] [-ConvertPercentageColumns] [-NumericCulture ] [-MergePageContinuations] [-SuppressRepeatedBodyHeaderRows] [-MaximumContinuationSegments ] [-ContinuationGeometryTolerancePoints ] [-EmptyWorkbookSheetName ] [] +``` + +## DESCRIPTION +Creates discoverable PDF-table-to-Excel reconstruction settings. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $options = New-OfficePdfExcelImportOptions -IncludeAutoFilter -AutoFitColumns -ConvertNumericColumns -ConvertDateTimeColumns +ConvertTo-OfficePdfExcel -Path .\Tables.pdf -OutputPath .\Tables.xlsx -Options $options +``` + + +## PARAMETERS + +### -AutoFitColumns +Auto-fit worksheet columns. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ContinuationGeometryTolerancePoints +Geometry tolerance in PDF points for page continuations. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ConvertBooleanColumns +Convert consistently boolean columns. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ConvertDateTimeColumns +Convert unambiguous date columns. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ConvertNumericColumns +Convert consistently numeric columns. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ConvertPercentageColumns +Convert percentage columns to fractional numbers. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -EmptyWorkbookSheetName +Worksheet name used when no tables are detected. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeAutoFilter +Add table-scoped AutoFilters. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumContinuationSegments +Maximum table segments merged into one table. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxRows +Maximum body rows imported per detected table; zero means unlimited. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MergePageContinuations +Merge compatible table segments across pages. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -NumericCulture +Culture name used for numeric parsing, such as en-US. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SheetNamePrefix +Prefix for generated worksheet names. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SuppressRepeatedBodyHeaderRows +Suppress repeated body header rows in merged segments. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TableNamePrefix +Prefix for generated Excel table names. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TableStyle +Excel table style. + +```yaml +Type: ExcelTableStyle +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: TableStyleLight1, TableStyleLight2, TableStyleLight3, TableStyleLight4, TableStyleLight5, TableStyleLight6, TableStyleLight7, TableStyleLight8, TableStyleLight9, TableStyleLight10, TableStyleLight11, TableStyleLight12, TableStyleLight13, TableStyleLight14, TableStyleLight15, TableStyleLight16, TableStyleLight17, TableStyleLight18, TableStyleLight19, TableStyleLight20, TableStyleLight21, TableStyleMedium1, TableStyleMedium2, TableStyleMedium3, TableStyleMedium4, TableStyleMedium5, TableStyleMedium6, TableStyleMedium7, TableStyleMedium8, TableStyleMedium9, TableStyleMedium10, TableStyleMedium11, TableStyleMedium12, TableStyleMedium13, TableStyleMedium14, TableStyleMedium15, TableStyleMedium16, TableStyleMedium17, TableStyleMedium18, TableStyleMedium19, TableStyleMedium20, TableStyleMedium21, TableStyleMedium22, TableStyleMedium23, TableStyleMedium24, TableStyleMedium25, TableStyleMedium26, TableStyleMedium27, TableStyleMedium28, TableStyleDark1, TableStyleDark2, TableStyleDark3, TableStyleDark4, TableStyleDark5, TableStyleDark6, TableStyleDark7, TableStyleDark8, TableStyleDark9, TableStyleDark10, TableStyleDark11 + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.Excel.Pdf.PdfExcelTableImportOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficePdfImageOptions.md b/Docs/New-OfficePdfImageOptions.md new file mode 100644 index 00000000..0a8f2212 --- /dev/null +++ b/Docs/New-OfficePdfImageOptions.md @@ -0,0 +1,268 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficePdfImageOptions +## SYNOPSIS +Creates discoverable thumbnail and rendering settings for Export-OfficePdfImage. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficePdfImageOptions [-ThumbnailMaxDimension ] [-Scale ] [-MaximumOutputWidth ] [-MaximumOutputHeight ] [-BackgroundColor ] [-TargetDpi ] [-MaximumRasterPixels ] [-RasterOverflowBehavior ] [-MaximumOutputCount ] [-MaximumTotalRasterPixels ] [-MaximumTotalEncodedBytes ] [-RenderTimeoutSeconds ] [-MaximumDegreeOfParallelism ] [-TextShapingLanguage ] [] +``` + +## DESCRIPTION +Creates discoverable thumbnail and rendering settings for Export-OfficePdfImage. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $options = New-OfficePdfImageOptions -ThumbnailMaxDimension 320 -MaximumOutputWidth 640 +Export-OfficePdfImage -Path .\Report.pdf -OutputPath .\Thumbnails -Options $options +``` + + +## PARAMETERS + +### -BackgroundColor +{{ Fill BackgroundColor Description }} + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumDegreeOfParallelism +{{ Fill MaximumDegreeOfParallelism Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumOutputCount +{{ Fill MaximumOutputCount Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumOutputHeight +{{ Fill MaximumOutputHeight Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumOutputWidth +{{ Fill MaximumOutputWidth Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumRasterPixels +{{ Fill MaximumRasterPixels Description }} + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumTotalEncodedBytes +{{ Fill MaximumTotalEncodedBytes Description }} + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumTotalRasterPixels +{{ Fill MaximumTotalRasterPixels Description }} + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RasterOverflowBehavior +{{ Fill RasterOverflowBehavior Description }} + +```yaml +Type: OfficeRasterOverflowBehavior +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: ReduceScale, Throw + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RenderTimeoutSeconds +{{ Fill RenderTimeoutSeconds Description }} + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Scale +{{ Fill Scale Description }} + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TargetDpi +{{ Fill TargetDpi Description }} + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TextShapingLanguage +{{ Fill TextShapingLanguage Description }} + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ThumbnailMaxDimension +Maximum thumbnail width or height. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.Pdf.PdfImageExportOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficePdfPowerPointImportOptions.md b/Docs/New-OfficePdfPowerPointImportOptions.md new file mode 100644 index 00000000..241f7d3a --- /dev/null +++ b/Docs/New-OfficePdfPowerPointImportOptions.md @@ -0,0 +1,364 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficePdfPowerPointImportOptions +## SYNOPSIS +Creates discoverable PDF-to-PowerPoint reconstruction settings. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficePdfPowerPointImportOptions [-Mode ] [-PageRange ] [-Dpi ] [-MaxPages ] [-MaxPixelsPerPage ] [-MaxOutputBytesPerPage ] [-MaxTotalOutputBytes ] [-MaxEditableObjectsPerPage ] [-MaxRows ] [-MergePageContinuations] [-SuppressRepeatedBodyHeaderRows] [-MaxRowsPerSlide ] [-MaxColumnsPerSlide ] [-TableStyle ] [-IncludeSourceTitles] [-IncludeColumnHeaderRows] [-BandedRows] [-AlignNumericColumns] [-EmptyPresentationTitle ] [-EmptyPresentationMessage ] [] +``` + +## DESCRIPTION +Creates discoverable PDF-to-PowerPoint reconstruction settings. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $options = New-OfficePdfPowerPointImportOptions -PageRange '1-5' -MaxPages 5 -IncludeSourceTitles +ConvertTo-OfficePdfPowerPoint -Path .\Source.pdf -OutputPath .\Slides.pptx -Options $options +``` + + +## PARAMETERS + +### -AlignNumericColumns +Right-align inferred numeric columns. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -BandedRows +Enable banded-row styling. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Dpi +Raster resolution used by visual import. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -EmptyPresentationMessage +Message used when no supported content is detected. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -EmptyPresentationTitle +Title used when no supported content is detected. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeColumnHeaderRows +Add inferred column headers. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeSourceTitles +Add source-page titles. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxColumnsPerSlide +Maximum columns written to one slide; zero means unlimited. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxEditableObjectsPerPage +Maximum editable objects reconstructed per page. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxOutputBytesPerPage +Maximum encoded bytes per rendered page. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxPages +Maximum pages imported. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxPixelsPerPage +Maximum pixels per rendered page. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxRows +Maximum body rows imported per table; zero means unlimited. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxRowsPerSlide +Maximum rows written to one slide; zero means unlimited. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxTotalOutputBytes +Maximum aggregate encoded output bytes. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MergePageContinuations +Merge compatible table segments across pages. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Mode +Visual, editable-table, hybrid, editable-content, or automatic import mode. + +```yaml +Type: PdfPowerPointImportMode +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: VisualPages, EditableTables, HybridVisualAndEditableTables, EditableContent, Auto + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PageRange +Optional one-based page ranges such as 1-3,5. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SuppressRepeatedBodyHeaderRows +Suppress repeated body header rows. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TableStyle +PowerPoint table style. + +```yaml +Type: PowerPointTableStylePreset +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.PowerPoint.Pdf.PdfPowerPointImportOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficePdfVisualComparisonOptions.md b/Docs/New-OfficePdfVisualComparisonOptions.md new file mode 100644 index 00000000..f393cb02 --- /dev/null +++ b/Docs/New-OfficePdfVisualComparisonOptions.md @@ -0,0 +1,188 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficePdfVisualComparisonOptions +## SYNOPSIS +Creates discoverable rendering and tolerance settings for Compare-OfficePdfVisual. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficePdfVisualComparisonOptions [-Scale ] [-ChannelTolerance ] [-AllowedDifferenceRatio ] [-Alignment ] [-BackgroundColor ] [-MaxPages ] [-MaxPixelsPerImage ] [-MaxTotalPixels ] [-MaxTotalOutputBytes ] [] +``` + +## DESCRIPTION +Creates discoverable rendering and tolerance settings for Compare-OfficePdfVisual. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $options = New-OfficePdfVisualComparisonOptions -ChannelTolerance 2 -AllowedDifferenceRatio 0.001 -MaxPages 50 +Compare-OfficePdfVisual -ReferencePath .\Expected.pdf -DifferencePath .\Actual.pdf -Options $options +``` + + +## PARAMETERS + +### -Alignment +Page alignment used for differently sized renders. + +```yaml +Type: PdfVisualPageAlignment +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: TopLeft, Center + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -AllowedDifferenceRatio +Maximum differing-pixel ratio treated as equal. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -BackgroundColor +Background color name or hex value. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ChannelTolerance +Maximum per-channel byte difference treated as equal. + +```yaml +Type: Byte +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxPages +Maximum pages compared. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxPixelsPerImage +Maximum pixels accepted per rendered image. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxTotalOutputBytes +Maximum total bytes retained for comparison artifacts. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxTotalPixels +Maximum pixels accepted across the comparison. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Scale +Render scale applied before comparison. + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.Pdf.PdfVisualComparisonOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficePdfWordImportOptions.md b/Docs/New-OfficePdfWordImportOptions.md new file mode 100644 index 00000000..8299293e --- /dev/null +++ b/Docs/New-OfficePdfWordImportOptions.md @@ -0,0 +1,412 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficePdfWordImportOptions +## SYNOPSIS +Creates discoverable PDF-to-Word reconstruction settings. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficePdfWordImportOptions [-TablesOnly] [-IncludeMetadata] [-PreservePageBreaks] [-IncludeEmptyPages] [-ImportHeadings] [-ImportParagraphs] [-UseSharedPageReadingOrder] [-ImportLists] [-ImportTables] [-ImportUriLinks] [-ImportInternalLinks] [-BookmarkPrefix ] [-AllowedHyperlinkUriScheme ] [-ImportImages] [-PreserveImagePlacementSize] [-IncludeImagePlaceholders] [-IncludeFormFieldPlaceholders] [-MaxTableRows ] [-TableStyle ] [-RepeatHeaderRows] [-FitTablesToPageWidth] [-AlignNumericColumns] [-EmptyDocumentMessage ] [] +``` + +## DESCRIPTION +Creates discoverable PDF-to-Word reconstruction settings. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $options = New-OfficePdfWordImportOptions -ImportHeadings -ImportParagraphs -ImportLists -ImportTables +ConvertTo-OfficePdfWord -Path .\Source.pdf -OutputPath .\Rebuilt.docx -Options $options +``` + + +## PARAMETERS + +### -AlignNumericColumns +Right-align inferred numeric columns. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -AllowedHyperlinkUriScheme +Allowed absolute hyperlink URI schemes. + +```yaml +Type: String[] +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -BookmarkPrefix +Prefix for generated Word bookmarks. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -EmptyDocumentMessage +Text used when no supported content is detected. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -FitTablesToPageWidth +Fit imported tables to page width. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ImportHeadings +Import detected headings. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ImportImages +Import supported embedded images. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ImportInternalLinks +Import supported internal links. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ImportLists +Import detected lists. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ImportParagraphs +Import detected paragraphs. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ImportTables +Import detected tables. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ImportUriLinks +Import safe URI links. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeEmptyPages +Represent empty PDF pages. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeFormFieldPlaceholders +Represent AcroForm widgets with editable placeholders. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeImagePlaceholders +Use paragraphs when an image cannot be embedded. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeMetadata +Copy PDF metadata into Word properties. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxTableRows +Maximum body rows imported per table; zero means unlimited. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PreserveImagePlacementSize +Preserve detected image placement size. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PreservePageBreaks +Represent source pages with Word page breaks. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RepeatHeaderRows +Repeat inferred table header rows. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TablesOnly +Use the built-in tables-only import profile. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TableStyle +Word table style for imported tables. + +```yaml +Type: WordTableStyle +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: TableNormal, TableGrid, PlainTable1, PlainTable2, PlainTable3, PlainTable4, PlainTable5, GridTable1Light, GridTable1LightAccent1, GridTable1LightAccent2, GridTable1LightAccent3, GridTable1LightAccent4, GridTable1LightAccent5, GridTable1LightAccent6, GridTable2, GridTable2Accent1, GridTable2Accent2, GridTable2Accent3, GridTable2Accent4, GridTable2Accent5, GridTable2Accent6, GridTable3, GridTable3Accent1, GridTable3Accent2, GridTable3Accent3, GridTable3Accent4, GridTable3Accent5, GridTable3Accent6, GridTable4, GridTable4Accent1, GridTable4Accent2, GridTable4Accent3, GridTable4Accent4, GridTable4Accent5, GridTable4Accent6, GridTable5Dark, GridTable5DarkAccent1, GridTable5DarkAccent2, GridTable5DarkAccent3, GridTable5DarkAccent4, GridTable5DarkAccent5, GridTable5DarkAccent6, GridTable6Colorful, GridTable6ColorfulAccent1, GridTable6ColorfulAccent2, GridTable6ColorfulAccent3, GridTable6ColorfulAccent4, GridTable6ColorfulAccent5, GridTable6ColorfulAccent6, GridTable7Colorful, GridTable7ColorfulAccent1, GridTable7ColorfulAccent2, GridTable7ColorfulAccent3, GridTable7ColorfulAccent4, GridTable7ColorfulAccent5, GridTable7ColorfulAccent6, ListTable1Light, ListTable1LightAccent1, ListTable1LightAccent2, ListTable1LightAccent3, ListTable1LightAccent4, ListTable1LightAccent5, ListTable1LightAccent6, ListTable2, ListTable2Accent1, ListTable2Accent2, ListTable2Accent3, ListTable2Accent4, ListTable2Accent5, ListTable2Accent6, ListTable3, ListTable3Accent1, ListTable3Accent2, ListTable3Accent3, ListTable3Accent4, ListTable3Accent5, ListTable3Accent6, ListTable4, ListTable4Accent1, ListTable4Accent2, ListTable4Accent3, ListTable4Accent4, ListTable4Accent5, ListTable4Accent6, ListTable5Dark, ListTable5DarkAccent1, ListTable5DarkAccent2, ListTable5DarkAccent3, ListTable5DarkAccent4, ListTable5DarkAccent5, ListTable5DarkAccent6, ListTable6Colorful, ListTable6ColorfulAccent1, ListTable6ColorfulAccent2, ListTable6ColorfulAccent3, ListTable6ColorfulAccent4, ListTable6ColorfulAccent5, ListTable6ColorfulAccent6, ListTable7Colorful, ListTable7ColorfulAccent1, ListTable7ColorfulAccent2, ListTable7ColorfulAccent3, ListTable7ColorfulAccent4, ListTable7ColorfulAccent5, ListTable7ColorfulAccent6 + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -UseSharedPageReadingOrder +Use the crop-, rotation-, and column-aware reading order. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.Word.Pdf.PdfWordImportOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficePowerPointImageOptions.md b/Docs/New-OfficePowerPointImageOptions.md new file mode 100644 index 00000000..208ae9b2 --- /dev/null +++ b/Docs/New-OfficePowerPointImageOptions.md @@ -0,0 +1,412 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficePowerPointImageOptions +## SYNOPSIS +Creates discoverable slide selection and rendering settings for Export-OfficePowerPointImage. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficePowerPointImageOptions [-SlideNumber ] [-IncludeHiddenSlides] [-IncludeSlideBackground] [-IncludeSlideContent] [-IncludePictures] [-IncludeAutoShapes] [-IncludeTextBoxes] [-IncludeTables] [-IncludeCharts] [-IncludeHiddenShapes] [-Scale ] [-MaximumOutputWidth ] [-MaximumOutputHeight ] [-BackgroundColor ] [-TargetDpi ] [-MaximumRasterPixels ] [-RasterOverflowBehavior ] [-MaximumOutputCount ] [-MaximumTotalRasterPixels ] [-MaximumTotalEncodedBytes ] [-RenderTimeoutSeconds ] [-MaximumDegreeOfParallelism ] [-TextShapingLanguage ] [] +``` + +## DESCRIPTION +Creates discoverable slide selection and rendering settings for Export-OfficePowerPointImage. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $options = New-OfficePowerPointImageOptions -SlideNumber 1,3 -IncludeSlideBackground -IncludeSlideContent +Export-OfficePowerPointImage -Path .\Deck.pptx -OutputPath .\Slides -Options $options +``` + + +## PARAMETERS + +### -BackgroundColor +{{ Fill BackgroundColor Description }} + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeAutoShapes +Render auto shapes. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeCharts +Render charts. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeHiddenShapes +Render hidden shapes. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeHiddenSlides +Include hidden slides. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludePictures +Render pictures. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeSlideBackground +Render slide backgrounds. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeSlideContent +Render slide content. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeTables +Render tables. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeTextBoxes +Render text boxes. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumDegreeOfParallelism +{{ Fill MaximumDegreeOfParallelism Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumOutputCount +{{ Fill MaximumOutputCount Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumOutputHeight +{{ Fill MaximumOutputHeight Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumOutputWidth +{{ Fill MaximumOutputWidth Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumRasterPixels +{{ Fill MaximumRasterPixels Description }} + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumTotalEncodedBytes +{{ Fill MaximumTotalEncodedBytes Description }} + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumTotalRasterPixels +{{ Fill MaximumTotalRasterPixels Description }} + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RasterOverflowBehavior +{{ Fill RasterOverflowBehavior Description }} + +```yaml +Type: OfficeRasterOverflowBehavior +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: ReduceScale, Throw + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RenderTimeoutSeconds +{{ Fill RenderTimeoutSeconds Description }} + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Scale +{{ Fill Scale Description }} + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SlideNumber +One-based slide numbers to export. + +```yaml +Type: Int32[] +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TargetDpi +{{ Fill TargetDpi Description }} + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TextShapingLanguage +{{ Fill TextShapingLanguage Description }} + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.PowerPoint.PowerPointPresentationImageExportOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficePowerPointOpenDocumentOptions.md b/Docs/New-OfficePowerPointOpenDocumentOptions.md new file mode 100644 index 00000000..aeaedd0a --- /dev/null +++ b/Docs/New-OfficePowerPointOpenDocumentOptions.md @@ -0,0 +1,140 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficePowerPointOpenDocumentOptions +## SYNOPSIS +Creates PowerPoint/OpenDocument conversion settings. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficePowerPointOpenDocumentOptions [-LossPolicy ] [-IncludeImages] [-IncludeSpeakerNotes] [-IncludeBasicFormatting] [-MaxTableRows ] [-MaxTableColumns ] [] +``` + +## DESCRIPTION +Creates PowerPoint/OpenDocument conversion settings. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $options = New-OfficePowerPointOpenDocumentOptions -IncludeImages -IncludeSpeakerNotes -IncludeBasicFormatting +ConvertTo-OfficeOpenDocument -Path .\Deck.pptx -OutputPath .\Deck.odp -PowerPointOptions $options +``` + + +## PARAMETERS + +### -IncludeBasicFormatting +Copy common fills, outlines, and text-run formatting. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeImages +Copy supported embedded images. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeSpeakerNotes +Copy plain speaker-note text. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LossPolicy +Whether conversion loss is reported or rejected. + +```yaml +Type: OdfConversionLossPolicy +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: ReportOnly, ThrowOnSkippedOrUnsupported, ThrowOnAnyLoss + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxTableColumns +Maximum columns in converted presentation tables. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxTableRows +Maximum rows in converted presentation tables. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.PowerPoint.OpenDocument.PowerPointOpenDocumentConversionOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficeReaderHierarchyOptions.md b/Docs/New-OfficeReaderHierarchyOptions.md new file mode 100644 index 00000000..0520b8f2 --- /dev/null +++ b/Docs/New-OfficeReaderHierarchyOptions.md @@ -0,0 +1,172 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficeReaderHierarchyOptions +## SYNOPSIS +Creates discoverable token and hierarchy settings for Get-OfficeDocumentHierarchy. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficeReaderHierarchyOptions [-MaxTokens ] [-OverlapTokens ] [-MaxInputChunks ] [-MaxOutputChunks ] [-MaxHierarchyDepth ] [-MaxContextCharacters ] [-PreferMarkdown] [-IncludeContextInText] [] +``` + +## DESCRIPTION +Creates discoverable token and hierarchy settings for Get-OfficeDocumentHierarchy. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $options = New-OfficeReaderHierarchyOptions -MaxTokens 500 -OverlapTokens 50 -IncludeContextInText +Get-OfficeDocumentHierarchy -Path .\handbook.pdf -ChunkingOptions $options +``` + + +## PARAMETERS + +### -IncludeContextInText +Include hierarchy context in chunk text. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxContextCharacters +Maximum heading-context characters retained. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxHierarchyDepth +Maximum heading hierarchy depth. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxInputChunks +Maximum source chunks accepted. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxOutputChunks +Maximum chunks returned. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaxTokens +Maximum tokens per output chunk. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -OverlapTokens +Tokens repeated between adjacent chunks. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PreferMarkdown +Prefer Markdown text where the reader supports it. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.Reader.ReaderHierarchicalChunkingOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficeVisioImageOptions.md b/Docs/New-OfficeVisioImageOptions.md new file mode 100644 index 00000000..050d1d86 --- /dev/null +++ b/Docs/New-OfficeVisioImageOptions.md @@ -0,0 +1,380 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficeVisioImageOptions +## SYNOPSIS +Creates discoverable page and rendering settings for Export-OfficeVisioImage. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficeVisioImageOptions [-PageIndex ] [-PageCount ] [-RenderText] [-RenderStencilArtwork] [-RenderConnectorLabels] [-ResolveConnectorLabelOverlaps] [-Supersampling ] [-IncludeSvgXmlDeclaration] [-Scale ] [-MaximumOutputWidth ] [-MaximumOutputHeight ] [-BackgroundColor ] [-TargetDpi ] [-MaximumRasterPixels ] [-RasterOverflowBehavior ] [-MaximumOutputCount ] [-MaximumTotalRasterPixels ] [-MaximumTotalEncodedBytes ] [-RenderTimeoutSeconds ] [-MaximumDegreeOfParallelism ] [-TextShapingLanguage ] [] +``` + +## DESCRIPTION +Creates discoverable page and rendering settings for Export-OfficeVisioImage. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $options = New-OfficeVisioImageOptions -PageIndex 0 -PageCount 1 -RenderText -RenderConnectorLabels +Export-OfficeVisioImage -Path .\Diagram.vsdx -OutputPath .\Preview.svg -Options $options +``` + + +## PARAMETERS + +### -BackgroundColor +{{ Fill BackgroundColor Description }} + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeSvgXmlDeclaration +Include an XML declaration in SVG output. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumDegreeOfParallelism +{{ Fill MaximumDegreeOfParallelism Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumOutputCount +{{ Fill MaximumOutputCount Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumOutputHeight +{{ Fill MaximumOutputHeight Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumOutputWidth +{{ Fill MaximumOutputWidth Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumRasterPixels +{{ Fill MaximumRasterPixels Description }} + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumTotalEncodedBytes +{{ Fill MaximumTotalEncodedBytes Description }} + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumTotalRasterPixels +{{ Fill MaximumTotalRasterPixels Description }} + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PageCount +Maximum pages exported. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PageIndex +Zero-based first page index. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RasterOverflowBehavior +{{ Fill RasterOverflowBehavior Description }} + +```yaml +Type: OfficeRasterOverflowBehavior +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: ReduceScale, Throw + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RenderConnectorLabels +Render connector labels. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RenderStencilArtwork +Render supported stencil artwork. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RenderText +Render page text. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RenderTimeoutSeconds +{{ Fill RenderTimeoutSeconds Description }} + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResolveConnectorLabelOverlaps +Resolve connector-label overlaps. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Scale +{{ Fill Scale Description }} + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Supersampling +Raster supersampling factor. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TargetDpi +{{ Fill TargetDpi Description }} + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TextShapingLanguage +{{ Fill TextShapingLanguage Description }} + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.Visio.VisioImageExportOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficeWordComparisonOptions.md b/Docs/New-OfficeWordComparisonOptions.md new file mode 100644 index 00000000..224ea700 --- /dev/null +++ b/Docs/New-OfficeWordComparisonOptions.md @@ -0,0 +1,492 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficeWordComparisonOptions +## SYNOPSIS +Creates discoverable structural comparison settings for Compare-OfficeWordDocument. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficeWordComparisonOptions [-IgnoreWhitespace] [-IgnoreCase] [-CompareRunFormatting] [-CompareEffectiveFormatting] [-CompareParagraphStyleIds] [-CompareRunStyleIds] [-IncludeScope ] [-ExcludeScope ] [-CompareFields] [-CompareContentControls] [-CompareBookmarks] [-CompareHyperlinks] [-CompareLists] [-CompareComments] [-CompareCommentAuthors] [-CompareCommentText] [-CompareCommentResolvedState] [-CompareCommentTargets] [-CompareCommentReplies] [-CompareRevisions] [-CompareRevisionAuthors] [-CompareRevisionText] [-CompareRevisionLocations] [-CompareImages] [-CompareShapes] [-CompareBlockOrder] [-CompareGeneratedIds] [-CompareVolatileMetadata] [] +``` + +## DESCRIPTION +Creates discoverable structural comparison settings for Compare-OfficeWordDocument. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $options = New-OfficeWordComparisonOptions -IgnoreWhitespace -IgnoreCase -CompareVolatileMetadata:$false +Compare-OfficeWordDocument -ReferencePath .\Before.docx -DifferencePath .\After.docx -Options $options +``` + + +## PARAMETERS + +### -CompareBlockOrder +Compare document block order. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CompareBookmarks +Compare bookmarks. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CompareCommentAuthors +Compare comment authors. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CompareCommentReplies +Compare comment replies. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CompareCommentResolvedState +Compare comment resolved state. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CompareComments +Compare comments. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CompareCommentTargets +Compare comment targets. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CompareCommentText +Compare comment text. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CompareContentControls +Compare content controls. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CompareEffectiveFormatting +Compare resolved effective formatting. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CompareFields +Compare fields. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CompareGeneratedIds +Compare generated identifiers. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CompareHyperlinks +Compare hyperlinks. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CompareImages +Compare images. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CompareLists +Compare lists. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CompareParagraphStyleIds +Compare paragraph style identifiers. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CompareRevisionAuthors +Compare revision authors. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CompareRevisionLocations +Compare revision locations. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CompareRevisions +Compare tracked revisions. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CompareRevisionText +Compare revision text. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CompareRunFormatting +Compare direct run formatting. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CompareRunStyleIds +Compare run style identifiers. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CompareShapes +Compare supported shapes. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -CompareVolatileMetadata +Compare volatile timestamps and metadata. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ExcludeScope +Remove these comparison scopes from results. + +```yaml +Type: WordComparisonScope[] +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: Paragraph, Run, Field, ContentControl, Bookmark, Hyperlink, List, Comment, Revision, Table, TableRow, TableCell, Image, Shape + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IgnoreCase +Ignore character casing. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IgnoreWhitespace +Ignore differences caused only by whitespace runs. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeScope +Limit results to these comparison scopes. + +```yaml +Type: WordComparisonScope[] +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: Paragraph, Run, Field, ContentControl, Bookmark, Hyperlink, List, Comment, Revision, Table, TableRow, TableCell, Image, Shape + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.Word.WordComparisonOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficeWordImageOptions.md b/Docs/New-OfficeWordImageOptions.md new file mode 100644 index 00000000..b4d74d7a --- /dev/null +++ b/Docs/New-OfficeWordImageOptions.md @@ -0,0 +1,301 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficeWordImageOptions +## SYNOPSIS +Creates discoverable page and rendering settings for Export-OfficeWordImage. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficeWordImageOptions [-IncludeDocumentContent] [-PageIndex ] [-PageCount ] [-Scale ] [-MaximumOutputWidth ] [-MaximumOutputHeight ] [-BackgroundColor ] [-TargetDpi ] [-MaximumRasterPixels ] [-RasterOverflowBehavior ] [-MaximumOutputCount ] [-MaximumTotalRasterPixels ] [-MaximumTotalEncodedBytes ] [-RenderTimeoutSeconds ] [-MaximumDegreeOfParallelism ] [-TextShapingLanguage ] [] +``` + +## DESCRIPTION +Creates discoverable page and rendering settings for Export-OfficeWordImage. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $options = New-OfficeWordImageOptions -PageIndex 0 -PageCount 2 -TargetDpi 144 -IncludeDocumentContent +Export-OfficeWordImage -Path .\Report.docx -OutputPath .\Pages -Options $options +``` + +Supplying PageCount selects batch export, so OutputPath is a folder. Use -AllPages on the export command for the complete document. + +## PARAMETERS + +### -BackgroundColor +{{ Fill BackgroundColor Description }} + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeDocumentContent +Render document content. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumDegreeOfParallelism +{{ Fill MaximumDegreeOfParallelism Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumOutputCount +{{ Fill MaximumOutputCount Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumOutputHeight +{{ Fill MaximumOutputHeight Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumOutputWidth +{{ Fill MaximumOutputWidth Description }} + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumRasterPixels +{{ Fill MaximumRasterPixels Description }} + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumTotalEncodedBytes +{{ Fill MaximumTotalEncodedBytes Description }} + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -MaximumTotalRasterPixels +{{ Fill MaximumTotalRasterPixels Description }} + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PageCount +Maximum pages exported. Supplying this value selects batch export. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PageIndex +Zero-based first page index. + +```yaml +Type: Int32 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RasterOverflowBehavior +{{ Fill RasterOverflowBehavior Description }} + +```yaml +Type: OfficeRasterOverflowBehavior +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: ReduceScale, Throw + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RenderTimeoutSeconds +{{ Fill RenderTimeoutSeconds Description }} + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Scale +{{ Fill Scale Description }} + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TargetDpi +{{ Fill TargetDpi Description }} + +```yaml +Type: Double +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TextShapingLanguage +{{ Fill TextShapingLanguage Description }} + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.Word.WordImageExportOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficeWordOpenDocumentOptions.md b/Docs/New-OfficeWordOpenDocumentOptions.md new file mode 100644 index 00000000..bb89c2cb --- /dev/null +++ b/Docs/New-OfficeWordOpenDocumentOptions.md @@ -0,0 +1,92 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficeWordOpenDocumentOptions +## SYNOPSIS +Creates Word/OpenDocument conversion settings. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficeWordOpenDocumentOptions [-LossPolicy ] [-IncludeImages] [-IncludeHeadersAndFooters] [] +``` + +## DESCRIPTION +Creates Word/OpenDocument conversion settings. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $options = New-OfficeWordOpenDocumentOptions -IncludeImages -IncludeHeadersAndFooters +ConvertTo-OfficeOpenDocument -Path .\Report.docx -OutputPath .\Report.odt -WordOptions $options +``` + + +## PARAMETERS + +### -IncludeHeadersAndFooters +Copy default headers and footers. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeImages +Copy supported inline images. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LossPolicy +Whether conversion loss is reported or rejected. + +```yaml +Type: OdfConversionLossPolicy +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: ReportOnly, ThrowOnSkippedOrUnsupported, ThrowOnAnyLoss + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.Word.OpenDocument.WordOpenDocumentConversionOptions` + +## RELATED LINKS + +- None diff --git a/Docs/New-OfficeWordRevisionFilter.md b/Docs/New-OfficeWordRevisionFilter.md new file mode 100644 index 00000000..e16f622f --- /dev/null +++ b/Docs/New-OfficeWordRevisionFilter.md @@ -0,0 +1,252 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# New-OfficeWordRevisionFilter +## SYNOPSIS +Creates a discoverable Word revision filter for Resolve-OfficeWordRevision. + +## SYNTAX +### __AllParameterSets +```powershell +New-OfficeWordRevisionFilter [-Author ] [-RevisionId ] [-RevisionType ] [-DateFrom ] [-DateTo ] [-LocationKind ] [-PartUri ] [-InTable] [-NotInTable] [-InContentControl] [-NotInContentControl] [-InTextBox] [-NotInTextBox] [] +``` + +## DESCRIPTION +Creates a discoverable Word revision filter for Resolve-OfficeWordRevision. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> $filter = New-OfficeWordRevisionFilter -Author 'Alex' -InTable +Resolve-OfficeWordRevision -Path .\Review.docx -Action Accept -Filter $filter +``` + + +## PARAMETERS + +### -Author +Revision author. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DateFrom +Earliest revision date. + +```yaml +Type: DateTime +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DateTo +Latest revision date. + +```yaml +Type: DateTime +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InContentControl +Limit results to revisions inside content controls. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InTable +Limit results to revisions inside tables. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InTextBox +Limit results to revisions inside text boxes. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -LocationKind +Word part or container location kind. + +```yaml +Type: WordReviewLocationKind +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: Body, Header, Footer, Footnote, Endnote + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -NotInContentControl +Limit results to revisions outside content controls. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -NotInTable +Limit results to revisions outside tables. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -NotInTextBox +Limit results to revisions outside text boxes. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PartUri +Package part URI. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RevisionId +Revision identifier. + +```yaml +Type: String +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RevisionType +Revision operation type. + +```yaml +Type: WordReviewRevisionType +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: Insertion, Deletion, MoveFrom, MoveTo, ParagraphFormatting, RunFormatting, TableFormatting, TableRowFormatting, TableCellFormatting, SectionFormatting, Unknown + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `None` + +## OUTPUTS + +- `OfficeIMO.Word.WordRevisionFilter` + +## RELATED LINKS + +- None diff --git a/Docs/Readme.md b/Docs/Readme.md index 29fb7f7e..28c11921 100644 --- a/Docs/Readme.md +++ b/Docs/Readme.md @@ -175,6 +175,21 @@ Adds a Markdown table of contents placeholder. ### [Add-OfficeMarkdownTaskList](Add-OfficeMarkdownTaskList.md) Adds a Markdown task list. +### [Add-OfficeOpenDocumentHeading](Add-OfficeOpenDocumentHeading.md) +Adds a heading to an OpenDocument text document. + +### [Add-OfficeOpenDocumentParagraph](Add-OfficeOpenDocumentParagraph.md) +Adds a paragraph to an OpenDocument text document. + +### [Add-OfficeOpenDocumentSheet](Add-OfficeOpenDocumentSheet.md) +Adds a worksheet to an OpenDocument spreadsheet and optionally runs nested cell content. + +### [Add-OfficeOpenDocumentSlide](Add-OfficeOpenDocumentSlide.md) +Adds a slide to an OpenDocument presentation and optionally runs nested slide content. + +### [Add-OfficeOpenDocumentTextBox](Add-OfficeOpenDocumentTextBox.md) +Adds a positioned text box to an OpenDocument presentation slide. + ### [Add-OfficePdfAttachment](Add-OfficePdfAttachment.md) Adds an embedded file attachment to a generated PDF document. @@ -641,7 +656,7 @@ Exports CFX semantic visual-artifact input as a native editable VSDX diagram. Plans, compiles, or exports a Word document to Google Docs. ### [Export-OfficeWordImage](Export-OfficeWordImage.md) -Exports a Word page as PNG or SVG with structured image diagnostics. +Exports one or more Word pages through the format-neutral OfficeIMO image pipeline. ### [Find-OfficeExcel](Find-OfficeExcel.md) Finds text in worksheet values. @@ -1054,15 +1069,45 @@ Creates an in-memory Confluence Cloud session. ### [New-OfficeDocumentReader](New-OfficeDocumentReader.md) Creates an immutable fully configured OfficeIMO document reader. +### [New-OfficeEmailMailboxReaderOptions](New-OfficeEmailMailboxReaderOptions.md) +Creates bounded mbox reader settings through ordinary PowerShell parameters. + +### [New-OfficeEmailMailboxWriterOptions](New-OfficeEmailMailboxWriterOptions.md) +Creates deterministic mbox writer settings through ordinary PowerShell parameters. + +### [New-OfficeEmailReaderOptions](New-OfficeEmailReaderOptions.md) +Creates bounded EML, MSG, and TNEF reader settings through ordinary PowerShell parameters. + +### [New-OfficeEmailStoreReaderOptions](New-OfficeEmailStoreReaderOptions.md) +Creates bounded email-store reader settings without requiring .NET constructor syntax. + +### [New-OfficeEmailWriterOptions](New-OfficeEmailWriterOptions.md) +Creates deterministic email writer settings through ordinary PowerShell parameters. + ### [New-OfficeExcel](New-OfficeExcel.md) Creates a new Excel workbook using the DSL. ### [New-OfficeExcelDashboard](New-OfficeExcelDashboard.md) Builds a worksheet dashboard from tabular data using OfficeIMO dashboard defaults. +### [New-OfficeExcelImageOptions](New-OfficeExcelImageOptions.md) +Creates discoverable rendering settings for Excel range and chart image export. + +### [New-OfficeExcelOpenDocumentOptions](New-OfficeExcelOpenDocumentOptions.md) +Creates Excel/OpenDocument conversion settings. + ### [New-OfficeExcelPdfOptions](New-OfficeExcelPdfOptions.md) Creates discoverable Excel-to-PDF conversion options for Export-OfficeDocumentPdf. +### [New-OfficeExcelWorkbookImageOptions](New-OfficeExcelWorkbookImageOptions.md) +Creates discoverable sheet selection and rendering settings for Export-OfficeExcelImage. + +### [New-OfficeHtmlConversionOptions](New-OfficeHtmlConversionOptions.md) +Creates discoverable parsing, trust, and document settings for HTML conversion. + +### [New-OfficeHtmlRenderOptions](New-OfficeHtmlRenderOptions.md) +Creates discoverable layout, resource-limit, and rendering settings for HTML image export. + ### [New-OfficeMarkdown](New-OfficeMarkdown.md) Creates a Markdown document using a DSL scriptblock. @@ -1075,6 +1120,15 @@ Creates a native ODT, ODS, or ODP document. ### [New-OfficePdf](New-OfficePdf.md) Creates a PDF document using the OfficeIMO.Pdf composition engine. +### [New-OfficePdfExcelImportOptions](New-OfficePdfExcelImportOptions.md) +Creates discoverable PDF-table-to-Excel reconstruction settings. + +### [New-OfficePdfImageOptions](New-OfficePdfImageOptions.md) +Creates discoverable thumbnail and rendering settings for Export-OfficePdfImage. + +### [New-OfficePdfPowerPointImportOptions](New-OfficePdfPowerPointImportOptions.md) +Creates discoverable PDF-to-PowerPoint reconstruction settings. + ### [New-OfficePdfSignature](New-OfficePdfSignature.md) Prepares an existing PDF for external digital signing by appending a signature field, /ByteRange, and reserved /Contents placeholder. @@ -1090,15 +1144,30 @@ Creates a typed text or choice field for a PDF table cell. ### [New-OfficePdfTableCellImage](New-OfficePdfTableCellImage.md) Creates a typed image for a PDF table cell. +### [New-OfficePdfVisualComparisonOptions](New-OfficePdfVisualComparisonOptions.md) +Creates discoverable rendering and tolerance settings for Compare-OfficePdfVisual. + +### [New-OfficePdfWordImportOptions](New-OfficePdfWordImportOptions.md) +Creates discoverable PDF-to-Word reconstruction settings. + ### [New-OfficePowerPoint](New-OfficePowerPoint.md) Creates a PowerPoint presentation using the DSL. ### [New-OfficePowerPointDeckPlan](New-OfficePowerPointDeckPlan.md) Creates a semantic PowerPoint deck plan for designer rendering. +### [New-OfficePowerPointImageOptions](New-OfficePowerPointImageOptions.md) +Creates discoverable slide selection and rendering settings for Export-OfficePowerPointImage. + +### [New-OfficePowerPointOpenDocumentOptions](New-OfficePowerPointOpenDocumentOptions.md) +Creates PowerPoint/OpenDocument conversion settings. + ### [New-OfficePowerPointPdfOptions](New-OfficePowerPointPdfOptions.md) Creates discoverable PowerPoint-to-PDF conversion options for Export-OfficeDocumentPdf. +### [New-OfficeReaderHierarchyOptions](New-OfficeReaderHierarchyOptions.md) +Creates discoverable token and hierarchy settings for Get-OfficeDocumentHierarchy. + ### [New-OfficeRtf](New-OfficeRtf.md) Creates an RTF document with plain paragraph content. @@ -1114,12 +1183,27 @@ Creates a new OfficeIMO.Visio document with an initial page and optional DSL con ### [New-OfficeVisioGallery](New-OfficeVisioGallery.md) Generates the OfficeIMO Visio reference gallery as editable .vsdx diagrams. +### [New-OfficeVisioImageOptions](New-OfficeVisioImageOptions.md) +Creates discoverable page and rendering settings for Export-OfficeVisioImage. + ### [New-OfficeWord](New-OfficeWord.md) Creates a Word document using the DSL. +### [New-OfficeWordComparisonOptions](New-OfficeWordComparisonOptions.md) +Creates discoverable structural comparison settings for Compare-OfficeWordDocument. + +### [New-OfficeWordImageOptions](New-OfficeWordImageOptions.md) +Creates discoverable page and rendering settings for Export-OfficeWordImage. + +### [New-OfficeWordOpenDocumentOptions](New-OfficeWordOpenDocumentOptions.md) +Creates Word/OpenDocument conversion settings. + ### [New-OfficeWordPdfOptions](New-OfficeWordPdfOptions.md) Creates discoverable Word-to-PDF conversion options for Export-OfficeDocumentPdf. +### [New-OfficeWordRevisionFilter](New-OfficeWordRevisionFilter.md) +Creates a discoverable Word revision filter for Resolve-OfficeWordRevision. + ### [New-OfficeWordTableCell](New-OfficeWordTableCell.md) Creates a reusable Word table cell definition for explicit table rows. @@ -1342,6 +1426,9 @@ Sets worksheet view options such as gridlines, direction, zoom, and view mode. ### [Set-OfficeExcelWriteReservation](Set-OfficeExcelWriteReservation.md) Sets workbook write-reservation metadata. +### [Set-OfficeOpenDocumentCell](Set-OfficeOpenDocumentCell.md) +Sets a typed zero-based cell value in an OpenDocument spreadsheet. + ### [Set-OfficePdfAnnotation](Set-OfficePdfAnnotation.md) Updates a single indirect PDF annotation. diff --git a/Docs/Remove-OfficePdfAnnotation.md b/Docs/Remove-OfficePdfAnnotation.md index 9843a6b2..d0b36381 100644 --- a/Docs/Remove-OfficePdfAnnotation.md +++ b/Docs/Remove-OfficePdfAnnotation.md @@ -21,7 +21,7 @@ Removes PDF annotations matching friendly filters. ### EXAMPLE 1 ```powershell -Remove-OfficePdfAnnotation -Path 'C:\Path' +PS> Remove-OfficePdfAnnotation -Path .\Reviewed.pdf -OutputPath .\Clean.pdf -PageNumber 1 -Subtype Text -Confirm:$false ``` diff --git a/Docs/Resolve-OfficeWordRevision.md b/Docs/Resolve-OfficeWordRevision.md index 27bdb728..ba918462 100644 --- a/Docs/Resolve-OfficeWordRevision.md +++ b/Docs/Resolve-OfficeWordRevision.md @@ -26,7 +26,8 @@ Accepts or rejects filtered Word revisions and returns an operation report. ### EXAMPLE 1 ```powershell -PS> $filter = [OfficeIMO.Word.WordRevisionFilter]::new(); $filter.Author = 'Reviewer'; Resolve-OfficeWordRevision -Path .\Draft.docx -OutputPath .\Accepted.docx -Action Accept -Filter $filter +PS> $filter = New-OfficeWordRevisionFilter -Author 'Reviewer' -InContentControl +Resolve-OfficeWordRevision -Path .\Draft.docx -OutputPath .\Accepted.docx -Action Accept -Filter $filter ``` Applies only matching revisions, saves the result, and returns the matched revision report. diff --git a/Docs/Save-OfficeAsciiDoc.md b/Docs/Save-OfficeAsciiDoc.md index 47f91b67..78b50207 100644 --- a/Docs/Save-OfficeAsciiDoc.md +++ b/Docs/Save-OfficeAsciiDoc.md @@ -21,7 +21,8 @@ Saves an OfficeIMO AsciiDoc document. ### EXAMPLE 1 ```powershell -Save-OfficeAsciiDoc -Path 'C:\Path' +PS> $document = Get-OfficeAsciiDoc -Path .\Guide.adoc +$document | Save-OfficeAsciiDoc -Path .\Guide-normalized.adoc -Mode Canonical ``` diff --git a/Docs/Save-OfficeEmail.md b/Docs/Save-OfficeEmail.md index 0d914b96..f69fc347 100644 --- a/Docs/Save-OfficeEmail.md +++ b/Docs/Save-OfficeEmail.md @@ -21,7 +21,8 @@ Saves an email document as EML, EMLX, MSG, or TNEF with fidelity diagnostics. ### EXAMPLE 1 ```powershell -Save-OfficeEmail -Document 'Value' +PS> $options = New-OfficeEmailWriterOptions -ConversionLossPolicy Block +$message | Save-OfficeEmail -Path .\Message.eml -Options $options -PassThru ``` diff --git a/Docs/Save-OfficeEmailMailbox.md b/Docs/Save-OfficeEmailMailbox.md index 8ecd4d61..5d3ca87e 100644 --- a/Docs/Save-OfficeEmailMailbox.md +++ b/Docs/Save-OfficeEmailMailbox.md @@ -21,7 +21,8 @@ Saves a native mbox mailbox with output diagnostics. ### EXAMPLE 1 ```powershell -Save-OfficeEmailMailbox -Mailbox 'Value' +PS> $options = New-OfficeEmailMailboxWriterOptions -Variant Mboxrd +$mailbox | Save-OfficeEmailMailbox -Path .\Archive.mbox -Options $options -PassThru ``` diff --git a/Docs/Save-OfficeLatex.md b/Docs/Save-OfficeLatex.md index 12fd440c..88239c3c 100644 --- a/Docs/Save-OfficeLatex.md +++ b/Docs/Save-OfficeLatex.md @@ -21,7 +21,8 @@ Saves an OfficeIMO LaTeX document. ### EXAMPLE 1 ```powershell -Save-OfficeLatex -Path 'C:\Path' +PS> $document = Get-OfficeLatex -Path .\Article.tex +$document | Save-OfficeLatex -Path .\Article-normalized.tex -Mode Canonical ``` diff --git a/Docs/Set-OfficeOpenDocumentCell.md b/Docs/Set-OfficeOpenDocumentCell.md new file mode 100644 index 00000000..de134ad3 --- /dev/null +++ b/Docs/Set-OfficeOpenDocumentCell.md @@ -0,0 +1,124 @@ +--- +external help file: PSWriteOffice-help.xml +Module Name: PSWriteOffice +online version: https://github.com/EvotecIT/PSWriteOffice +schema: 2.0.0 +--- +# Set-OfficeOpenDocumentCell +## SYNOPSIS +Sets a typed zero-based cell value in an OpenDocument spreadsheet. + +## SYNTAX +### __AllParameterSets +```powershell +Set-OfficeOpenDocumentCell [-Value] -Row -Column [-Sheet ] [-PassThru] [] +``` + +## DESCRIPTION +Sets a typed zero-based cell value in an OpenDocument spreadsheet. + +## EXAMPLES + +### EXAMPLE 1 +```powershell +PS> Set-OfficeOpenDocumentCell -Row 0 -Column 0 -Value 'Healthy' + Set-OfficeOpenDocumentCell -Row 0 -Column 1 -Value $true +``` + + +## PARAMETERS + +### -Column +Zero-based column index. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: True +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PassThru +Emit the updated cell. + +```yaml +Type: SwitchParameter +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Row +Zero-based row index. + +```yaml +Type: Int64 +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: True +Position: named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Sheet +Worksheet target. Omit inside Add-OfficeOpenDocumentSheet -Content. + +```yaml +Type: OdsSheet +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: False +Position: named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Value +String, number, decimal, boolean, date, date-time offset, or time span value. + +```yaml +Type: Object +Parameter Sets: __AllParameterSets +Aliases: None +Possible values: + +Required: True +Position: 0 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +- `OfficeIMO.OpenDocument.OdsSheet` + +## OUTPUTS + +- `OfficeIMO.OpenDocument.OdsCell` + +## RELATED LINKS + +- None diff --git a/Examples/Integrations/Recipe-Mailozaurr-PdfDelivery.ps1 b/Examples/Integrations/Recipe-Mailozaurr-PdfDelivery.ps1 new file mode 100644 index 00000000..50661f8f --- /dev/null +++ b/Examples/Integrations/Recipe-Mailozaurr-PdfDelivery.ps1 @@ -0,0 +1,34 @@ +param( + [string] $SmtpServer = 'smtp.example.com', + [string] $From = 'reports@example.com', + [string] $To = 'operations@example.com', + [string] $OutputPath = '.\Daily-Service-Report.pdf', + [switch] $Send +) + +Import-Module PSWriteOffice -ErrorAction Stop +Import-Module Mailozaurr -ErrorAction Stop + +$services = @( + [pscustomobject]@{ Service = 'Directory'; Status = 'Healthy'; Incidents = 0 } + [pscustomobject]@{ Service = 'Messaging'; Status = 'Attention'; Incidents = 2 } + [pscustomobject]@{ Service = 'Database'; Status = 'Healthy'; Incidents = 0 } +) + +New-OfficePdf -Path $OutputPath -Content { + Add-OfficePdfHeading -Text 'Daily service report' + Add-OfficePdfParagraph -Text "Generated $((Get-Date).ToString('u'))" + Add-OfficePdfTable -InputObject $services +} + +$mail = @{ + From = $From + To = $To + Subject = 'Daily service report' + Body = 'The report generated by PSWriteOffice is attached.' + SmtpServer = $SmtpServer + Attachment = $OutputPath + WhatIf = -not $Send +} + +Send-EmailMessage @mail diff --git a/Examples/Integrations/Recipe-PSEventViewer-OfficeReport.ps1 b/Examples/Integrations/Recipe-PSEventViewer-OfficeReport.ps1 new file mode 100644 index 00000000..eb9b335f --- /dev/null +++ b/Examples/Integrations/Recipe-PSEventViewer-OfficeReport.ps1 @@ -0,0 +1,48 @@ +param( + [string] $OutputDirectory = '.', + [string] $LogName = 'System', + [int] $MaxEvents = 200 +) + +Import-Module PSEventViewer -ErrorAction Stop +Import-Module PSWriteOffice -ErrorAction Stop + +$events = @(Get-EVXEvent ` + -LogName $LogName ` + -Level 1, 2, 3 ` + -TimePeriod Last24Hours ` + -ReadMode Message ` + -MaxEvents $MaxEvents) + +$rows = @($events | Select-Object TimeCreated, Id, ProviderName, LevelDisplayName, MachineName, Message) +if ($rows.Count -eq 0) { + $rows = @([pscustomobject]@{ + TimeCreated = Get-Date + Id = $null + ProviderName = $null + LevelDisplayName = 'Information' + MachineName = $env:COMPUTERNAME + Message = "No warning or error events were returned from $LogName in the last 24 hours." + }) +} + +$excelPath = Join-Path $OutputDirectory 'Event-Report.xlsx' +$wordPath = Join-Path $OutputDirectory 'Event-Report.docx' + +$rows | Export-OfficeExcel ` + -Path $excelPath ` + -WorksheetName 'Events' ` + -TableName 'EventReport' ` + -AutoFit ` + -FreezeTopRow + +New-OfficeWord -Path $wordPath -Content { + Add-OfficeWordParagraph -Text "Event report: $LogName" -Style Heading1 + Add-OfficeWordParagraph -Text "Warnings and errors returned: $($events.Count)" + Add-OfficeWordTable -InputObject $rows -Style GridTable4Accent1 -Layout AutoFitToWindow +} + +[pscustomobject]@{ + ExcelReport = Get-Item -LiteralPath $excelPath + WordReport = Get-Item -LiteralPath $wordPath +} diff --git a/Examples/README.md b/Examples/README.md index e9ed6f5d..750db1b9 100644 --- a/Examples/README.md +++ b/Examples/README.md @@ -1,6 +1,6 @@ # PSWriteOffice example library -These 58 recipes are complete PowerShell scripts that create, read, update, combine, or convert real files. Start with the workflow you need, then move to the larger showcase scripts when you want to see several features working together. +These 60 recipes are complete PowerShell scripts that create, read, update, combine, or convert real files. Start with the workflow you need, then move to the larger showcase scripts when you want to see several features working together. ```powershell Install-Module PSWriteOffice -Scope CurrentUser @@ -52,6 +52,8 @@ The [workflow guide](https://officeimo.com/docs/pswriteoffice/object-workflows/) - [Update and convert RTF](Rtf/Recipe-Rtf-UpdateAndConvert.ps1) and [RTF/Markdown round trip](Rtf/Example-RtfMarkdownRoundTrip.ps1) - [Safe CSV export](Csv/Recipe-Csv-SafeExport.ps1), [CSV basics](Csv/Example-CsvBasic.ps1), [advanced CSV options](Csv/Example-CsvAdvanced.ps1), and [DbaClientX round trip](Csv/Example-CsvDbaClientXRoundTrip.ps1) - [Excel and DbaClientX round trip](Excel/Example-ExcelDbaClientXRoundTrip.ps1) +- [Generate a PDF and deliver it with Mailozaurr](Integrations/Recipe-Mailozaurr-PdfDelivery.ps1) +- [Turn PSEventViewer results into Word and Excel reports](Integrations/Recipe-PSEventViewer-OfficeReport.ps1) - [HTML review for Word](Word/Example-WordHtmlConvert.ps1), [Excel](Excel/Example-ExcelHtmlReview.ps1), and [PowerPoint](PowerPoint/Example-PowerPointHtmlReview.ps1) - [ChartForgeX visuals](Visuals/Example-ChartForgeXVisuals.ps1) - [Confluence report publishing](Confluence/Example-ConfluenceAzureTableReport.ps1) diff --git a/PSWriteOffice.psd1 b/PSWriteOffice.psd1 index 5c1ab8d3..3f34f5b5 100644 --- a/PSWriteOffice.psd1 +++ b/PSWriteOffice.psd1 @@ -1,7 +1,7 @@ @{ AliasesToExport = @('Compare-OfficeExcelSheet', 'ConvertFrom-MarkdownHtml', 'ConvertFrom-PdfHtml', 'ConvertFrom-Rtf', 'ConvertFrom-WordHtml', 'ConvertFrom-WordMarkdown', 'ConvertTo-ExcelHtml', 'ConvertTo-MarkdownHtml', 'ConvertTo-PdfExcel', 'ConvertTo-PdfHtml', 'ConvertTo-PdfPowerPoint', 'ConvertTo-PdfWord', 'ConvertTo-PowerPointHtml', 'ConvertTo-Rtf', 'ConvertTo-VisioPng', 'ConvertTo-VisioSvg', 'ConvertTo-WordHtml', 'ConvertTo-WordMarkdown', 'Edit-ExcelRow', 'ExcelAccessibility', 'ExcelActiveSheet', 'ExcelAutoFilter', 'ExcelAutoFilterClear', 'ExcelAutoFilterSet', 'ExcelAutoFit', 'ExcelCell', 'ExcelChart', 'ExcelChartAxis', 'ExcelChartPoint', 'ExcelChartSeries', 'ExcelChartTrendline', 'ExcelColumn', 'ExcelColumnGroup', 'ExcelColumnStyle', 'ExcelColumnStyleByHeader', 'ExcelComment', 'ExcelCommentAudit', 'ExcelCommentClear', 'ExcelCommentRemove', 'ExcelComments', 'ExcelCommentsAudit', 'ExcelCommentUpdate', 'ExcelCompare', 'ExcelConditionalColorScale', 'ExcelConditionalDataBar', 'ExcelConditionalFormatting', 'ExcelConditionalFormattingClear', 'ExcelConditionalIconSet', 'ExcelConditionalRule', 'ExcelConnectionMetadata', 'ExcelCsvImport', 'ExcelDashboard', 'ExcelDashboardChart', 'ExcelDataModel', 'ExcelDataSet', 'ExcelDataValidation', 'ExcelDataValidationClear', 'ExcelDataValidationMessage', 'ExcelDateSystem', 'ExcelDelimitedImport', 'ExcelDoctor', 'ExcelExecutionPolicy', 'ExcelExport', 'ExcelFormula', 'ExcelFormulaAnalysis', 'ExcelFormulaAudit', 'ExcelFreeze', 'ExcelGridlines', 'ExcelHeaderFooter', 'ExcelHyperlink', 'ExcelHyperlinkHost', 'ExcelHyperlinkSmart', 'ExcelImage', 'ExcelImageFromUrl', 'ExcelImport', 'ExcelInternalLinks', 'ExcelInternalLinksByHeader', 'ExcelMargins', 'ExcelNamedRange', 'ExcelNamedRangeRemove', 'ExcelNamedRangeRename', 'ExcelNew', 'ExcelNumberFormatPreset', 'ExcelOrientation', 'ExcelPackageCopy', 'ExcelPackageMetadata', 'ExcelPageBreak', 'ExcelPageBreakClear', 'ExcelPageBreaks', 'ExcelPageSetup', 'ExcelPivotTable', 'ExcelPivotTables', 'ExcelPowerQuery', 'ExcelPowerQueryMetadata', 'ExcelPreflight', 'ExcelPrintArea', 'ExcelPrintLayout', 'ExcelPrintTitles', 'ExcelProtect', 'ExcelQueryMetadata', 'ExcelRangeClear', 'ExcelRefreshOnOpen', 'ExcelRepair', 'ExcelReportCallout', 'ExcelReportKpiRow', 'ExcelReportLegend', 'ExcelReportParagraph', 'ExcelReportSection', 'ExcelReportSheet', 'ExcelReportSpacer', 'ExcelReportTable', 'ExcelReportTitle', 'ExcelRichText', 'ExcelRichTextRuns', 'ExcelRow', 'ExcelRowEdit', 'ExcelRowGroup', 'ExcelRuntimePreflight', 'ExcelSheet', 'ExcelSheetCopy', 'ExcelSheetJoin', 'ExcelSheetMerge', 'ExcelSheetOrder', 'ExcelSheetTabColor', 'ExcelSheetView', 'ExcelSheetVisibility', 'ExcelSlicer', 'ExcelSort', 'ExcelSparkline', 'ExcelStreamingContract', 'ExcelSubtotals', 'ExcelSubtotalSummary', 'ExcelSummary', 'ExcelTable', 'ExcelTableOfContents', 'ExcelTableStyle', 'ExcelTemplate', 'ExcelTemplateApply', 'ExcelTemplateBinding', 'ExcelTemplateMarkers', 'ExcelTemplateOptionalRow', 'ExcelTemplateOptionalRows', 'ExcelTemplateRow', 'ExcelTemplateRows', 'ExcelTemplateSheet', 'ExcelTemplateSheets', 'ExcelTemplateValidate', 'ExcelTextRun', 'ExcelTheme', 'ExcelThreadedComment', 'ExcelTimeline', 'ExcelUnprotect', 'ExcelUrlLinks', 'ExcelUrlLinksByHeader', 'ExcelValidationCustomFormula', 'ExcelValidationDate', 'ExcelValidationDecimal', 'ExcelValidationList', 'ExcelValidationTextLength', 'ExcelValidationTime', 'ExcelValidationWholeNumber', 'ExcelVisual', 'ExcelWorkbookCompare', 'ExcelWorkbookCopy', 'ExcelWorkbookDoctor', 'ExcelWorkbookJoin', 'ExcelWorkbookMerge', 'ExcelWorkbookProtect', 'ExcelWorkbookRepair', 'ExcelWorkbookUnprotect', 'ExcelWorksheetView', 'ExcelWriteReservation', 'ExcelWriteReservationClear', 'ExcelWriteReservationSet', 'Export-OfficeDocumentAsset', 'Export-VisioStencilPreviewGallery', 'Find-VisioStencil', 'Get-OfficeReaderCapability', 'Import-VisioStencil', 'MarkdownCallout', 'MarkdownCode', 'MarkdownDefinitionList', 'MarkdownDetails', 'MarkdownFrontMatter', 'MarkdownHeading', 'MarkdownHorizontalRule', 'MarkdownHr', 'MarkdownImage', 'MarkdownList', 'MarkdownNew', 'MarkdownParagraph', 'MarkdownQuote', 'MarkdownTable', 'MarkdownTableOfContents', 'MarkdownTaskList', 'MarkdownToc', 'Merge-OfficeExcelSheet', 'Merge-OfficeExcelWorkbook', 'Merge-OfficeWordDocument', 'New-VisioGallery', 'OfficeVisual', 'PdfAttachment', 'PdfBackground', 'PdfBackgroundImage', 'PdfBackgroundShape', 'PdfBookmark', 'PdfCanvasStamp', 'PdfCanvasText', 'PdfCompliance', 'PdfElectronicInvoice', 'PdfFooter', 'PdfFormField', 'PdfHeader', 'PdfHeading', 'PdfHorizontalRule', 'PdfHr', 'PdfImage', 'PdfList', 'PdfMetadata', 'PdfNativeTextRun', 'PdfNew', 'PdfPageBorder', 'PdfPageBreak', 'PdfPageOverlay', 'PdfPageSetup', 'PdfPanel', 'PdfParagraph', 'PdfRow', 'PdfSpace', 'PdfSpacer', 'PdfStamp', 'PdfTable', 'PdfTableCell', 'PdfTableCellCheckBox', 'PdfTableCellField', 'PdfTableCellImage', 'PdfText', 'PdfTextRun', 'PdfTheme', 'PdfVisual', 'PdfWatermark', 'PowerPointNew', 'PowerPointTextRun', 'PptArrange', 'PptBackground', 'PptBullets', 'PptChart', 'PptDeckPlan', 'PptDesignerDeck', 'PptImage', 'PptLayoutBox', 'PptLayoutPlaceholderBounds', 'PptLayoutPlaceholderMargins', 'PptLayoutPlaceholders', 'PptLayoutPlaceholderTextStyle', 'PptNew', 'PptNotes', 'PptPlaceholderText', 'PptPlanCapability', 'PptPlanCardGrid', 'PptPlanCaseStudy', 'PptPlanCoverage', 'PptPlanLogoWall', 'PptPlanProcess', 'PptPlanSection', 'PptSection', 'PptShape', 'PptShapeLayout', 'PptSlide', 'PptSlideLayout', 'PptSlideSize', 'PptTable', 'PptTextBox', 'PptTextRun', 'PptTheme', 'PptThemeColor', 'PptThemeFonts', 'PptThemeName', 'PptTitle', 'PptTransition', 'PptVisual', 'Read-OfficeDocument', 'Read-OfficeDocumentAsset', 'Read-OfficeDocumentChunk', 'Read-OfficeDocumentTable', 'Read-OfficeDocumentVisual', 'Replace-OfficeExcelText', 'Replace-OfficePowerPointText', 'Replace-OfficeRtfText', 'Replace-OfficeWordText', 'RtfNew', 'RtfOpen', 'RtfText', 'Set-OfficeExcelSheetOrder', 'TextRun', 'VisioArrange', 'VisioConnector', 'VisioContainer', 'VisioDiamond', 'VisioEllipse', 'VisioInfo', 'VisioLayout', 'VisioNew', 'VisioOpen', 'VisioPage', 'VisioRect', 'VisioRectangle', 'VisioSave', 'VisioStencil', 'VisioStencilCatalog', 'VisioText', 'VisioTextBox', 'WordBold', 'WordBookmark', 'WordBreak', 'WordChart', 'WordCheckBox', 'WordCheckBoxes', 'WordComboBox', 'WordComboBoxes', 'WordContentControl', 'WordContentControls', 'WordCoverPage', 'WordDatePicker', 'WordDatePickers', 'WordDocumentJoin', 'WordDropDownList', 'WordDropDownLists', 'WordEndnote', 'WordEndnotes', 'WordEquation', 'WordField', 'WordFooter', 'WordFootnote', 'WordFootnotes', 'WordHeader', 'WordHyperlink', 'WordImage', 'WordImages', 'WordImageStyle', 'WordItalic', 'WordList', 'WordListItem', 'WordNew', 'WordPageNumber', 'WordPageSetup', 'WordParagraph', 'WordParagraphStyle', 'WordPictureControl', 'WordPictureControls', 'WordRepeatingSection', 'WordRepeatingSections', 'WordSection', 'WordShape', 'WordShapes', 'WordShapeStyle', 'WordStatistics', 'WordTable', 'WordTableCell', 'WordTableCells', 'WordTableCellSpec', 'WordTableCellStyle', 'WordTableCondition', 'WordTableOfContents', 'WordTabStop', 'WordText', 'WordTextBox', 'WordTextRun', 'WordTextStyle', 'WordVisual', 'WordWatermark') Author = 'Przemyslaw Klys' - CmdletsToExport = @('Add-OfficeExcelAutoFilter', 'Add-OfficeExcelChart', 'Add-OfficeExcelComment', 'Add-OfficeExcelConditionalColorScale', 'Add-OfficeExcelConditionalDataBar', 'Add-OfficeExcelConditionalIconSet', 'Add-OfficeExcelConditionalRule', 'Add-OfficeExcelDashboardChart', 'Add-OfficeExcelDataSet', 'Add-OfficeExcelImage', 'Add-OfficeExcelImageFromUrl', 'Add-OfficeExcelPackageMetadata', 'Add-OfficeExcelPageBreak', 'Add-OfficeExcelPivotTable', 'Add-OfficeExcelPowerQueryMetadata', 'Add-OfficeExcelReportCallout', 'Add-OfficeExcelReportKpiRow', 'Add-OfficeExcelReportLegend', 'Add-OfficeExcelReportParagraph', 'Add-OfficeExcelReportSection', 'Add-OfficeExcelReportSheet', 'Add-OfficeExcelReportSpacer', 'Add-OfficeExcelReportTable', 'Add-OfficeExcelReportTitle', 'Add-OfficeExcelSheet', 'Add-OfficeExcelSlicer', 'Add-OfficeExcelSparkline', 'Add-OfficeExcelSubtotalSummary', 'Add-OfficeExcelTable', 'Add-OfficeExcelTableOfContents', 'Add-OfficeExcelTableRow', 'Add-OfficeExcelThreadedComment', 'Add-OfficeExcelTimeline', 'Add-OfficeExcelValidationCustomFormula', 'Add-OfficeExcelValidationDate', 'Add-OfficeExcelValidationDecimal', 'Add-OfficeExcelValidationList', 'Add-OfficeExcelValidationTextLength', 'Add-OfficeExcelValidationTime', 'Add-OfficeExcelValidationWholeNumber', 'Add-OfficeExcelVisual', 'Add-OfficeMarkdownCallout', 'Add-OfficeMarkdownCode', 'Add-OfficeMarkdownDefinitionList', 'Add-OfficeMarkdownDetails', 'Add-OfficeMarkdownFrontMatter', 'Add-OfficeMarkdownHeading', 'Add-OfficeMarkdownHorizontalRule', 'Add-OfficeMarkdownImage', 'Add-OfficeMarkdownList', 'Add-OfficeMarkdownParagraph', 'Add-OfficeMarkdownQuote', 'Add-OfficeMarkdownTable', 'Add-OfficeMarkdownTableOfContents', 'Add-OfficeMarkdownTaskList', 'Add-OfficePdfAttachment', 'Add-OfficePdfBackgroundShape', 'Add-OfficePdfBookmark', 'Add-OfficePdfCanvas', 'Add-OfficePdfCanvasText', 'Add-OfficePdfFormField', 'Add-OfficePdfHeading', 'Add-OfficePdfHorizontalRule', 'Add-OfficePdfImage', 'Add-OfficePdfList', 'Add-OfficePdfPageBreak', 'Add-OfficePdfPageOverlay', 'Add-OfficePdfPanel', 'Add-OfficePdfParagraph', 'Add-OfficePdfRow', 'Add-OfficePdfSpacer', 'Add-OfficePdfStamp', 'Add-OfficePdfTable', 'Add-OfficePdfText', 'Add-OfficePdfVisual', 'Add-OfficePdfWatermark', 'Add-OfficePowerPointBullets', 'Add-OfficePowerPointChart', 'Add-OfficePowerPointDesignerDeck', 'Add-OfficePowerPointImage', 'Add-OfficePowerPointPlanCapability', 'Add-OfficePowerPointPlanCardGrid', 'Add-OfficePowerPointPlanCaseStudy', 'Add-OfficePowerPointPlanCoverage', 'Add-OfficePowerPointPlanLogoWall', 'Add-OfficePowerPointPlanProcess', 'Add-OfficePowerPointPlanSection', 'Add-OfficePowerPointSection', 'Add-OfficePowerPointShape', 'Add-OfficePowerPointSlide', 'Add-OfficePowerPointTable', 'Add-OfficePowerPointTableRow', 'Add-OfficePowerPointTextBox', 'Add-OfficePowerPointVisual', 'Add-OfficeVisioConnector', 'Add-OfficeVisioContainer', 'Add-OfficeVisioDiamond', 'Add-OfficeVisioEllipse', 'Add-OfficeVisioPage', 'Add-OfficeVisioRectangle', 'Add-OfficeVisioStencilShape', 'Add-OfficeVisioTextBox', 'Add-OfficeWordBookmark', 'Add-OfficeWordBreak', 'Add-OfficeWordChart', 'Add-OfficeWordCheckBox', 'Add-OfficeWordComboBox', 'Add-OfficeWordContentControl', 'Add-OfficeWordCoverPage', 'Add-OfficeWordDatePicker', 'Add-OfficeWordDropDownList', 'Add-OfficeWordEndnote', 'Add-OfficeWordEquation', 'Add-OfficeWordField', 'Add-OfficeWordFooter', 'Add-OfficeWordFootnote', 'Add-OfficeWordHeader', 'Add-OfficeWordHyperlink', 'Add-OfficeWordImage', 'Add-OfficeWordList', 'Add-OfficeWordListItem', 'Add-OfficeWordPageNumber', 'Add-OfficeWordParagraph', 'Add-OfficeWordPictureControl', 'Add-OfficeWordRepeatingSection', 'Add-OfficeWordSection', 'Add-OfficeWordShape', 'Add-OfficeWordTable', 'Add-OfficeWordTableCell', 'Add-OfficeWordTableCondition', 'Add-OfficeWordTableOfContents', 'Add-OfficeWordTableRow', 'Add-OfficeWordTabStop', 'Add-OfficeWordText', 'Add-OfficeWordTextBox', 'Add-OfficeWordVisual', 'Add-OfficeWordWatermark', 'Clear-OfficeExcelAutoFilter', 'Clear-OfficeExcelComment', 'Clear-OfficeExcelConditionalFormatting', 'Clear-OfficeExcelDataValidation', 'Clear-OfficeExcelPageBreak', 'Clear-OfficeExcelRange', 'Clear-OfficeExcelWriteReservation', 'Clear-OfficePdfBackgroundShape', 'Close-OfficeExcel', 'Close-OfficePowerPoint', 'Close-OfficeWord', 'Compare-OfficeExcelRange', 'Compare-OfficeExcelWorkbook', 'Compare-OfficePdfVisual', 'Compare-OfficeWordDocument', 'ConvertFrom-OfficeAsciiDocMarkdown', 'ConvertFrom-OfficeCsv', 'ConvertFrom-OfficeLatexMarkdown', 'ConvertFrom-OfficeMarkdownHtml', 'ConvertFrom-OfficeOpenDocument', 'ConvertFrom-OfficePdfHtml', 'ConvertFrom-OfficeRtf', 'ConvertFrom-OfficeWordHtml', 'ConvertFrom-OfficeWordMarkdown', 'ConvertTo-OfficeAsciiDocMarkdown', 'ConvertTo-OfficeCsv', 'ConvertTo-OfficeExcelHtml', 'ConvertTo-OfficeExcelWorkbook', 'ConvertTo-OfficeLatexMarkdown', 'ConvertTo-OfficeMarkdown', 'ConvertTo-OfficeMarkdownHtml', 'ConvertTo-OfficeOpenDocument', 'ConvertTo-OfficePdfExcel', 'ConvertTo-OfficePdfFlatAnnotation', 'ConvertTo-OfficePdfFlatForm', 'ConvertTo-OfficePdfHtml', 'ConvertTo-OfficePdfMarkdown', 'ConvertTo-OfficePdfOptimized', 'ConvertTo-OfficePdfPowerPoint', 'ConvertTo-OfficePdfRedacted', 'ConvertTo-OfficePdfSanitized', 'ConvertTo-OfficePdfTextRun', 'ConvertTo-OfficePdfWord', 'ConvertTo-OfficePowerPointHtml', 'ConvertTo-OfficeRtf', 'ConvertTo-OfficeVisioPng', 'ConvertTo-OfficeVisioSvg', 'ConvertTo-OfficeVisioVisual', 'ConvertTo-OfficeVisual', 'ConvertTo-OfficeWordDocument', 'ConvertTo-OfficeWordHtml', 'ConvertTo-OfficeWordMarkdown', 'Copy-OfficeExcelSheet', 'Copy-OfficeExcelWorkbook', 'Copy-OfficePdfPage', 'Copy-OfficePowerPointSlide', 'Edit-OfficeExcelRow', 'Export-OfficeCsv', 'Export-OfficeDocumentPdf', 'Export-OfficeExcel', 'Export-OfficeExcelChartImage', 'Export-OfficeExcelGoogleSpreadsheet', 'Export-OfficeExcelImage', 'Export-OfficeExcelRangeImage', 'Export-OfficeHtmlImage', 'Export-OfficePdfImage', 'Export-OfficePdfLayoutOverlay', 'Export-OfficePdfXfdf', 'Export-OfficePowerPointImage', 'Export-OfficeVisioImage', 'Export-OfficeVisioStencilPreviewGallery', 'Export-OfficeVisioVisual', 'Export-OfficeWordGoogleDocument', 'Export-OfficeWordImage', 'Find-OfficeExcel', 'Find-OfficePowerPointShape', 'Find-OfficeVisioStencil', 'Find-OfficeWord', 'Find-OfficeWordList', 'Find-OfficeWordTable', 'Get-OfficeAsciiDoc', 'Get-OfficeConfluenceAttachment', 'Get-OfficeConfluencePage', 'Get-OfficeCsv', 'Get-OfficeDocument', 'Get-OfficeDocumentAsset', 'Get-OfficeDocumentBatch', 'Get-OfficeDocumentCapability', 'Get-OfficeDocumentChunk', 'Get-OfficeDocumentDetection', 'Get-OfficeDocumentHierarchy', 'Get-OfficeDocumentIngest', 'Get-OfficeDocumentPageMarkdown', 'Get-OfficeDocumentStructured', 'Get-OfficeDocumentTable', 'Get-OfficeDocumentVisual', 'Get-OfficeEmail', 'Get-OfficeEmailMailbox', 'Get-OfficeExcel', 'Get-OfficeExcelComment', 'Get-OfficeExcelCommentAudit', 'Get-OfficeExcelConditionalFormatting', 'Get-OfficeExcelData', 'Get-OfficeExcelDataModel', 'Get-OfficeExcelDataValidation', 'Get-OfficeExcelDocumentProperty', 'Get-OfficeExcelFormulaAnalysis', 'Get-OfficeExcelNamedRange', 'Get-OfficeExcelNumberFormatPreset', 'Get-OfficeExcelPageBreak', 'Get-OfficeExcelPivotTable', 'Get-OfficeExcelPreflight', 'Get-OfficeExcelRange', 'Get-OfficeExcelRichText', 'Get-OfficeExcelRuntimePreflight', 'Get-OfficeExcelStreamingContract', 'Get-OfficeExcelSummary', 'Get-OfficeExcelTable', 'Get-OfficeExcelTableStyle', 'Get-OfficeExcelTemplateMarker', 'Get-OfficeExcelUsedRange', 'Get-OfficeExcelWorksheetView', 'Get-OfficeExcelWriteReservation', 'Get-OfficeLatex', 'Get-OfficeMarkdown', 'Get-OfficeMarkdownFrontMatter', 'Get-OfficeMarkdownHeading', 'Get-OfficeMarkdownNode', 'Get-OfficeMarkdownTable', 'Get-OfficeOpenDocument', 'Get-OfficePdf', 'Get-OfficePdfAnnotation', 'Get-OfficePdfAppendOnlyMutation', 'Get-OfficePdfAttachment', 'Get-OfficePdfCompliance', 'Get-OfficePdfDiagnostic', 'Get-OfficePdfFont', 'Get-OfficePdfFormField', 'Get-OfficePdfImage', 'Get-OfficePdfInfo', 'Get-OfficePdfInteractionMap', 'Get-OfficePdfOptimization', 'Get-OfficePdfPreflight', 'Get-OfficePdfRedactionPlan', 'Get-OfficePdfSignature', 'Get-OfficePdfText', 'Get-OfficePdfTextDiagnostic', 'Get-OfficePowerPoint', 'Get-OfficePowerPointInspection', 'Get-OfficePowerPointLayout', 'Get-OfficePowerPointLayoutBox', 'Get-OfficePowerPointLayoutPlaceholder', 'Get-OfficePowerPointNotes', 'Get-OfficePowerPointPlaceholder', 'Get-OfficePowerPointSection', 'Get-OfficePowerPointShape', 'Get-OfficePowerPointSlide', 'Get-OfficePowerPointSlideSummary', 'Get-OfficePowerPointTheme', 'Get-OfficeProtectionCapability', 'Get-OfficeRtf', 'Get-OfficeVisio', 'Get-OfficeVisioInfo', 'Get-OfficeVisioStencilCatalog', 'Get-OfficeWord', 'Get-OfficeWordBookmark', 'Get-OfficeWordCheckBox', 'Get-OfficeWordComboBox', 'Get-OfficeWordContentControl', 'Get-OfficeWordDatePicker', 'Get-OfficeWordDocumentProperty', 'Get-OfficeWordDropDownList', 'Get-OfficeWordEndnote', 'Get-OfficeWordField', 'Get-OfficeWordFootnote', 'Get-OfficeWordHyperlink', 'Get-OfficeWordImage', 'Get-OfficeWordList', 'Get-OfficeWordParagraph', 'Get-OfficeWordPictureControl', 'Get-OfficeWordRepeatingSection', 'Get-OfficeWordReview', 'Get-OfficeWordSection', 'Get-OfficeWordShape', 'Get-OfficeWordStatistics', 'Get-OfficeWordTable', 'Get-OfficeWordTableCell', 'Get-OfficeWordTableOfContents', 'Get-OfficeWordText', 'Import-OfficeCsv', 'Import-OfficeExcel', 'Import-OfficeExcelDelimitedText', 'Import-OfficePdfXfdf', 'Import-OfficePowerPointSlide', 'Import-OfficeVisioStencil', 'Invoke-OfficeExcelAutoFit', 'Invoke-OfficeExcelSort', 'Invoke-OfficeExcelTemplate', 'Invoke-OfficeExcelTemplateOptionalRow', 'Invoke-OfficeExcelTemplateRow', 'Invoke-OfficeExcelTemplateSheet', 'Invoke-OfficePdfOcrMerge', 'Invoke-OfficeWordMailMerge', 'Join-OfficeExcelSheet', 'Join-OfficeExcelWorkbook', 'Join-OfficePdf', 'Join-OfficeWordDocument', 'Move-OfficeExcelSheet', 'Move-OfficePdfPage', 'New-OfficeConfluenceSession', 'New-OfficeDocumentReader', 'New-OfficeExcel', 'New-OfficeExcelDashboard', 'New-OfficeExcelPdfOptions', 'New-OfficeMarkdown', 'New-OfficeMarkdownPdfOptions', 'New-OfficeOpenDocument', 'New-OfficePdf', 'New-OfficePdfSignature', 'New-OfficePdfTableCell', 'New-OfficePdfTableCellCheckBox', 'New-OfficePdfTableCellField', 'New-OfficePdfTableCellImage', 'New-OfficePowerPoint', 'New-OfficePowerPointDeckPlan', 'New-OfficePowerPointPdfOptions', 'New-OfficeRtf', 'New-OfficeRtfPdfOptions', 'New-OfficeTextRun', 'New-OfficeVisio', 'New-OfficeVisioGallery', 'New-OfficeWord', 'New-OfficeWordPdfOptions', 'New-OfficeWordTableCell', 'Protect-OfficeExcelSheet', 'Protect-OfficeExcelWorkbook', 'Protect-OfficeWordDocument', 'Publish-OfficeConfluencePage', 'Remove-OfficeConfluencePage', 'Remove-OfficeExcelComment', 'Remove-OfficeExcelNamedRange', 'Remove-OfficePdfAnnotation', 'Remove-OfficePdfPage', 'Remove-OfficePowerPointSlide', 'Remove-OfficeWordTableOfContents', 'Rename-OfficeExcelNamedRange', 'Rename-OfficePowerPointSection', 'Repair-OfficeExcelWorkbook', 'Resolve-OfficeWordRevision', 'Save-OfficeAsciiDoc', 'Save-OfficeEmail', 'Save-OfficeEmailMailbox', 'Save-OfficeExcel', 'Save-OfficeLatex', 'Save-OfficeMarkdown', 'Save-OfficeOpenDocument', 'Save-OfficePdf', 'Save-OfficePowerPoint', 'Save-OfficeVisio', 'Save-OfficeWord', 'Search-OfficeDocument', 'Send-OfficeConfluenceAttachment', 'Set-OfficeConfluenceManagedSection', 'Set-OfficeExcelActiveSheet', 'Set-OfficeExcelAutoFilter', 'Set-OfficeExcelCell', 'Set-OfficeExcelChartAxis', 'Set-OfficeExcelChartDataLabels', 'Set-OfficeExcelChartLegend', 'Set-OfficeExcelChartPoint', 'Set-OfficeExcelChartSeries', 'Set-OfficeExcelChartStyle', 'Set-OfficeExcelChartTrendline', 'Set-OfficeExcelColumn', 'Set-OfficeExcelColumnGroup', 'Set-OfficeExcelColumnStyleByHeader', 'Set-OfficeExcelDataValidationMessage', 'Set-OfficeExcelDateSystem', 'Set-OfficeExcelDocumentProperty', 'Set-OfficeExcelExecutionPolicy', 'Set-OfficeExcelFormula', 'Set-OfficeExcelFreeze', 'Set-OfficeExcelGridlines', 'Set-OfficeExcelHeaderFooter', 'Set-OfficeExcelHostHyperlink', 'Set-OfficeExcelHyperlink', 'Set-OfficeExcelInternalLinks', 'Set-OfficeExcelInternalLinksByHeader', 'Set-OfficeExcelMargins', 'Set-OfficeExcelNamedRange', 'Set-OfficeExcelOrientation', 'Set-OfficeExcelPageSetup', 'Set-OfficeExcelPrintArea', 'Set-OfficeExcelPrintLayout', 'Set-OfficeExcelPrintTitles', 'Set-OfficeExcelRefreshOnOpen', 'Set-OfficeExcelRichText', 'Set-OfficeExcelRow', 'Set-OfficeExcelRowGroup', 'Set-OfficeExcelSheetTabColor', 'Set-OfficeExcelSheetVisibility', 'Set-OfficeExcelSmartHyperlink', 'Set-OfficeExcelTheme', 'Set-OfficeExcelUrlLinks', 'Set-OfficeExcelUrlLinksByHeader', 'Set-OfficeExcelWorksheetView', 'Set-OfficeExcelWriteReservation', 'Set-OfficePdfAnnotation', 'Set-OfficePdfBackground', 'Set-OfficePdfBackgroundImage', 'Set-OfficePdfCompliance', 'Set-OfficePdfElectronicInvoice', 'Set-OfficePdfFooter', 'Set-OfficePdfForm', 'Set-OfficePdfHeader', 'Set-OfficePdfMetadata', 'Set-OfficePdfPage', 'Set-OfficePdfPageBorder', 'Set-OfficePdfPageSetup', 'Set-OfficePdfSignature', 'Set-OfficePdfTheme', 'Set-OfficePowerPointBackground', 'Set-OfficePowerPointLayoutPlaceholderBounds', 'Set-OfficePowerPointLayoutPlaceholderTextMargins', 'Set-OfficePowerPointLayoutPlaceholderTextStyle', 'Set-OfficePowerPointNotes', 'Set-OfficePowerPointPlaceholderText', 'Set-OfficePowerPointShapeLayout', 'Set-OfficePowerPointShapeText', 'Set-OfficePowerPointSlideLayout', 'Set-OfficePowerPointSlideSize', 'Set-OfficePowerPointSlideTitle', 'Set-OfficePowerPointSlideTransition', 'Set-OfficePowerPointTableCell', 'Set-OfficePowerPointThemeColor', 'Set-OfficePowerPointThemeFonts', 'Set-OfficePowerPointThemeName', 'Set-OfficeVisioShapeLayout', 'Set-OfficeWordBackground', 'Set-OfficeWordDocumentProperty', 'Set-OfficeWordImage', 'Set-OfficeWordPageSetup', 'Set-OfficeWordParagraphStyle', 'Set-OfficeWordShape', 'Set-OfficeWordTableCell', 'Set-OfficeWordTableOfContents', 'Set-OfficeWordTextStyle', 'Split-OfficePdf', 'Test-OfficeExcelAccessibility', 'Test-OfficeExcelTemplateBinding', 'Test-OfficeExcelWorkbook', 'Test-OfficePdfRewrite', 'Unprotect-OfficeExcelSheet', 'Unprotect-OfficeExcelWorkbook', 'Update-OfficeExcelComment', 'Update-OfficeExcelText', 'Update-OfficePowerPointText', 'Update-OfficeRtfText', 'Update-OfficeWordFields', 'Update-OfficeWordTableOfContents', 'Update-OfficeWordText') + CmdletsToExport = @('Add-OfficeExcelAutoFilter', 'Add-OfficeExcelChart', 'Add-OfficeExcelComment', 'Add-OfficeExcelConditionalColorScale', 'Add-OfficeExcelConditionalDataBar', 'Add-OfficeExcelConditionalIconSet', 'Add-OfficeExcelConditionalRule', 'Add-OfficeExcelDashboardChart', 'Add-OfficeExcelDataSet', 'Add-OfficeExcelImage', 'Add-OfficeExcelImageFromUrl', 'Add-OfficeExcelPackageMetadata', 'Add-OfficeExcelPageBreak', 'Add-OfficeExcelPivotTable', 'Add-OfficeExcelPowerQueryMetadata', 'Add-OfficeExcelReportCallout', 'Add-OfficeExcelReportKpiRow', 'Add-OfficeExcelReportLegend', 'Add-OfficeExcelReportParagraph', 'Add-OfficeExcelReportSection', 'Add-OfficeExcelReportSheet', 'Add-OfficeExcelReportSpacer', 'Add-OfficeExcelReportTable', 'Add-OfficeExcelReportTitle', 'Add-OfficeExcelSheet', 'Add-OfficeExcelSlicer', 'Add-OfficeExcelSparkline', 'Add-OfficeExcelSubtotalSummary', 'Add-OfficeExcelTable', 'Add-OfficeExcelTableOfContents', 'Add-OfficeExcelTableRow', 'Add-OfficeExcelThreadedComment', 'Add-OfficeExcelTimeline', 'Add-OfficeExcelValidationCustomFormula', 'Add-OfficeExcelValidationDate', 'Add-OfficeExcelValidationDecimal', 'Add-OfficeExcelValidationList', 'Add-OfficeExcelValidationTextLength', 'Add-OfficeExcelValidationTime', 'Add-OfficeExcelValidationWholeNumber', 'Add-OfficeExcelVisual', 'Add-OfficeMarkdownCallout', 'Add-OfficeMarkdownCode', 'Add-OfficeMarkdownDefinitionList', 'Add-OfficeMarkdownDetails', 'Add-OfficeMarkdownFrontMatter', 'Add-OfficeMarkdownHeading', 'Add-OfficeMarkdownHorizontalRule', 'Add-OfficeMarkdownImage', 'Add-OfficeMarkdownList', 'Add-OfficeMarkdownParagraph', 'Add-OfficeMarkdownQuote', 'Add-OfficeMarkdownTable', 'Add-OfficeMarkdownTableOfContents', 'Add-OfficeMarkdownTaskList', 'Add-OfficeOpenDocumentHeading', 'Add-OfficeOpenDocumentParagraph', 'Add-OfficeOpenDocumentSheet', 'Add-OfficeOpenDocumentSlide', 'Add-OfficeOpenDocumentTextBox', 'Add-OfficePdfAttachment', 'Add-OfficePdfBackgroundShape', 'Add-OfficePdfBookmark', 'Add-OfficePdfCanvas', 'Add-OfficePdfCanvasText', 'Add-OfficePdfFormField', 'Add-OfficePdfHeading', 'Add-OfficePdfHorizontalRule', 'Add-OfficePdfImage', 'Add-OfficePdfList', 'Add-OfficePdfPageBreak', 'Add-OfficePdfPageOverlay', 'Add-OfficePdfPanel', 'Add-OfficePdfParagraph', 'Add-OfficePdfRow', 'Add-OfficePdfSpacer', 'Add-OfficePdfStamp', 'Add-OfficePdfTable', 'Add-OfficePdfText', 'Add-OfficePdfVisual', 'Add-OfficePdfWatermark', 'Add-OfficePowerPointBullets', 'Add-OfficePowerPointChart', 'Add-OfficePowerPointDesignerDeck', 'Add-OfficePowerPointImage', 'Add-OfficePowerPointPlanCapability', 'Add-OfficePowerPointPlanCardGrid', 'Add-OfficePowerPointPlanCaseStudy', 'Add-OfficePowerPointPlanCoverage', 'Add-OfficePowerPointPlanLogoWall', 'Add-OfficePowerPointPlanProcess', 'Add-OfficePowerPointPlanSection', 'Add-OfficePowerPointSection', 'Add-OfficePowerPointShape', 'Add-OfficePowerPointSlide', 'Add-OfficePowerPointTable', 'Add-OfficePowerPointTableRow', 'Add-OfficePowerPointTextBox', 'Add-OfficePowerPointVisual', 'Add-OfficeVisioConnector', 'Add-OfficeVisioContainer', 'Add-OfficeVisioDiamond', 'Add-OfficeVisioEllipse', 'Add-OfficeVisioPage', 'Add-OfficeVisioRectangle', 'Add-OfficeVisioStencilShape', 'Add-OfficeVisioTextBox', 'Add-OfficeWordBookmark', 'Add-OfficeWordBreak', 'Add-OfficeWordChart', 'Add-OfficeWordCheckBox', 'Add-OfficeWordComboBox', 'Add-OfficeWordContentControl', 'Add-OfficeWordCoverPage', 'Add-OfficeWordDatePicker', 'Add-OfficeWordDropDownList', 'Add-OfficeWordEndnote', 'Add-OfficeWordEquation', 'Add-OfficeWordField', 'Add-OfficeWordFooter', 'Add-OfficeWordFootnote', 'Add-OfficeWordHeader', 'Add-OfficeWordHyperlink', 'Add-OfficeWordImage', 'Add-OfficeWordList', 'Add-OfficeWordListItem', 'Add-OfficeWordPageNumber', 'Add-OfficeWordParagraph', 'Add-OfficeWordPictureControl', 'Add-OfficeWordRepeatingSection', 'Add-OfficeWordSection', 'Add-OfficeWordShape', 'Add-OfficeWordTable', 'Add-OfficeWordTableCell', 'Add-OfficeWordTableCondition', 'Add-OfficeWordTableOfContents', 'Add-OfficeWordTableRow', 'Add-OfficeWordTabStop', 'Add-OfficeWordText', 'Add-OfficeWordTextBox', 'Add-OfficeWordVisual', 'Add-OfficeWordWatermark', 'Clear-OfficeExcelAutoFilter', 'Clear-OfficeExcelComment', 'Clear-OfficeExcelConditionalFormatting', 'Clear-OfficeExcelDataValidation', 'Clear-OfficeExcelPageBreak', 'Clear-OfficeExcelRange', 'Clear-OfficeExcelWriteReservation', 'Clear-OfficePdfBackgroundShape', 'Close-OfficeExcel', 'Close-OfficePowerPoint', 'Close-OfficeWord', 'Compare-OfficeExcelRange', 'Compare-OfficeExcelWorkbook', 'Compare-OfficePdfVisual', 'Compare-OfficeWordDocument', 'ConvertFrom-OfficeAsciiDocMarkdown', 'ConvertFrom-OfficeCsv', 'ConvertFrom-OfficeLatexMarkdown', 'ConvertFrom-OfficeMarkdownHtml', 'ConvertFrom-OfficeOpenDocument', 'ConvertFrom-OfficePdfHtml', 'ConvertFrom-OfficeRtf', 'ConvertFrom-OfficeWordHtml', 'ConvertFrom-OfficeWordMarkdown', 'ConvertTo-OfficeAsciiDocMarkdown', 'ConvertTo-OfficeCsv', 'ConvertTo-OfficeExcelHtml', 'ConvertTo-OfficeExcelWorkbook', 'ConvertTo-OfficeLatexMarkdown', 'ConvertTo-OfficeMarkdown', 'ConvertTo-OfficeMarkdownHtml', 'ConvertTo-OfficeOpenDocument', 'ConvertTo-OfficePdfExcel', 'ConvertTo-OfficePdfFlatAnnotation', 'ConvertTo-OfficePdfFlatForm', 'ConvertTo-OfficePdfHtml', 'ConvertTo-OfficePdfMarkdown', 'ConvertTo-OfficePdfOptimized', 'ConvertTo-OfficePdfPowerPoint', 'ConvertTo-OfficePdfRedacted', 'ConvertTo-OfficePdfSanitized', 'ConvertTo-OfficePdfTextRun', 'ConvertTo-OfficePdfWord', 'ConvertTo-OfficePowerPointHtml', 'ConvertTo-OfficeRtf', 'ConvertTo-OfficeVisioPng', 'ConvertTo-OfficeVisioSvg', 'ConvertTo-OfficeVisioVisual', 'ConvertTo-OfficeVisual', 'ConvertTo-OfficeWordDocument', 'ConvertTo-OfficeWordHtml', 'ConvertTo-OfficeWordMarkdown', 'Copy-OfficeExcelSheet', 'Copy-OfficeExcelWorkbook', 'Copy-OfficePdfPage', 'Copy-OfficePowerPointSlide', 'Edit-OfficeExcelRow', 'Export-OfficeCsv', 'Export-OfficeDocumentPdf', 'Export-OfficeExcel', 'Export-OfficeExcelChartImage', 'Export-OfficeExcelGoogleSpreadsheet', 'Export-OfficeExcelImage', 'Export-OfficeExcelRangeImage', 'Export-OfficeHtmlImage', 'Export-OfficePdfImage', 'Export-OfficePdfLayoutOverlay', 'Export-OfficePdfXfdf', 'Export-OfficePowerPointImage', 'Export-OfficeVisioImage', 'Export-OfficeVisioStencilPreviewGallery', 'Export-OfficeVisioVisual', 'Export-OfficeWordGoogleDocument', 'Export-OfficeWordImage', 'Find-OfficeExcel', 'Find-OfficePowerPointShape', 'Find-OfficeVisioStencil', 'Find-OfficeWord', 'Find-OfficeWordList', 'Find-OfficeWordTable', 'Get-OfficeAsciiDoc', 'Get-OfficeConfluenceAttachment', 'Get-OfficeConfluencePage', 'Get-OfficeCsv', 'Get-OfficeDocument', 'Get-OfficeDocumentAsset', 'Get-OfficeDocumentBatch', 'Get-OfficeDocumentCapability', 'Get-OfficeDocumentChunk', 'Get-OfficeDocumentDetection', 'Get-OfficeDocumentHierarchy', 'Get-OfficeDocumentIngest', 'Get-OfficeDocumentPageMarkdown', 'Get-OfficeDocumentStructured', 'Get-OfficeDocumentTable', 'Get-OfficeDocumentVisual', 'Get-OfficeEmail', 'Get-OfficeEmailMailbox', 'Get-OfficeExcel', 'Get-OfficeExcelComment', 'Get-OfficeExcelCommentAudit', 'Get-OfficeExcelConditionalFormatting', 'Get-OfficeExcelData', 'Get-OfficeExcelDataModel', 'Get-OfficeExcelDataValidation', 'Get-OfficeExcelDocumentProperty', 'Get-OfficeExcelFormulaAnalysis', 'Get-OfficeExcelNamedRange', 'Get-OfficeExcelNumberFormatPreset', 'Get-OfficeExcelPageBreak', 'Get-OfficeExcelPivotTable', 'Get-OfficeExcelPreflight', 'Get-OfficeExcelRange', 'Get-OfficeExcelRichText', 'Get-OfficeExcelRuntimePreflight', 'Get-OfficeExcelStreamingContract', 'Get-OfficeExcelSummary', 'Get-OfficeExcelTable', 'Get-OfficeExcelTableStyle', 'Get-OfficeExcelTemplateMarker', 'Get-OfficeExcelUsedRange', 'Get-OfficeExcelWorksheetView', 'Get-OfficeExcelWriteReservation', 'Get-OfficeLatex', 'Get-OfficeMarkdown', 'Get-OfficeMarkdownFrontMatter', 'Get-OfficeMarkdownHeading', 'Get-OfficeMarkdownNode', 'Get-OfficeMarkdownTable', 'Get-OfficeOpenDocument', 'Get-OfficePdf', 'Get-OfficePdfAnnotation', 'Get-OfficePdfAppendOnlyMutation', 'Get-OfficePdfAttachment', 'Get-OfficePdfCompliance', 'Get-OfficePdfDiagnostic', 'Get-OfficePdfFont', 'Get-OfficePdfFormField', 'Get-OfficePdfImage', 'Get-OfficePdfInfo', 'Get-OfficePdfInteractionMap', 'Get-OfficePdfOptimization', 'Get-OfficePdfPreflight', 'Get-OfficePdfRedactionPlan', 'Get-OfficePdfSignature', 'Get-OfficePdfText', 'Get-OfficePdfTextDiagnostic', 'Get-OfficePowerPoint', 'Get-OfficePowerPointInspection', 'Get-OfficePowerPointLayout', 'Get-OfficePowerPointLayoutBox', 'Get-OfficePowerPointLayoutPlaceholder', 'Get-OfficePowerPointNotes', 'Get-OfficePowerPointPlaceholder', 'Get-OfficePowerPointSection', 'Get-OfficePowerPointShape', 'Get-OfficePowerPointSlide', 'Get-OfficePowerPointSlideSummary', 'Get-OfficePowerPointTheme', 'Get-OfficeProtectionCapability', 'Get-OfficeRtf', 'Get-OfficeVisio', 'Get-OfficeVisioInfo', 'Get-OfficeVisioStencilCatalog', 'Get-OfficeWord', 'Get-OfficeWordBookmark', 'Get-OfficeWordCheckBox', 'Get-OfficeWordComboBox', 'Get-OfficeWordContentControl', 'Get-OfficeWordDatePicker', 'Get-OfficeWordDocumentProperty', 'Get-OfficeWordDropDownList', 'Get-OfficeWordEndnote', 'Get-OfficeWordField', 'Get-OfficeWordFootnote', 'Get-OfficeWordHyperlink', 'Get-OfficeWordImage', 'Get-OfficeWordList', 'Get-OfficeWordParagraph', 'Get-OfficeWordPictureControl', 'Get-OfficeWordRepeatingSection', 'Get-OfficeWordReview', 'Get-OfficeWordSection', 'Get-OfficeWordShape', 'Get-OfficeWordStatistics', 'Get-OfficeWordTable', 'Get-OfficeWordTableCell', 'Get-OfficeWordTableOfContents', 'Get-OfficeWordText', 'Import-OfficeCsv', 'Import-OfficeExcel', 'Import-OfficeExcelDelimitedText', 'Import-OfficePdfXfdf', 'Import-OfficePowerPointSlide', 'Import-OfficeVisioStencil', 'Invoke-OfficeExcelAutoFit', 'Invoke-OfficeExcelSort', 'Invoke-OfficeExcelTemplate', 'Invoke-OfficeExcelTemplateOptionalRow', 'Invoke-OfficeExcelTemplateRow', 'Invoke-OfficeExcelTemplateSheet', 'Invoke-OfficePdfOcrMerge', 'Invoke-OfficeWordMailMerge', 'Join-OfficeExcelSheet', 'Join-OfficeExcelWorkbook', 'Join-OfficePdf', 'Join-OfficeWordDocument', 'Move-OfficeExcelSheet', 'Move-OfficePdfPage', 'New-OfficeConfluenceSession', 'New-OfficeDocumentReader', 'New-OfficeEmailMailboxReaderOptions', 'New-OfficeEmailMailboxWriterOptions', 'New-OfficeEmailReaderOptions', 'New-OfficeEmailStoreReaderOptions', 'New-OfficeEmailWriterOptions', 'New-OfficeExcel', 'New-OfficeExcelDashboard', 'New-OfficeExcelImageOptions', 'New-OfficeExcelOpenDocumentOptions', 'New-OfficeExcelPdfOptions', 'New-OfficeExcelWorkbookImageOptions', 'New-OfficeHtmlConversionOptions', 'New-OfficeHtmlRenderOptions', 'New-OfficeMarkdown', 'New-OfficeMarkdownPdfOptions', 'New-OfficeOpenDocument', 'New-OfficePdf', 'New-OfficePdfExcelImportOptions', 'New-OfficePdfImageOptions', 'New-OfficePdfPowerPointImportOptions', 'New-OfficePdfSignature', 'New-OfficePdfTableCell', 'New-OfficePdfTableCellCheckBox', 'New-OfficePdfTableCellField', 'New-OfficePdfTableCellImage', 'New-OfficePdfVisualComparisonOptions', 'New-OfficePdfWordImportOptions', 'New-OfficePowerPoint', 'New-OfficePowerPointDeckPlan', 'New-OfficePowerPointImageOptions', 'New-OfficePowerPointOpenDocumentOptions', 'New-OfficePowerPointPdfOptions', 'New-OfficeReaderHierarchyOptions', 'New-OfficeRtf', 'New-OfficeRtfPdfOptions', 'New-OfficeTextRun', 'New-OfficeVisio', 'New-OfficeVisioGallery', 'New-OfficeVisioImageOptions', 'New-OfficeWord', 'New-OfficeWordComparisonOptions', 'New-OfficeWordImageOptions', 'New-OfficeWordOpenDocumentOptions', 'New-OfficeWordPdfOptions', 'New-OfficeWordRevisionFilter', 'New-OfficeWordTableCell', 'Protect-OfficeExcelSheet', 'Protect-OfficeExcelWorkbook', 'Protect-OfficeWordDocument', 'Publish-OfficeConfluencePage', 'Remove-OfficeConfluencePage', 'Remove-OfficeExcelComment', 'Remove-OfficeExcelNamedRange', 'Remove-OfficePdfAnnotation', 'Remove-OfficePdfPage', 'Remove-OfficePowerPointSlide', 'Remove-OfficeWordTableOfContents', 'Rename-OfficeExcelNamedRange', 'Rename-OfficePowerPointSection', 'Repair-OfficeExcelWorkbook', 'Resolve-OfficeWordRevision', 'Save-OfficeAsciiDoc', 'Save-OfficeEmail', 'Save-OfficeEmailMailbox', 'Save-OfficeExcel', 'Save-OfficeLatex', 'Save-OfficeMarkdown', 'Save-OfficeOpenDocument', 'Save-OfficePdf', 'Save-OfficePowerPoint', 'Save-OfficeVisio', 'Save-OfficeWord', 'Search-OfficeDocument', 'Send-OfficeConfluenceAttachment', 'Set-OfficeConfluenceManagedSection', 'Set-OfficeExcelActiveSheet', 'Set-OfficeExcelAutoFilter', 'Set-OfficeExcelCell', 'Set-OfficeExcelChartAxis', 'Set-OfficeExcelChartDataLabels', 'Set-OfficeExcelChartLegend', 'Set-OfficeExcelChartPoint', 'Set-OfficeExcelChartSeries', 'Set-OfficeExcelChartStyle', 'Set-OfficeExcelChartTrendline', 'Set-OfficeExcelColumn', 'Set-OfficeExcelColumnGroup', 'Set-OfficeExcelColumnStyleByHeader', 'Set-OfficeExcelDataValidationMessage', 'Set-OfficeExcelDateSystem', 'Set-OfficeExcelDocumentProperty', 'Set-OfficeExcelExecutionPolicy', 'Set-OfficeExcelFormula', 'Set-OfficeExcelFreeze', 'Set-OfficeExcelGridlines', 'Set-OfficeExcelHeaderFooter', 'Set-OfficeExcelHostHyperlink', 'Set-OfficeExcelHyperlink', 'Set-OfficeExcelInternalLinks', 'Set-OfficeExcelInternalLinksByHeader', 'Set-OfficeExcelMargins', 'Set-OfficeExcelNamedRange', 'Set-OfficeExcelOrientation', 'Set-OfficeExcelPageSetup', 'Set-OfficeExcelPrintArea', 'Set-OfficeExcelPrintLayout', 'Set-OfficeExcelPrintTitles', 'Set-OfficeExcelRefreshOnOpen', 'Set-OfficeExcelRichText', 'Set-OfficeExcelRow', 'Set-OfficeExcelRowGroup', 'Set-OfficeExcelSheetTabColor', 'Set-OfficeExcelSheetVisibility', 'Set-OfficeExcelSmartHyperlink', 'Set-OfficeExcelTheme', 'Set-OfficeExcelUrlLinks', 'Set-OfficeExcelUrlLinksByHeader', 'Set-OfficeExcelWorksheetView', 'Set-OfficeExcelWriteReservation', 'Set-OfficeOpenDocumentCell', 'Set-OfficePdfAnnotation', 'Set-OfficePdfBackground', 'Set-OfficePdfBackgroundImage', 'Set-OfficePdfCompliance', 'Set-OfficePdfElectronicInvoice', 'Set-OfficePdfFooter', 'Set-OfficePdfForm', 'Set-OfficePdfHeader', 'Set-OfficePdfMetadata', 'Set-OfficePdfPage', 'Set-OfficePdfPageBorder', 'Set-OfficePdfPageSetup', 'Set-OfficePdfSignature', 'Set-OfficePdfTheme', 'Set-OfficePowerPointBackground', 'Set-OfficePowerPointLayoutPlaceholderBounds', 'Set-OfficePowerPointLayoutPlaceholderTextMargins', 'Set-OfficePowerPointLayoutPlaceholderTextStyle', 'Set-OfficePowerPointNotes', 'Set-OfficePowerPointPlaceholderText', 'Set-OfficePowerPointShapeLayout', 'Set-OfficePowerPointShapeText', 'Set-OfficePowerPointSlideLayout', 'Set-OfficePowerPointSlideSize', 'Set-OfficePowerPointSlideTitle', 'Set-OfficePowerPointSlideTransition', 'Set-OfficePowerPointTableCell', 'Set-OfficePowerPointThemeColor', 'Set-OfficePowerPointThemeFonts', 'Set-OfficePowerPointThemeName', 'Set-OfficeVisioShapeLayout', 'Set-OfficeWordBackground', 'Set-OfficeWordDocumentProperty', 'Set-OfficeWordImage', 'Set-OfficeWordPageSetup', 'Set-OfficeWordParagraphStyle', 'Set-OfficeWordShape', 'Set-OfficeWordTableCell', 'Set-OfficeWordTableOfContents', 'Set-OfficeWordTextStyle', 'Split-OfficePdf', 'Test-OfficeExcelAccessibility', 'Test-OfficeExcelTemplateBinding', 'Test-OfficeExcelWorkbook', 'Test-OfficePdfRewrite', 'Unprotect-OfficeExcelSheet', 'Unprotect-OfficeExcelWorkbook', 'Update-OfficeExcelComment', 'Update-OfficeExcelText', 'Update-OfficePowerPointText', 'Update-OfficeRtfText', 'Update-OfficeWordFields', 'Update-OfficeWordTableOfContents', 'Update-OfficeWordText') CompanyName = 'Evotec' CompatiblePSEditions = @('Desktop', 'Core') Copyright = '(c) 2011 - 2026 Przemyslaw Klys @ Evotec. All rights reserved.' diff --git a/README.MD b/README.MD index 54c2c942..bc0940bd 100644 --- a/README.MD +++ b/README.MD @@ -87,7 +87,8 @@ $latex = Get-OfficeMarkdown -Path .\Paper.md | Native email and Google Workspace commands keep provider and credential ownership explicit: ```powershell -$message = Get-OfficeEmail -Path .\Message.msg -AsResult +$readerOptions = New-OfficeEmailReaderOptions -ExcludeAttachmentContent -MaxAttachmentBytes 25MB +$message = Get-OfficeEmail -Path .\Message.msg -Options $readerOptions -AsResult $mailbox = Get-OfficeEmailMailbox -Path .\Archive.mbox -AsResult $docsPlan = Export-OfficeWordGoogleDocument -Path .\Report.docx -PlanOnly $sheetsBatch = Export-OfficeExcelGoogleSpreadsheet -Path .\Data.xlsx -AsBatch @@ -95,6 +96,15 @@ $sheetsBatch = Export-OfficeExcelGoogleSpreadsheet -Path .\Data.xlsx -AsBatch PSWriteOffice owns the document-workflow side of email: reading or writing standalone message and mailbox artifacts, and searching supported mail sources through the normalized `OfficeIMO.Reader` model. [Mailozaurr](https://github.com/EvotecIT/Mailozaurr) owns operational email and mailbox management, including transport, authentication, mailbox/store lifecycle, PST/OST import and conversion, querying, export, and delivery. Use PSWriteOffice when mail is an input to a report or mixed-document search; use Mailozaurr to acquire, manage, convert, or send the mail, then pass ordinary paths and attachments between the modules. +The integration recipes make those boundaries executable: + +```powershell +.\Examples\Integrations\Recipe-Mailozaurr-PdfDelivery.ps1 -SmtpServer smtp.example.com +.\Examples\Integrations\Recipe-PSEventViewer-OfficeReport.ps1 -LogName System -MaxEvents 200 +``` + +The Mailozaurr recipe generates a real PDF but keeps delivery under `-WhatIf` until `-Send` is supplied. The PSEventViewer recipe queries events once and turns the projected results into Word and Excel reports. + Confluence writes can be reviewed before a session or tenant is involved: ```powershell diff --git a/Sources/PSWriteOffice/Cmdlets/AsciiDoc/SaveOfficeAsciiDocCommand.cs b/Sources/PSWriteOffice/Cmdlets/AsciiDoc/SaveOfficeAsciiDocCommand.cs index b4b4aac4..df8c94a0 100644 --- a/Sources/PSWriteOffice/Cmdlets/AsciiDoc/SaveOfficeAsciiDocCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/AsciiDoc/SaveOfficeAsciiDocCommand.cs @@ -5,6 +5,12 @@ namespace PSWriteOffice.Cmdlets.AsciiDoc; /// Saves an OfficeIMO AsciiDoc document. +/// +/// Load, edit, and save an AsciiDoc document. +/// PS> +/// $document = Get-OfficeAsciiDoc -Path .\Guide.adoc +/// $document | Save-OfficeAsciiDoc -Path .\Guide-normalized.adoc -Mode Canonical +/// [Cmdlet(VerbsData.Save, "OfficeAsciiDoc", SupportsShouldProcess = true)] [OutputType(typeof(AsciiDocDocument))] public sealed class SaveOfficeAsciiDocCommand : PSCmdlet diff --git a/Sources/PSWriteOffice/Cmdlets/Email/GetOfficeEmailCommand.cs b/Sources/PSWriteOffice/Cmdlets/Email/GetOfficeEmailCommand.cs index 107d62e2..e05a2536 100644 --- a/Sources/PSWriteOffice/Cmdlets/Email/GetOfficeEmailCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Email/GetOfficeEmailCommand.cs @@ -8,6 +8,12 @@ namespace PSWriteOffice.Cmdlets.Email; /// Reads a native EML, EMLX, MSG, or TNEF artifact with bounded diagnostics. +/// +/// Read a message without retaining attachment payloads. +/// PS> +/// $options = New-OfficeEmailReaderOptions -ExcludeAttachmentContent -MaxAttachmentBytes 25MB +/// Get-OfficeEmail -Path .\Message.msg -Options $options -AsResult +/// [Cmdlet(VerbsCommon.Get, "OfficeEmail")] [OutputType(typeof(EmailDocument), typeof(EmailReadResult), typeof(EmailStoreReadResult))] public sealed class GetOfficeEmailCommand : PSCmdlet diff --git a/Sources/PSWriteOffice/Cmdlets/Email/GetOfficeEmailMailboxCommand.cs b/Sources/PSWriteOffice/Cmdlets/Email/GetOfficeEmailMailboxCommand.cs index 2853c7e3..d620793d 100644 --- a/Sources/PSWriteOffice/Cmdlets/Email/GetOfficeEmailMailboxCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Email/GetOfficeEmailMailboxCommand.cs @@ -4,6 +4,12 @@ namespace PSWriteOffice.Cmdlets.Email; /// Reads a native mbox mailbox with bounded per-message diagnostics. +/// +/// Read a bounded mbox mailbox with diagnostics. +/// PS> +/// $options = New-OfficeEmailMailboxReaderOptions -MaxMessageCount 5000 +/// Get-OfficeEmailMailbox -Path .\Archive.mbox -Options $options -AsResult +/// [Cmdlet(VerbsCommon.Get, "OfficeEmailMailbox")] [OutputType(typeof(EmailMailbox), typeof(EmailMailboxReadResult))] public sealed class GetOfficeEmailMailboxCommand : PSCmdlet diff --git a/Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailMailboxReaderOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailMailboxReaderOptionsCommand.cs new file mode 100644 index 00000000..fb2f9f74 --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailMailboxReaderOptionsCommand.cs @@ -0,0 +1,32 @@ +using System.Management.Automation; +using OfficeIMO.Email; + +namespace PSWriteOffice.Cmdlets.Email; + +/// Creates bounded mbox reader settings through ordinary PowerShell parameters. +/// +/// Read a bounded mailbox with a reusable per-message policy. +/// PS> +/// $messageOptions = New-OfficeEmailReaderOptions -ExcludeAttachmentContent +/// $options = New-OfficeEmailMailboxReaderOptions -MessageOptions $messageOptions -MaxMessageCount 5000 +/// Get-OfficeEmailMailbox -Path .\Archive.mbox -Options $options -AsResult +/// +[Cmdlet(VerbsCommon.New, "OfficeEmailMailboxReaderOptions")] +[OutputType(typeof(EmailMailboxReaderOptions))] +public sealed class NewOfficeEmailMailboxReaderOptionsCommand : PSCmdlet { + /// Bounded policy applied independently to each message. + [Parameter(ValueFromPipeline = true)] public EmailReaderOptions? MessageOptions { get; set; } + /// Escaping convention to decode. + [Parameter] public MboxVariant Variant { get; set; } = MboxVariant.Auto; + /// Maximum messages in one mailbox. + [Parameter] [ValidateRange(1, int.MaxValue)] public int MaxMessageCount { get; set; } = 100000; + /// Maximum aggregate source bytes consumed from one mailbox. + [Parameter] [ValidateRange(1, long.MaxValue)] public long MaxMailboxBytes { get; set; } = 512L * 1024L * 1024L; + + /// + protected override void ProcessRecord() => WriteObject(new EmailMailboxReaderOptions( + MaxMailboxBytes, + MessageOptions, + Variant, + MaxMessageCount)); +} diff --git a/Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailMailboxWriterOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailMailboxWriterOptionsCommand.cs new file mode 100644 index 00000000..2d3976e0 --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailMailboxWriterOptionsCommand.cs @@ -0,0 +1,24 @@ +using System.Management.Automation; +using OfficeIMO.Email; + +namespace PSWriteOffice.Cmdlets.Email; + +/// Creates deterministic mbox writer settings through ordinary PowerShell parameters. +/// +/// Write an mboxo mailbox with a reusable per-message policy. +/// PS> +/// $messageOptions = New-OfficeEmailWriterOptions -IncludeBccHeader +/// $options = New-OfficeEmailMailboxWriterOptions -MessageOptions $messageOptions -Variant Mboxo +/// $mailbox | Save-OfficeEmailMailbox -Path .\Archive.mbox -Options $options -PassThru +/// +[Cmdlet(VerbsCommon.New, "OfficeEmailMailboxWriterOptions")] +[OutputType(typeof(EmailMailboxWriterOptions))] +public sealed class NewOfficeEmailMailboxWriterOptionsCommand : PSCmdlet { + /// Serialization policy applied independently to each message. + [Parameter(ValueFromPipeline = true)] public EmailWriterOptions? MessageOptions { get; set; } + /// Concrete mbox escaping convention to write. + [Parameter] public MboxVariant Variant { get; set; } = MboxVariant.Mboxrd; + + /// + protected override void ProcessRecord() => WriteObject(new EmailMailboxWriterOptions(MessageOptions, Variant)); +} diff --git a/Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailReaderOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailReaderOptionsCommand.cs new file mode 100644 index 00000000..7b09f183 --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailReaderOptionsCommand.cs @@ -0,0 +1,64 @@ +using System.Management.Automation; +using OfficeIMO.Email; + +namespace PSWriteOffice.Cmdlets.Email; + +/// Creates bounded EML, MSG, and TNEF reader settings through ordinary PowerShell parameters. +/// +/// Read message diagnostics without retaining attachment payloads. +/// PS> +/// $options = New-OfficeEmailReaderOptions -ExcludeAttachmentContent -MaxAttachmentBytes 25MB +/// Get-OfficeEmail -Path .\Message.msg -Options $options -AsResult +/// +[Cmdlet(VerbsCommon.New, "OfficeEmailReaderOptions")] +[OutputType(typeof(EmailReaderOptions))] +public sealed class NewOfficeEmailReaderOptionsCommand : PSCmdlet { + /// Maximum artifact size accepted by the reader. + [Parameter] [ValidateRange(1, long.MaxValue)] public long MaxInputBytes { get; set; } = 256L * 1024L * 1024L; + /// Maximum bytes allowed in one MIME header section. + [Parameter] [ValidateRange(1, int.MaxValue)] public int MaxHeaderBytes { get; set; } = 1024 * 1024; + /// Maximum number of header fields in one entity. + [Parameter] [ValidateRange(1, int.MaxValue)] public int MaxHeaderCount { get; set; } = 10000; + /// Maximum MIME entity count. + [Parameter] [ValidateRange(1, int.MaxValue)] public int MaxPartCount { get; set; } = 10000; + /// Maximum nested MIME depth. + [Parameter] [ValidateRange(1, int.MaxValue)] public int MaxMimeDepth { get; set; } = 64; + /// Maximum decoded bytes for one attachment. + [Parameter] [ValidateRange(1, long.MaxValue)] public long MaxAttachmentBytes { get; set; } = 128L * 1024L * 1024L; + /// Maximum aggregate decoded attachment bytes. + [Parameter] [ValidateRange(1, long.MaxValue)] public long MaxTotalAttachmentBytes { get; set; } = 512L * 1024L * 1024L; + /// Maximum embedded-message recursion depth. + [Parameter] [ValidateRange(0, int.MaxValue)] public int MaxNestedMessageDepth { get; set; } = 16; + /// Do not retain decoded attachment payloads in memory. + [Parameter] public SwitchParameter ExcludeAttachmentContent { get; set; } + /// Retain original artifact bytes for an explicit lossless write. + [Parameter] public SwitchParameter PreserveRawSource { get; set; } + /// Maximum CFB directory entries accepted while reading MSG. + [Parameter] [ValidateRange(1, int.MaxValue)] public int MaxCompoundDirectoryEntries { get; set; } = 65536; + /// Maximum aggregate MAPI properties across a message and embedded messages. + [Parameter] [ValidateRange(1, int.MaxValue)] public int MaxMapiPropertyCount { get; set; } = 100000; + /// Maximum aggregate bytes represented by decoded MSG property streams. + [Parameter] [ValidateRange(1, long.MaxValue)] public long MaxDecodedPropertyBytes { get; set; } = 512L * 1024L * 1024L; + /// Maximum number of TNEF attributes. + [Parameter] [ValidateRange(1, int.MaxValue)] public int MaxTnefAttributeCount { get; set; } = 100000; + /// Maximum aggregate attachment count. + [Parameter] [ValidateRange(1, int.MaxValue)] public int MaxAttachmentCount { get; set; } = 10000; + + /// + protected override void ProcessRecord() => WriteObject(new EmailReaderOptions( + MaxInputBytes, + MaxHeaderBytes, + MaxHeaderCount, + MaxPartCount, + MaxMimeDepth, + MaxAttachmentBytes, + MaxTotalAttachmentBytes, + MaxNestedMessageDepth, + !ExcludeAttachmentContent.IsPresent, + PreserveRawSource.IsPresent, + MaxCompoundDirectoryEntries, + MaxMapiPropertyCount, + MaxDecodedPropertyBytes, + MaxTnefAttributeCount, + MaxAttachmentCount)); +} diff --git a/Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailStoreReaderOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailStoreReaderOptionsCommand.cs new file mode 100644 index 00000000..8ebae432 --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailStoreReaderOptionsCommand.cs @@ -0,0 +1,104 @@ +using System.Management.Automation; +using System.Text; +using OfficeIMO.Email.Store; + +namespace PSWriteOffice.Cmdlets.Email; + +/// Creates bounded email-store reader settings without requiring .NET constructor syntax. +/// +/// Read an EMLX message without retaining attachment payloads. +/// PS> +/// $options = New-OfficeEmailStoreReaderOptions -ExcludeAttachmentContent -MaxAttachmentsPerItem 100 +/// Get-OfficeEmail -Path .\Message.emlx -StoreOptions $options -AsResult +/// +[Cmdlet(VerbsCommon.New, "OfficeEmailStoreReaderOptions")] +[OutputType(typeof(EmailStoreReaderOptions))] +public sealed class NewOfficeEmailStoreReaderOptionsCommand : PSCmdlet { + /// Maximum seekable source length. + [Parameter] [ValidateRange(1, long.MaxValue)] public long MaxInputBytes { get; set; } = 1L * 1024 * 1024 * 1024 * 1024; + /// Maximum NDB nodes and blocks visited. + [Parameter] [ValidateRange(1, int.MaxValue)] public int MaxNodeCount { get; set; } = 25_000_000; + /// Maximum tree traversal depth. + [Parameter] [ValidateRange(1, int.MaxValue)] public int MaxBTreeDepth { get; set; } = 32; + /// Maximum PST/OST B-tree pages retained by the cache. + [Parameter] [ValidateRange(1, int.MaxValue)] public int MaxCachedBTreePages { get; set; } = 512; + /// Maximum folders materialized. + [Parameter] [ValidateRange(1, int.MaxValue)] public int MaxFolderCount { get; set; } = 100000; + /// Maximum items materialized. + [Parameter] [ValidateRange(1, int.MaxValue)] public int MaxItemCount { get; set; } = 1000000; + /// Maximum MAPI properties decoded per item. + [Parameter] [ValidateRange(1, int.MaxValue)] public int MaxPropertiesPerItem { get; set; } = 16384; + /// Maximum decoded property bytes per item. + [Parameter] [ValidateRange(1, long.MaxValue)] public long MaxDecodedPropertyBytesPerItem { get; set; } = 128L * 1024 * 1024; + /// Maximum attachments per item. + [Parameter] [ValidateRange(1, int.MaxValue)] public int MaxAttachmentsPerItem { get; set; } = 10000; + /// Maximum decoded bytes in one attachment. + [Parameter] [ValidateRange(1, long.MaxValue)] public long MaxAttachmentBytes { get; set; } = 512L * 1024 * 1024; + /// Maximum decoded attachment bytes across the read. + [Parameter] [ValidateRange(1, long.MaxValue)] public long MaxTotalAttachmentBytes { get; set; } = 4L * 1024 * 1024 * 1024; + /// Do not retain decoded attachment payloads in memory. + [Parameter] public SwitchParameter ExcludeAttachmentContent { get; set; } + /// Password used to validate legacy protected PST files. + [Parameter] public string? PstPassword { get; set; } + /// Encoding name used for the legacy PST password checksum. + [Parameter] public string PstPasswordEncoding { get; set; } = "us-ascii"; + /// Materialize folder-associated information items. + [Parameter] public SwitchParameter IncludeAssociatedItems { get; set; } + /// Recover item nodes absent from folder contents tables. + [Parameter] public SwitchParameter IncludeOrphanedItems { get; set; } + /// Maximum embedded-message recursion depth. + [Parameter] [ValidateRange(0, int.MaxValue)] public int MaxNestedMessageDepth { get; set; } = 16; + /// Maximum entries accepted from a compressed email-store archive. + [Parameter] [ValidateRange(1, int.MaxValue)] public int MaxArchiveEntries { get; set; } = 500000; + /// Maximum decoded size declared by one archive entry. + [Parameter] [ValidateRange(1, long.MaxValue)] public long MaxArchiveEntryBytes { get; set; } = 512L * 1024 * 1024; + /// Maximum total decoded size declared by archive entries. + [Parameter] [ValidateRange(1, long.MaxValue)] public long MaxArchiveDecodedBytes { get; set; } = 8L * 1024 * 1024 * 1024; + /// Maximum XML characters parsed from one archive item. + [Parameter] [ValidateRange(1, long.MaxValue)] public long MaxXmlCharactersPerItem { get; set; } = 64L * 1024 * 1024; + /// Maximum RFC 5322/MIME message bytes accepted from one item. + [Parameter] [ValidateRange(1, long.MaxValue)] public long MaxMessageBytes { get; set; } = 256L * 1024 * 1024; + /// Maximum directory depth traversed by mailbox-directory sessions. + [Parameter] [ValidateRange(1, int.MaxValue)] public int MaxDirectoryDepth { get; set; } = 64; + /// Maximum EML, EMLX, and Maildir files indexed by one directory session. + [Parameter] [ValidateRange(1, int.MaxValue)] public int MaxDirectoryFileCount { get; set; } = 1000000; + /// Maximum decoded bytes traversed from one PST/OST table data tree. + [Parameter] [ValidateRange(1, long.MaxValue)] public long MaxDecodedTableBytes { get; set; } = 8L * 1024 * 1024 * 1024; + + /// + protected override void ProcessRecord() { + Encoding encoding; + try { + encoding = Encoding.GetEncoding(PstPasswordEncoding); + } catch (System.Exception) { + throw new PSArgumentException($"Unknown PST password encoding '{PstPasswordEncoding}'.", nameof(PstPasswordEncoding)); + } + + WriteObject(new EmailStoreReaderOptions( + MaxInputBytes, + MaxNodeCount, + MaxBTreeDepth, + MaxCachedBTreePages, + MaxFolderCount, + MaxItemCount, + MaxPropertiesPerItem, + MaxDecodedPropertyBytesPerItem, + MaxAttachmentsPerItem, + MaxAttachmentBytes, + MaxTotalAttachmentBytes, + !ExcludeAttachmentContent.IsPresent, + PstPassword, + encoding, + IncludeAssociatedItems.IsPresent, + IncludeOrphanedItems.IsPresent, + MaxNestedMessageDepth, + MaxArchiveEntries, + MaxArchiveEntryBytes, + MaxArchiveDecodedBytes, + MaxXmlCharactersPerItem, + MaxMessageBytes, + MaxDirectoryDepth, + MaxDirectoryFileCount, + MaxDecodedTableBytes)); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailWriterOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailWriterOptionsCommand.cs new file mode 100644 index 00000000..c00f25f6 --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailWriterOptionsCommand.cs @@ -0,0 +1,43 @@ +using System.Management.Automation; +using OfficeIMO.Email; + +namespace PSWriteOffice.Cmdlets.Email; + +/// Creates deterministic email writer settings through ordinary PowerShell parameters. +/// +/// Preserve the original source when possible and block semantic loss. +/// PS> +/// $options = New-OfficeEmailWriterOptions -UsePreservedRawSource -ConversionLossPolicy Block +/// $message | Save-OfficeEmail -Path .\Message.eml -Options $options -PassThru +/// +[Cmdlet(VerbsCommon.New, "OfficeEmailWriterOptions")] +[OutputType(typeof(EmailWriterOptions))] +public sealed class NewOfficeEmailWriterOptionsCommand : PSCmdlet { + /// Policy applied when the requested format cannot preserve known message semantics. + [Parameter] public EmailConversionLossPolicy ConversionLossPolicy { get; set; } = EmailConversionLossPolicy.Block; + /// Emit an unchanged preserved source instead of regenerating the artifact when possible. + [Parameter] public SwitchParameter UsePreservedRawSource { get; set; } + /// Write Bcc recipients into the message header. + [Parameter] public SwitchParameter IncludeBccHeader { get; set; } + /// Maximum encoded characters on one Base64 body line. + [Parameter] [ValidateRange(4, 996)] public int Base64LineLength { get; set; } = 76; + /// Maximum embedded-message write depth. + [Parameter] [ValidateRange(0, int.MaxValue)] public int MaxNestedMessageDepth { get; set; } = 16; + /// Maximum serialized artifact size. + [Parameter] [ValidateRange(1, long.MaxValue)] public long MaxOutputBytes { get; set; } = 512L * 1024L * 1024L; + + /// + protected override void ProcessRecord() { + if (Base64LineLength % 4 != 0) { + throw new PSArgumentOutOfRangeException(nameof(Base64LineLength), Base64LineLength, "Base64 line length must be a multiple of four."); + } + + WriteObject(new EmailWriterOptions( + ConversionLossPolicy, + UsePreservedRawSource.IsPresent, + IncludeBccHeader.IsPresent, + Base64LineLength, + MaxNestedMessageDepth, + MaxOutputBytes)); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/Email/SaveOfficeEmailCommand.cs b/Sources/PSWriteOffice/Cmdlets/Email/SaveOfficeEmailCommand.cs index bc3fd03a..2369e4f7 100644 --- a/Sources/PSWriteOffice/Cmdlets/Email/SaveOfficeEmailCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Email/SaveOfficeEmailCommand.cs @@ -6,6 +6,12 @@ namespace PSWriteOffice.Cmdlets.Email; /// Saves an email document as EML, EMLX, MSG, or TNEF with fidelity diagnostics. +/// +/// Save a message with an explicit loss policy. +/// PS> +/// $options = New-OfficeEmailWriterOptions -ConversionLossPolicy Block +/// $message | Save-OfficeEmail -Path .\Message.eml -Options $options -PassThru +/// [Cmdlet(VerbsData.Save, "OfficeEmail", SupportsShouldProcess = true)] [OutputType(typeof(EmailWriteResult))] public sealed class SaveOfficeEmailCommand : OfficeMutationCmdlet { @@ -47,4 +53,4 @@ protected override void ProcessRecord() { : Document.Save(output, Options); WritePassThru(saveResult); } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/Email/SaveOfficeEmailMailboxCommand.cs b/Sources/PSWriteOffice/Cmdlets/Email/SaveOfficeEmailMailboxCommand.cs index 87b486dc..c54a60bd 100644 --- a/Sources/PSWriteOffice/Cmdlets/Email/SaveOfficeEmailMailboxCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Email/SaveOfficeEmailMailboxCommand.cs @@ -5,6 +5,12 @@ namespace PSWriteOffice.Cmdlets.Email; /// Saves a native mbox mailbox with output diagnostics. +/// +/// Save an mboxrd mailbox and return its diagnostics. +/// PS> +/// $options = New-OfficeEmailMailboxWriterOptions -Variant Mboxrd +/// $mailbox | Save-OfficeEmailMailbox -Path .\Archive.mbox -Options $options -PassThru +/// [Cmdlet(VerbsData.Save, "OfficeEmailMailbox", SupportsShouldProcess = true)] [OutputType(typeof(EmailWriteResult))] public sealed class SaveOfficeEmailMailboxCommand : OfficeMutationCmdlet { @@ -27,4 +33,4 @@ protected override void ProcessRecord() { Directory.CreateDirectory(System.IO.Path.GetDirectoryName(output) ?? SessionState.Path.CurrentFileSystemLocation.Path); WritePassThru(Mailbox.Save(output, Options)); } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/ExportOfficeExcelChartImageCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/ExportOfficeExcelChartImageCommand.cs index 9fef4218..0a093ab1 100644 --- a/Sources/PSWriteOffice/Cmdlets/Excel/ExportOfficeExcelChartImageCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Excel/ExportOfficeExcelChartImageCommand.cs @@ -47,6 +47,10 @@ public sealed class ExportOfficeExcelChartImageCommand : PSCmdlet [Parameter] public SwitchParameter Force { get; set; } + /// Emit the structured image export result when a destination path is used. + [Parameter] + public SwitchParameter PassThru { get; set; } + /// protected override void ProcessRecord() { @@ -86,7 +90,7 @@ protected override void ProcessRecord() ? OfficeImageExportFileConflictPolicy.Replace : OfficeImageExportFileConflictPolicy.FailIfExists); } - WriteObject(result); + if (output == null || PassThru.IsPresent) WriteObject(result); } finally { diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/ExportOfficeExcelImageCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/ExportOfficeExcelImageCommand.cs index 8681f87d..4c9e7af5 100644 --- a/Sources/PSWriteOffice/Cmdlets/Excel/ExportOfficeExcelImageCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Excel/ExportOfficeExcelImageCommand.cs @@ -12,7 +12,7 @@ namespace PSWriteOffice.Cmdlets.Excel; /// Export visible sheets as PNG files. /// PS> /// Export-OfficeExcelImage -Path .\Report.xlsx -OutputPath .\Images -/// Writes one image per selected sheet and returns OfficeImageExportResult objects. +/// Writes one image per selected sheet. Add -PassThru to receive the structured export results. /// [Cmdlet(VerbsData.Export, "OfficeExcelImage", DefaultParameterSetName = "Path", SupportsShouldProcess = true)] [OutputType(typeof(OfficeImageExportResult))] @@ -38,6 +38,10 @@ public sealed class ExportOfficeExcelImageCommand : PSCmdlet [Parameter] public ExcelWorkbookImageExportOptions? Options { get; set; } + /// Emit one structured image export result per saved sheet. + [Parameter] + public SwitchParameter PassThru { get; set; } + /// protected override void ProcessRecord() { @@ -55,7 +59,7 @@ protected override void ProcessRecord() document = owned; } IReadOnlyList results = document.SaveAsImages(output, Format, Options); - WriteObject(results, enumerateCollection: true); + if (PassThru.IsPresent) WriteObject(results, enumerateCollection: true); } finally { diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/ExportOfficeExcelRangeImageCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/ExportOfficeExcelRangeImageCommand.cs index 893dcba7..9b4c92b4 100644 --- a/Sources/PSWriteOffice/Cmdlets/Excel/ExportOfficeExcelRangeImageCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Excel/ExportOfficeExcelRangeImageCommand.cs @@ -47,6 +47,10 @@ public sealed class ExportOfficeExcelRangeImageCommand : PSCmdlet [Parameter] public SwitchParameter Force { get; set; } + /// Emit the structured image export result when a destination path is used. + [Parameter] + public SwitchParameter PassThru { get; set; } + /// protected override void ProcessRecord() { @@ -84,7 +88,7 @@ protected override void ProcessRecord() ? OfficeImageExportFileConflictPolicy.Replace : OfficeImageExportFileConflictPolicy.FailIfExists); } - WriteObject(result); + if (output == null || PassThru.IsPresent) WriteObject(result); } finally { diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelCommand.cs index 71441ea6..d05036e4 100644 --- a/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Excel/GetOfficeExcelCommand.cs @@ -38,10 +38,6 @@ public sealed class GetOfficeExcelCommand : AsyncPSCmdlet { [Parameter] public SwitchParameter ReadOnly { get; set; } - /// Enable automatic saves on the underlying document. - [Parameter] - public SwitchParameter AutoSave { get; set; } - /// Password used to open an encrypted workbook package. [Parameter] public string? Password { get; set; } @@ -49,10 +45,6 @@ public sealed class GetOfficeExcelCommand : AsyncPSCmdlet { /// protected override async Task ProcessRecordAsync() { if (ParameterSetName == ParameterSetUri) { - if (AutoSave.IsPresent) { - throw new PSArgumentException("Remote workbooks cannot be opened with AutoSave. Save to a local path explicitly after loading."); - } - if (Uri == null) { throw new PSArgumentException("Workbook URI was not provided.", nameof(Uri)); } @@ -72,7 +64,7 @@ protected override async Task ProcessRecordAsync() { throw new FileNotFoundException($"File '{resolvedPath}' was not found.", resolvedPath); } - ExcelDocument document = ExcelDocumentService.LoadDocument(resolvedPath, ReadOnly.IsPresent, AutoSave.IsPresent, Password); + ExcelDocument document = ExcelDocumentService.LoadDocument(resolvedPath, ReadOnly.IsPresent, autoSave: false, Password); WriteObject(document); } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelCommand.cs index 6af20fea..77528a6d 100644 --- a/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelCommand.cs @@ -137,6 +137,10 @@ public sealed class NewOfficeExcelCommand : PSCmdlet { /// protected override void ProcessRecord() { + if (NoSave.IsPresent && Open.IsPresent) { + throw new PSArgumentException("-Open cannot be used with -NoSave because no file is written. Save the returned workbook explicitly, then use -Open on Save-OfficeExcel.", nameof(Open)); + } + var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path); var action = NoSave.IsPresent ? string.IsNullOrWhiteSpace(TemplatePath) @@ -200,7 +204,6 @@ protected override void ProcessRecord() { MarkFormulasDirty.IsPresent, ForceFullCalculationOnOpen.IsPresent); ExcelDocumentService.SaveDocument(document, Open.IsPresent, resolvedPath, Password, saveOptions); - ExcelDocumentService.CloseDocument(document); closed = true; } else { WriteObject(document); @@ -218,4 +221,4 @@ protected override void ProcessRecord() { } } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelImageOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelImageOptionsCommand.cs new file mode 100644 index 00000000..ff135bae --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelImageOptionsCommand.cs @@ -0,0 +1,61 @@ +using System.Management.Automation; +using OfficeIMO.Excel; +using PSWriteOffice.Cmdlets.Imaging; + +namespace PSWriteOffice.Cmdlets.Excel; + +/// Creates discoverable rendering settings for Excel range and chart image export. +/// +/// Render a range with gridlines and hyperlinks visible. +/// PS> +/// $options = New-OfficeExcelImageOptions -ShowGridlines -ShowHyperlinkHints -TargetDpi 144 +/// Export-OfficeExcelRangeImage -Path .\Workbook.xlsx -Worksheet Summary -Range A1:H20 -OutputPath .\Summary.svg -Options $options +/// +/// +/// Reuse the same rendering controls for a chart. +/// PS> +/// $options = New-OfficeExcelImageOptions -TargetDpi 144 -MaximumOutputWidth 1600 +/// Export-OfficeExcelChartImage -Path .\Workbook.xlsx -Worksheet Summary -ChartName Revenue -OutputPath .\Revenue.svg -Options $options +/// +[Cmdlet(VerbsCommon.New, "OfficeExcelImageOptions")] +[OutputType(typeof(ExcelImageExportOptions))] +public sealed class NewOfficeExcelImageOptionsCommand : OfficeImageOptionsCommandBase { + /// Show worksheet gridlines. + [Parameter] public SwitchParameter ShowGridlines { get; set; } + /// Include hidden rows and columns. + [Parameter] public SwitchParameter IncludeHidden { get; set; } + /// Include worksheet images. + [Parameter] public SwitchParameter IncludeImages { get; set; } + /// Include worksheet charts. + [Parameter] public SwitchParameter IncludeCharts { get; set; } + /// Include drawing objects. + [Parameter] public SwitchParameter IncludeDrawingObjects { get; set; } + /// Include conditional formatting. + [Parameter] public SwitchParameter IncludeConditionalFormatting { get; set; } + /// Show hyperlink hints. + [Parameter] public SwitchParameter ShowHyperlinkHints { get; set; } + /// Show cell comment bodies. + [Parameter] public SwitchParameter ShowCommentBodies { get; set; } + /// Maximum cells rendered. + [Parameter] [ValidateRange(1, int.MaxValue)] public int? MaximumRenderedCells { get; set; } + + /// + protected override void ProcessRecord() { + var options = new ExcelImageExportOptions(); + ApplyExcel(options); + WriteObject(options); + } + + internal void ApplyExcel(ExcelImageExportOptions options) { + ApplyCommon(options); + if (IsBound(nameof(ShowGridlines))) options.ShowGridlines = ShowGridlines.IsPresent; + if (IsBound(nameof(IncludeHidden))) options.IncludeHidden = IncludeHidden.IsPresent; + if (IsBound(nameof(IncludeImages))) options.IncludeImages = IncludeImages.IsPresent; + if (IsBound(nameof(IncludeCharts))) options.IncludeCharts = IncludeCharts.IsPresent; + if (IsBound(nameof(IncludeDrawingObjects))) options.IncludeDrawingObjects = IncludeDrawingObjects.IsPresent; + if (IsBound(nameof(IncludeConditionalFormatting))) options.IncludeConditionalFormatting = IncludeConditionalFormatting.IsPresent; + if (IsBound(nameof(ShowHyperlinkHints))) options.ShowHyperlinkHints = ShowHyperlinkHints.IsPresent; + if (IsBound(nameof(ShowCommentBodies))) options.ShowCommentBodies = ShowCommentBodies.IsPresent; + if (MaximumRenderedCells.HasValue) options.MaximumRenderedCells = MaximumRenderedCells.Value; + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelWorkbookImageOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelWorkbookImageOptionsCommand.cs new file mode 100644 index 00000000..e4b589ea --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelWorkbookImageOptionsCommand.cs @@ -0,0 +1,57 @@ +using System.Management.Automation; +using OfficeIMO.Excel; +using PSWriteOffice.Cmdlets.Imaging; + +namespace PSWriteOffice.Cmdlets.Excel; + +/// Creates discoverable sheet selection and rendering settings for Export-OfficeExcelImage. +/// +/// Render selected worksheets with charts and conditional formatting. +/// PS> +/// $options = New-OfficeExcelWorkbookImageOptions -SheetName Summary,Data -IncludeCharts -IncludeConditionalFormatting +/// Export-OfficeExcelImage -Path .\Workbook.xlsx -OutputPath .\Sheets -Options $options +/// +[Cmdlet(VerbsCommon.New, "OfficeExcelWorkbookImageOptions")] +[OutputType(typeof(ExcelWorkbookImageExportOptions))] +public sealed class NewOfficeExcelWorkbookImageOptionsCommand : OfficeImageOptionsCommandBase { + /// Worksheet names to export. + [Parameter] public string[]? SheetName { get; set; } + /// Include hidden worksheets. + [Parameter] public SwitchParameter IncludeHiddenSheets { get; set; } + /// Use worksheet print areas. + [Parameter] public SwitchParameter UseWorksheetPrintAreas { get; set; } + /// Split worksheets at manual page breaks. + [Parameter] public SwitchParameter SplitWorksheetsByManualPageBreaks { get; set; } + /// Show worksheet gridlines. + [Parameter] public SwitchParameter ShowGridlines { get; set; } + /// Include hidden rows and columns. + [Parameter] public SwitchParameter IncludeHidden { get; set; } + /// Include worksheet images. + [Parameter] public SwitchParameter IncludeImages { get; set; } + /// Include worksheet charts. + [Parameter] public SwitchParameter IncludeCharts { get; set; } + /// Include drawing objects. + [Parameter] public SwitchParameter IncludeDrawingObjects { get; set; } + /// Include conditional formatting. + [Parameter] public SwitchParameter IncludeConditionalFormatting { get; set; } + /// Maximum cells rendered per worksheet. + [Parameter] [ValidateRange(1, int.MaxValue)] public int? MaximumRenderedCells { get; set; } + + /// + protected override void ProcessRecord() { + var options = new ExcelWorkbookImageExportOptions(); + ApplyCommon(options); + if (SheetName != null) options.SheetNames = SheetName; + if (IsBound(nameof(IncludeHiddenSheets))) options.IncludeHiddenSheets = IncludeHiddenSheets.IsPresent; + if (IsBound(nameof(UseWorksheetPrintAreas))) options.UseWorksheetPrintAreas = UseWorksheetPrintAreas.IsPresent; + if (IsBound(nameof(SplitWorksheetsByManualPageBreaks))) options.SplitWorksheetsByManualPageBreaks = SplitWorksheetsByManualPageBreaks.IsPresent; + if (IsBound(nameof(ShowGridlines))) options.ShowGridlines = ShowGridlines.IsPresent; + if (IsBound(nameof(IncludeHidden))) options.IncludeHidden = IncludeHidden.IsPresent; + if (IsBound(nameof(IncludeImages))) options.IncludeImages = IncludeImages.IsPresent; + if (IsBound(nameof(IncludeCharts))) options.IncludeCharts = IncludeCharts.IsPresent; + if (IsBound(nameof(IncludeDrawingObjects))) options.IncludeDrawingObjects = IncludeDrawingObjects.IsPresent; + if (IsBound(nameof(IncludeConditionalFormatting))) options.IncludeConditionalFormatting = IncludeConditionalFormatting.IsPresent; + if (MaximumRenderedCells.HasValue) options.MaximumRenderedCells = MaximumRenderedCells.Value; + WriteObject(options); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficePdfExcelImportOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficePdfExcelImportOptionsCommand.cs new file mode 100644 index 00000000..8c040f6b --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficePdfExcelImportOptionsCommand.cs @@ -0,0 +1,77 @@ +using System.Globalization; +using System.Management.Automation; +using OfficeIMO.Excel; +using OfficeIMO.Excel.Pdf; + +namespace PSWriteOffice.Cmdlets.Excel; + +/// Creates discoverable PDF-table-to-Excel reconstruction settings. +/// +/// Import PDF tables with typed columns and filters. +/// PS> +/// $options = New-OfficePdfExcelImportOptions -IncludeAutoFilter -AutoFitColumns -ConvertNumericColumns -ConvertDateTimeColumns +/// ConvertTo-OfficePdfExcel -Path .\Tables.pdf -OutputPath .\Tables.xlsx -Options $options +/// +[Cmdlet(VerbsCommon.New, "OfficePdfExcelImportOptions")] +[OutputType(typeof(PdfExcelTableImportOptions))] +public sealed class NewOfficePdfExcelImportOptionsCommand : PSCmdlet { + /// Maximum body rows imported per detected table; zero means unlimited. + [Parameter] [ValidateRange(0, int.MaxValue)] public int? MaxRows { get; set; } + /// Prefix for generated worksheet names. + [Parameter] public string? SheetNamePrefix { get; set; } + /// Prefix for generated Excel table names. + [Parameter] public string? TableNamePrefix { get; set; } + /// Excel table style. + [Parameter] public ExcelTableStyle? TableStyle { get; set; } + /// Add table-scoped AutoFilters. + [Parameter] public SwitchParameter IncludeAutoFilter { get; set; } + /// Auto-fit worksheet columns. + [Parameter] public SwitchParameter AutoFitColumns { get; set; } + /// Convert consistently numeric columns. + [Parameter] public SwitchParameter ConvertNumericColumns { get; set; } + /// Convert consistently boolean columns. + [Parameter] public SwitchParameter ConvertBooleanColumns { get; set; } + /// Convert unambiguous date columns. + [Parameter] public SwitchParameter ConvertDateTimeColumns { get; set; } + /// Convert percentage columns to fractional numbers. + [Parameter] public SwitchParameter ConvertPercentageColumns { get; set; } + /// Culture name used for numeric parsing, such as en-US. + [Parameter] public string? NumericCulture { get; set; } + /// Merge compatible table segments across pages. + [Parameter] public SwitchParameter MergePageContinuations { get; set; } + /// Suppress repeated body header rows in merged segments. + [Parameter] public SwitchParameter SuppressRepeatedBodyHeaderRows { get; set; } + /// Maximum table segments merged into one table. + [Parameter] [ValidateRange(1, int.MaxValue)] public int? MaximumContinuationSegments { get; set; } + /// Geometry tolerance in PDF points for page continuations. + [Parameter] [ValidateRange(0d, double.MaxValue)] public double? ContinuationGeometryTolerancePoints { get; set; } + /// Worksheet name used when no tables are detected. + [Parameter] public string? EmptyWorkbookSheetName { get; set; } + + /// + protected override void ProcessRecord() { + var options = new PdfExcelTableImportOptions(); + Apply(nameof(IncludeAutoFilter), value => options.IncludeAutoFilter = value); + Apply(nameof(AutoFitColumns), value => options.AutoFitColumns = value); + Apply(nameof(ConvertNumericColumns), value => options.ConvertNumericColumns = value); + Apply(nameof(ConvertBooleanColumns), value => options.ConvertBooleanColumns = value); + Apply(nameof(ConvertDateTimeColumns), value => options.ConvertDateTimeColumns = value); + Apply(nameof(ConvertPercentageColumns), value => options.ConvertPercentageColumns = value); + Apply(nameof(MergePageContinuations), value => options.MergePageContinuations = value); + Apply(nameof(SuppressRepeatedBodyHeaderRows), value => options.SuppressRepeatedBodyHeaderRows = value); + if (MaxRows.HasValue) options.MaxRows = MaxRows.Value; + if (SheetNamePrefix != null) options.SheetNamePrefix = SheetNamePrefix; + if (TableNamePrefix != null) options.TableNamePrefix = TableNamePrefix; + if (TableStyle.HasValue) options.TableStyle = TableStyle.Value; + if (!string.IsNullOrWhiteSpace(NumericCulture)) options.NumericCulture = CultureInfo.GetCultureInfo(NumericCulture!); + if (MaximumContinuationSegments.HasValue) options.MaximumContinuationSegments = MaximumContinuationSegments.Value; + if (ContinuationGeometryTolerancePoints.HasValue) options.ContinuationGeometryTolerancePoints = ContinuationGeometryTolerancePoints.Value; + if (EmptyWorkbookSheetName != null) options.EmptyWorkbookSheetName = EmptyWorkbookSheetName; + WriteObject(options); + } + + private void Apply(string name, System.Action setter) { + if (!MyInvocation.BoundParameters.ContainsKey(name)) return; + setter(((SwitchParameter)MyInvocation.BoundParameters[name]).IsPresent); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/Html/ExportOfficeHtmlImageCommand.cs b/Sources/PSWriteOffice/Cmdlets/Html/ExportOfficeHtmlImageCommand.cs index 09c1c0d8..0e0d5a7b 100644 --- a/Sources/PSWriteOffice/Cmdlets/Html/ExportOfficeHtmlImageCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Html/ExportOfficeHtmlImageCommand.cs @@ -11,7 +11,7 @@ namespace PSWriteOffice.Cmdlets.Html; /// Render an HTML file to PNG. /// PS> /// Export-OfficeHtmlImage -Path .\Report.html -OutputPath .\Report.png -/// Uses the dependency-free OfficeIMO HTML renderer and returns OfficeImageExportResult. +/// Uses the dependency-free OfficeIMO HTML renderer. Add -PassThru to receive the structured export result. /// [Cmdlet(VerbsData.Export, "OfficeHtmlImage", DefaultParameterSetName = "Path", SupportsShouldProcess = true)] [OutputType(typeof(OfficeImageExportResult))] @@ -19,6 +19,8 @@ public sealed class ExportOfficeHtmlImageCommand : PSCmdlet { private readonly StringBuilder _pipelineHtml = new(); private bool _hasPipelineHtml; + private bool _shouldExport; + private string _resolvedOutput = string.Empty; /// Path to an HTML file. [Parameter(Mandatory = true, Position = 0, ParameterSetName = "Path")] @@ -32,7 +34,7 @@ public sealed class ExportOfficeHtmlImageCommand : PSCmdlet [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = "Document")] public HtmlConversionDocument Document { get; set; } = null!; - /// Destination PNG or SVG path. + /// Destination PNG, JPEG, TIFF, SVG, or WebP path. [Parameter(Mandatory = true, Position = 1)] public string OutputPath { get; set; } = string.Empty; @@ -53,9 +55,22 @@ public sealed class ExportOfficeHtmlImageCommand : PSCmdlet [Parameter] public HtmlRenderOptions? RenderOptions { get; set; } + /// Emit the structured image export result. + [Parameter] + public SwitchParameter PassThru { get; set; } + + /// + protected override void BeginProcessing() + { + _resolvedOutput = SessionState.Path.GetUnresolvedProviderPathFromPSPath(OutputPath); + _shouldExport = ShouldProcess(_resolvedOutput, $"Export HTML page as {Format}"); + } + /// protected override void ProcessRecord() { + if (!_shouldExport) return; + if (ParameterSetName == "Html") { if (_hasPipelineHtml) _pipelineHtml.Append('\n'); @@ -73,7 +88,7 @@ protected override void ProcessRecord() /// protected override void EndProcessing() { - if (ParameterSetName == "Html") + if (_shouldExport && ParameterSetName == "Html") { Export(HtmlConversionDocument.Parse(_pipelineHtml.ToString(), DocumentOptions)); } @@ -81,11 +96,8 @@ protected override void EndProcessing() private void Export(HtmlConversionDocument document) { - var output = SessionState.Path.GetUnresolvedProviderPathFromPSPath(OutputPath); - if (!ShouldProcess(output, $"Export HTML page as {Format}")) return; - Directory.CreateDirectory(System.IO.Path.GetDirectoryName(output) ?? SessionState.Path.CurrentFileSystemLocation.Path); - WriteObject(Format == OfficeImageExportFormat.Svg - ? document.SaveAsSvg(output, RenderOptions, PageIndex) - : document.SaveAsPng(output, RenderOptions, PageIndex)); + Directory.CreateDirectory(System.IO.Path.GetDirectoryName(_resolvedOutput) ?? SessionState.Path.CurrentFileSystemLocation.Path); + OfficeImageExportResult result = document.ExportImage(Format, RenderOptions, PageIndex).Save(_resolvedOutput); + if (PassThru.IsPresent) WriteObject(result); } } diff --git a/Sources/PSWriteOffice/Cmdlets/Html/NewOfficeHtmlConversionOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Html/NewOfficeHtmlConversionOptionsCommand.cs new file mode 100644 index 00000000..401ffd3b --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Html/NewOfficeHtmlConversionOptionsCommand.cs @@ -0,0 +1,39 @@ +using System; +using System.Management.Automation; +using OfficeIMO.Html; + +namespace PSWriteOffice.Cmdlets.Html; + +/// Creates discoverable parsing, trust, and document settings for HTML conversion. +/// +/// Resolve relative resources from a trusted report directory. +/// PS> +/// $document = New-OfficeHtmlConversionOptions -BaseUri (Resolve-Path .\Assets) -UseBodyContentsOnly +/// Export-OfficeHtmlImage -Path .\Report.html -OutputPath .\Report.svg -DocumentOptions $document +/// +[Cmdlet(VerbsCommon.New, "OfficeHtmlConversionOptions")] +[OutputType(typeof(HtmlConversionDocumentOptions))] +public sealed class NewOfficeHtmlConversionOptionsCommand : PSCmdlet { + /// Built-in conversion profile. + [Parameter] public HtmlConversionProfile? Profile { get; set; } + /// Input trust level. + [Parameter] public HtmlInputTrust? Trust { get; set; } + /// Base URI used to resolve relative references. + [Parameter] public string? BaseUri { get; set; } + /// Convert only body contents. + [Parameter] public SwitchParameter UseBodyContentsOnly { get; set; } + /// Retain normalized HTML in the conversion document. + [Parameter] public SwitchParameter IncludeNormalizedHtml { get; set; } + + /// + protected override void ProcessRecord() { + var options = new HtmlConversionDocumentOptions(); + if (Profile.HasValue) options.Profile = Profile.Value; + if (Trust.HasValue) options.Trust = Trust.Value; + if (!string.IsNullOrWhiteSpace(BaseUri)) options.BaseUri = new Uri(BaseUri!, UriKind.RelativeOrAbsolute); + if (IsBound(nameof(UseBodyContentsOnly))) options.UseBodyContentsOnly = UseBodyContentsOnly.IsPresent; + if (IsBound(nameof(IncludeNormalizedHtml))) options.IncludeNormalizedHtml = IncludeNormalizedHtml.IsPresent; + WriteObject(options); + } + private bool IsBound(string name) => MyInvocation.BoundParameters.ContainsKey(name); +} diff --git a/Sources/PSWriteOffice/Cmdlets/Html/NewOfficeHtmlRenderOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Html/NewOfficeHtmlRenderOptionsCommand.cs new file mode 100644 index 00000000..33f684d5 --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Html/NewOfficeHtmlRenderOptionsCommand.cs @@ -0,0 +1,71 @@ +using System; +using System.Management.Automation; +using OfficeIMO.Drawing; +using OfficeIMO.Html; +using PSWriteOffice.Cmdlets.Imaging; + +namespace PSWriteOffice.Cmdlets.Html; + +/// Creates discoverable layout, resource-limit, and rendering settings for HTML image export. +/// +/// Render HTML with a bounded viewport and resource budget. +/// PS> +/// $render = New-OfficeHtmlRenderOptions -ViewportWidth 1280 -ViewportHeight 720 -MaxPageCount 10 +/// Export-OfficeHtmlImage -Path .\Report.html -OutputPath .\Report.svg -RenderOptions $render +/// +[Cmdlet(VerbsCommon.New, "OfficeHtmlRenderOptions")] +[OutputType(typeof(HtmlRenderOptions))] +public sealed class NewOfficeHtmlRenderOptionsCommand : OfficeImageOptionsCommandBase { + /// HTML render mode. + [Parameter] public HtmlRenderMode? Mode { get; set; } + /// Fidelity policy for unsupported content. + [Parameter] public HtmlRenderFidelityPolicy? FidelityPolicy { get; set; } + /// Viewport width in CSS pixels. + [Parameter] [ValidateRange(double.Epsilon, double.MaxValue)] public double? ViewportWidth { get; set; } + /// Optional viewport height in CSS pixels. + [Parameter] [ValidateRange(double.Epsilon, double.MaxValue)] public double? ViewportHeight { get; set; } + /// Page size used by paged rendering. + [Parameter] public OfficePageSize? PageSize { get; set; } + /// Honor CSS page rules. + [Parameter] public SwitchParameter HonorCssPageRules { get; set; } + /// Default font family. + [Parameter] public string? DefaultFontFamily { get; set; } + /// Default font size. + [Parameter] [ValidateRange(double.Epsilon, double.MaxValue)] public double? DefaultFontSize { get; set; } + /// Default line-height multiplier. + [Parameter] [ValidateRange(double.Epsilon, double.MaxValue)] public double? DefaultLineHeight { get; set; } + /// Base URI for relative resources. + [Parameter] public string? BaseUri { get; set; } + /// Maximum rendered page count. + [Parameter] [ValidateRange(1, int.MaxValue)] public int? MaxPageCount { get; set; } + /// Maximum HTML input characters. + [Parameter] [ValidateRange(1, int.MaxValue)] public int? MaxInputCharacters { get; set; } + /// Maximum HTML nodes. + [Parameter] [ValidateRange(1, int.MaxValue)] public int? MaxHtmlNodes { get; set; } + /// Maximum resource bytes loaded for the document. + [Parameter] [ValidateRange(1, long.MaxValue)] public long? MaxTotalResourceBytes { get; set; } + /// Maximum duration allowed for one resource load. + [Parameter] [ValidateRange(double.Epsilon, 2147483d)] public double? ResourceTimeoutSeconds { get; set; } + + /// + protected override void ProcessRecord() { + var options = new HtmlRenderOptions(); + ApplyCommon(options); + if (Mode.HasValue) options.Mode = Mode.Value; + if (FidelityPolicy.HasValue) options.FidelityPolicy = FidelityPolicy.Value; + if (ViewportWidth.HasValue) options.ViewportWidth = ViewportWidth.Value; + if (ViewportHeight.HasValue) options.ViewportHeight = ViewportHeight.Value; + if (PageSize.HasValue) options.PageSize = PageSize.Value; + if (IsBound(nameof(HonorCssPageRules))) options.HonorCssPageRules = HonorCssPageRules.IsPresent; + if (DefaultFontFamily != null) options.DefaultFontFamily = DefaultFontFamily; + if (DefaultFontSize.HasValue) options.DefaultFontSize = DefaultFontSize.Value; + if (DefaultLineHeight.HasValue) options.DefaultLineHeight = DefaultLineHeight.Value; + if (!string.IsNullOrWhiteSpace(BaseUri)) options.BaseUri = new Uri(BaseUri!, UriKind.RelativeOrAbsolute); + if (MaxPageCount.HasValue) options.MaxPageCount = MaxPageCount.Value; + if (MaxInputCharacters.HasValue) options.MaxInputCharacters = MaxInputCharacters.Value; + if (MaxHtmlNodes.HasValue) options.MaxHtmlNodes = MaxHtmlNodes.Value; + if (MaxTotalResourceBytes.HasValue) options.MaxTotalResourceBytes = MaxTotalResourceBytes.Value; + if (ResourceTimeoutSeconds.HasValue) options.ResourceTimeout = TimeSpan.FromSeconds(ResourceTimeoutSeconds.Value); + WriteObject(options); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/Imaging/OfficeImageOptionsCommandBase.cs b/Sources/PSWriteOffice/Cmdlets/Imaging/OfficeImageOptionsCommandBase.cs new file mode 100644 index 00000000..5cf930d4 --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Imaging/OfficeImageOptionsCommandBase.cs @@ -0,0 +1,55 @@ +using System; +using System.Management.Automation; +using OfficeIMO.Drawing; + +namespace PSWriteOffice.Cmdlets.Imaging; + +/// Shared PowerShell-native parameters for OfficeIMO image export option builders. +public abstract class OfficeImageOptionsCommandBase : PSCmdlet where TOptions : OfficeImageExportOptions { + /// Output scale multiplier. + [Parameter] [ValidateRange(double.Epsilon, double.MaxValue)] public double? Scale { get; set; } + /// Maximum output width in pixels. + [Parameter] [ValidateRange(1, int.MaxValue)] public int? MaximumOutputWidth { get; set; } + /// Maximum output height in pixels. + [Parameter] [ValidateRange(1, int.MaxValue)] public int? MaximumOutputHeight { get; set; } + /// Background color name or hex value. + [Parameter] public string? BackgroundColor { get; set; } + /// Target output density in dots per inch. + [Parameter] [ValidateRange(double.Epsilon, 65535d)] public double? TargetDpi { get; set; } + /// Maximum pixels allocated for one raster image. + [Parameter] [ValidateRange(1, long.MaxValue)] public long? MaximumRasterPixels { get; set; } + /// Reduce or reject oversized raster output. + [Parameter] public OfficeRasterOverflowBehavior? RasterOverflowBehavior { get; set; } + /// Maximum images accepted from one batch export. + [Parameter] [ValidateRange(1, int.MaxValue)] public int? MaximumOutputCount { get; set; } + /// Maximum aggregate raster pixels accepted from one batch. + [Parameter] [ValidateRange(1, long.MaxValue)] public long? MaximumTotalRasterPixels { get; set; } + /// Maximum aggregate encoded bytes accepted from one batch. + [Parameter] [ValidateRange(1, long.MaxValue)] public long? MaximumTotalEncodedBytes { get; set; } + /// Maximum seconds allowed for one render. + [Parameter] [ValidateRange(double.Epsilon, 2147483d)] public double? RenderTimeoutSeconds { get; set; } + /// Maximum independent renders processed concurrently. + [Parameter] [ValidateRange(1, int.MaxValue)] public int? MaximumDegreeOfParallelism { get; set; } + /// BCP 47 language hint for text shaping. + [Parameter] public string? TextShapingLanguage { get; set; } + + /// Applies shared settings to a format-specific option object. + protected void ApplyCommon(TOptions options) { + if (Scale.HasValue) options.Scale = Scale.Value; + if (MaximumOutputWidth.HasValue) options.MaximumOutputWidth = MaximumOutputWidth.Value; + if (MaximumOutputHeight.HasValue) options.MaximumOutputHeight = MaximumOutputHeight.Value; + if (!string.IsNullOrWhiteSpace(BackgroundColor)) options.BackgroundColor = OfficeColor.Parse(BackgroundColor!); + if (TargetDpi.HasValue) options.TargetDpi = TargetDpi.Value; + if (MaximumRasterPixels.HasValue) options.MaximumRasterPixels = MaximumRasterPixels.Value; + if (RasterOverflowBehavior.HasValue) options.RasterOverflowBehavior = RasterOverflowBehavior.Value; + if (MaximumOutputCount.HasValue) options.MaximumOutputCount = MaximumOutputCount.Value; + if (MaximumTotalRasterPixels.HasValue) options.MaximumTotalRasterPixels = MaximumTotalRasterPixels.Value; + if (MaximumTotalEncodedBytes.HasValue) options.MaximumTotalEncodedBytes = MaximumTotalEncodedBytes.Value; + if (RenderTimeoutSeconds.HasValue) options.RenderTimeout = TimeSpan.FromSeconds(RenderTimeoutSeconds.Value); + if (MaximumDegreeOfParallelism.HasValue) options.MaximumDegreeOfParallelism = MaximumDegreeOfParallelism.Value; + if (TextShapingLanguage != null) options.TextShapingLanguage = TextShapingLanguage; + } + + /// Returns whether PowerShell bound a parameter, including an explicitly false switch. + protected bool IsBound(string name) => MyInvocation.BoundParameters.ContainsKey(name); +} diff --git a/Sources/PSWriteOffice/Cmdlets/Latex/SaveOfficeLatexCommand.cs b/Sources/PSWriteOffice/Cmdlets/Latex/SaveOfficeLatexCommand.cs index 1ad0d923..953bd0b2 100644 --- a/Sources/PSWriteOffice/Cmdlets/Latex/SaveOfficeLatexCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Latex/SaveOfficeLatexCommand.cs @@ -5,6 +5,12 @@ namespace PSWriteOffice.Cmdlets.Latex; /// Saves an OfficeIMO LaTeX document. +/// +/// Load and save a canonical LaTeX document. +/// PS> +/// $document = Get-OfficeLatex -Path .\Article.tex +/// $document | Save-OfficeLatex -Path .\Article-normalized.tex -Mode Canonical +/// [Cmdlet(VerbsData.Save, "OfficeLatex", SupportsShouldProcess = true)] [OutputType(typeof(LatexDocument))] public sealed class SaveOfficeLatexCommand : PSCmdlet diff --git a/Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentHeadingCommand.cs b/Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentHeadingCommand.cs new file mode 100644 index 00000000..7708b6c7 --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentHeadingCommand.cs @@ -0,0 +1,39 @@ +using System.Management.Automation; +using OfficeIMO.OpenDocument; +using PSWriteOffice.Services.OpenDocument; + +namespace PSWriteOffice.Cmdlets.OpenDocument; + +/// Adds a heading to an OpenDocument text document. +/// +/// Add a level-two heading inside an OpenDocument DSL. +/// PS> +/// Add-OfficeOpenDocumentHeading -Text 'Results' -Level 2 +/// +[Cmdlet(VerbsCommon.Add, "OfficeOpenDocumentHeading")] +[OutputType(typeof(OdtParagraph))] +public sealed class AddOfficeOpenDocumentHeadingCommand : PSCmdlet { + /// OpenDocument text document. Omit inside New-OfficeOpenDocument -Content. + [Parameter(ValueFromPipeline = true)] + public OdtDocument? Document { get; set; } + + /// Heading text. + [Parameter(Mandatory = true, Position = 0)] + public string Text { get; set; } = string.Empty; + + /// Heading level from 1 through 10. + [Parameter] + [ValidateRange(1, 10)] + public int Level { get; set; } = 1; + + /// Emit the created heading paragraph. + [Parameter] + public SwitchParameter PassThru { get; set; } + + /// + protected override void ProcessRecord() { + OdtDocument document = Document ?? OpenDocumentDslContext.Require(this).RequireDocument(this, "text"); + OdtParagraph heading = document.AddHeading(Text, Level); + if (PassThru.IsPresent) WriteObject(heading); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentParagraphCommand.cs b/Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentParagraphCommand.cs new file mode 100644 index 00000000..60c63a3d --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentParagraphCommand.cs @@ -0,0 +1,34 @@ +using System.Management.Automation; +using OfficeIMO.OpenDocument; +using PSWriteOffice.Services.OpenDocument; + +namespace PSWriteOffice.Cmdlets.OpenDocument; + +/// Adds a paragraph to an OpenDocument text document. +/// +/// Add body text in the OpenDocument DSL. +/// PS> +/// New-OfficeOpenDocument -Kind Text -Path .\Report.odt -Content { Add-OfficeOpenDocumentParagraph -Text 'Generated by PSWriteOffice' } +/// +[Cmdlet(VerbsCommon.Add, "OfficeOpenDocumentParagraph")] +[OutputType(typeof(OdtParagraph))] +public sealed class AddOfficeOpenDocumentParagraphCommand : PSCmdlet { + /// OpenDocument text document. Omit inside New-OfficeOpenDocument -Content. + [Parameter(ValueFromPipeline = true)] + public OdtDocument? Document { get; set; } + + /// Paragraph text. + [Parameter(Mandatory = true, Position = 0)] + public string Text { get; set; } = string.Empty; + + /// Emit the created paragraph. + [Parameter] + public SwitchParameter PassThru { get; set; } + + /// + protected override void ProcessRecord() { + OdtDocument document = Document ?? OpenDocumentDslContext.Require(this).RequireDocument(this, "text"); + OdtParagraph paragraph = document.AddParagraph(Text); + if (PassThru.IsPresent) WriteObject(paragraph); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentSheetCommand.cs b/Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentSheetCommand.cs new file mode 100644 index 00000000..bd1e8b03 --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentSheetCommand.cs @@ -0,0 +1,45 @@ +using System.Management.Automation; +using OfficeIMO.OpenDocument; +using PSWriteOffice.Services.OpenDocument; + +namespace PSWriteOffice.Cmdlets.OpenDocument; + +/// Adds a worksheet to an OpenDocument spreadsheet and optionally runs nested cell content. +/// +/// Add a worksheet inside an OpenDocument DSL. +/// PS> +/// Add-OfficeOpenDocumentSheet -Name 'Data' -Content { +/// Set-OfficeOpenDocumentCell -Row 0 -Column 0 -Value 'Status' +/// } +/// +[Cmdlet(VerbsCommon.Add, "OfficeOpenDocumentSheet")] +[OutputType(typeof(OdsSheet))] +public sealed class AddOfficeOpenDocumentSheetCommand : PSCmdlet { + /// OpenDocument spreadsheet. Omit inside New-OfficeOpenDocument -Content. + [Parameter(ValueFromPipeline = true)] + public OdsDocument? Document { get; set; } + + /// Worksheet name. + [Parameter(Mandatory = true, Position = 0)] + public string Name { get; set; } = string.Empty; + + /// Nested cell commands that use this worksheet as their current target. + [Parameter(Position = 1)] + public ScriptBlock? Content { get; set; } + + /// Emit the created worksheet. + [Parameter] + public SwitchParameter PassThru { get; set; } + + /// + protected override void ProcessRecord() { + OpenDocumentDslContext? context = OpenDocumentDslContext.Current; + OdsDocument document = Document ?? OpenDocumentDslContext.Require(this).RequireDocument(this, "spreadsheet"); + OdsSheet sheet = document.AddSheet(Name); + if (Content != null) { + if (context == null) throw new PSInvalidOperationException("Nested -Content requires an active New-OfficeOpenDocument -Content scope. For object composition, pass the returned sheet to Set-OfficeOpenDocumentCell."); + using (context.Push(sheet)) Content.InvokeReturnAsIs(); + } + if (PassThru.IsPresent) WriteObject(sheet); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentSlideCommand.cs b/Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentSlideCommand.cs new file mode 100644 index 00000000..1aa8ea5d --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentSlideCommand.cs @@ -0,0 +1,45 @@ +using System.Management.Automation; +using OfficeIMO.OpenDocument; +using PSWriteOffice.Services.OpenDocument; + +namespace PSWriteOffice.Cmdlets.OpenDocument; + +/// Adds a slide to an OpenDocument presentation and optionally runs nested slide content. +/// +/// Add a slide with positioned text. +/// PS> +/// Add-OfficeOpenDocumentSlide -Name 'Summary' -Content { +/// Add-OfficeOpenDocumentTextBox -Text 'Quarterly summary' -X 2 -Y 2 -Width 20 -Height 3 +/// } +/// +[Cmdlet(VerbsCommon.Add, "OfficeOpenDocumentSlide")] +[OutputType(typeof(OdpSlide))] +public sealed class AddOfficeOpenDocumentSlideCommand : PSCmdlet { + /// OpenDocument presentation. Omit inside New-OfficeOpenDocument -Content. + [Parameter(ValueFromPipeline = true)] + public OdpPresentation? Document { get; set; } + + /// Optional unique slide name. + [Parameter(Position = 0)] + public string? Name { get; set; } + + /// Nested slide commands that use this slide as their current target. + [Parameter(Position = 1)] + public ScriptBlock? Content { get; set; } + + /// Emit the created slide. + [Parameter] + public SwitchParameter PassThru { get; set; } + + /// + protected override void ProcessRecord() { + OpenDocumentDslContext? context = OpenDocumentDslContext.Current; + OdpPresentation document = Document ?? OpenDocumentDslContext.Require(this).RequireDocument(this, "presentation"); + OdpSlide slide = document.AddSlide(Name); + if (Content != null) { + if (context == null) throw new PSInvalidOperationException("Nested -Content requires an active New-OfficeOpenDocument -Content scope. For object composition, pass the returned slide to Add-OfficeOpenDocumentTextBox."); + using (context.Push(slide)) Content.InvokeReturnAsIs(); + } + if (PassThru.IsPresent) WriteObject(slide); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentTextBoxCommand.cs b/Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentTextBoxCommand.cs new file mode 100644 index 00000000..2e9e7295 --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentTextBoxCommand.cs @@ -0,0 +1,43 @@ +using System.Management.Automation; +using OfficeIMO.OpenDocument; +using PSWriteOffice.Services.OpenDocument; + +namespace PSWriteOffice.Cmdlets.OpenDocument; + +/// Adds a positioned text box to an OpenDocument presentation slide. +/// +/// Place a text box using centimetre coordinates. +/// PS> +/// Add-OfficeOpenDocumentTextBox -Text 'Approved' -X 18 -Y 12 -Width 6 -Height 2 +/// +[Cmdlet(VerbsCommon.Add, "OfficeOpenDocumentTextBox")] +[OutputType(typeof(OdpTextBox))] +public sealed class AddOfficeOpenDocumentTextBoxCommand : PSCmdlet { + /// Slide target. Omit inside Add-OfficeOpenDocumentSlide -Content. + [Parameter(ValueFromPipeline = true)] + public OdpSlide? Slide { get; set; } + + /// Text box content. + [Parameter(Mandatory = true, Position = 0)] + public string Text { get; set; } = string.Empty; + + /// Horizontal position in centimeters. + [Parameter] public double X { get; set; } = 1; + /// Vertical position in centimeters. + [Parameter] public double Y { get; set; } = 1; + /// Width in centimeters. + [Parameter] [ValidateRange(double.Epsilon, double.MaxValue)] public double Width { get; set; } = 20; + /// Height in centimeters. + [Parameter] [ValidateRange(double.Epsilon, double.MaxValue)] public double Height { get; set; } = 3; + /// Optional shape name. + [Parameter] public string? Name { get; set; } + /// Emit the created text box. + [Parameter] public SwitchParameter PassThru { get; set; } + + /// + protected override void ProcessRecord() { + OdpSlide slide = Slide ?? OpenDocumentDslContext.Require(this).RequireSlide(); + OdpTextBox textBox = slide.AddTextBox(OdfRect.FromCentimeters(X, Y, Width, Height), Text, Name); + if (PassThru.IsPresent) WriteObject(textBox); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/OpenDocument/ConvertFromOfficeOpenDocumentCommand.cs b/Sources/PSWriteOffice/Cmdlets/OpenDocument/ConvertFromOfficeOpenDocumentCommand.cs index 1252b2f0..6b2155f0 100644 --- a/Sources/PSWriteOffice/Cmdlets/OpenDocument/ConvertFromOfficeOpenDocumentCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/OpenDocument/ConvertFromOfficeOpenDocumentCommand.cs @@ -9,6 +9,12 @@ namespace PSWriteOffice.Cmdlets.OpenDocument; /// Converts native ODT, ODS, or ODP content to Word, Excel, or PowerPoint with fidelity evidence. +/// +/// Convert an ODS spreadsheet to Excel. +/// PS> +/// $options = New-OfficeExcelOpenDocumentOptions -IncludeBasicStyles -MaximumExpandedCells 250000 +/// ConvertFrom-OfficeOpenDocument -Path .\Status.ods -OutputPath .\Status.xlsx -ExcelOptions $options +/// [Cmdlet(VerbsData.ConvertFrom, "OfficeOpenDocument", SupportsShouldProcess = true)] public sealed class ConvertFromOfficeOpenDocumentCommand : PSCmdlet { diff --git a/Sources/PSWriteOffice/Cmdlets/OpenDocument/ConvertToOfficeOpenDocumentCommand.cs b/Sources/PSWriteOffice/Cmdlets/OpenDocument/ConvertToOfficeOpenDocumentCommand.cs index 94b3a8ea..dbfa5046 100644 --- a/Sources/PSWriteOffice/Cmdlets/OpenDocument/ConvertToOfficeOpenDocumentCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/OpenDocument/ConvertToOfficeOpenDocumentCommand.cs @@ -15,6 +15,12 @@ namespace PSWriteOffice.Cmdlets.OpenDocument; /// Converts Word, Excel, or PowerPoint content to native OpenDocument with fidelity evidence. +/// +/// Convert Word to ODT and reject lossy conversion. +/// PS> +/// $options = New-OfficeWordOpenDocumentOptions -IncludeImages -IncludeHeadersAndFooters +/// ConvertTo-OfficeOpenDocument -Path .\Report.docx -OutputPath .\Report.odt -WordOptions $options -FailOnLoss +/// [Cmdlet(VerbsData.ConvertTo, "OfficeOpenDocument", DefaultParameterSetName = "Path", SupportsShouldProcess = true)] [OutputType(typeof(OdfConversionResult), typeof(OdfConversionResult), typeof(OdfConversionResult))] public sealed class ConvertToOfficeOpenDocumentCommand : PSCmdlet diff --git a/Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficeExcelOpenDocumentOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficeExcelOpenDocumentOptionsCommand.cs new file mode 100644 index 00000000..ffc0cf85 --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficeExcelOpenDocumentOptionsCommand.cs @@ -0,0 +1,38 @@ +using System.Management.Automation; +using OfficeIMO.Excel.OpenDocument; +using OfficeIMO.OpenDocument; + +namespace PSWriteOffice.Cmdlets.OpenDocument; + +/// Creates Excel/OpenDocument conversion settings. +/// +/// Convert a bounded worksheet area with basic styles. +/// PS> +/// $options = New-OfficeExcelOpenDocumentOptions -IncludeBasicStyles -MaximumRows 10000 -MaximumColumns 100 +/// ConvertTo-OfficeOpenDocument -Path .\Data.xlsx -OutputPath .\Data.ods -ExcelOptions $options +/// +[Cmdlet(VerbsCommon.New, "OfficeExcelOpenDocumentOptions")] +[OutputType(typeof(ExcelOpenDocumentConversionOptions))] +public sealed class NewOfficeExcelOpenDocumentOptionsCommand : PSCmdlet { + /// Whether conversion loss is reported or rejected. + [Parameter] public OdfConversionLossPolicy? LossPolicy { get; set; } + /// Copy common font, fill, and number-format styles. + [Parameter] public SwitchParameter IncludeBasicStyles { get; set; } + /// Maximum cells materialized during conversion. + [Parameter] [ValidateRange(1, long.MaxValue)] public long? MaximumExpandedCells { get; set; } + /// Maximum spreadsheet rows. + [Parameter] [ValidateRange(1, 1048576)] public int? MaximumRows { get; set; } + /// Maximum spreadsheet columns. + [Parameter] [ValidateRange(1, 16384)] public int? MaximumColumns { get; set; } + + /// + protected override void ProcessRecord() { + var options = new ExcelOpenDocumentConversionOptions(); + if (LossPolicy.HasValue) options.LossPolicy = LossPolicy.Value; + if (MyInvocation.BoundParameters.ContainsKey(nameof(IncludeBasicStyles))) options.IncludeBasicStyles = IncludeBasicStyles.IsPresent; + if (MaximumExpandedCells.HasValue) options.MaximumExpandedCells = MaximumExpandedCells.Value; + if (MaximumRows.HasValue) options.MaximumRows = MaximumRows.Value; + if (MaximumColumns.HasValue) options.MaximumColumns = MaximumColumns.Value; + WriteObject(options); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficeOpenDocumentCommand.cs b/Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficeOpenDocumentCommand.cs index fba0602e..8a823f1a 100644 --- a/Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficeOpenDocumentCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficeOpenDocumentCommand.cs @@ -1,10 +1,31 @@ using System.IO; using System.Management.Automation; using OfficeIMO.OpenDocument; +using PSWriteOffice.Services.OpenDocument; namespace PSWriteOffice.Cmdlets.OpenDocument; /// Creates a native ODT, ODS, or ODP document. +/// +/// Create an OpenDocument text report. +/// PS> +/// New-OfficeOpenDocument -Kind Text -Path .\Report.odt -Content { +/// Add-OfficeOpenDocumentHeading -Text 'Service report' -Level 1 +/// Add-OfficeOpenDocumentParagraph -Text 'Generated by PSWriteOffice.' +/// } +/// +/// +/// Create a spreadsheet with typed cells. +/// PS> +/// New-OfficeOpenDocument -Kind Spreadsheet -Path .\Status.ods -Content { +/// Add-OfficeOpenDocumentSheet -Name 'Services' -Content { +/// Set-OfficeOpenDocumentCell -Row 0 -Column 0 -Value 'Service' +/// Set-OfficeOpenDocumentCell -Row 0 -Column 1 -Value 'Healthy' +/// Set-OfficeOpenDocumentCell -Row 1 -Column 0 -Value 'Directory' +/// Set-OfficeOpenDocumentCell -Row 1 -Column 1 -Value $true +/// } +/// } +/// [Cmdlet(VerbsCommon.New, "OfficeOpenDocument", SupportsShouldProcess = true)] [OutputType(typeof(OdfDocument), typeof(FileInfo))] public sealed class NewOfficeOpenDocumentCommand : PSCmdlet { @@ -16,31 +37,50 @@ public sealed class NewOfficeOpenDocumentCommand : PSCmdlet { [Parameter(Position = 1)] public string? Path { get; set; } + /// DSL scriptblock describing OpenDocument text, spreadsheet, or presentation content. + [Parameter(Position = 2)] + public ScriptBlock? Content { get; set; } + + /// Skip saving and emit the live OpenDocument model even when -Path is supplied. + [Parameter] + public SwitchParameter NoSave { get; set; } + /// Emit the saved file when a destination path is supplied. [Parameter] public SwitchParameter PassThru { get; set; } /// protected override void ProcessRecord() { + string? path = null; + bool save = !string.IsNullOrWhiteSpace(Path) && !NoSave.IsPresent; + if (save) { + path = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path!); + OpenDocumentCommandUtilities.ValidateOpenDocumentExtension(path, Kind, nameof(Path)); + if (!ShouldProcess(path, "Create OpenDocument package")) { + return; + } + } + OdfDocument document = Kind switch { OdfDocumentKind.Text => OdtDocument.Create(), OdfDocumentKind.Spreadsheet => OdsDocument.Create(), OdfDocumentKind.Presentation => OdpPresentation.Create(), _ => throw new PSArgumentOutOfRangeException(nameof(Kind), Kind, "Use Text, Spreadsheet, or Presentation.") }; - if (!string.IsNullOrWhiteSpace(Path)) { - var path = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path!); - OpenDocumentCommandUtilities.ValidateOpenDocumentExtension(path, Kind, nameof(Path)); - if (!ShouldProcess(path, "Create OpenDocument package")) { - return; + if (Content != null) { + using (OpenDocumentDslContext.Enter(document)) { + Content.InvokeReturnAsIs(); } - Directory.CreateDirectory(System.IO.Path.GetDirectoryName(path) ?? SessionState.Path.CurrentFileSystemLocation.Path); - document.Save(path); + } + + if (save) { + Directory.CreateDirectory(System.IO.Path.GetDirectoryName(path!) ?? SessionState.Path.CurrentFileSystemLocation.Path); + document.Save(path!); if (PassThru.IsPresent) { - WriteObject(new FileInfo(path)); + WriteObject(new FileInfo(path!)); } return; } WriteObject(document); } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficePowerPointOpenDocumentOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficePowerPointOpenDocumentOptionsCommand.cs new file mode 100644 index 00000000..0c9234b0 --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficePowerPointOpenDocumentOptionsCommand.cs @@ -0,0 +1,45 @@ +using System.Management.Automation; +using OfficeIMO.OpenDocument; +using OfficeIMO.PowerPoint.OpenDocument; + +namespace PSWriteOffice.Cmdlets.OpenDocument; + +/// Creates PowerPoint/OpenDocument conversion settings. +/// +/// Include slide images, notes, and basic formatting. +/// PS> +/// $options = New-OfficePowerPointOpenDocumentOptions -IncludeImages -IncludeSpeakerNotes -IncludeBasicFormatting +/// ConvertTo-OfficeOpenDocument -Path .\Deck.pptx -OutputPath .\Deck.odp -PowerPointOptions $options +/// +[Cmdlet(VerbsCommon.New, "OfficePowerPointOpenDocumentOptions")] +[OutputType(typeof(PowerPointOpenDocumentConversionOptions))] +public sealed class NewOfficePowerPointOpenDocumentOptionsCommand : PSCmdlet { + /// Whether conversion loss is reported or rejected. + [Parameter] public OdfConversionLossPolicy? LossPolicy { get; set; } + /// Copy supported embedded images. + [Parameter] public SwitchParameter IncludeImages { get; set; } + /// Copy plain speaker-note text. + [Parameter] public SwitchParameter IncludeSpeakerNotes { get; set; } + /// Copy common fills, outlines, and text-run formatting. + [Parameter] public SwitchParameter IncludeBasicFormatting { get; set; } + /// Maximum rows in converted presentation tables. + [Parameter] [ValidateRange(1, int.MaxValue)] public int? MaxTableRows { get; set; } + /// Maximum columns in converted presentation tables. + [Parameter] [ValidateRange(1, int.MaxValue)] public int? MaxTableColumns { get; set; } + + /// + protected override void ProcessRecord() { + var options = new PowerPointOpenDocumentConversionOptions(); + if (LossPolicy.HasValue) options.LossPolicy = LossPolicy.Value; + Apply(nameof(IncludeImages), value => options.IncludeImages = value); + Apply(nameof(IncludeSpeakerNotes), value => options.IncludeSpeakerNotes = value); + Apply(nameof(IncludeBasicFormatting), value => options.IncludeBasicFormatting = value); + if (MaxTableRows.HasValue) options.MaxTableRows = MaxTableRows.Value; + if (MaxTableColumns.HasValue) options.MaxTableColumns = MaxTableColumns.Value; + WriteObject(options); + } + private void Apply(string name, System.Action setter) { + if (!MyInvocation.BoundParameters.ContainsKey(name)) return; + setter(((SwitchParameter)MyInvocation.BoundParameters[name]).IsPresent); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficeWordOpenDocumentOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficeWordOpenDocumentOptionsCommand.cs new file mode 100644 index 00000000..92eb11fa --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficeWordOpenDocumentOptionsCommand.cs @@ -0,0 +1,33 @@ +using System.Management.Automation; +using OfficeIMO.OpenDocument; +using OfficeIMO.Word.OpenDocument; + +namespace PSWriteOffice.Cmdlets.OpenDocument; + +/// Creates Word/OpenDocument conversion settings. +/// +/// Include Word images and headers during conversion. +/// PS> +/// $options = New-OfficeWordOpenDocumentOptions -IncludeImages -IncludeHeadersAndFooters +/// ConvertTo-OfficeOpenDocument -Path .\Report.docx -OutputPath .\Report.odt -WordOptions $options +/// +[Cmdlet(VerbsCommon.New, "OfficeWordOpenDocumentOptions")] +[OutputType(typeof(WordOpenDocumentConversionOptions))] +public sealed class NewOfficeWordOpenDocumentOptionsCommand : PSCmdlet { + /// Whether conversion loss is reported or rejected. + [Parameter] public OdfConversionLossPolicy? LossPolicy { get; set; } + /// Copy supported inline images. + [Parameter] public SwitchParameter IncludeImages { get; set; } + /// Copy default headers and footers. + [Parameter] public SwitchParameter IncludeHeadersAndFooters { get; set; } + + /// + protected override void ProcessRecord() { + var options = new WordOpenDocumentConversionOptions(); + if (LossPolicy.HasValue) options.LossPolicy = LossPolicy.Value; + if (IsBound(nameof(IncludeImages))) options.IncludeImages = IncludeImages.IsPresent; + if (IsBound(nameof(IncludeHeadersAndFooters))) options.IncludeHeadersAndFooters = IncludeHeadersAndFooters.IsPresent; + WriteObject(options); + } + private bool IsBound(string name) => MyInvocation.BoundParameters.ContainsKey(name); +} diff --git a/Sources/PSWriteOffice/Cmdlets/OpenDocument/SetOfficeOpenDocumentCellCommand.cs b/Sources/PSWriteOffice/Cmdlets/OpenDocument/SetOfficeOpenDocumentCellCommand.cs new file mode 100644 index 00000000..9c77dc82 --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/OpenDocument/SetOfficeOpenDocumentCellCommand.cs @@ -0,0 +1,63 @@ +using System; +using System.Management.Automation; +using OfficeIMO.OpenDocument; +using PSWriteOffice.Services.OpenDocument; + +namespace PSWriteOffice.Cmdlets.OpenDocument; + +/// Sets a typed zero-based cell value in an OpenDocument spreadsheet. +/// +/// Set typed values inside the active worksheet. +/// PS> +/// Set-OfficeOpenDocumentCell -Row 0 -Column 0 -Value 'Healthy' +/// Set-OfficeOpenDocumentCell -Row 0 -Column 1 -Value $true +/// +[Cmdlet(VerbsCommon.Set, "OfficeOpenDocumentCell")] +[OutputType(typeof(OdsCell))] +public sealed class SetOfficeOpenDocumentCellCommand : PSCmdlet { + /// Worksheet target. Omit inside Add-OfficeOpenDocumentSheet -Content. + [Parameter(ValueFromPipeline = true)] + public OdsSheet? Sheet { get; set; } + + /// Zero-based row index. + [Parameter(Mandatory = true)] + [ValidateRange(0, long.MaxValue)] + public long Row { get; set; } + + /// Zero-based column index. + [Parameter(Mandatory = true)] + [ValidateRange(0, long.MaxValue)] + public long Column { get; set; } + + /// String, number, decimal, boolean, date, date-time offset, or time span value. + [Parameter(Mandatory = true, Position = 0)] + [AllowNull] + public object? Value { get; set; } + + /// Emit the updated cell. + [Parameter] + public SwitchParameter PassThru { get; set; } + + /// + protected override void ProcessRecord() { + OdsSheet sheet = Sheet ?? OpenDocumentDslContext.Require(this).RequireSheet(); + OdsCell cell = sheet.Cell(Row, Column); + object? value = Value is PSObject psObject ? psObject.BaseObject : Value; + switch (value) { + case null: cell.ClearValue(); break; + case bool boolean: cell.SetBoolean(boolean); break; + case byte number: cell.SetNumber(number); break; + case short number: cell.SetNumber(number); break; + case int number: cell.SetNumber(number); break; + case long number: cell.SetNumber(number); break; + case float number: cell.SetNumber(number); break; + case double number: cell.SetNumber(number); break; + case decimal number: cell.SetDecimal(number); break; + case DateTime date: cell.SetDate(date); break; + case DateTimeOffset dateTime: cell.SetDateTime(dateTime); break; + case TimeSpan time: cell.SetDuration(time); break; + default: cell.SetString(LanguagePrimitives.ConvertTo(value)); break; + } + if (PassThru.IsPresent) WriteObject(cell); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/CompareOfficePdfVisualCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/CompareOfficePdfVisualCommand.cs index 54704560..e9d12475 100644 --- a/Sources/PSWriteOffice/Cmdlets/Pdf/CompareOfficePdfVisualCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Pdf/CompareOfficePdfVisualCommand.cs @@ -8,7 +8,8 @@ namespace PSWriteOffice.Cmdlets.Pdf; /// /// Compare selected pages with a small pixel tolerance. /// PS> -/// $options = [OfficeIMO.Pdf.PdfVisualComparisonOptions]::new(); $options.AllowedDifferenceRatio = 0.001; Compare-OfficePdfVisual -ReferencePath .\Expected.pdf -DifferencePath .\Actual.pdf -PageRange '1-3' -Options $options +/// $options = New-OfficePdfVisualComparisonOptions -AllowedDifferenceRatio 0.001 -ChannelTolerance 2 +/// Compare-OfficePdfVisual -ReferencePath .\Expected.pdf -DifferencePath .\Actual.pdf -PageRange '1-3' -Options $options /// Returns per-page difference ratios, images, and diagnostics. /// [Cmdlet(VerbsData.Compare, "OfficePdfVisual")] diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs index b819c22f..196aa88d 100644 --- a/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs @@ -32,19 +32,26 @@ namespace PSWriteOffice.Cmdlets.Pdf; /// PS> /// Export-OfficeDocumentPdf -InputPath .\Report.docx -Path .\Report.pdf -PassThru /// +/// +/// Configure Markdown PDF export with ordinary PowerShell parameters. +/// PS> +/// $options = New-OfficeMarkdownPdfOptions -Title 'Service report' -IncludeLocalImages -BaseDirectory .\Assets +/// Export-OfficeDocumentPdf -InputPath .\Report.md -Path .\Report.pdf -MarkdownOptions $options +/// The New-Office*PdfOptions commands build every format-specific options object; no hashtable or .NET constructor is required. +/// [Cmdlet(VerbsData.Export, "OfficeDocumentPdf", DefaultParameterSetName = ParameterSetDocument, SupportsShouldProcess = true)] [OutputType(typeof(FileInfo))] public sealed class ExportOfficeDocumentPdfCommand : PSCmdlet { private const string ParameterSetDocument = "Document"; private const string ParameterSetPath = "Path"; - /// Live Word, Excel, PowerPoint, Markdown, or RTF document to export. + /// Live Word, Excel, PowerPoint, Markdown, or RTF document to export. Saved FileInfo and path strings from the pipeline are opened automatically. [Parameter(Mandatory = true, ValueFromPipeline = true, Position = 0, ParameterSetName = ParameterSetDocument)] public object Document { get; set; } = null!; /// Source .docx, .xlsx, .pptx, .md, .markdown, or .rtf file. - [Parameter(Mandatory = true, Position = 0, ParameterSetName = ParameterSetPath)] - [Alias("SourcePath")] + [Parameter(Mandatory = true, ValueFromPipelineByPropertyName = true, Position = 0, ParameterSetName = ParameterSetPath)] + [Alias("SourcePath", "FullName")] public string InputPath { get; set; } = string.Empty; /// Destination PDF path. @@ -101,13 +108,20 @@ protected override void ProcessRecord() { } PdfCommandUtilities.EnsureDirectory(outputPath); - object document = UnwrapDocument(Document); + object document; Action? closeOwnedDocument = null; string? sourcePath = null; try { if (ParameterSetName == ParameterSetPath) { - document = LoadDocument(out closeOwnedDocument, out sourcePath); + document = LoadDocument(InputPath, out closeOwnedDocument, out sourcePath); + } else { + document = UnwrapDocument(Document); + if (document is FileInfo file) { + document = LoadDocument(file.FullName, out closeOwnedDocument, out sourcePath); + } else if (document is string path) { + document = LoadDocument(path, out closeOwnedDocument, out sourcePath); + } } PdfSaveResult result = SaveDocument(document, outputPath, sourcePath); @@ -127,8 +141,8 @@ protected override void ProcessRecord() { } } - private object LoadDocument(out Action? closeOwnedDocument, out string sourcePath) { - sourcePath = PdfCommandUtilities.ResolveExistingFilePath(this, InputPath); + private object LoadDocument(string inputPath, out Action? closeOwnedDocument, out string sourcePath) { + sourcePath = PdfCommandUtilities.ResolveExistingFilePath(this, inputPath); switch (System.IO.Path.GetExtension(sourcePath).ToLowerInvariant()) { case ".docx": { var document = WordDocumentService.LoadDocument(sourcePath, readOnly: true, autoSave: false, Password); diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficePdfImageCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficePdfImageCommand.cs index 28125ddc..738b02a4 100644 --- a/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficePdfImageCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficePdfImageCommand.cs @@ -12,7 +12,7 @@ namespace PSWriteOffice.Cmdlets.Pdf; /// Export selected pages as PNG files. /// PS> /// Export-OfficePdfImage -Path .\Report.pdf -OutputPath .\Pages -PageRange '1-3,5' -/// Writes the selected pages and returns normalized image results with rendering diagnostics. +/// Writes the selected pages. Add -PassThru to receive normalized image results with rendering diagnostics. /// [Cmdlet(VerbsData.Export, "OfficePdfImage", SupportsShouldProcess = true)] [OutputType(typeof(OfficeImageExportResult))] @@ -50,6 +50,10 @@ public sealed class ExportOfficePdfImageCommand : PSCmdlet [Parameter] public SwitchParameter IgnorePermissionRestrictions { get; set; } + /// Emit one structured image export result per saved page. + [Parameter] + public SwitchParameter PassThru { get; set; } + /// protected override void ProcessRecord() { @@ -70,7 +74,8 @@ protected override void ProcessRecord() var page = pages[index]; int pageNumber = GetPageNumber(page, index + 1); var file = System.IO.Path.Combine(output, $"page-{pageNumber:D4}{page.FileExtension}"); - WriteObject(page.Save(file, OfficeImageExportFileConflictPolicy.Replace)); + OfficeImageExportResult result = page.Save(file, OfficeImageExportFileConflictPolicy.Replace); + if (PassThru.IsPresent) WriteObject(result); } } diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficePdfLayoutOverlayCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficePdfLayoutOverlayCommand.cs index 93b588a9..30d08a1d 100644 --- a/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficePdfLayoutOverlayCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficePdfLayoutOverlayCommand.cs @@ -7,6 +7,11 @@ namespace PSWriteOffice.Cmdlets.Pdf; /// Exports PDF word, line, region, and reading-order diagnostics as PNG or SVG. +/// +/// Export an SVG layout overlay for the first page. +/// PS> +/// $result = Export-OfficePdfLayoutOverlay -Path .\Report.pdf -OutputPath .\Report-layout.svg -Page 1 -Format Svg -PassThru +/// [Cmdlet(VerbsData.Export, "OfficePdfLayoutOverlay", SupportsShouldProcess = true)] [OutputType(typeof(OfficeImageExportResult))] public sealed class ExportOfficePdfLayoutOverlayCommand : PSCmdlet @@ -54,6 +59,10 @@ public sealed class ExportOfficePdfLayoutOverlayCommand : PSCmdlet [Parameter] public SwitchParameter IgnorePermissionRestrictions { get; set; } + /// Emit the structured image export result. + [Parameter] + public SwitchParameter PassThru { get; set; } + /// protected override void ProcessRecord() { @@ -73,9 +82,10 @@ protected override void ProcessRecord() }; Directory.CreateDirectory(System.IO.Path.GetDirectoryName(output) ?? SessionState.Path.CurrentFileSystemLocation.Path); File.WriteAllBytes(output, bytes); - WriteObject(new OfficeImageExportResult(Format, + var result = new OfficeImageExportResult(Format, checked((int)System.Math.Ceiling(drawing.Width * Scale)), checked((int)System.Math.Ceiling(drawing.Height * Scale)), - bytes, $"Page {Page} layout", $"{input}#page={Page}")); + bytes, $"Page {Page} layout", $"{input}#page={Page}"); + if (PassThru.IsPresent) WriteObject(result); } } diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/NewOfficePdfCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/NewOfficePdfCommand.cs index 9e0f77b7..ee41beb4 100644 --- a/Sources/PSWriteOffice/Cmdlets/Pdf/NewOfficePdfCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Pdf/NewOfficePdfCommand.cs @@ -188,6 +188,10 @@ public sealed class NewOfficePdfCommand : PSCmdlet { /// protected override void ProcessRecord() { + if (NoSave.IsPresent && Open.IsPresent) { + throw new PSArgumentException("-Open cannot be used with -NoSave because no file is written. Save the returned PDF explicitly, then use -Open on Save-OfficePdf.", nameof(Open)); + } + var savePath = string.IsNullOrWhiteSpace(Path) || NoSave.IsPresent ? null : PdfCommandUtilities.ResolvePath(this, Path!); @@ -329,4 +333,4 @@ private void ConfigureViewerPreferences(PdfOptions options) { ? null : PdfCommandUtilities.ResolvePath(this, path!); } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/NewOfficePdfImageOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/NewOfficePdfImageOptionsCommand.cs new file mode 100644 index 00000000..325a4a98 --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Pdf/NewOfficePdfImageOptionsCommand.cs @@ -0,0 +1,27 @@ +using System.Management.Automation; +using OfficeIMO.Pdf; +using PSWriteOffice.Cmdlets.Imaging; + +namespace PSWriteOffice.Cmdlets.Pdf; + +/// Creates discoverable thumbnail and rendering settings for Export-OfficePdfImage. +/// +/// Create compact PDF thumbnails with bounded output dimensions. +/// PS> +/// $options = New-OfficePdfImageOptions -ThumbnailMaxDimension 320 -MaximumOutputWidth 640 +/// Export-OfficePdfImage -Path .\Report.pdf -OutputPath .\Thumbnails -Options $options +/// +[Cmdlet(VerbsCommon.New, "OfficePdfImageOptions")] +[OutputType(typeof(PdfImageExportOptions))] +public sealed class NewOfficePdfImageOptionsCommand : OfficeImageOptionsCommandBase { + /// Maximum thumbnail width or height. + [Parameter] [ValidateRange(1, int.MaxValue)] public int? ThumbnailMaxDimension { get; set; } + + /// + protected override void ProcessRecord() { + var options = new PdfImageExportOptions(); + ApplyCommon(options); + if (ThumbnailMaxDimension.HasValue) options.ThumbnailMaxDimension = ThumbnailMaxDimension.Value; + WriteObject(options); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/NewOfficePdfVisualComparisonOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/NewOfficePdfVisualComparisonOptionsCommand.cs new file mode 100644 index 00000000..abcce01c --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Pdf/NewOfficePdfVisualComparisonOptionsCommand.cs @@ -0,0 +1,50 @@ +using System.Management.Automation; +using OfficeIMO.Drawing; +using OfficeIMO.Pdf; + +namespace PSWriteOffice.Cmdlets.Pdf; + +/// Creates discoverable rendering and tolerance settings for Compare-OfficePdfVisual. +/// +/// Compare PDFs with a small rendering tolerance. +/// PS> +/// $options = New-OfficePdfVisualComparisonOptions -ChannelTolerance 2 -AllowedDifferenceRatio 0.001 -MaxPages 50 +/// Compare-OfficePdfVisual -ReferencePath .\Expected.pdf -DifferencePath .\Actual.pdf -Options $options +/// +[Cmdlet(VerbsCommon.New, "OfficePdfVisualComparisonOptions")] +[OutputType(typeof(PdfVisualComparisonOptions))] +public sealed class NewOfficePdfVisualComparisonOptionsCommand : PSCmdlet { + /// Render scale applied before comparison. + [Parameter] [ValidateRange(double.Epsilon, double.MaxValue)] public double? Scale { get; set; } + /// Maximum per-channel byte difference treated as equal. + [Parameter] public byte? ChannelTolerance { get; set; } + /// Maximum differing-pixel ratio treated as equal. + [Parameter] [ValidateRange(0d, 1d)] public double? AllowedDifferenceRatio { get; set; } + /// Page alignment used for differently sized renders. + [Parameter] public PdfVisualPageAlignment? Alignment { get; set; } + /// Background color name or hex value. + [Parameter] public string? BackgroundColor { get; set; } + /// Maximum pages compared. + [Parameter] [ValidateRange(1, int.MaxValue)] public int? MaxPages { get; set; } + /// Maximum pixels accepted per rendered image. + [Parameter] [ValidateRange(1, long.MaxValue)] public long? MaxPixelsPerImage { get; set; } + /// Maximum pixels accepted across the comparison. + [Parameter] [ValidateRange(1, long.MaxValue)] public long? MaxTotalPixels { get; set; } + /// Maximum total bytes retained for comparison artifacts. + [Parameter] [ValidateRange(1, long.MaxValue)] public long? MaxTotalOutputBytes { get; set; } + + /// + protected override void ProcessRecord() { + var options = new PdfVisualComparisonOptions(); + if (Scale.HasValue) options.Scale = Scale.Value; + if (ChannelTolerance.HasValue) options.ChannelTolerance = ChannelTolerance.Value; + if (AllowedDifferenceRatio.HasValue) options.AllowedDifferenceRatio = AllowedDifferenceRatio.Value; + if (Alignment.HasValue) options.Alignment = Alignment.Value; + if (!string.IsNullOrWhiteSpace(BackgroundColor)) options.Background = OfficeColor.Parse(BackgroundColor!); + if (MaxPages.HasValue) options.MaxPages = MaxPages.Value; + if (MaxPixelsPerImage.HasValue) options.MaxPixelsPerImage = MaxPixelsPerImage.Value; + if (MaxTotalPixels.HasValue) options.MaxTotalPixels = MaxTotalPixels.Value; + if (MaxTotalOutputBytes.HasValue) options.MaxTotalOutputBytes = MaxTotalOutputBytes.Value; + WriteObject(options); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/RemoveOfficePdfAnnotationCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/RemoveOfficePdfAnnotationCommand.cs index d164ae23..b7a893b3 100644 --- a/Sources/PSWriteOffice/Cmdlets/Pdf/RemoveOfficePdfAnnotationCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Pdf/RemoveOfficePdfAnnotationCommand.cs @@ -6,6 +6,11 @@ namespace PSWriteOffice.Cmdlets.Pdf; /// Removes PDF annotations matching friendly filters. +/// +/// Remove text annotations from the first page. +/// PS> +/// Remove-OfficePdfAnnotation -Path .\Reviewed.pdf -OutputPath .\Clean.pdf -PageNumber 1 -Subtype Text -Confirm:$false +/// [Cmdlet(VerbsCommon.Remove, "OfficePdfAnnotation", SupportsShouldProcess = true)] [OutputType(typeof(FileInfo))] [OutputType(typeof(PdfAnnotationEditResult))] @@ -74,4 +79,4 @@ protected override void ProcessRecord() { WritePassThru(new FileInfo(outputPath)); } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/ExportOfficePowerPointImageCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/ExportOfficePowerPointImageCommand.cs index 745ef278..779a77f0 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/ExportOfficePowerPointImageCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/ExportOfficePowerPointImageCommand.cs @@ -12,7 +12,7 @@ namespace PSWriteOffice.Cmdlets.PowerPoint; /// Export visible slides as SVG files. /// PS> /// Export-OfficePowerPointImage -Path .\Deck.pptx -OutputPath .\Slides -Format Svg -/// Writes one image per selected slide and returns OfficeImageExportResult objects. +/// Writes one image per selected slide. Add -PassThru to receive the structured export results. /// [Cmdlet(VerbsData.Export, "OfficePowerPointImage", DefaultParameterSetName = "Path", SupportsShouldProcess = true)] [OutputType(typeof(OfficeImageExportResult))] @@ -38,6 +38,10 @@ public sealed class ExportOfficePowerPointImageCommand : PSCmdlet [Parameter] public PowerPointPresentationImageExportOptions? Options { get; set; } + /// Emit one structured image export result per saved slide. + [Parameter] + public SwitchParameter PassThru { get; set; } + /// protected override void ProcessRecord() { @@ -55,7 +59,7 @@ protected override void ProcessRecord() presentation = owned; } IReadOnlyList results = presentation.SaveAsImages(output, Format, Options); - WriteObject(results, enumerateCollection: true); + if (PassThru.IsPresent) WriteObject(results, enumerateCollection: true); } finally { diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePdfPowerPointImportOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePdfPowerPointImportOptionsCommand.cs new file mode 100644 index 00000000..fe595c0a --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePdfPowerPointImportOptionsCommand.cs @@ -0,0 +1,89 @@ +using System.Management.Automation; +using OfficeIMO.Pdf; +using OfficeIMO.PowerPoint; +using OfficeIMO.PowerPoint.Pdf; + +namespace PSWriteOffice.Cmdlets.PowerPoint; + +/// Creates discoverable PDF-to-PowerPoint reconstruction settings. +/// +/// Import selected PDF pages as bounded slide content. +/// PS> +/// $options = New-OfficePdfPowerPointImportOptions -PageRange '1-5' -MaxPages 5 -IncludeSourceTitles +/// ConvertTo-OfficePdfPowerPoint -Path .\Source.pdf -OutputPath .\Slides.pptx -Options $options +/// +[Cmdlet(VerbsCommon.New, "OfficePdfPowerPointImportOptions")] +[OutputType(typeof(PdfPowerPointImportOptions))] +public sealed class NewOfficePdfPowerPointImportOptionsCommand : PSCmdlet { + /// Visual, editable-table, hybrid, editable-content, or automatic import mode. + [Parameter] public PdfPowerPointImportMode? Mode { get; set; } + /// Optional one-based page ranges such as 1-3,5. + [Parameter] public string? PageRange { get; set; } + /// Raster resolution used by visual import. + [Parameter] [ValidateRange(double.Epsilon, double.MaxValue)] public double? Dpi { get; set; } + /// Maximum pages imported. + [Parameter] [ValidateRange(1, int.MaxValue)] public int? MaxPages { get; set; } + /// Maximum pixels per rendered page. + [Parameter] [ValidateRange(1, long.MaxValue)] public long? MaxPixelsPerPage { get; set; } + /// Maximum encoded bytes per rendered page. + [Parameter] [ValidateRange(1, long.MaxValue)] public long? MaxOutputBytesPerPage { get; set; } + /// Maximum aggregate encoded output bytes. + [Parameter] [ValidateRange(1, long.MaxValue)] public long? MaxTotalOutputBytes { get; set; } + /// Maximum editable objects reconstructed per page. + [Parameter] [ValidateRange(1, int.MaxValue)] public int? MaxEditableObjectsPerPage { get; set; } + /// Maximum body rows imported per table; zero means unlimited. + [Parameter] [ValidateRange(0, int.MaxValue)] public int? MaxRows { get; set; } + /// Merge compatible table segments across pages. + [Parameter] public SwitchParameter MergePageContinuations { get; set; } + /// Suppress repeated body header rows. + [Parameter] public SwitchParameter SuppressRepeatedBodyHeaderRows { get; set; } + /// Maximum rows written to one slide; zero means unlimited. + [Parameter] [ValidateRange(0, int.MaxValue)] public int? MaxRowsPerSlide { get; set; } + /// Maximum columns written to one slide; zero means unlimited. + [Parameter] [ValidateRange(0, int.MaxValue)] public int? MaxColumnsPerSlide { get; set; } + /// PowerPoint table style. + [Parameter] public PowerPointTableStylePreset? TableStyle { get; set; } + /// Add source-page titles. + [Parameter] public SwitchParameter IncludeSourceTitles { get; set; } + /// Add inferred column headers. + [Parameter] public SwitchParameter IncludeColumnHeaderRows { get; set; } + /// Enable banded-row styling. + [Parameter] public SwitchParameter BandedRows { get; set; } + /// Right-align inferred numeric columns. + [Parameter] public SwitchParameter AlignNumericColumns { get; set; } + /// Title used when no supported content is detected. + [Parameter] public string? EmptyPresentationTitle { get; set; } + /// Message used when no supported content is detected. + [Parameter] public string? EmptyPresentationMessage { get; set; } + + /// + protected override void ProcessRecord() { + var options = new PdfPowerPointImportOptions(); + if (Mode.HasValue) options.Mode = Mode.Value; + if (!string.IsNullOrWhiteSpace(PageRange)) options.PageSelection = PdfPageSelection.Parse(PageRange!); + if (Dpi.HasValue) options.Dpi = Dpi.Value; + if (MaxPages.HasValue) options.MaxPages = MaxPages.Value; + if (MaxPixelsPerPage.HasValue) options.MaxPixelsPerPage = MaxPixelsPerPage.Value; + if (MaxOutputBytesPerPage.HasValue) options.MaxOutputBytesPerPage = MaxOutputBytesPerPage.Value; + if (MaxTotalOutputBytes.HasValue) options.MaxTotalOutputBytes = MaxTotalOutputBytes.Value; + if (MaxEditableObjectsPerPage.HasValue) options.MaxEditableObjectsPerPage = MaxEditableObjectsPerPage.Value; + if (MaxRows.HasValue) options.MaxRows = MaxRows.Value; + if (MaxRowsPerSlide.HasValue) options.MaxRowsPerSlide = MaxRowsPerSlide.Value; + if (MaxColumnsPerSlide.HasValue) options.MaxColumnsPerSlide = MaxColumnsPerSlide.Value; + if (TableStyle.HasValue) options.TableStyle = TableStyle.Value; + Apply(nameof(MergePageContinuations), value => options.MergePageContinuations = value); + Apply(nameof(SuppressRepeatedBodyHeaderRows), value => options.SuppressRepeatedBodyHeaderRows = value); + Apply(nameof(IncludeSourceTitles), value => options.IncludeSourceTitles = value); + Apply(nameof(IncludeColumnHeaderRows), value => options.IncludeColumnHeaderRows = value); + Apply(nameof(BandedRows), value => options.BandedRows = value); + Apply(nameof(AlignNumericColumns), value => options.AlignNumericColumns = value); + if (EmptyPresentationTitle != null) options.EmptyPresentationTitle = EmptyPresentationTitle; + if (EmptyPresentationMessage != null) options.EmptyPresentationMessage = EmptyPresentationMessage; + WriteObject(options); + } + + private void Apply(string name, System.Action setter) { + if (!MyInvocation.BoundParameters.ContainsKey(name)) return; + setter(((SwitchParameter)MyInvocation.BoundParameters[name]).IsPresent); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointCommand.cs index dda4e191..0abc74ad 100644 --- a/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointCommand.cs @@ -52,6 +52,10 @@ public class NewOfficePowerPointCommand : PSCmdlet { /// protected override void ProcessRecord() { + if (NoSave.IsPresent && Open.IsPresent) { + throw new PSArgumentException("-Open cannot be used with -NoSave because no file is written. Save the returned presentation explicitly, then use -Open on Save-OfficePowerPoint.", nameof(Open)); + } + var resolvedPath = SessionState.Path.GetUnresolvedProviderPathFromPSPath(Path); if (NoSave.IsPresent) { if (!PdfCommandUtilities.ShouldWrite(this, resolvedPath, "Create PowerPoint presentation")) { @@ -114,4 +118,4 @@ private static bool IsStopUpstream(Exception ex) { return ex.GetType().Name == "StopUpstreamCommandsException"; } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointImageOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointImageOptionsCommand.cs new file mode 100644 index 00000000..2b50191e --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointImageOptionsCommand.cs @@ -0,0 +1,55 @@ +using System.Management.Automation; +using OfficeIMO.PowerPoint; +using PSWriteOffice.Cmdlets.Imaging; + +namespace PSWriteOffice.Cmdlets.PowerPoint; + +/// Creates discoverable slide selection and rendering settings for Export-OfficePowerPointImage. +/// +/// Render selected slides with their backgrounds and content. +/// PS> +/// $options = New-OfficePowerPointImageOptions -SlideNumber 1,3 -IncludeSlideBackground -IncludeSlideContent +/// Export-OfficePowerPointImage -Path .\Deck.pptx -OutputPath .\Slides -Options $options +/// +[Cmdlet(VerbsCommon.New, "OfficePowerPointImageOptions")] +[OutputType(typeof(PowerPointPresentationImageExportOptions))] +public sealed class NewOfficePowerPointImageOptionsCommand : OfficeImageOptionsCommandBase { + /// One-based slide numbers to export. + [Parameter] public int[]? SlideNumber { get; set; } + /// Include hidden slides. + [Parameter] public SwitchParameter IncludeHiddenSlides { get; set; } + /// Render slide backgrounds. + [Parameter] public SwitchParameter IncludeSlideBackground { get; set; } + /// Render slide content. + [Parameter] public SwitchParameter IncludeSlideContent { get; set; } + /// Render pictures. + [Parameter] public SwitchParameter IncludePictures { get; set; } + /// Render auto shapes. + [Parameter] public SwitchParameter IncludeAutoShapes { get; set; } + /// Render text boxes. + [Parameter] public SwitchParameter IncludeTextBoxes { get; set; } + /// Render tables. + [Parameter] public SwitchParameter IncludeTables { get; set; } + /// Render charts. + [Parameter] public SwitchParameter IncludeCharts { get; set; } + /// Render hidden shapes. + [Parameter] public SwitchParameter IncludeHiddenShapes { get; set; } + + /// + protected override void ProcessRecord() { + var options = new PowerPointPresentationImageExportOptions(); + ApplyCommon(options); + if (SlideNumber != null) options.SlideNumbers = SlideNumber; + Apply(nameof(IncludeHiddenSlides), value => options.IncludeHiddenSlides = value); + Apply(nameof(IncludeSlideBackground), value => options.IncludeSlideBackground = value); + Apply(nameof(IncludeSlideContent), value => options.IncludeSlideContent = value); + Apply(nameof(IncludePictures), value => options.IncludePictures = value); + Apply(nameof(IncludeAutoShapes), value => options.IncludeAutoShapes = value); + Apply(nameof(IncludeTextBoxes), value => options.IncludeTextBoxes = value); + Apply(nameof(IncludeTables), value => options.IncludeTables = value); + Apply(nameof(IncludeCharts), value => options.IncludeCharts = value); + Apply(nameof(IncludeHiddenShapes), value => options.IncludeHiddenShapes = value); + WriteObject(options); + } + private void Apply(string name, System.Action setter) { if (IsBound(name)) setter(((SwitchParameter)MyInvocation.BoundParameters[name]).IsPresent); } +} diff --git a/Sources/PSWriteOffice/Cmdlets/Reader/GetOfficeDocumentHierarchyCommand.cs b/Sources/PSWriteOffice/Cmdlets/Reader/GetOfficeDocumentHierarchyCommand.cs index 81974cb8..5bc0755a 100644 --- a/Sources/PSWriteOffice/Cmdlets/Reader/GetOfficeDocumentHierarchyCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Reader/GetOfficeDocumentHierarchyCommand.cs @@ -8,7 +8,8 @@ namespace PSWriteOffice.Cmdlets.Reader; /// /// Create embedding-ready chunks with heading context. /// PS> -/// $options = [OfficeIMO.Reader.ReaderHierarchicalChunkingOptions]::new(); $options.MaxTokens = 500; $result = Get-OfficeDocumentHierarchy -Path .\handbook.pdf -ChunkingOptions $options +/// $options = New-OfficeReaderHierarchyOptions -MaxTokens 500 -OverlapTokens 50 -IncludeContextInText +/// $result = Get-OfficeDocumentHierarchy -Path .\handbook.pdf -ChunkingOptions $options /// Returns chunks, token evidence, overlap counts, and flattened parent/child nodes. /// [Cmdlet(VerbsCommon.Get, "OfficeDocumentHierarchy")] diff --git a/Sources/PSWriteOffice/Cmdlets/Reader/NewOfficeReaderHierarchyOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Reader/NewOfficeReaderHierarchyOptionsCommand.cs new file mode 100644 index 00000000..67b528d9 --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Reader/NewOfficeReaderHierarchyOptionsCommand.cs @@ -0,0 +1,48 @@ +using System.Management.Automation; +using OfficeIMO.Reader; + +namespace PSWriteOffice.Cmdlets.Reader; + +/// Creates discoverable token and hierarchy settings for Get-OfficeDocumentHierarchy. +/// +/// Create embedding-ready chunks. +/// PS> +/// $options = New-OfficeReaderHierarchyOptions -MaxTokens 500 -OverlapTokens 50 -IncludeContextInText +/// Get-OfficeDocumentHierarchy -Path .\handbook.pdf -ChunkingOptions $options +/// +[Cmdlet(VerbsCommon.New, "OfficeReaderHierarchyOptions")] +[OutputType(typeof(ReaderHierarchicalChunkingOptions))] +public sealed class NewOfficeReaderHierarchyOptionsCommand : PSCmdlet { + /// Maximum tokens per output chunk. + [Parameter] [ValidateRange(1, int.MaxValue)] public int? MaxTokens { get; set; } + /// Tokens repeated between adjacent chunks. + [Parameter] [ValidateRange(0, int.MaxValue)] public int? OverlapTokens { get; set; } + /// Maximum source chunks accepted. + [Parameter] [ValidateRange(1, int.MaxValue)] public int? MaxInputChunks { get; set; } + /// Maximum chunks returned. + [Parameter] [ValidateRange(1, int.MaxValue)] public int? MaxOutputChunks { get; set; } + /// Maximum heading hierarchy depth. + [Parameter] [ValidateRange(1, int.MaxValue)] public int? MaxHierarchyDepth { get; set; } + /// Maximum heading-context characters retained. + [Parameter] [ValidateRange(0, int.MaxValue)] public int? MaxContextCharacters { get; set; } + /// Prefer Markdown text where the reader supports it. + [Parameter] public SwitchParameter PreferMarkdown { get; set; } + /// Include hierarchy context in chunk text. + [Parameter] public SwitchParameter IncludeContextInText { get; set; } + + /// + protected override void ProcessRecord() { + var options = new ReaderHierarchicalChunkingOptions(); + if (MaxTokens.HasValue) options.MaxTokens = MaxTokens.Value; + if (OverlapTokens.HasValue) options.OverlapTokens = OverlapTokens.Value; + if (MaxInputChunks.HasValue) options.MaxInputChunks = MaxInputChunks.Value; + if (MaxOutputChunks.HasValue) options.MaxOutputChunks = MaxOutputChunks.Value; + if (MaxHierarchyDepth.HasValue) options.MaxHierarchyDepth = MaxHierarchyDepth.Value; + if (MaxContextCharacters.HasValue) options.MaxContextCharacters = MaxContextCharacters.Value; + if (IsBound(nameof(PreferMarkdown))) options.PreferMarkdown = PreferMarkdown.IsPresent; + if (IsBound(nameof(IncludeContextInText))) options.IncludeContextInText = IncludeContextInText.IsPresent; + WriteObject(options); + } + + private bool IsBound(string name) => MyInvocation.BoundParameters.ContainsKey(name); +} diff --git a/Sources/PSWriteOffice/Cmdlets/Visio/ExportOfficeVisioImageCommand.cs b/Sources/PSWriteOffice/Cmdlets/Visio/ExportOfficeVisioImageCommand.cs index 3e032db3..b89f25fd 100644 --- a/Sources/PSWriteOffice/Cmdlets/Visio/ExportOfficeVisioImageCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Visio/ExportOfficeVisioImageCommand.cs @@ -12,7 +12,7 @@ namespace PSWriteOffice.Cmdlets.Visio; /// Export every page as PNG. /// PS> /// Export-OfficeVisioImage -Path .\diagram.vsdx -OutputPath .\Images -Format Png -/// Writes one PNG per selected page and returns one result object per file. +/// Writes one PNG per selected page. Add -PassThru to receive one result object per file. /// [Cmdlet(VerbsData.Export, "OfficeVisioImage", DefaultParameterSetName = "Path", SupportsShouldProcess = true)] [OutputType(typeof(OfficeImageExportResult))] @@ -39,6 +39,10 @@ public sealed class ExportOfficeVisioImageCommand : PSCmdlet [Parameter] public VisioImageExportOptions? Options { get; set; } + /// Emit one structured image export result per saved page. + [Parameter] + public SwitchParameter PassThru { get; set; } + /// protected override void ProcessRecord() { @@ -51,6 +55,6 @@ protected override void ProcessRecord() Directory.CreateDirectory(output); var document = VisioCommandUtilities.ResolveDocument(this, Document, ParameterSetName == "Path" ? Path : null); IReadOnlyList results = document.SaveAsImages(output, Format, Options); - WriteObject(results, enumerateCollection: true); + if (PassThru.IsPresent) WriteObject(results, enumerateCollection: true); } } diff --git a/Sources/PSWriteOffice/Cmdlets/Visio/NewOfficeVisioCommand.cs b/Sources/PSWriteOffice/Cmdlets/Visio/NewOfficeVisioCommand.cs index 939778a7..cf524462 100644 --- a/Sources/PSWriteOffice/Cmdlets/Visio/NewOfficeVisioCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Visio/NewOfficeVisioCommand.cs @@ -77,6 +77,10 @@ public sealed class NewOfficeVisioCommand : PSCmdlet { /// protected override void ProcessRecord() { + if (NoSave.IsPresent && Open.IsPresent) { + throw new PSArgumentException("-Open cannot be used with -NoSave because no file is written. Save the returned document explicitly, then use -Open on Save-OfficeVisio.", nameof(Open)); + } + var fullPath = VisioCommandUtilities.ResolvePath(this, Path); if (!NoSave.IsPresent) { if (!ShouldProcess(fullPath, "Write new Visio document")) { @@ -118,4 +122,4 @@ protected override void ProcessRecord() { WriteObject(new FileInfo(fullPath)); } } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/Visio/NewOfficeVisioImageOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Visio/NewOfficeVisioImageOptionsCommand.cs new file mode 100644 index 00000000..e8b18f4e --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Visio/NewOfficeVisioImageOptionsCommand.cs @@ -0,0 +1,49 @@ +using System.Management.Automation; +using OfficeIMO.Visio; +using PSWriteOffice.Cmdlets.Imaging; + +namespace PSWriteOffice.Cmdlets.Visio; + +/// Creates discoverable page and rendering settings for Export-OfficeVisioImage. +/// +/// Render the first Visio page with text and connector labels. +/// PS> +/// $options = New-OfficeVisioImageOptions -PageIndex 0 -PageCount 1 -RenderText -RenderConnectorLabels +/// Export-OfficeVisioImage -Path .\Diagram.vsdx -OutputPath .\Preview.svg -Options $options +/// +[Cmdlet(VerbsCommon.New, "OfficeVisioImageOptions")] +[OutputType(typeof(VisioImageExportOptions))] +public sealed class NewOfficeVisioImageOptionsCommand : OfficeImageOptionsCommandBase { + /// Zero-based first page index. + [Parameter] [ValidateRange(0, int.MaxValue)] public int? PageIndex { get; set; } + /// Maximum pages exported. + [Parameter] [ValidateRange(1, int.MaxValue)] public int? PageCount { get; set; } + /// Render page text. + [Parameter] public SwitchParameter RenderText { get; set; } + /// Render supported stencil artwork. + [Parameter] public SwitchParameter RenderStencilArtwork { get; set; } + /// Render connector labels. + [Parameter] public SwitchParameter RenderConnectorLabels { get; set; } + /// Resolve connector-label overlaps. + [Parameter] public SwitchParameter ResolveConnectorLabelOverlaps { get; set; } + /// Raster supersampling factor. + [Parameter] [ValidateRange(1, int.MaxValue)] public int? Supersampling { get; set; } + /// Include an XML declaration in SVG output. + [Parameter] public SwitchParameter IncludeSvgXmlDeclaration { get; set; } + + /// + protected override void ProcessRecord() { + var options = new VisioImageExportOptions(); + ApplyCommon(options); + if (PageIndex.HasValue) options.PageIndex = PageIndex.Value; + if (PageCount.HasValue) options.PageCount = PageCount.Value; + Apply(nameof(RenderText), value => options.RenderText = value); + Apply(nameof(RenderStencilArtwork), value => options.RenderStencilArtwork = value); + Apply(nameof(RenderConnectorLabels), value => options.RenderConnectorLabels = value); + Apply(nameof(ResolveConnectorLabelOverlaps), value => options.ResolveConnectorLabelOverlaps = value); + if (Supersampling.HasValue) options.Supersampling = Supersampling.Value; + Apply(nameof(IncludeSvgXmlDeclaration), value => options.IncludeSvgXmlDeclaration = value); + WriteObject(options); + } + private void Apply(string name, System.Action setter) { if (IsBound(name)) setter(((SwitchParameter)MyInvocation.BoundParameters[name]).IsPresent); } +} diff --git a/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordChartCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordChartCommand.cs index 06ab63d1..98dc30bb 100644 --- a/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordChartCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Word/AddOfficeWordChartCommand.cs @@ -50,7 +50,7 @@ public enum WordChartType /// [pscustomobject]@{ Month = 'Feb'; Sales = 12; Profit = 5 } /// [pscustomobject]@{ Month = 'Mar'; Sales = 15; Profit = 7 } /// ) -/// $doc = New-OfficeWord -Path .\Trend.docx -PassThru +/// $doc = New-OfficeWord -Path .\Trend.docx -NoSave /// Add-OfficeWordChart -Document $doc -Type Line -InputObject $trend -CategoryProperty Month -SeriesProperty Sales, Profit -Legend -Title 'Quarter trend' /// Save-OfficeWord -Document $doc /// Creates a multi-series line chart on the document and shows a legend. diff --git a/Sources/PSWriteOffice/Cmdlets/Word/CompareOfficeWordDocumentCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/CompareOfficeWordDocumentCommand.cs index 5709b727..da7259d7 100644 --- a/Sources/PSWriteOffice/Cmdlets/Word/CompareOfficeWordDocumentCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Word/CompareOfficeWordDocumentCommand.cs @@ -11,6 +11,12 @@ namespace PSWriteOffice.Cmdlets.Word; /// $result = Compare-OfficeWordDocument -ReferencePath .\Before.docx -DifferencePath .\After.docx -RedlinePath .\Redline.docx /// Returns deterministic findings and saves a Word document containing revision marks. /// +/// +/// Ignore whitespace and volatile metadata. +/// PS> +/// $options = New-OfficeWordComparisonOptions -IgnoreWhitespace -CompareVolatileMetadata:$false +/// Compare-OfficeWordDocument -ReferencePath .\Before.docx -DifferencePath .\After.docx -Options $options +/// [Cmdlet(VerbsData.Compare, "OfficeWordDocument", SupportsShouldProcess = true)] [OutputType(typeof(WordComparisonResult))] public sealed class CompareOfficeWordDocumentCommand : PSCmdlet diff --git a/Sources/PSWriteOffice/Cmdlets/Word/ExportOfficeWordImageCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/ExportOfficeWordImageCommand.cs index b0d1eb40..9b6d3645 100644 --- a/Sources/PSWriteOffice/Cmdlets/Word/ExportOfficeWordImageCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Word/ExportOfficeWordImageCommand.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using System.IO; using System.Management.Automation; using OfficeIMO.Drawing; @@ -6,12 +7,18 @@ namespace PSWriteOffice.Cmdlets.Word; -/// Exports a Word page as PNG or SVG with structured image diagnostics. +/// Exports one or more Word pages through the format-neutral OfficeIMO image pipeline. /// /// Export the first page as SVG. /// PS> /// Export-OfficeWordImage -Path .\Report.docx -OutputPath .\Report.svg -Format Svg -/// Returns the OfficeIMO image export result after writing the image. +/// Writes the image quietly. Add -PassThru to receive the structured export result. +/// +/// +/// Export every page as JPEG files. +/// PS> +/// Export-OfficeWordImage -Path .\Report.docx -OutputPath .\Pages -Format Jpeg -AllPages +/// For a bounded batch, create options with New-OfficeWordImageOptions -PageIndex 0 -PageCount 2. /// [Cmdlet(VerbsData.Export, "OfficeWordImage", DefaultParameterSetName = "Path", SupportsShouldProcess = true)] [OutputType(typeof(OfficeImageExportResult))] @@ -25,7 +32,7 @@ public sealed class ExportOfficeWordImageCommand : PSCmdlet [Parameter(Mandatory = true, ValueFromPipeline = true, ParameterSetName = "Document")] public WordDocument Document { get; set; } = null!; - /// Destination PNG or SVG path. + /// Destination image file, or destination folder when -AllPages or Options.PageCount requests a batch. [Parameter(Mandatory = true, Position = 1)] public string OutputPath { get; set; } = string.Empty; @@ -37,12 +44,28 @@ public sealed class ExportOfficeWordImageCommand : PSCmdlet [Parameter] public WordImageExportOptions? Options { get; set; } + /// Export every estimated page to the destination folder. + [Parameter] + public SwitchParameter AllPages { get; set; } + + /// Emit the structured image export result. + [Parameter] + public SwitchParameter PassThru { get; set; } + /// protected override void ProcessRecord() { var output = SessionState.Path.GetUnresolvedProviderPathFromPSPath(OutputPath); - if (!ShouldProcess(output, $"Export Word page as {Format}")) return; - Directory.CreateDirectory(System.IO.Path.GetDirectoryName(output) ?? SessionState.Path.CurrentFileSystemLocation.Path); + bool batch = AllPages.IsPresent || Options?.PageCount.HasValue == true; + if (!ShouldProcess(output, batch ? $"Export Word pages as {Format}" : $"Export Word page as {Format}")) return; + if (batch) + { + Directory.CreateDirectory(output); + } + else + { + Directory.CreateDirectory(System.IO.Path.GetDirectoryName(output) ?? SessionState.Path.CurrentFileSystemLocation.Path); + } WordDocument? owned = null; try { @@ -53,9 +76,24 @@ protected override void ProcessRecord() owned = WordDocumentService.LoadDocument(input, readOnly: true, autoSave: false); document = owned; } - WriteObject(Format == OfficeImageExportFormat.Svg - ? document.SaveAsSvg(output, Options) - : document.SaveAsPng(output, Options)); + + WordImageExportOptions effectiveOptions = Options?.Clone() ?? new WordImageExportOptions(); + if (AllPages.IsPresent) + { + effectiveOptions.PageIndex = 0; + effectiveOptions.PageCount = null; + } + + if (batch) + { + IReadOnlyList results = document.SaveAsImages(output, Format, effectiveOptions); + if (PassThru.IsPresent) WriteObject(results, enumerateCollection: true); + } + else + { + OfficeImageExportResult result = document.ExportImage(Format, effectiveOptions).Save(output); + if (PassThru.IsPresent) WriteObject(result); + } } finally { diff --git a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordCommand.cs index 19cd8ca7..762f34db 100644 --- a/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Word/GetOfficeWordCommand.cs @@ -30,10 +30,6 @@ public sealed class GetOfficeWordCommand : PSCmdlet { [Parameter] public SwitchParameter ReadOnly { get; set; } - /// Enable AutoSave when editing. - [Parameter] - public SwitchParameter AutoSave { get; set; } - /// Password used to open an encrypted document package. [Parameter] public string? Password { get; set; } @@ -45,12 +41,17 @@ public sealed class GetOfficeWordCommand : PSCmdlet { /// protected override void ProcessRecord() { var fullPath = ResolvePath(); - var document = WordDocumentService.LoadDocument(fullPath, ReadOnly.IsPresent, AutoSave.IsPresent, Password); - if (Content != null) { - WordDocumentService.InvokeDsl(document, Content); + var document = WordDocumentService.LoadDocument(fullPath, ReadOnly.IsPresent, autoSave: false, Password); + try { + if (Content != null) { + WordDocumentService.InvokeDsl(document, Content); + } + + WriteObject(document); + } catch { + WordDocumentService.CloseDocument(document); + throw; } - - WriteObject(document); } private string ResolvePath() { @@ -59,4 +60,4 @@ private string ResolvePath() { ? providerPath : System.IO.Path.Combine(SessionState.Path.CurrentFileSystemLocation.Path, providerPath); } -} \ No newline at end of file +} diff --git a/Sources/PSWriteOffice/Cmdlets/Word/NewOfficePdfWordImportOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/NewOfficePdfWordImportOptionsCommand.cs new file mode 100644 index 00000000..0c348c2f --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Word/NewOfficePdfWordImportOptionsCommand.cs @@ -0,0 +1,100 @@ +using System.Collections.Generic; +using System.Management.Automation; +using OfficeIMO.Word; +using OfficeIMO.Word.Pdf; + +namespace PSWriteOffice.Cmdlets.Word; + +/// Creates discoverable PDF-to-Word reconstruction settings. +/// +/// Reconstruct headings, paragraphs, lists, and tables. +/// PS> +/// $options = New-OfficePdfWordImportOptions -ImportHeadings -ImportParagraphs -ImportLists -ImportTables +/// ConvertTo-OfficePdfWord -Path .\Source.pdf -OutputPath .\Rebuilt.docx -Options $options +/// +[Cmdlet(VerbsCommon.New, "OfficePdfWordImportOptions")] +[OutputType(typeof(PdfWordImportOptions))] +public sealed class NewOfficePdfWordImportOptionsCommand : PSCmdlet { + /// Use the built-in tables-only import profile. + [Parameter] public SwitchParameter TablesOnly { get; set; } + /// Copy PDF metadata into Word properties. + [Parameter] public SwitchParameter IncludeMetadata { get; set; } + /// Represent source pages with Word page breaks. + [Parameter] public SwitchParameter PreservePageBreaks { get; set; } + /// Represent empty PDF pages. + [Parameter] public SwitchParameter IncludeEmptyPages { get; set; } + /// Import detected headings. + [Parameter] public SwitchParameter ImportHeadings { get; set; } + /// Import detected paragraphs. + [Parameter] public SwitchParameter ImportParagraphs { get; set; } + /// Use the crop-, rotation-, and column-aware reading order. + [Parameter] public SwitchParameter UseSharedPageReadingOrder { get; set; } + /// Import detected lists. + [Parameter] public SwitchParameter ImportLists { get; set; } + /// Import detected tables. + [Parameter] public SwitchParameter ImportTables { get; set; } + /// Import safe URI links. + [Parameter] public SwitchParameter ImportUriLinks { get; set; } + /// Import supported internal links. + [Parameter] public SwitchParameter ImportInternalLinks { get; set; } + /// Prefix for generated Word bookmarks. + [Parameter] public string? BookmarkPrefix { get; set; } + /// Allowed absolute hyperlink URI schemes. + [Parameter] public string[]? AllowedHyperlinkUriScheme { get; set; } + /// Import supported embedded images. + [Parameter] public SwitchParameter ImportImages { get; set; } + /// Preserve detected image placement size. + [Parameter] public SwitchParameter PreserveImagePlacementSize { get; set; } + /// Use paragraphs when an image cannot be embedded. + [Parameter] public SwitchParameter IncludeImagePlaceholders { get; set; } + /// Represent AcroForm widgets with editable placeholders. + [Parameter] public SwitchParameter IncludeFormFieldPlaceholders { get; set; } + /// Maximum body rows imported per table; zero means unlimited. + [Parameter] [ValidateRange(0, int.MaxValue)] public int? MaxTableRows { get; set; } + /// Word table style for imported tables. + [Parameter] public WordTableStyle? TableStyle { get; set; } + /// Repeat inferred table header rows. + [Parameter] public SwitchParameter RepeatHeaderRows { get; set; } + /// Fit imported tables to page width. + [Parameter] public SwitchParameter FitTablesToPageWidth { get; set; } + /// Right-align inferred numeric columns. + [Parameter] public SwitchParameter AlignNumericColumns { get; set; } + /// Text used when no supported content is detected. + [Parameter] public string? EmptyDocumentMessage { get; set; } + + /// + protected override void ProcessRecord() { + PdfWordImportOptions options = TablesOnly.IsPresent ? PdfWordImportOptions.CreateTablesOnly() : new PdfWordImportOptions(); + Apply(nameof(IncludeMetadata), value => options.IncludeMetadata = value); + Apply(nameof(PreservePageBreaks), value => options.PreservePageBreaks = value); + Apply(nameof(IncludeEmptyPages), value => options.IncludeEmptyPages = value); + Apply(nameof(ImportHeadings), value => options.ImportHeadings = value); + Apply(nameof(ImportParagraphs), value => options.ImportParagraphs = value); + Apply(nameof(UseSharedPageReadingOrder), value => options.UseSharedPageReadingOrder = value); + Apply(nameof(ImportLists), value => options.ImportLists = value); + Apply(nameof(ImportTables), value => options.ImportTables = value); + Apply(nameof(ImportUriLinks), value => options.ImportUriLinks = value); + Apply(nameof(ImportInternalLinks), value => options.ImportInternalLinks = value); + Apply(nameof(ImportImages), value => options.ImportImages = value); + Apply(nameof(PreserveImagePlacementSize), value => options.PreserveImagePlacementSize = value); + Apply(nameof(IncludeImagePlaceholders), value => options.IncludeImagePlaceholders = value); + Apply(nameof(IncludeFormFieldPlaceholders), value => options.IncludeFormFieldPlaceholders = value); + Apply(nameof(RepeatHeaderRows), value => options.RepeatHeaderRows = value); + Apply(nameof(FitTablesToPageWidth), value => options.FitTablesToPageWidth = value); + Apply(nameof(AlignNumericColumns), value => options.AlignNumericColumns = value); + if (!string.IsNullOrWhiteSpace(BookmarkPrefix)) options.BookmarkPrefix = BookmarkPrefix!; + if (AllowedHyperlinkUriScheme != null) { + options.AllowedHyperlinkUriSchemes.Clear(); + foreach (string scheme in AllowedHyperlinkUriScheme) if (!string.IsNullOrWhiteSpace(scheme)) options.AllowedHyperlinkUriSchemes.Add(scheme); + } + if (MaxTableRows.HasValue) options.MaxTableRows = MaxTableRows.Value; + if (TableStyle.HasValue) options.TableStyle = TableStyle.Value; + if (EmptyDocumentMessage != null) options.EmptyDocumentMessage = EmptyDocumentMessage; + WriteObject(options); + } + + private void Apply(string name, System.Action setter) { + if (!MyInvocation.BoundParameters.ContainsKey(name)) return; + setter(((SwitchParameter)MyInvocation.BoundParameters[name]).IsPresent); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordCommand.cs index e33d28a8..9cb6a1d0 100644 --- a/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordCommand.cs @@ -63,6 +63,10 @@ public sealed class NewOfficeWordCommand : PSCmdlet { /// protected override void ProcessRecord() { + if (NoSave.IsPresent && Open.IsPresent) { + throw new PSArgumentException("-Open cannot be used with -NoSave because no file is written. Save the returned document explicitly, then use -Open on Save-OfficeWord.", nameof(Open)); + } + var fullPath = GetResolvedPath(); var action = NoSave.IsPresent ? string.IsNullOrWhiteSpace(TemplatePath) @@ -97,7 +101,6 @@ protected override void ProcessRecord() { } WordDocumentService.SaveDocument(document, Open.IsPresent, fullPath, Password); - WordDocumentService.CloseDocument(document); closed = true; if (PassThru.IsPresent) { diff --git a/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordComparisonOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordComparisonOptionsCommand.cs new file mode 100644 index 00000000..8ac95827 --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordComparisonOptionsCommand.cs @@ -0,0 +1,112 @@ +using System.Collections.Generic; +using System.Management.Automation; +using OfficeIMO.Word; + +namespace PSWriteOffice.Cmdlets.Word; + +/// Creates discoverable structural comparison settings for Compare-OfficeWordDocument. +/// +/// Ignore text normalization differences and exclude volatile metadata. +/// PS> +/// $options = New-OfficeWordComparisonOptions -IgnoreWhitespace -IgnoreCase -CompareVolatileMetadata:$false +/// Compare-OfficeWordDocument -ReferencePath .\Before.docx -DifferencePath .\After.docx -Options $options +/// +[Cmdlet(VerbsCommon.New, "OfficeWordComparisonOptions")] +[OutputType(typeof(WordComparisonOptions))] +public sealed class NewOfficeWordComparisonOptionsCommand : PSCmdlet { + /// Ignore differences caused only by whitespace runs. + [Parameter] public SwitchParameter IgnoreWhitespace { get; set; } + /// Ignore character casing. + [Parameter] public SwitchParameter IgnoreCase { get; set; } + /// Compare direct run formatting. + [Parameter] public SwitchParameter CompareRunFormatting { get; set; } + /// Compare resolved effective formatting. + [Parameter] public SwitchParameter CompareEffectiveFormatting { get; set; } + /// Compare paragraph style identifiers. + [Parameter] public SwitchParameter CompareParagraphStyleIds { get; set; } + /// Compare run style identifiers. + [Parameter] public SwitchParameter CompareRunStyleIds { get; set; } + /// Limit results to these comparison scopes. + [Parameter] public WordComparisonScope[]? IncludeScope { get; set; } + /// Remove these comparison scopes from results. + [Parameter] public WordComparisonScope[]? ExcludeScope { get; set; } + /// Compare fields. + [Parameter] public SwitchParameter CompareFields { get; set; } + /// Compare content controls. + [Parameter] public SwitchParameter CompareContentControls { get; set; } + /// Compare bookmarks. + [Parameter] public SwitchParameter CompareBookmarks { get; set; } + /// Compare hyperlinks. + [Parameter] public SwitchParameter CompareHyperlinks { get; set; } + /// Compare lists. + [Parameter] public SwitchParameter CompareLists { get; set; } + /// Compare comments. + [Parameter] public SwitchParameter CompareComments { get; set; } + /// Compare comment authors. + [Parameter] public SwitchParameter CompareCommentAuthors { get; set; } + /// Compare comment text. + [Parameter] public SwitchParameter CompareCommentText { get; set; } + /// Compare comment resolved state. + [Parameter] public SwitchParameter CompareCommentResolvedState { get; set; } + /// Compare comment targets. + [Parameter] public SwitchParameter CompareCommentTargets { get; set; } + /// Compare comment replies. + [Parameter] public SwitchParameter CompareCommentReplies { get; set; } + /// Compare tracked revisions. + [Parameter] public SwitchParameter CompareRevisions { get; set; } + /// Compare revision authors. + [Parameter] public SwitchParameter CompareRevisionAuthors { get; set; } + /// Compare revision text. + [Parameter] public SwitchParameter CompareRevisionText { get; set; } + /// Compare revision locations. + [Parameter] public SwitchParameter CompareRevisionLocations { get; set; } + /// Compare images. + [Parameter] public SwitchParameter CompareImages { get; set; } + /// Compare supported shapes. + [Parameter] public SwitchParameter CompareShapes { get; set; } + /// Compare document block order. + [Parameter] public SwitchParameter CompareBlockOrder { get; set; } + /// Compare generated identifiers. + [Parameter] public SwitchParameter CompareGeneratedIds { get; set; } + /// Compare volatile timestamps and metadata. + [Parameter] public SwitchParameter CompareVolatileMetadata { get; set; } + + /// + protected override void ProcessRecord() { + var options = new WordComparisonOptions(); + Apply(nameof(IgnoreWhitespace), value => options.IgnoreWhitespace = value); + Apply(nameof(IgnoreCase), value => options.IgnoreCase = value); + Apply(nameof(CompareRunFormatting), value => options.CompareRunFormatting = value); + Apply(nameof(CompareEffectiveFormatting), value => options.CompareEffectiveFormatting = value); + Apply(nameof(CompareParagraphStyleIds), value => options.CompareParagraphStyleIds = value); + Apply(nameof(CompareRunStyleIds), value => options.CompareRunStyleIds = value); + Apply(nameof(CompareFields), value => options.CompareFields = value); + Apply(nameof(CompareContentControls), value => options.CompareContentControls = value); + Apply(nameof(CompareBookmarks), value => options.CompareBookmarks = value); + Apply(nameof(CompareHyperlinks), value => options.CompareHyperlinks = value); + Apply(nameof(CompareLists), value => options.CompareLists = value); + Apply(nameof(CompareComments), value => options.CompareComments = value); + Apply(nameof(CompareCommentAuthors), value => options.CompareCommentAuthors = value); + Apply(nameof(CompareCommentText), value => options.CompareCommentText = value); + Apply(nameof(CompareCommentResolvedState), value => options.CompareCommentResolvedState = value); + Apply(nameof(CompareCommentTargets), value => options.CompareCommentTargets = value); + Apply(nameof(CompareCommentReplies), value => options.CompareCommentReplies = value); + Apply(nameof(CompareRevisions), value => options.CompareRevisions = value); + Apply(nameof(CompareRevisionAuthors), value => options.CompareRevisionAuthors = value); + Apply(nameof(CompareRevisionText), value => options.CompareRevisionText = value); + Apply(nameof(CompareRevisionLocations), value => options.CompareRevisionLocations = value); + Apply(nameof(CompareImages), value => options.CompareImages = value); + Apply(nameof(CompareShapes), value => options.CompareShapes = value); + Apply(nameof(CompareBlockOrder), value => options.CompareBlockOrder = value); + Apply(nameof(CompareGeneratedIds), value => options.CompareGeneratedIds = value); + Apply(nameof(CompareVolatileMetadata), value => options.CompareVolatileMetadata = value); + if (IncludeScope != null) options.IncludedScopes = new HashSet(IncludeScope); + if (ExcludeScope != null) options.ExcludedScopes = new HashSet(ExcludeScope); + WriteObject(options); + } + + private void Apply(string name, System.Action setter) { + if (!MyInvocation.BoundParameters.ContainsKey(name)) return; + setter(((SwitchParameter)MyInvocation.BoundParameters[name]).IsPresent); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordImageOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordImageOptionsCommand.cs new file mode 100644 index 00000000..daf01636 --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordImageOptionsCommand.cs @@ -0,0 +1,34 @@ +using System.Management.Automation; +using OfficeIMO.Word; +using PSWriteOffice.Cmdlets.Imaging; + +namespace PSWriteOffice.Cmdlets.Word; + +/// Creates discoverable page and rendering settings for Export-OfficeWordImage. +/// +/// Render the first two pages at higher density. +/// PS> +/// $options = New-OfficeWordImageOptions -PageIndex 0 -PageCount 2 -TargetDpi 144 -IncludeDocumentContent +/// Export-OfficeWordImage -Path .\Report.docx -OutputPath .\Pages -Options $options +/// Supplying PageCount selects batch export, so OutputPath is a folder. Use -AllPages on the export command for the complete document. +/// +[Cmdlet(VerbsCommon.New, "OfficeWordImageOptions")] +[OutputType(typeof(WordImageExportOptions))] +public sealed class NewOfficeWordImageOptionsCommand : OfficeImageOptionsCommandBase { + /// Render document content. + [Parameter] public SwitchParameter IncludeDocumentContent { get; set; } + /// Zero-based first page index. + [Parameter] [ValidateRange(0, int.MaxValue)] public int? PageIndex { get; set; } + /// Maximum pages exported. Supplying this value selects batch export. + [Parameter] [ValidateRange(1, int.MaxValue)] public int? PageCount { get; set; } + + /// + protected override void ProcessRecord() { + var options = new WordImageExportOptions(); + ApplyCommon(options); + if (IsBound(nameof(IncludeDocumentContent))) options.IncludeDocumentContent = IncludeDocumentContent.IsPresent; + if (PageIndex.HasValue) options.PageIndex = PageIndex.Value; + if (PageCount.HasValue) options.PageCount = PageCount.Value; + WriteObject(options); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordRevisionFilterCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordRevisionFilterCommand.cs new file mode 100644 index 00000000..a45805f6 --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordRevisionFilterCommand.cs @@ -0,0 +1,66 @@ +using System.Management.Automation; +using OfficeIMO.Word; + +namespace PSWriteOffice.Cmdlets.Word; + +/// Creates a discoverable Word revision filter for Resolve-OfficeWordRevision. +/// +/// Accept only table revisions from one author. +/// PS> +/// $filter = New-OfficeWordRevisionFilter -Author 'Alex' -InTable +/// Resolve-OfficeWordRevision -Path .\Review.docx -Action Accept -Filter $filter +/// +[Cmdlet(VerbsCommon.New, "OfficeWordRevisionFilter")] +[OutputType(typeof(WordRevisionFilter))] +public sealed class NewOfficeWordRevisionFilterCommand : PSCmdlet { + /// Revision author. + [Parameter] public string? Author { get; set; } + /// Revision identifier. + [Parameter] public string? RevisionId { get; set; } + /// Revision operation type. + [Parameter] public WordReviewRevisionType? RevisionType { get; set; } + /// Earliest revision date. + [Parameter] public System.DateTime? DateFrom { get; set; } + /// Latest revision date. + [Parameter] public System.DateTime? DateTo { get; set; } + /// Word part or container location kind. + [Parameter] public WordReviewLocationKind? LocationKind { get; set; } + /// Package part URI. + [Parameter] public string? PartUri { get; set; } + /// Limit results to revisions inside tables. + [Parameter] public SwitchParameter InTable { get; set; } + /// Limit results to revisions outside tables. + [Parameter] public SwitchParameter NotInTable { get; set; } + /// Limit results to revisions inside content controls. + [Parameter] public SwitchParameter InContentControl { get; set; } + /// Limit results to revisions outside content controls. + [Parameter] public SwitchParameter NotInContentControl { get; set; } + /// Limit results to revisions inside text boxes. + [Parameter] public SwitchParameter InTextBox { get; set; } + /// Limit results to revisions outside text boxes. + [Parameter] public SwitchParameter NotInTextBox { get; set; } + + /// + protected override void ProcessRecord() { + ValidatePair(nameof(InTable), InTable, nameof(NotInTable), NotInTable); + ValidatePair(nameof(InContentControl), InContentControl, nameof(NotInContentControl), NotInContentControl); + ValidatePair(nameof(InTextBox), InTextBox, nameof(NotInTextBox), NotInTextBox); + var filter = new WordRevisionFilter { + Author = Author, + RevisionId = RevisionId, + RevisionType = RevisionType, + DateFrom = DateFrom, + DateTo = DateTo, + LocationKind = LocationKind, + PartUri = PartUri + }; + if (InTable.IsPresent || NotInTable.IsPresent) filter.IsInTable = InTable.IsPresent; + if (InContentControl.IsPresent || NotInContentControl.IsPresent) filter.IsInContentControl = InContentControl.IsPresent; + if (InTextBox.IsPresent || NotInTextBox.IsPresent) filter.IsInTextBox = InTextBox.IsPresent; + WriteObject(filter); + } + + private static void ValidatePair(string includeName, SwitchParameter include, string excludeName, SwitchParameter exclude) { + if (include.IsPresent && exclude.IsPresent) throw new PSArgumentException($"-{includeName} and -{excludeName} cannot be used together."); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/Word/ResolveOfficeWordRevisionCommand.cs b/Sources/PSWriteOffice/Cmdlets/Word/ResolveOfficeWordRevisionCommand.cs index 5978343e..8f055a2a 100644 --- a/Sources/PSWriteOffice/Cmdlets/Word/ResolveOfficeWordRevisionCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Word/ResolveOfficeWordRevisionCommand.cs @@ -9,7 +9,8 @@ namespace PSWriteOffice.Cmdlets.Word; /// /// Accept revisions by one author into a new document. /// PS> -/// $filter = [OfficeIMO.Word.WordRevisionFilter]::new(); $filter.Author = 'Reviewer'; Resolve-OfficeWordRevision -Path .\Draft.docx -OutputPath .\Accepted.docx -Action Accept -Filter $filter +/// $filter = New-OfficeWordRevisionFilter -Author 'Reviewer' -InContentControl +/// Resolve-OfficeWordRevision -Path .\Draft.docx -OutputPath .\Accepted.docx -Action Accept -Filter $filter /// Applies only matching revisions, saves the result, and returns the matched revision report. /// [Cmdlet(VerbsDiagnostic.Resolve, "OfficeWordRevision", DefaultParameterSetName = "Path", SupportsShouldProcess = true)] diff --git a/Sources/PSWriteOffice/Services/OpenDocument/OpenDocumentDslContext.cs b/Sources/PSWriteOffice/Services/OpenDocument/OpenDocumentDslContext.cs new file mode 100644 index 00000000..a49de7af --- /dev/null +++ b/Sources/PSWriteOffice/Services/OpenDocument/OpenDocumentDslContext.cs @@ -0,0 +1,73 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Management.Automation; +using System.Threading; +using OfficeIMO.OpenDocument; + +namespace PSWriteOffice.Services.OpenDocument; + +internal sealed class OpenDocumentDslContext : IDisposable { + private static readonly AsyncLocal CurrentScope = new(); + private readonly Stack _scopes = new(); + + private OpenDocumentDslContext(OdfDocument document) { + Document = document ?? throw new ArgumentNullException(nameof(document)); + } + + internal OdfDocument Document { get; } + internal static OpenDocumentDslContext? Current => CurrentScope.Value; + + internal static OpenDocumentDslContext Enter(OdfDocument document) { + if (CurrentScope.Value != null) { + throw new InvalidOperationException("An OpenDocument DSL scope is already active on this runspace."); + } + + var context = new OpenDocumentDslContext(document); + CurrentScope.Value = context; + return context; + } + + internal static OpenDocumentDslContext Require(PSCmdlet caller) => CurrentScope.Value + ?? throw new PSInvalidOperationException( + $"'{caller.MyInvocation.InvocationName}' requires -Document or an active New-OfficeOpenDocument -Content scope."); + + internal T RequireDocument(PSCmdlet caller, string kindName) where T : OdfDocument => Document as T + ?? throw new PSInvalidOperationException( + $"'{caller.MyInvocation.InvocationName}' requires an OpenDocument {kindName} document."); + + internal OdsSheet RequireSheet() => _scopes.OfType().FirstOrDefault() + ?? throw new PSInvalidOperationException("No OpenDocument worksheet context is active. Use Add-OfficeOpenDocumentSheet -Content first or pass -Sheet."); + + internal OdpSlide RequireSlide() => _scopes.OfType().FirstOrDefault() + ?? throw new PSInvalidOperationException("No OpenDocument slide context is active. Use Add-OfficeOpenDocumentSlide -Content first or pass -Slide."); + + internal IDisposable Push(object scope) { + _scopes.Push(scope ?? throw new ArgumentNullException(nameof(scope))); + return new PopToken(this, scope); + } + + public void Dispose() { + if (CurrentScope.Value == this) CurrentScope.Value = null; + _scopes.Clear(); + } + + private void Pop(object scope) { + if (_scopes.Count > 0 && ReferenceEquals(_scopes.Peek(), scope)) _scopes.Pop(); + } + + private sealed class PopToken : IDisposable { + private OpenDocumentDslContext? _context; + private readonly object _scope; + + internal PopToken(OpenDocumentDslContext context, object scope) { + _context = context; + _scope = scope; + } + + public void Dispose() { + _context?.Pop(_scope); + _context = null; + } + } +} diff --git a/Tests/ExampleScripts.Tests.ps1 b/Tests/ExampleScripts.Tests.ps1 index 7a7f8d6f..e4ed20e7 100644 --- a/Tests/ExampleScripts.Tests.ps1 +++ b/Tests/ExampleScripts.Tests.ps1 @@ -35,8 +35,12 @@ Describe 'Repository example scripts' { It 'keeps recipe focused on the document workflow' -ForEach $recipeCases { $content = Get-Content -LiteralPath $Path -Raw - $content | Should -Not -Match '\A\s*param\s*\(' - $content | Should -Not -Match '(?m)^\s*(\$ErrorActionPreference\s*=|Import-Module\b|New-Item\b)' + $isIntegrationRecipe = $RelativePath -match '^Examples[\\/]Integrations[\\/]' + if (-not $isIntegrationRecipe) { + $content | Should -Not -Match '\A\s*param\s*\(' + $content | Should -Not -Match '(?m)^\s*(Import-Module\b)' + } + $content | Should -Not -Match '(?m)^\s*(\$ErrorActionPreference\s*=|New-Item\b)' $content | Should -Not -Match '\b(Out-Null|Write-Host|Format-List)\b' $content | Should -Not -Match '\[Array\]::CreateInstance|\.Dispose\(\)' } diff --git a/Tests/ExcelDsl.Tests.ps1 b/Tests/ExcelDsl.Tests.ps1 index 827ed046..751ec274 100644 --- a/Tests/ExcelDsl.Tests.ps1 +++ b/Tests/ExcelDsl.Tests.ps1 @@ -923,8 +923,7 @@ Describe 'Excel DSL surface' { Close-OfficeExcel -Document $doc } - { Get-OfficeExcel -Path $path -Password 'secret' -AutoSave -ErrorAction Stop } | - Should -Throw '*require explicit Save-OfficeExcel*' + (Get-Command Get-OfficeExcel).Parameters.Keys | Should -Not -Contain 'AutoSave' } It 'clears encrypted workbook associations after HTML conversion' { diff --git a/Tests/ExcelImageExport.Tests.ps1 b/Tests/ExcelImageExport.Tests.ps1 index 9fdb9647..123984c2 100644 --- a/Tests/ExcelImageExport.Tests.ps1 +++ b/Tests/ExcelImageExport.Tests.ps1 @@ -29,7 +29,7 @@ Describe 'Excel image export cmdlets' { } } | Out-Null - $result = Export-OfficeExcelRangeImage -Path $workbookPath -WorksheetName Data -Range A1:B2 -OutputPath $outputPath + $result = Export-OfficeExcelRangeImage -Path $workbookPath -WorksheetName Data -Range A1:B2 -OutputPath $outputPath -PassThru Test-Path -LiteralPath $outputPath | Should -BeTrue $result.SavedPath | Should -Be ([System.IO.Path]::GetFullPath($outputPath)) @@ -50,7 +50,7 @@ Describe 'Excel image export cmdlets' { } } | Out-Null - $result = Export-OfficeExcelChartImage -Path $workbookPath -WorksheetName Data -ChartName $script:exportChartName -OutputPath $outputPath + $result = Export-OfficeExcelChartImage -Path $workbookPath -WorksheetName Data -ChartName $script:exportChartName -OutputPath $outputPath -PassThru Test-Path -LiteralPath $outputPath | Should -BeTrue $result.SavedPath | Should -Be ([System.IO.Path]::GetFullPath($outputPath)) diff --git a/Tests/OfficeIMONextSupport.Tests.ps1 b/Tests/OfficeIMONextSupport.Tests.ps1 index c90cb835..a40b1661 100644 --- a/Tests/OfficeIMONextSupport.Tests.ps1 +++ b/Tests/OfficeIMONextSupport.Tests.ps1 @@ -144,10 +144,59 @@ Describe 'Expanded OfficeIMO support' { Should -Throw '*package*' } + It 'authors ODT, ODS, and ODP content through PowerShell-native DSL and object surfaces' { + $textPath = Join-Path $TestDrive 'authored.odt' + New-OfficeOpenDocument -Kind Text -Path $textPath -Content { + Add-OfficeOpenDocumentHeading -Text 'Service report' -Level 1 + Add-OfficeOpenDocumentParagraph -Text 'PowerShell-native OpenDocument text.' + } + $text = Get-OfficeOpenDocument -Path $textPath + $text.Paragraphs.Text | Should -Contain 'Service report' + $text.Paragraphs.Text | Should -Contain 'PowerShell-native OpenDocument text.' + + $spreadsheetPath = Join-Path $TestDrive 'authored.ods' + New-OfficeOpenDocument -Kind Spreadsheet -Path $spreadsheetPath -Content { + Add-OfficeOpenDocumentSheet -Name 'Services' -Content { + Set-OfficeOpenDocumentCell -Row 0 -Column 0 -Value 'Service' + Set-OfficeOpenDocumentCell -Row 0 -Column 1 -Value 'Healthy' + Set-OfficeOpenDocumentCell -Row 1 -Column 0 -Value 'Directory' + Set-OfficeOpenDocumentCell -Row 1 -Column 1 -Value $true + } + } + $spreadsheet = Get-OfficeOpenDocument -Path $spreadsheetPath + $spreadsheet.GetSheet('Services').Cell(1, 1).Value.AsBoolean() | Should -BeTrue + + $presentationPath = Join-Path $TestDrive 'authored.odp' + New-OfficeOpenDocument -Kind Presentation -Path $presentationPath -Content { + Add-OfficeOpenDocumentSlide -Name 'Overview' -Content { + Add-OfficeOpenDocumentTextBox -Text 'Quarterly review' -X 1 -Y 1 -Width 20 -Height 3 + } + } + $presentation = Get-OfficeOpenDocument -Path $presentationPath + $presentation.Slides | Should -HaveCount 1 + $presentation.Slides[0].Shapes | Should -HaveCount 1 + + $objectSpreadsheet = New-OfficeOpenDocument -Kind Spreadsheet + $sheet = $objectSpreadsheet | Add-OfficeOpenDocumentSheet -Name 'Object' -PassThru + $cell = $sheet | Set-OfficeOpenDocumentCell -Row 0 -Column 0 -Value 42 -PassThru + $cell.Value.AsDouble() | Should -Be 42 + } + It 'protects OpenDocument destinations and validates conversion extensions' { $whatIfPath = Join-Path $TestDrive 'what-if.odt' - New-OfficeOpenDocument -Kind Text -Path $whatIfPath -WhatIf | Out-Null + $script:OpenDocumentWhatIfDslRan = $false + New-OfficeOpenDocument -Kind Text -Path $whatIfPath -WhatIf -Content { + $script:OpenDocumentWhatIfDslRan = $true + } | Out-Null Test-Path -LiteralPath $whatIfPath | Should -BeFalse + $script:OpenDocumentWhatIfDslRan | Should -BeFalse + + $script:OpenDocumentInvalidExtensionDslRan = $false + $invalidDslPath = Join-Path $TestDrive 'invalid-content.ods' + { New-OfficeOpenDocument -Kind Text -Path $invalidDslPath -Content { + $script:OpenDocumentInvalidExtensionDslRan = $true + } -ErrorAction Stop } | Should -Throw '*must use the .odt extension*' + $script:OpenDocumentInvalidExtensionDslRan | Should -BeFalse $signedPath = Join-Path $TestDrive 'signed.odt' New-OfficeOpenDocument -Kind Text -Path $signedPath | Out-Null @@ -202,6 +251,22 @@ Describe 'Expanded OfficeIMO support' { } It 'round-trips EML, EMLX, MSG, TNEF, and mbox artifacts' { + $readerOptions = New-OfficeEmailReaderOptions -ExcludeAttachmentContent -PreserveRawSource -MaxAttachmentBytes 25MB + $readerOptions.IncludeAttachmentContent | Should -BeFalse + $readerOptions.PreserveRawSource | Should -BeTrue + $readerOptions.MaxAttachmentBytes | Should -Be 25MB + $writerOptions = New-OfficeEmailWriterOptions -IncludeBccHeader -Base64LineLength 80 + $writerOptions.IncludeBccHeader | Should -BeTrue + $mailboxReaderOptions = $readerOptions | New-OfficeEmailMailboxReaderOptions -MaxMessageCount 250 + [object]::ReferenceEquals($mailboxReaderOptions.MessageOptions, $readerOptions) | Should -BeTrue + $mailboxReaderOptions.MaxMessageCount | Should -Be 250 + $mailboxWriterOptions = $writerOptions | New-OfficeEmailMailboxWriterOptions + [object]::ReferenceEquals($mailboxWriterOptions.MessageOptions, $writerOptions) | Should -BeTrue + $storeOptions = New-OfficeEmailStoreReaderOptions -ExcludeAttachmentContent -MaxItemCount 250 + $storeOptions.RetainAttachmentContent | Should -BeFalse + $storeOptions.MaxItemCount | Should -Be 250 + { New-OfficeEmailWriterOptions -Base64LineLength 78 -ErrorAction Stop } | Should -Throw '*multiple of four*' + $emailDocumentType = Get-TestPSWriteOfficeType -AssemblyName 'OfficeIMO.Email' -TypeName 'OfficeIMO.Email.EmailDocument' -CommandName 'Save-OfficeEmail' $emailAddressType = Get-TestPSWriteOfficeType -AssemblyName 'OfficeIMO.Email' -TypeName 'OfficeIMO.Email.EmailAddress' -CommandName 'Save-OfficeEmail' $emailMailboxType = Get-TestPSWriteOfficeType -AssemblyName 'OfficeIMO.Email' -TypeName 'OfficeIMO.Email.EmailMailbox' -CommandName 'Save-OfficeEmailMailbox' @@ -264,13 +329,17 @@ Describe 'Expanded OfficeIMO support' { New-OfficePowerPoint -Path $powerPointPath { PptSlide { PptTitle -Title 'PowerPoint image' } } | Out-Null New-OfficePdf -Path $pdfPath { PdfParagraph 'PDF image' } | Out-Null + $quietImagePath = Join-Path $TestDrive 'word-quiet.svg' + @(Export-OfficeWordImage -Path $wordPath -OutputPath $quietImagePath -Format Svg) | Should -HaveCount 0 + Test-Path -LiteralPath $quietImagePath | Should -BeTrue + $results = @( - Export-OfficeWordImage -Path $wordPath -OutputPath (Join-Path $TestDrive 'word.svg') -Format Svg - Export-OfficeExcelImage -Path $excelPath -OutputPath (Join-Path $TestDrive 'excel-images') -Format Svg - Export-OfficePowerPointImage -Path $powerPointPath -OutputPath (Join-Path $TestDrive 'ppt-images') -Format Svg - Export-OfficeHtmlImage -Html '

HTML image

' -OutputPath (Join-Path $TestDrive 'html.svg') -Format Svg - Export-OfficePdfImage -Path $pdfPath -OutputPath (Join-Path $TestDrive 'pdf-images') -Format Svg - Export-OfficePdfImage -Path $pdfPath -OutputPath (Join-Path $TestDrive 'pdf-webp-images') -Format Webp + Export-OfficeWordImage -Path $wordPath -OutputPath (Join-Path $TestDrive 'word.svg') -Format Svg -PassThru + Export-OfficeExcelImage -Path $excelPath -OutputPath (Join-Path $TestDrive 'excel-images') -Format Svg -PassThru + Export-OfficePowerPointImage -Path $powerPointPath -OutputPath (Join-Path $TestDrive 'ppt-images') -Format Svg -PassThru + Export-OfficeHtmlImage -Html '

HTML image

' -OutputPath (Join-Path $TestDrive 'html.svg') -Format Svg -PassThru + Export-OfficePdfImage -Path $pdfPath -OutputPath (Join-Path $TestDrive 'pdf-images') -Format Svg -PassThru + Export-OfficePdfImage -Path $pdfPath -OutputPath (Join-Path $TestDrive 'pdf-webp-images') -Format Webp -PassThru ) $results.Count | Should -BeGreaterOrEqual 5 @@ -284,12 +353,58 @@ Describe 'Expanded OfficeIMO support' { $htmlLines = @('', '

Pipeline heading

Pipeline body

', '') $pipelineHtmlPath = Join-Path $TestDrive 'pipeline-html.svg' - $pipelineHtml = @($htmlLines | Export-OfficeHtmlImage -OutputPath $pipelineHtmlPath -Format Svg) + $pipelineHtml = @($htmlLines | Export-OfficeHtmlImage -OutputPath $pipelineHtmlPath -Format Svg -PassThru) $pipelineHtml | Should -HaveCount 1 $pipelineHtml[0].GetType().FullName | Should -Be 'OfficeIMO.Drawing.OfficeImageExportResult' Test-Path -LiteralPath $pipelineHtmlPath | Should -BeTrue } + It 'writes the requested Word and HTML raster formats and exports Word page batches' { + $wordPath = Join-Path $TestDrive 'format-images.docx' + New-OfficeWord -Path $wordPath { + WordParagraph { + WordText 'First page' + WordBreak -BreakType Page + WordText 'Second page' + } + } | Out-Null + + foreach ($format in 'Jpeg', 'Tiff', 'Webp') { + $extension = if ($format -eq 'Jpeg') { 'jpg' } else { $format.ToLowerInvariant() } + $wordResult = Export-OfficeWordImage -Path $wordPath -OutputPath (Join-Path $TestDrive "word.$extension") -Format $format -PassThru + $htmlResult = Export-OfficeHtmlImage -Html '

Format contract

' -OutputPath (Join-Path $TestDrive "html.$extension") -Format $format -PassThru + + foreach ($result in $wordResult, $htmlResult) { + $result.Format.ToString() | Should -Be $format + Test-Path -LiteralPath $result.SavedPath | Should -BeTrue + $bytes = [System.IO.File]::ReadAllBytes($result.SavedPath) + switch ($format) { + Jpeg { + ($bytes[0..2] -join ',') | Should -Be '255,216,255' + } + Tiff { + $littleEndian = @($bytes[0], $bytes[1], $bytes[2], $bytes[3]) -join ',' + $littleEndian -in '73,73,42,0', '77,77,0,42' | Should -BeTrue + } + Webp { + [System.Text.Encoding]::ASCII.GetString($bytes, 0, 4) | Should -Be 'RIFF' + [System.Text.Encoding]::ASCII.GetString($bytes, 8, 4) | Should -Be 'WEBP' + } + } + } + } + + $batchOptions = New-OfficeWordImageOptions -PageIndex 0 -PageCount 2 + $batchFolder = Join-Path $TestDrive 'word-pages' + $batch = @(Export-OfficeWordImage -Path $wordPath -OutputPath $batchFolder -Format Svg -Options $batchOptions -PassThru) + $batch | Should -HaveCount 2 + $batch[0].SequenceIndex | Should -Be 0 + $batch[1].SequenceIndex | Should -Be 1 + $batch[0].SequenceCount | Should -Be 2 + $batch[1].SequenceCount | Should -Be 2 + $batch | ForEach-Object { Test-Path -LiteralPath $_.SavedPath | Should -BeTrue } + } + It 'releases path-loaded PowerPoint presentations after image export' { $powerPointPath = Join-Path $TestDrive 'transient.pptx' New-OfficePowerPoint -Path $powerPointPath { PptSlide { PptTitle -Title 'Transient' } } | Out-Null @@ -356,7 +471,7 @@ Describe 'Expanded OfficeIMO support' { Test-Path -LiteralPath $safePath | Should -BeTrue (Export-OfficePdfXfdf -Path $pdfPath) | Should -Match ' + + + Add-OfficeOpenDocumentHeading + Add + OfficeOpenDocumentHeading + + Adds a heading to an OpenDocument text document. + + + + Adds a heading to an OpenDocument text document. + + + + Add-OfficeOpenDocumentHeading + + Document + + OpenDocument text document. Omit inside New-OfficeOpenDocument -Content. + + OdtDocument + + OdtDocument + + + None + + + Level + + Heading level from 1 through 10. + + Int32 + + Int32 + + + None + + + PassThru + + Emit the created heading paragraph. + + SwitchParameter + + SwitchParameter + + + None + + + Text + + Heading text. + + String + + String + + + None + + + + + + Document + + OpenDocument text document. Omit inside New-OfficeOpenDocument -Content. + + OdtDocument + + OdtDocument + + + None + + + Level + + Heading level from 1 through 10. + + Int32 + + Int32 + + + None + + + PassThru + + Emit the created heading paragraph. + + SwitchParameter + + SwitchParameter + + + None + + + Text + + Heading text. + + String + + String + + + None + + + + + + OfficeIMO.OpenDocument.OdtDocument + + + + + + + OfficeIMO.OpenDocument.OdtParagraph + + + + + + + + + + + Add a level-two heading inside an OpenDocument DSL. + + PS> + + Add-OfficeOpenDocumentHeading -Text 'Results' -Level 2 + + + + + + + + + + Add-OfficeOpenDocumentParagraph + Add + OfficeOpenDocumentParagraph + + Adds a paragraph to an OpenDocument text document. + + + + Adds a paragraph to an OpenDocument text document. + + + + Add-OfficeOpenDocumentParagraph + + Document + + OpenDocument text document. Omit inside New-OfficeOpenDocument -Content. + + OdtDocument + + OdtDocument + + + None + + + PassThru + + Emit the created paragraph. + + SwitchParameter + + SwitchParameter + + + None + + + Text + + Paragraph text. + + String + + String + + + None + + + + + + Document + + OpenDocument text document. Omit inside New-OfficeOpenDocument -Content. + + OdtDocument + + OdtDocument + + + None + + + PassThru + + Emit the created paragraph. + + SwitchParameter + + SwitchParameter + + + None + + + Text + + Paragraph text. + + String + + String + + + None + + + + + + OfficeIMO.OpenDocument.OdtDocument + + + + + + + OfficeIMO.OpenDocument.OdtParagraph + + + + + + + + + + + Add body text in the OpenDocument DSL. + + PS> + + New-OfficeOpenDocument -Kind Text -Path .\Report.odt -Content { Add-OfficeOpenDocumentParagraph -Text 'Generated by PSWriteOffice' } + + + + + + + + + + Add-OfficeOpenDocumentSheet + Add + OfficeOpenDocumentSheet + + Adds a worksheet to an OpenDocument spreadsheet and optionally runs nested cell content. + + + + Adds a worksheet to an OpenDocument spreadsheet and optionally runs nested cell content. + + + + Add-OfficeOpenDocumentSheet + + Content + + Nested cell commands that use this worksheet as their current target. + + ScriptBlock + + ScriptBlock + + + None + + + Document + + OpenDocument spreadsheet. Omit inside New-OfficeOpenDocument -Content. + + OdsDocument + + OdsDocument + + + None + + + Name + + Worksheet name. + + String + + String + + + None + + + PassThru + + Emit the created worksheet. + + SwitchParameter + + SwitchParameter + + + None + + + + + + Content + + Nested cell commands that use this worksheet as their current target. + + ScriptBlock + + ScriptBlock + + + None + + + Document + + OpenDocument spreadsheet. Omit inside New-OfficeOpenDocument -Content. + + OdsDocument + + OdsDocument + + + None + + + Name + + Worksheet name. + + String + + String + + + None + + + PassThru + + Emit the created worksheet. + + SwitchParameter + + SwitchParameter + + + None + + + + + + OfficeIMO.OpenDocument.OdsDocument + + + + + + + OfficeIMO.OpenDocument.OdsSheet + + + + + + + + + + + Add a worksheet inside an OpenDocument DSL. + + PS> + + Add-OfficeOpenDocumentSheet -Name 'Data' -Content { + Set-OfficeOpenDocumentCell -Row 0 -Column 0 -Value 'Status' + } + + + + + + + + + + Add-OfficeOpenDocumentSlide + Add + OfficeOpenDocumentSlide + + Adds a slide to an OpenDocument presentation and optionally runs nested slide content. + + + + Adds a slide to an OpenDocument presentation and optionally runs nested slide content. + + + + Add-OfficeOpenDocumentSlide + + Content + + Nested slide commands that use this slide as their current target. + + ScriptBlock + + ScriptBlock + + + None + + + Document + + OpenDocument presentation. Omit inside New-OfficeOpenDocument -Content. + + OdpPresentation + + OdpPresentation + + + None + + + Name + + Optional unique slide name. + + String + + String + + + None + + + PassThru + + Emit the created slide. + + SwitchParameter + + SwitchParameter + + + None + + + + + + Content + + Nested slide commands that use this slide as their current target. + + ScriptBlock + + ScriptBlock + + + None + + + Document + + OpenDocument presentation. Omit inside New-OfficeOpenDocument -Content. + + OdpPresentation + + OdpPresentation + + + None + + + Name + + Optional unique slide name. + + String + + String + + + None + + + PassThru + + Emit the created slide. + + SwitchParameter + + SwitchParameter + + + None + + + + + + OfficeIMO.OpenDocument.OdpPresentation + + + + + + + OfficeIMO.OpenDocument.OdpSlide + + + + + + + + + + + Add a slide with positioned text. + + PS> + + Add-OfficeOpenDocumentSlide -Name 'Summary' -Content { + Add-OfficeOpenDocumentTextBox -Text 'Quarterly summary' -X 2 -Y 2 -Width 20 -Height 3 + } + + + + + + + + + + Add-OfficeOpenDocumentTextBox + Add + OfficeOpenDocumentTextBox + + Adds a positioned text box to an OpenDocument presentation slide. + + + + Adds a positioned text box to an OpenDocument presentation slide. + + + + Add-OfficeOpenDocumentTextBox + + Height + + Height in centimeters. + + Double + + Double + + + None + + + Name + + Optional shape name. + + String + + String + + + None + + + PassThru + + Emit the created text box. + + SwitchParameter + + SwitchParameter + + + None + + + Slide + + Slide target. Omit inside Add-OfficeOpenDocumentSlide -Content. + + OdpSlide + + OdpSlide + + + None + + + Text + + Text box content. + + String + + String + + + None + + + Width + + Width in centimeters. + + Double + + Double + + + None + + + X + + Horizontal position in centimeters. + + Double + + Double + + + None + + + Y + + Vertical position in centimeters. + + Double + + Double + + + None + + + + + + Height + + Height in centimeters. + + Double + + Double + + + None + + + Name + + Optional shape name. + + String + + String + + + None + + + PassThru + + Emit the created text box. + + SwitchParameter + + SwitchParameter + + + None + + + Slide + + Slide target. Omit inside Add-OfficeOpenDocumentSlide -Content. + + OdpSlide + + OdpSlide + + + None + + + Text + + Text box content. + + String + + String + + + None + + + Width + + Width in centimeters. + + Double + + Double + + + None + + + X + + Horizontal position in centimeters. + + Double + + Double + + + None + + + Y + + Vertical position in centimeters. + + Double + + Double + + + None + + + + + + OfficeIMO.OpenDocument.OdpSlide + + + + + + + OfficeIMO.OpenDocument.OdpTextBox + + + + + + + + + + + Place a text box using centimetre coordinates. + + PS> + + Add-OfficeOpenDocumentTextBox -Text 'Approved' -X 18 -Y 12 -Width 6 -Height 2 + + + + + + + Add-OfficePdfAttachment @@ -45692,7 +46508,7 @@ table formatting, borders, and style choices are preserved. [pscustomobject]@{ Month = 'Feb'; Sales = 12; Profit = 5 } [pscustomobject]@{ Month = 'Mar'; Sales = 15; Profit = 7 } ) - $doc = New-OfficeWord -Path .\Trend.docx -PassThru + $doc = New-OfficeWord -Path .\Trend.docx -NoSave Add-OfficeWordChart -Document $doc -Type Line -InputObject $trend -CategoryProperty Month -SeriesProperty Sales, Profit -Legend -Title 'Quarter trend' Save-OfficeWord -Document $doc @@ -59321,7 +60137,8 @@ cells. This keeps existing-document editing simple without forcing callers back PS> - $options = [OfficeIMO.Pdf.PdfVisualComparisonOptions]::new(); $options.AllowedDifferenceRatio = 0.001; Compare-OfficePdfVisual -ReferencePath .\Expected.pdf -DifferencePath .\Actual.pdf -PageRange '1-3' -Options $options + $options = New-OfficePdfVisualComparisonOptions -AllowedDifferenceRatio 0.001 -ChannelTolerance 2 + Compare-OfficePdfVisual -ReferencePath .\Expected.pdf -DifferencePath .\Actual.pdf -PageRange '1-3' -Options $options Returns per-page difference ratios, images, and diagnostics. @@ -59474,6 +60291,17 @@ cells. This keeps existing-document editing simple without forcing callers back Returns deterministic findings and saves a Word document containing revision marks. + + Ignore whitespace and volatile metadata. + + PS> + + $options = New-OfficeWordComparisonOptions -IgnoreWhitespace -CompareVolatileMetadata:$false + Compare-OfficeWordDocument -ReferencePath .\Before.docx -DifferencePath .\After.docx -Options $options + + + + @@ -62147,8 +62975,12 @@ cells. This keeps existing-document editing simple without forcing callers back - EXAMPLE 1 - ConvertFrom-OfficeOpenDocument -Path 'C:\Path' + Convert an ODS spreadsheet to Excel. + + PS> + + $options = New-OfficeExcelOpenDocumentOptions -IncludeBasicStyles -MaximumExpandedCells 250000 + ConvertFrom-OfficeOpenDocument -Path .\Status.ods -OutputPath .\Status.xlsx -ExcelOptions $options @@ -70182,22 +71014,12 @@ cells. This keeps existing-document editing simple without forcing callers back - EXAMPLE 1 - ConvertTo-OfficeOpenDocument -Path 'C:\Path' - - - - - - EXAMPLE 2 - ConvertTo-OfficeOpenDocument -ExcelDocument 'Value' - - - - - - EXAMPLE 3 - ConvertTo-OfficeOpenDocument -PowerPointPresentation 'Value' + Convert Word to ODT and reject lossy conversion. + + PS> + + $options = New-OfficeWordOpenDocumentOptions -IncludeImages -IncludeHeadersAndFooters + ConvertTo-OfficeOpenDocument -Path .\Report.docx -OutputPath .\Report.odt -WordOptions $options -FailOnLoss @@ -80978,7 +81800,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe Document - Live Word, Excel, PowerPoint, Markdown, or RTF document to export. + Live Word, Excel, PowerPoint, Markdown, or RTF document to export. Saved FileInfo and path strings from the pipeline are opened automatically. Object @@ -81122,7 +81944,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - + InputPath Source .docx, .xlsx, .pptx, .md, .markdown, or .rtf file. @@ -81260,7 +82082,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe Document - Live Word, Excel, PowerPoint, Markdown, or RTF document to export. + Live Word, Excel, PowerPoint, Markdown, or RTF document to export. Saved FileInfo and path strings from the pipeline are opened automatically. Object @@ -81281,7 +82103,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None - + InputPath Source .docx, .xlsx, .pptx, .md, .markdown, or .rtf file. @@ -81420,6 +82242,11 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe System.Object + + + System.String + + @@ -81454,6 +82281,17 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe + + Configure Markdown PDF export with ordinary PowerShell parameters. + + PS> + + $options = New-OfficeMarkdownPdfOptions -Title 'Service report' -IncludeLocalImages -BaseDirectory .\Assets + Export-OfficeDocumentPdf -InputPath .\Report.md -Path .\Report.pdf -MarkdownOptions $options + + The New-Office*PdfOptions commands build every format-specific options object; no hashtable or .NET constructor is required. + + @@ -84709,6 +85547,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result when a destination path is used. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -84815,6 +85665,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result when a destination path is used. + + SwitchParameter + + SwitchParameter + + + None + WorksheetName @@ -84909,6 +85771,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result when a destination path is used. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -85322,6 +86196,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit one structured image export result per saved sheet. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -85392,6 +86278,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit one structured image export result per saved sheet. + + SwitchParameter + + SwitchParameter + + + None + @@ -85450,6 +86348,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit one structured image export result per saved sheet. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -85490,7 +86400,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe Export-OfficeExcelImage -Path .\Report.xlsx -OutputPath .\Images - Writes one image per selected sheet and returns OfficeImageExportResult objects. + Writes one image per selected sheet. Add -PassThru to receive the structured export results. @@ -85566,6 +86476,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result when a destination path is used. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -85672,6 +86594,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result when a destination path is used. + + SwitchParameter + + SwitchParameter + + + None + Range @@ -85766,6 +86700,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result when a destination path is used. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -85885,7 +86831,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe OutputPath - Destination PNG or SVG path. + Destination PNG, JPEG, TIFF, SVG, or WebP path. String @@ -85906,6 +86852,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -85979,7 +86937,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe OutputPath - Destination PNG or SVG path. + Destination PNG, JPEG, TIFF, SVG, or WebP path. String @@ -86000,6 +86958,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result. + + SwitchParameter + + SwitchParameter + + + None + RenderOptions @@ -86061,7 +87031,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe OutputPath - Destination PNG or SVG path. + Destination PNG, JPEG, TIFF, SVG, or WebP path. String @@ -86082,6 +87052,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result. + + SwitchParameter + + SwitchParameter + + + None + RenderOptions @@ -86155,7 +87137,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe OutputPath - Destination PNG or SVG path. + Destination PNG, JPEG, TIFF, SVG, or WebP path. String @@ -86176,6 +87158,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -86233,7 +87227,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe Export-OfficeHtmlImage -Path .\Report.html -OutputPath .\Report.png - Uses the dependency-free OfficeIMO HTML renderer and returns OfficeImageExportResult. + Uses the dependency-free OfficeIMO HTML renderer. Add -PassThru to receive the structured export result. @@ -86321,6 +87315,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit one structured image export result per saved page. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -86427,6 +87433,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit one structured image export result per saved page. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -86491,7 +87509,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe Export-OfficePdfImage -Path .\Report.pdf -OutputPath .\Pages -PageRange '1-3,5' - Writes the selected pages and returns normalized image results with rendering diagnostics. + Writes the selected pages. Add -PassThru to receive normalized image results with rendering diagnostics. @@ -86588,6 +87606,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -86715,6 +87745,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result. + + SwitchParameter + + SwitchParameter + + + None + Password @@ -86785,8 +87827,11 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe - EXAMPLE 1 - Export-OfficePdfLayoutOverlay -Path 'C:\Path' + Export an SVG layout overlay for the first page. + + PS> + + $result = Export-OfficePdfLayoutOverlay -Path .\Report.pdf -OutputPath .\Report-layout.svg -Page 1 -Format Svg -PassThru @@ -87050,6 +88095,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit one structured image export result per saved slide. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -87108,6 +88165,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit one structured image export result per saved slide. + + SwitchParameter + + SwitchParameter + + + None + Presentation @@ -87166,6 +88235,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit one structured image export result per saved slide. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -87218,7 +88299,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe Export-OfficePowerPointImage -Path .\Deck.pptx -OutputPath .\Slides -Format Svg - Writes one image per selected slide and returns OfficeImageExportResult objects. + Writes one image per selected slide. Add -PassThru to receive the structured export results. @@ -87282,6 +88363,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit one structured image export result per saved page. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -87352,6 +88445,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit one structured image export result per saved page. + + SwitchParameter + + SwitchParameter + + + None + @@ -87410,6 +88515,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit one structured image export result per saved page. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -87450,7 +88567,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe Export-OfficeVisioImage -Path .\diagram.vsdx -OutputPath .\Images -Format Png - Writes one PNG per selected page and returns one result object per file. + Writes one PNG per selected page. Add -PassThru to receive one result object per file. @@ -88493,15 +89610,27 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe Export OfficeWordImage - Exports a Word page as PNG or SVG with structured image diagnostics. + Exports one or more Word pages through the format-neutral OfficeIMO image pipeline. - Exports a Word page as PNG or SVG with structured image diagnostics. + Exports one or more Word pages through the format-neutral OfficeIMO image pipeline. Export-OfficeWordImage + + AllPages + + Export every estimated page to the destination folder. + + SwitchParameter + + SwitchParameter + + + None + Format @@ -88536,7 +89665,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe OutputPath - Destination PNG or SVG path. + Destination image file, or destination folder when -AllPages or Options.PageCount requests a batch. String @@ -88545,6 +89674,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -88560,6 +89701,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe Export-OfficeWordImage + + AllPages + + Export every estimated page to the destination folder. + + SwitchParameter + + SwitchParameter + + + None + Document @@ -88606,7 +89759,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe OutputPath - Destination PNG or SVG path. + Destination image file, or destination folder when -AllPages or Options.PageCount requests a batch. String @@ -88615,9 +89768,33 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result. + + SwitchParameter + + SwitchParameter + + + None + + + AllPages + + Export every estimated page to the destination folder. + + SwitchParameter + + SwitchParameter + + + None + Document @@ -88664,7 +89841,7 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe OutputPath - Destination PNG or SVG path. + Destination image file, or destination folder when -AllPages or Options.PageCount requests a batch. String @@ -88673,6 +89850,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + PassThru + + Emit the structured image export result. + + SwitchParameter + + SwitchParameter + + + None + Path @@ -88713,7 +89902,17 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe Export-OfficeWordImage -Path .\Report.docx -OutputPath .\Report.svg -Format Svg - Returns the OfficeIMO image export result after writing the image. + Writes the image quietly. Add -PassThru to receive the structured export result. + + + + Export every page as JPEG files. + + PS> + + Export-OfficeWordImage -Path .\Report.docx -OutputPath .\Pages -Format Jpeg -AllPages + + For a bounded batch, create options with New-OfficeWordImageOptions -PageIndex 0 -PageCount 2. @@ -98268,7 +99467,8 @@ extraction, hashing, and chunk shaping. PS> - $options = [OfficeIMO.Reader.ReaderHierarchicalChunkingOptions]::new(); $options.MaxTokens = 500; $result = Get-OfficeDocumentHierarchy -Path .\handbook.pdf -ChunkingOptions $options + $options = New-OfficeReaderHierarchyOptions -MaxTokens 500 -OverlapTokens 50 -IncludeContextInText + $result = Get-OfficeDocumentHierarchy -Path .\handbook.pdf -ChunkingOptions $options Returns chunks, token evidence, overlap counts, and flattened parent/child nodes. @@ -100368,8 +101568,12 @@ extraction, hashing, and chunk shaping. - EXAMPLE 1 - Get-OfficeEmail -Path 'C:\Path' + Read a message without retaining attachment payloads. + + PS> + + $options = New-OfficeEmailReaderOptions -ExcludeAttachmentContent -MaxAttachmentBytes 25MB + Get-OfficeEmail -Path .\Message.msg -Options $options -AsResult @@ -100494,8 +101698,12 @@ extraction, hashing, and chunk shaping. - EXAMPLE 1 - Get-OfficeEmailMailbox -Path 'C:\Path' + Read a bounded mbox mailbox with diagnostics. + + PS> + + $options = New-OfficeEmailMailboxReaderOptions -MaxMessageCount 5000 + Get-OfficeEmailMailbox -Path .\Archive.mbox -Options $options -AsResult @@ -100518,18 +101726,6 @@ extraction, hashing, and chunk shaping. Get-OfficeExcel - - AutoSave - - Enable automatic saves on the underlying document. - - SwitchParameter - - SwitchParameter - - - None - Password @@ -100581,18 +101777,6 @@ extraction, hashing, and chunk shaping. None - - AutoSave - - Enable automatic saves on the underlying document. - - SwitchParameter - - SwitchParameter - - - None - Password @@ -100644,18 +101828,6 @@ extraction, hashing, and chunk shaping. None - - AutoSave - - Enable automatic saves on the underlying document. - - SwitchParameter - - SwitchParameter - - - None - Password @@ -117710,18 +118882,6 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification Get-OfficeWord - - AutoSave - - Enable AutoSave when editing. - - SwitchParameter - - SwitchParameter - - - None - Content @@ -117773,18 +118933,6 @@ Certificate-chain trust, revocation, digest, and CMS cryptographic verification - - AutoSave - - Enable AutoSave when editing. - - SwitchParameter - - SwitchParameter - - - None - Content @@ -134641,125 +135789,295 @@ This does not discover, bypass, or crack a missing password. - New-OfficeExcel + New-OfficeEmailMailboxReaderOptions New - OfficeExcel + OfficeEmailMailboxReaderOptions - Creates a new Excel workbook using the DSL. + Creates bounded mbox reader settings through ordinary PowerShell parameters. - Runs the provided script block inside an ExcelSheet/ExcelCell DSL context and saves the file. + Creates bounded mbox reader settings through ordinary PowerShell parameters. - New-OfficeExcel - - ApplicationName - - Workbook application-name metadata. - - String - - String - - - None - + New-OfficeEmailMailboxReaderOptions - Author + MaxMailboxBytes - Workbook author metadata. + Maximum aggregate source bytes consumed from one mailbox. - String + Int64 - String + Int64 None - Category + MaxMessageCount - Workbook category metadata. + Maximum messages in one mailbox. - String + Int32 - String + Int32 None - - ClearCachedFormulaResults + + MessageOptions - Remove cached formula results before saving. + Bounded policy applied independently to each message. - SwitchParameter + EmailReaderOptions - SwitchParameter + EmailReaderOptions None - Company + Variant - Workbook company metadata. + Escaping convention to decode. - String + MboxVariant + + Auto + Mboxo + Mboxrd + - String + MboxVariant None - - Content + + + + + MaxMailboxBytes + + Maximum aggregate source bytes consumed from one mailbox. + + Int64 + + Int64 + + + None + + + MaxMessageCount + + Maximum messages in one mailbox. + + Int32 + + Int32 + + + None + + + MessageOptions + + Bounded policy applied independently to each message. + + EmailReaderOptions + + EmailReaderOptions + + + None + + + Variant + + Escaping convention to decode. + + MboxVariant + + Auto + Mboxo + Mboxrd + + + MboxVariant + + + None + + + + + + OfficeIMO.Email.EmailReaderOptions + + + + + + + OfficeIMO.Email.EmailMailboxReaderOptions + + + + + + + + + + + Read a bounded mailbox with a reusable per-message policy. + + PS> + + $messageOptions = New-OfficeEmailReaderOptions -ExcludeAttachmentContent + $options = New-OfficeEmailMailboxReaderOptions -MessageOptions $messageOptions -MaxMessageCount 5000 + Get-OfficeEmailMailbox -Path .\Archive.mbox -Options $options -AsResult + + + + + + + + + + New-OfficeEmailMailboxWriterOptions + New + OfficeEmailMailboxWriterOptions + + Creates deterministic mbox writer settings through ordinary PowerShell parameters. + + + + Creates deterministic mbox writer settings through ordinary PowerShell parameters. + + + + New-OfficeEmailMailboxWriterOptions + + MessageOptions - DSL scriptblock describing workbook content. + Serialization policy applied independently to each message. - ScriptBlock + EmailWriterOptions - ScriptBlock + EmailWriterOptions None - DateSystem + Variant - Workbook date system for Excel date serials. + Concrete mbox escaping convention to write. - String + MboxVariant - 1900 - 1904 - NineteenHundred - NineteenFour + Auto + Mboxo + Mboxrd - String - - - None - - - Description - - Workbook description metadata. - - String - - String + MboxVariant None + + + + + MessageOptions + + Serialization policy applied independently to each message. + + EmailWriterOptions + + EmailWriterOptions + + + None + + + Variant + + Concrete mbox escaping convention to write. + + MboxVariant + + Auto + Mboxo + Mboxrd + + + MboxVariant + + + None + + + + + + OfficeIMO.Email.EmailWriterOptions + + + + + + + OfficeIMO.Email.EmailMailboxWriterOptions + + + + + + + + + + + Write an mboxo mailbox with a reusable per-message policy. + + PS> + + $messageOptions = New-OfficeEmailWriterOptions -IncludeBccHeader + $options = New-OfficeEmailMailboxWriterOptions -MessageOptions $messageOptions -Variant Mboxo + $mailbox | Save-OfficeEmailMailbox -Path .\Archive.mbox -Options $options -PassThru + + + + + + + + + + New-OfficeEmailReaderOptions + New + OfficeEmailReaderOptions + + Creates bounded EML, MSG, and TNEF reader settings through ordinary PowerShell parameters. + + + + Creates bounded EML, MSG, and TNEF reader settings through ordinary PowerShell parameters. + + + + New-OfficeEmailReaderOptions - DisableFastPackageWriter + ExcludeAttachmentContent - Disable OfficeIMO fast package writers for this save. + Do not retain decoded attachment payloads in memory. SwitchParameter @@ -134769,201 +136087,165 @@ This does not discover, bypass, or crack a missing password. None - DocumentTitle - - Workbook document title metadata. - - String - - String - - - None - - - EvaluateFormulas + MaxAttachmentBytes - Evaluate supported formulas and write cached values before saving. + Maximum decoded bytes for one attachment. - SwitchParameter + Int64 - SwitchParameter + Int64 None - ForceFullCalculationOnOpen + MaxAttachmentCount - Request a full workbook recalculation when opened in Excel-compatible applications. + Maximum aggregate attachment count. - SwitchParameter + Int32 - SwitchParameter + Int32 None - Keywords + MaxCompoundDirectoryEntries - Workbook keyword metadata. + Maximum CFB directory entries accepted while reading MSG. - String + Int32 - String + Int32 None - LastModifiedBy + MaxDecodedPropertyBytes - Workbook last-modified-by metadata. + Maximum aggregate bytes represented by decoded MSG property streams. - String + Int64 - String + Int64 None - Manager + MaxHeaderBytes - Workbook manager metadata. + Maximum bytes allowed in one MIME header section. - String + Int32 - String + Int32 None - MarkFormulasDirty + MaxHeaderCount - Mark formula cells dirty before saving. + Maximum number of header fields in one entity. - SwitchParameter + Int32 - SwitchParameter + Int32 None - NoSave + MaxInputBytes - Skip saving the workbook after running the DSL. + Maximum artifact size accepted by the reader. - SwitchParameter + Int64 - SwitchParameter + Int64 None - Open + MaxMapiPropertyCount - Open the workbook in Excel after saving. + Maximum aggregate MAPI properties across a message and embedded messages. - SwitchParameter + Int32 - SwitchParameter + Int32 None - PassThru + MaxMimeDepth - Emit a FileInfo for convenience. + Maximum nested MIME depth. - SwitchParameter + Int32 - SwitchParameter + Int32 None - Password - - Password used to save the workbook as an encrypted package. - - String - - String - - - None - - - Path + MaxNestedMessageDepth - Destination path for the workbook. + Maximum embedded-message recursion depth. - String + Int32 - String + Int32 None - SafePreflight + MaxPartCount - Run OfficeIMO worksheet preflight cleanup before saving. + Maximum MIME entity count. - SwitchParameter + Int32 - SwitchParameter + Int32 None - SafeRepairDefinedNames + MaxTnefAttributeCount - Repair common defined-name issues before saving. + Maximum number of TNEF attributes. - SwitchParameter + Int32 - SwitchParameter + Int32 None - Subject + MaxTotalAttachmentBytes - Workbook subject metadata. - - String - - String - - - None - - - TemplatePath - - Optional workbook template package copied before running the DSL. + Maximum aggregate decoded attachment bytes. - String + Int64 - String + Int64 None - ValidateOpenXml + PreserveRawSource - Validate the saved package with OpenXmlValidator and throw on errors. + Retain original artifact bytes for an explicit lossless write. SwitchParameter @@ -134976,111 +136258,9 @@ This does not discover, bypass, or crack a missing password. - ApplicationName - - Workbook application-name metadata. - - String - - String - - - None - - - Author - - Workbook author metadata. - - String - - String - - - None - - - Category - - Workbook category metadata. - - String - - String - - - None - - - ClearCachedFormulaResults - - Remove cached formula results before saving. - - SwitchParameter - - SwitchParameter - - - None - - - Company - - Workbook company metadata. - - String - - String - - - None - - - Content - - DSL scriptblock describing workbook content. - - ScriptBlock - - ScriptBlock - - - None - - - DateSystem - - Workbook date system for Excel date serials. - - String - - 1900 - 1904 - NineteenHundred - NineteenFour - - - String - - - None - - - Description - - Workbook description metadata. - - String - - String - - - None - - - DisableFastPackageWriter + ExcludeAttachmentContent - Disable OfficeIMO fast package writers for this save. + Do not retain decoded attachment payloads in memory. SwitchParameter @@ -135090,201 +136270,165 @@ This does not discover, bypass, or crack a missing password. None - DocumentTitle - - Workbook document title metadata. - - String - - String - - - None - - - EvaluateFormulas + MaxAttachmentBytes - Evaluate supported formulas and write cached values before saving. + Maximum decoded bytes for one attachment. - SwitchParameter + Int64 - SwitchParameter + Int64 None - ForceFullCalculationOnOpen + MaxAttachmentCount - Request a full workbook recalculation when opened in Excel-compatible applications. + Maximum aggregate attachment count. - SwitchParameter + Int32 - SwitchParameter + Int32 None - Keywords + MaxCompoundDirectoryEntries - Workbook keyword metadata. + Maximum CFB directory entries accepted while reading MSG. - String + Int32 - String + Int32 None - LastModifiedBy + MaxDecodedPropertyBytes - Workbook last-modified-by metadata. + Maximum aggregate bytes represented by decoded MSG property streams. - String + Int64 - String + Int64 None - Manager + MaxHeaderBytes - Workbook manager metadata. + Maximum bytes allowed in one MIME header section. - String + Int32 - String + Int32 None - MarkFormulasDirty + MaxHeaderCount - Mark formula cells dirty before saving. + Maximum number of header fields in one entity. - SwitchParameter + Int32 - SwitchParameter + Int32 None - NoSave + MaxInputBytes - Skip saving the workbook after running the DSL. + Maximum artifact size accepted by the reader. - SwitchParameter + Int64 - SwitchParameter + Int64 None - Open + MaxMapiPropertyCount - Open the workbook in Excel after saving. + Maximum aggregate MAPI properties across a message and embedded messages. - SwitchParameter + Int32 - SwitchParameter + Int32 None - PassThru + MaxMimeDepth - Emit a FileInfo for convenience. + Maximum nested MIME depth. - SwitchParameter + Int32 - SwitchParameter + Int32 None - Password - - Password used to save the workbook as an encrypted package. - - String - - String - - - None - - - Path + MaxNestedMessageDepth - Destination path for the workbook. + Maximum embedded-message recursion depth. - String + Int32 - String + Int32 None - SafePreflight + MaxPartCount - Run OfficeIMO worksheet preflight cleanup before saving. + Maximum MIME entity count. - SwitchParameter + Int32 - SwitchParameter + Int32 None - SafeRepairDefinedNames + MaxTnefAttributeCount - Repair common defined-name issues before saving. + Maximum number of TNEF attributes. - SwitchParameter + Int32 - SwitchParameter + Int32 None - Subject - - Workbook subject metadata. - - String - - String - - - None - - - TemplatePath + MaxTotalAttachmentBytes - Optional workbook template package copied before running the DSL. + Maximum aggregate decoded attachment bytes. - String + Int64 - String + Int64 None - ValidateOpenXml + PreserveRawSource - Validate the saved package with OpenXmlValidator and throw on errors. + Retain original artifact bytes for an explicit lossless write. SwitchParameter @@ -135301,7 +136445,13 @@ This does not discover, bypass, or crack a missing password. - + + + + OfficeIMO.Email.EmailReaderOptions + + + @@ -135309,27 +136459,14 @@ This does not discover, bypass, or crack a missing password. - Create a workbook with a sheet and a few cells. - - PS> - - New-OfficeExcel -Path .\report.xlsx { ExcelSheet 'Data' { ExcelCell -Address 'A1' -Value 'Region' } } - - Creates report.xlsx and writes “Region” into cell A1 on the Data worksheet. - - - - Keep a workbook for incremental composition. + Read message diagnostics without retaining attachment payloads. PS> - $workbook = New-OfficeExcel -Path .\report.xlsx -NoSave - $sheet = $workbook | Add-OfficeExcelSheet -Name 'Data' -PassThru - $sheet | Set-OfficeExcelCell -Address A1 -Value 'Region' - $workbook | Save-OfficeExcel - $workbook | Close-OfficeExcel + $options = New-OfficeEmailReaderOptions -ExcludeAttachmentContent -MaxAttachmentBytes 25MB + Get-OfficeEmail -Path .\Message.msg -Options $options -AsResult - Associates the output path with a live workbook, changes a worksheet, then saves and closes it once. + @@ -135337,89 +136474,23 @@ This does not discover, bypass, or crack a missing password. - New-OfficeExcelDashboard + New-OfficeEmailStoreReaderOptions New - OfficeExcelDashboard + OfficeEmailStoreReaderOptions - Builds a worksheet dashboard from tabular data using OfficeIMO dashboard defaults. + Creates bounded email-store reader settings without requiring .NET constructor syntax. - Builds a worksheet dashboard from tabular data using OfficeIMO dashboard defaults. + Creates bounded email-store reader settings without requiring .NET constructor syntax. - - New-OfficeExcelDashboard - - ChartColumn - - Top-left chart column. - - Int32 - - Int32 - - - None - - - ChartPreset - - Dashboard chart preset. - - ExcelDashboardChartPreset - - Comparison - Trend - Contribution - CompactComparison - - - ExcelDashboardChartPreset - - - None - - - ChartRow - - Top-left chart row. - - Int32 - - Int32 - - - None - - - ChartTitle - - Chart title. Defaults to Title when omitted. - - String - - String - - - None - - - InputObject - - Rows to render in the dashboard table. - - Object - - Object - - - None - + + New-OfficeEmailStoreReaderOptions - NoAutoFilter + ExcludeAttachmentContent - Disable AutoFilter dropdowns on the generated table. + Do not retain decoded attachment payloads in memory. SwitchParameter @@ -135429,9 +136500,9 @@ This does not discover, bypass, or crack a missing password. None - NoAutoFit + IncludeAssociatedItems - Disable auto-fit for generated table columns. + Materialize folder-associated information items. SwitchParameter @@ -135441,9 +136512,9 @@ This does not discover, bypass, or crack a missing password. None - NoChart + IncludeOrphanedItems - Do not create a chart. + Recover item nodes absent from folder contents tables. SwitchParameter @@ -135453,57 +136524,57 @@ This does not discover, bypass, or crack a missing password. None - PassThru + MaxArchiveDecodedBytes - Emit dashboard build metadata. + Maximum total decoded size declared by archive entries. - SwitchParameter + Int64 - SwitchParameter + Int64 None - Subtitle + MaxArchiveEntries - Dashboard subtitle. + Maximum entries accepted from a compressed email-store archive. - String + Int32 - String + Int32 None - TableColumn + MaxArchiveEntryBytes - Top-left column for the generated table. + Maximum decoded size declared by one archive entry. - Int32 + Int64 - Int32 + Int64 None - TableName + MaxAttachmentBytes - Name for the generated table. + Maximum decoded bytes in one attachment. - String + Int64 - String + Int64 None - TableRow + MaxAttachmentsPerItem - Top-left row for the generated table. + Maximum attachments per item. Int32 @@ -135513,66 +136584,57 @@ This does not discover, bypass, or crack a missing password. None - TableStyle + MaxBTreeDepth - Built-in table style. + Maximum tree traversal depth. - String + Int32 - String + Int32 None - Title + MaxCachedBTreePages - Dashboard title. + Maximum PST/OST B-tree pages retained by the cache. - String + Int32 - String + Int32 None - - - New-OfficeExcelDashboard - ChartColumn + MaxDecodedPropertyBytesPerItem - Top-left chart column. + Maximum decoded property bytes per item. - Int32 + Int64 - Int32 + Int64 None - ChartPreset + MaxDecodedTableBytes - Dashboard chart preset. + Maximum decoded bytes traversed from one PST/OST table data tree. - ExcelDashboardChartPreset - - Comparison - Trend - Contribution - CompactComparison - + Int64 - ExcelDashboardChartPreset + Int64 None - ChartRow + MaxDirectoryDepth - Top-left chart row. + Maximum directory depth traversed by mailbox-directory sessions. Int32 @@ -135582,105 +136644,69 @@ This does not discover, bypass, or crack a missing password. None - ChartTitle - - Chart title. Defaults to Title when omitted. - - String - - String - - - None - - - InputObject + MaxDirectoryFileCount - Rows to render in the dashboard table. + Maximum EML, EMLX, and Maildir files indexed by one directory session. - Object + Int32 - Object + Int32 None - NoAutoFilter + MaxFolderCount - Disable AutoFilter dropdowns on the generated table. + Maximum folders materialized. - SwitchParameter + Int32 - SwitchParameter + Int32 None - NoAutoFit + MaxInputBytes - Disable auto-fit for generated table columns. + Maximum seekable source length. - SwitchParameter + Int64 - SwitchParameter + Int64 None - NoChart + MaxItemCount - Do not create a chart. + Maximum items materialized. - SwitchParameter + Int32 - SwitchParameter + Int32 None - PassThru - - Emit dashboard build metadata. - - SwitchParameter - - SwitchParameter - - - None - - - Path - - Workbook path to update. - - String - - String - - - None - - - Sheet + MaxMessageBytes - Worksheet name when using Path or Document. + Maximum RFC 5322/MIME message bytes accepted from one item. - String + Int64 - String + Int64 None - SheetIndex + MaxNestedMessageDepth - Worksheet index (0-based) when using Path or Document. + Maximum embedded-message recursion depth. Int32 @@ -135690,21 +136716,21 @@ This does not discover, bypass, or crack a missing password. None - Subtitle + MaxNodeCount - Dashboard subtitle. + Maximum NDB nodes and blocks visited. - String + Int32 - String + Int32 None - TableColumn + MaxPropertiesPerItem - Top-left column for the generated table. + Maximum MAPI properties decoded per item. Int32 @@ -135714,33 +136740,33 @@ This does not discover, bypass, or crack a missing password. None - TableName + MaxTotalAttachmentBytes - Name for the generated table. + Maximum decoded attachment bytes across the read. - String + Int64 - String + Int64 None - TableRow + MaxXmlCharactersPerItem - Top-left row for the generated table. + Maximum XML characters parsed from one archive item. - Int32 + Int64 - Int32 + Int64 None - TableStyle + PstPassword - Built-in table style. + Password used to validate legacy protected PST files. String @@ -135750,234 +136776,9 @@ This does not discover, bypass, or crack a missing password. None - Title + PstPasswordEncoding - Dashboard title. - - String - - String - - - None - - - - New-OfficeExcelDashboard - - ChartColumn - - Top-left chart column. - - Int32 - - Int32 - - - None - - - ChartPreset - - Dashboard chart preset. - - ExcelDashboardChartPreset - - Comparison - Trend - Contribution - CompactComparison - - - ExcelDashboardChartPreset - - - None - - - ChartRow - - Top-left chart row. - - Int32 - - Int32 - - - None - - - ChartTitle - - Chart title. Defaults to Title when omitted. - - String - - String - - - None - - - Document - - Workbook to update outside the DSL context. - - ExcelDocument - - ExcelDocument - - - None - - - InputObject - - Rows to render in the dashboard table. - - Object - - Object - - - None - - - NoAutoFilter - - Disable AutoFilter dropdowns on the generated table. - - SwitchParameter - - SwitchParameter - - - None - - - NoAutoFit - - Disable auto-fit for generated table columns. - - SwitchParameter - - SwitchParameter - - - None - - - NoChart - - Do not create a chart. - - SwitchParameter - - SwitchParameter - - - None - - - PassThru - - Emit dashboard build metadata. - - SwitchParameter - - SwitchParameter - - - None - - - Sheet - - Worksheet name when using Path or Document. - - String - - String - - - None - - - SheetIndex - - Worksheet index (0-based) when using Path or Document. - - Int32 - - Int32 - - - None - - - Subtitle - - Dashboard subtitle. - - String - - String - - - None - - - TableColumn - - Top-left column for the generated table. - - Int32 - - Int32 - - - None - - - TableName - - Name for the generated table. - - String - - String - - - None - - - TableRow - - Top-left row for the generated table. - - Int32 - - Int32 - - - None - - - TableStyle - - Built-in table style. - - String - - String - - - None - - - Title - - Dashboard title. + Encoding name used for the legacy PST password checksum. String @@ -135990,39 +136791,57 @@ This does not discover, bypass, or crack a missing password. - ChartColumn + ExcludeAttachmentContent - Top-left chart column. + Do not retain decoded attachment payloads in memory. - Int32 + SwitchParameter - Int32 + SwitchParameter None - ChartPreset + IncludeAssociatedItems - Dashboard chart preset. + Materialize folder-associated information items. - ExcelDashboardChartPreset - - Comparison - Trend - Contribution - CompactComparison - + SwitchParameter - ExcelDashboardChartPreset + SwitchParameter None - ChartRow + IncludeOrphanedItems - Top-left chart row. + Recover item nodes absent from folder contents tables. + + SwitchParameter + + SwitchParameter + + + None + + + MaxArchiveDecodedBytes + + Maximum total decoded size declared by archive entries. + + Int64 + + Int64 + + + None + + + MaxArchiveEntries + + Maximum entries accepted from a compressed email-store archive. Int32 @@ -136032,117 +136851,117 @@ This does not discover, bypass, or crack a missing password. None - ChartTitle + MaxArchiveEntryBytes - Chart title. Defaults to Title when omitted. + Maximum decoded size declared by one archive entry. - String + Int64 - String + Int64 None - - Document + + MaxAttachmentBytes - Workbook to update outside the DSL context. + Maximum decoded bytes in one attachment. - ExcelDocument + Int64 - ExcelDocument + Int64 None - - InputObject + + MaxAttachmentsPerItem - Rows to render in the dashboard table. + Maximum attachments per item. - Object + Int32 - Object + Int32 None - NoAutoFilter + MaxBTreeDepth - Disable AutoFilter dropdowns on the generated table. + Maximum tree traversal depth. - SwitchParameter + Int32 - SwitchParameter + Int32 None - NoAutoFit + MaxCachedBTreePages - Disable auto-fit for generated table columns. + Maximum PST/OST B-tree pages retained by the cache. - SwitchParameter + Int32 - SwitchParameter + Int32 None - NoChart + MaxDecodedPropertyBytesPerItem - Do not create a chart. + Maximum decoded property bytes per item. - SwitchParameter + Int64 - SwitchParameter + Int64 None - PassThru + MaxDecodedTableBytes - Emit dashboard build metadata. + Maximum decoded bytes traversed from one PST/OST table data tree. - SwitchParameter + Int64 - SwitchParameter + Int64 None - - Path + + MaxDirectoryDepth - Workbook path to update. + Maximum directory depth traversed by mailbox-directory sessions. - String + Int32 - String + Int32 None - - Sheet + + MaxDirectoryFileCount - Worksheet name when using Path or Document. + Maximum EML, EMLX, and Maildir files indexed by one directory session. - String + Int32 - String + Int32 None - SheetIndex + MaxFolderCount - Worksheet index (0-based) when using Path or Document. + Maximum folders materialized. Int32 @@ -136152,21 +136971,21 @@ This does not discover, bypass, or crack a missing password. None - Subtitle + MaxInputBytes - Dashboard subtitle. + Maximum seekable source length. - String + Int64 - String + Int64 None - TableColumn + MaxItemCount - Top-left column for the generated table. + Maximum items materialized. Int32 @@ -136176,21 +136995,21 @@ This does not discover, bypass, or crack a missing password. None - TableName + MaxMessageBytes - Name for the generated table. + Maximum RFC 5322/MIME message bytes accepted from one item. - String + Int64 - String + Int64 None - TableRow + MaxNestedMessageDepth - Top-left row for the generated table. + Maximum embedded-message recursion depth. Int32 @@ -136200,9 +137019,57 @@ This does not discover, bypass, or crack a missing password. None - TableStyle + MaxNodeCount - Built-in table style. + Maximum NDB nodes and blocks visited. + + Int32 + + Int32 + + + None + + + MaxPropertiesPerItem + + Maximum MAPI properties decoded per item. + + Int32 + + Int32 + + + None + + + MaxTotalAttachmentBytes + + Maximum decoded attachment bytes across the read. + + Int64 + + Int64 + + + None + + + MaxXmlCharactersPerItem + + Maximum XML characters parsed from one archive item. + + Int64 + + Int64 + + + None + + + PstPassword + + Password used to validate legacy protected PST files. String @@ -136212,9 +137079,9 @@ This does not discover, bypass, or crack a missing password. None - Title + PstPasswordEncoding - Dashboard title. + Encoding name used for the legacy PST password checksum. String @@ -136227,14 +137094,14 @@ This does not discover, bypass, or crack a missing password. - System.Object + None - System.Management.Automation.PSObject + OfficeIMO.Email.Store.EmailStoreReaderOptions @@ -136245,13 +137112,14 @@ This does not discover, bypass, or crack a missing password. - Create a dashboard table and chart. + Read an EMLX message without retaining attachment payloads. PS> - $rows | New-OfficeExcelDashboard -Title 'Sales Dashboard' -TableName Sales -ChartPreset CompactComparison + $options = New-OfficeEmailStoreReaderOptions -ExcludeAttachmentContent -MaxAttachmentsPerItem 100 + Get-OfficeEmail -Path .\Message.emlx -StoreOptions $options -AsResult - Writes a table and chart into the current Excel DSL worksheet. + @@ -136259,215 +137127,356 @@ This does not discover, bypass, or crack a missing password. - New-OfficeExcelPdfOptions + New-OfficeEmailWriterOptions New - OfficeExcelPdfOptions + OfficeEmailWriterOptions - Creates discoverable Excel-to-PDF conversion options for Export-OfficeDocumentPdf. + Creates deterministic email writer settings through ordinary PowerShell parameters. - Creates discoverable Excel-to-PDF conversion options for Export-OfficeDocumentPdf. + Creates deterministic email writer settings through ordinary PowerShell parameters. - New-OfficeExcelPdfOptions + New-OfficeEmailWriterOptions - AllowDocumentFontEmbedding + Base64LineLength - Allow embedding fonts stored in the workbook. + Maximum encoded characters on one Base64 body line. - SwitchParameter + Int32 - SwitchParameter + Int32 None - AllowSystemFontEmbedding + ConversionLossPolicy - Allow embedding fonts discovered on the current system. + Policy applied when the requested format cannot preserve known message semantics. - SwitchParameter + EmailConversionLossPolicy + + Block + Warn + Allow + - SwitchParameter + EmailConversionLossPolicy None - ChartLayout + IncludeBccHeader - Chart layout override. + Write Bcc recipients into the message header. - OfficeChartLayout + SwitchParameter - OfficeChartLayout + SwitchParameter None - ChartStyle + MaxNestedMessageDepth - Chart visual style override. + Maximum embedded-message write depth. - OfficeChartStyle + Int32 - OfficeChartStyle + Int32 None - EmptyCellText + MaxOutputBytes - Text used when a worksheet cell is empty. + Maximum serialized artifact size. - String + Int64 - String + Int64 None - FontFamily + UsePreservedRawSource - Default font family used when the workbook does not specify one. + Emit an unchanged preserved source instead of regenerating the artifact when possible. - String + SwitchParameter - String + SwitchParameter None + + + + + Base64LineLength + + Maximum encoded characters on one Base64 body line. + + Int32 + + Int32 + + + None + + + ConversionLossPolicy + + Policy applied when the requested format cannot preserve known message semantics. + + EmailConversionLossPolicy + + Block + Warn + Allow + + + EmailConversionLossPolicy + + + None + + + IncludeBccHeader + + Write Bcc recipients into the message header. + + SwitchParameter + + SwitchParameter + + + None + + + MaxNestedMessageDepth + + Maximum embedded-message write depth. + + Int32 + + Int32 + + + None + + + MaxOutputBytes + + Maximum serialized artifact size. + + Int64 + + Int64 + + + None + + + UsePreservedRawSource + + Emit an unchanged preserved source instead of regenerating the artifact when possible. + + SwitchParameter + + SwitchParameter + + + None + + + + + + None + + + + + + + OfficeIMO.Email.EmailWriterOptions + + + + + + + + + + + Preserve the original source when possible and block semantic loss. + + PS> + + $options = New-OfficeEmailWriterOptions -UsePreservedRawSource -ConversionLossPolicy Block + $message | Save-OfficeEmail -Path .\Message.eml -Options $options -PassThru + + + + + + + + + + New-OfficeExcel + New + OfficeExcel + + Creates a new Excel workbook using the DSL. + + + + Runs the provided script block inside an ExcelSheet/ExcelCell DSL context and saves the file. + + + + New-OfficeExcel - HeaderRowCount + ApplicationName - Number of leading rows treated as headers. + Workbook application-name metadata. - Int32 + String - Int32 + String None - IncludeSheetHeadings + Author - Include worksheet row and column headings. + Workbook author metadata. - SwitchParameter + String - SwitchParameter + String None - MarginBottom + Category - Bottom page margin in PDF points. + Workbook category metadata. - Double + String - Double + String None - MarginLeft + ClearCachedFormulaResults - Left page margin in PDF points. + Remove cached formula results before saving. - Double + SwitchParameter - Double + SwitchParameter None - MarginRight + Company - Right page margin in PDF points. + Workbook company metadata. - Double + String - Double + String None - - MarginTop + + Content - Top page margin in PDF points. + DSL scriptblock describing workbook content. - Double + ScriptBlock - Double + ScriptBlock None - MaxRowsPerSheet + DateSystem - Maximum worksheet rows to read and render. + Workbook date system for Excel date serials. - Int32 + String + + 1900 + 1904 + NineteenHundred + NineteenFour + - Int32 + String None - PageSize + Description - PDF page size. + Workbook description metadata. - PageSize + String - PageSize + String None - PdfOptions + DisableFastPackageWriter - Underlying low-level OfficeIMO PDF options. + Disable OfficeIMO fast package writers for this save. - PdfOptions + SwitchParameter - PdfOptions + SwitchParameter None - RespectWorkbookSheetVisibility + DocumentTitle - Exclude workbook sheets marked hidden. + Workbook document title metadata. - SwitchParameter + String - SwitchParameter + String None - RespectWorksheetHiddenRowsAndColumns + EvaluateFormulas - Exclude hidden worksheet rows and columns. + Evaluate supported formulas and write cached values before saving. SwitchParameter @@ -136476,22 +137485,10 @@ This does not discover, bypass, or crack a missing password. None - - SheetName - - Worksheet names to export. The default exports all eligible sheets. - - String[] - - String[] - - - None - - UseBoundedWorksheetRead + ForceFullCalculationOnOpen - Use bounded worksheet reads for large workbooks. + Request a full workbook recalculation when opened in Excel-compatible applications. SwitchParameter @@ -136501,45 +137498,45 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetCellStyles + Keywords - Render worksheet cell styles. + Workbook keyword metadata. - SwitchParameter + String - SwitchParameter + String None - UseWorksheetCharts + LastModifiedBy - Render worksheet charts. + Workbook last-modified-by metadata. - SwitchParameter + String - SwitchParameter + String None - UseWorksheetColumnWidths + Manager - Honor worksheet column widths. + Workbook manager metadata. - SwitchParameter + String - SwitchParameter + String None - UseWorksheetHeaderFooterImages + MarkFormulasDirty - Render images referenced by worksheet headers and footers. + Mark formula cells dirty before saving. SwitchParameter @@ -136549,9 +137546,9 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetHeadersAndFooters + NoSave - Render worksheet headers and footers. + Skip saving the workbook after running the DSL. SwitchParameter @@ -136561,9 +137558,9 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetHyperlinks + Open - Render worksheet hyperlinks. + Open the workbook in Excel after saving. SwitchParameter @@ -136573,9 +137570,9 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetImages + PassThru - Render worksheet images. + Emit a FileInfo for convenience. SwitchParameter @@ -136585,33 +137582,33 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetMergedCells + Password - Render merged worksheet cells. + Password used to save the workbook as an encrypted package. - SwitchParameter + String - SwitchParameter + String None - - UseWorksheetPageBreaks + + Path - Honor worksheet page breaks. + Destination path for the workbook. - SwitchParameter + String - SwitchParameter + String None - UseWorksheetPageSetup + SafePreflight - Honor worksheet page setup. + Run OfficeIMO worksheet preflight cleanup before saving. SwitchParameter @@ -136621,9 +137618,9 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetPrintAreas + SafeRepairDefinedNames - Honor worksheet print areas. + Repair common defined-name issues before saving. SwitchParameter @@ -136633,41 +137630,37 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetPrintTitleRows + Subject - Honor worksheet rows configured to repeat on printed pages. + Workbook subject metadata. - SwitchParameter + String - SwitchParameter + String None - - UseWorksheetRowHeights + + TemplatePath - Honor worksheet row heights. + Optional workbook template package copied before running the DSL. - SwitchParameter + String - SwitchParameter + String None - WorksheetLayout + ValidateOpenXml - Controls how worksheet content is laid out on PDF pages. + Validate the saved package with OpenXmlValidator and throw on errors. - ExcelPdfWorksheetLayoutMode - - WorksheetCanvas - FlowTable - + SwitchParameter - ExcelPdfWorksheetLayoutMode + SwitchParameter None @@ -136676,57 +137669,9 @@ This does not discover, bypass, or crack a missing password. - AllowDocumentFontEmbedding - - Allow embedding fonts stored in the workbook. - - SwitchParameter - - SwitchParameter - - - None - - - AllowSystemFontEmbedding - - Allow embedding fonts discovered on the current system. - - SwitchParameter - - SwitchParameter - - - None - - - ChartLayout - - Chart layout override. - - OfficeChartLayout - - OfficeChartLayout - - - None - - - ChartStyle - - Chart visual style override. - - OfficeChartStyle - - OfficeChartStyle - - - None - - - EmptyCellText + ApplicationName - Text used when a worksheet cell is empty. + Workbook application-name metadata. String @@ -136736,9 +137681,9 @@ This does not discover, bypass, or crack a missing password. None - FontFamily + Author - Default font family used when the workbook does not specify one. + Workbook author metadata. String @@ -136748,21 +137693,21 @@ This does not discover, bypass, or crack a missing password. None - HeaderRowCount + Category - Number of leading rows treated as headers. + Workbook category metadata. - Int32 + String - Int32 + String None - IncludeSheetHeadings + ClearCachedFormulaResults - Include worksheet row and column headings. + Remove cached formula results before saving. SwitchParameter @@ -136772,93 +137717,87 @@ This does not discover, bypass, or crack a missing password. None - MarginBottom - - Bottom page margin in PDF points. - - Double - - Double - - - None - - - MarginLeft + Company - Left page margin in PDF points. + Workbook company metadata. - Double + String - Double + String None - - MarginRight + + Content - Right page margin in PDF points. + DSL scriptblock describing workbook content. - Double + ScriptBlock - Double + ScriptBlock None - MarginTop + DateSystem - Top page margin in PDF points. + Workbook date system for Excel date serials. - Double + String + + 1900 + 1904 + NineteenHundred + NineteenFour + - Double + String None - MaxRowsPerSheet + Description - Maximum worksheet rows to read and render. + Workbook description metadata. - Int32 + String - Int32 + String None - PageSize + DisableFastPackageWriter - PDF page size. + Disable OfficeIMO fast package writers for this save. - PageSize + SwitchParameter - PageSize + SwitchParameter None - PdfOptions + DocumentTitle - Underlying low-level OfficeIMO PDF options. + Workbook document title metadata. - PdfOptions + String - PdfOptions + String None - RespectWorkbookSheetVisibility + EvaluateFormulas - Exclude workbook sheets marked hidden. + Evaluate supported formulas and write cached values before saving. SwitchParameter @@ -136868,9 +137807,9 @@ This does not discover, bypass, or crack a missing password. None - RespectWorksheetHiddenRowsAndColumns + ForceFullCalculationOnOpen - Exclude hidden worksheet rows and columns. + Request a full workbook recalculation when opened in Excel-compatible applications. SwitchParameter @@ -136879,58 +137818,46 @@ This does not discover, bypass, or crack a missing password. None - - SheetName - - Worksheet names to export. The default exports all eligible sheets. - - String[] - - String[] - - - None - - UseBoundedWorksheetRead + Keywords - Use bounded worksheet reads for large workbooks. + Workbook keyword metadata. - SwitchParameter + String - SwitchParameter + String None - UseWorksheetCellStyles + LastModifiedBy - Render worksheet cell styles. + Workbook last-modified-by metadata. - SwitchParameter + String - SwitchParameter + String None - UseWorksheetCharts + Manager - Render worksheet charts. + Workbook manager metadata. - SwitchParameter + String - SwitchParameter + String None - UseWorksheetColumnWidths + MarkFormulasDirty - Honor worksheet column widths. + Mark formula cells dirty before saving. SwitchParameter @@ -136940,9 +137867,9 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetHeaderFooterImages + NoSave - Render images referenced by worksheet headers and footers. + Skip saving the workbook after running the DSL. SwitchParameter @@ -136952,9 +137879,9 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetHeadersAndFooters + Open - Render worksheet headers and footers. + Open the workbook in Excel after saving. SwitchParameter @@ -136964,9 +137891,9 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetHyperlinks + PassThru - Render worksheet hyperlinks. + Emit a FileInfo for convenience. SwitchParameter @@ -136976,33 +137903,33 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetImages + Password - Render worksheet images. + Password used to save the workbook as an encrypted package. - SwitchParameter + String - SwitchParameter + String None - - UseWorksheetMergedCells + + Path - Render merged worksheet cells. + Destination path for the workbook. - SwitchParameter + String - SwitchParameter + String None - UseWorksheetPageBreaks + SafePreflight - Honor worksheet page breaks. + Run OfficeIMO worksheet preflight cleanup before saving. SwitchParameter @@ -137012,9 +137939,9 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetPageSetup + SafeRepairDefinedNames - Honor worksheet page setup. + Repair common defined-name issues before saving. SwitchParameter @@ -137024,33 +137951,33 @@ This does not discover, bypass, or crack a missing password. None - UseWorksheetPrintAreas + Subject - Honor worksheet print areas. + Workbook subject metadata. - SwitchParameter + String - SwitchParameter + String None - - UseWorksheetPrintTitleRows + + TemplatePath - Honor worksheet rows configured to repeat on printed pages. + Optional workbook template package copied before running the DSL. - SwitchParameter + String - SwitchParameter + String None - UseWorksheetRowHeights + ValidateOpenXml - Honor worksheet row heights. + Validate the saved package with OpenXmlValidator and throw on errors. SwitchParameter @@ -137059,22 +137986,6 @@ This does not discover, bypass, or crack a missing password. None - - WorksheetLayout - - Controls how worksheet content is laid out on PDF pages. - - ExcelPdfWorksheetLayoutMode - - WorksheetCanvas - FlowTable - - - ExcelPdfWorksheetLayoutMode - - - None - @@ -137083,13 +137994,7 @@ This does not discover, bypass, or crack a missing password. - - - - OfficeIMO.Excel.Pdf.ExcelPdfSaveOptions - - - + @@ -137097,14 +138002,27 @@ This does not discover, bypass, or crack a missing password. - Export selected visible sheets with workbook layout features. + Create a workbook with a sheet and a few cells. PS> - $options = New-OfficeExcelPdfOptions -SheetName Summary,Services -UseWorksheetCharts -UseWorksheetImages - Export-OfficeDocumentPdf -InputPath .\Report.xlsx -Path .\Report.pdf -ExcelOptions $options + New-OfficeExcel -Path .\report.xlsx { ExcelSheet 'Data' { ExcelCell -Address 'A1' -Value 'Region' } } - + Creates report.xlsx and writes “Region” into cell A1 on the Data worksheet. + + + + Keep a workbook for incremental composition. + + PS> + + $workbook = New-OfficeExcel -Path .\report.xlsx -NoSave + $sheet = $workbook | Add-OfficeExcelSheet -Name 'Data' -PassThru + $sheet | Set-OfficeExcelCell -Address A1 -Value 'Region' + $workbook | Save-OfficeExcel + $workbook | Close-OfficeExcel + + Associates the output path with a live workbook, changes a worksheet, then saves and closes it once. @@ -137112,52 +138030,65 @@ This does not discover, bypass, or crack a missing password. - New-OfficeMarkdown + New-OfficeExcelDashboard New - OfficeMarkdown + OfficeExcelDashboard - Creates a Markdown document using a DSL scriptblock. + Builds a worksheet dashboard from tabular data using OfficeIMO dashboard defaults. - Runs the scriptblock against a Markdown document and saves it to disk unless -NoSave is specified. + Builds a worksheet dashboard from tabular data using OfficeIMO dashboard defaults. - - New-OfficeMarkdown - - Content + + New-OfficeExcelDashboard + + ChartColumn - DSL scriptblock describing Markdown content. + Top-left chart column. - ScriptBlock + Int32 - ScriptBlock + Int32 None - ImageRenderingMode + ChartPreset - Controls how Markdown images are serialized. + Dashboard chart preset. - MarkdownImageRenderingMode + ExcelDashboardChartPreset - RichMarkdown - PortableMarkdown - Html + Comparison + Trend + Contribution + CompactComparison - MarkdownImageRenderingMode + ExcelDashboardChartPreset None - LineEnding + ChartRow - Markdown line ending: CRLF, LF, CR, or a literal line ending string. + Top-left chart row. + + Int32 + + Int32 + + + None + + + ChartTitle + + Chart title. Defaults to Title when omitted. String @@ -137166,10 +138097,22 @@ This does not discover, bypass, or crack a missing password. None + + InputObject + + Rows to render in the dashboard table. + + Object + + Object + + + None + - NoSave + NoAutoFilter - Skip saving after executing the DSL. + Disable AutoFilter dropdowns on the generated table. SwitchParameter @@ -137179,9 +138122,9 @@ This does not discover, bypass, or crack a missing password. None - PassThru + NoAutoFit - Emit a FileInfo for chaining. + Disable auto-fit for generated table columns. SwitchParameter @@ -137190,22 +138133,34 @@ This does not discover, bypass, or crack a missing password. None - - Path + + NoChart - Destination path for the Markdown file. + Do not create a chart. - String + SwitchParameter - String + SwitchParameter None - UnorderedListMarker + PassThru - Unordered list marker: '-', '*', or '+'. + Emit dashboard build metadata. + + SwitchParameter + + SwitchParameter + + + None + + + Subtitle + + Dashboard subtitle. String @@ -137215,240 +138170,45 @@ This does not discover, bypass, or crack a missing password. None - WriteOptions + TableColumn - Optional Markdown writer options. + Top-left column for the generated table. - MarkdownWriteOptions + Int32 - MarkdownWriteOptions + Int32 None - WriteProfile + TableName - Friendly Markdown writer profile. + Name for the generated table. - OfficeMarkdownWriteProfile - - OfficeIMO - Portable - HtmlImage - + String - OfficeMarkdownWriteProfile + String None - - - - - Content - - DSL scriptblock describing Markdown content. - - ScriptBlock - - ScriptBlock - - - None - - - ImageRenderingMode - - Controls how Markdown images are serialized. - - MarkdownImageRenderingMode - - RichMarkdown - PortableMarkdown - Html - - - MarkdownImageRenderingMode - - - None - - - LineEnding - - Markdown line ending: CRLF, LF, CR, or a literal line ending string. - - String - - String - - - None - - - NoSave - - Skip saving after executing the DSL. - - SwitchParameter - - SwitchParameter - - - None - - - PassThru - - Emit a FileInfo for chaining. - - SwitchParameter - - SwitchParameter - - - None - - - Path - - Destination path for the Markdown file. - - String - - String - - - None - - - UnorderedListMarker - - Unordered list marker: '-', '*', or '+'. - - String - - String - - - None - - - WriteOptions - - Optional Markdown writer options. - - MarkdownWriteOptions - - MarkdownWriteOptions - - - None - - - WriteProfile - - Friendly Markdown writer profile. - - OfficeMarkdownWriteProfile - - OfficeIMO - Portable - HtmlImage - - - OfficeMarkdownWriteProfile - - - None - - - - - - None - - - - - - - System.IO.FileInfo - - - - - OfficeIMO.Markdown.MarkdownDoc - - - - - - - - - - - Create a Markdown document with headings and a table. - - PS> - - New-OfficeMarkdown -Path .\README.md { MarkdownHeading -Level 1 -Text 'Report'; MarkdownTable -InputObject $data } - - Creates a README file with a heading and table content. - - - - Create a report with multiple tables. - - PS> - - New-OfficeMarkdown -Path .\Report.md { - MarkdownHeading -Level 1 -Text 'Summary' - MarkdownTable -InputObject $summary - MarkdownHeading -Level 2 -Text 'Details' - MarkdownTable -InputObject $details - } - - Creates a report with two tables separated by headings. - - - - - - - - New-OfficeMarkdownPdfOptions - New - OfficeMarkdownPdfOptions - - Creates discoverable Markdown-to-PDF conversion options for Export-OfficeDocumentPdf. - - - - Creates discoverable Markdown-to-PDF conversion options for Export-OfficeDocumentPdf. - - - - New-OfficeMarkdownPdfOptions - ApplyWordLikeTheme + TableRow - Apply the built-in Word-like Markdown PDF baseline theme. + Top-left row for the generated table. - SwitchParameter + Int32 - SwitchParameter + Int32 None - Author + TableStyle - PDF author metadata. + Built-in table style. String @@ -137458,9 +138218,9 @@ This does not discover, bypass, or crack a missing password. None - BaseDirectory + Title - Base directory used to resolve local Markdown images. + Dashboard title. String @@ -137469,46 +138229,55 @@ This does not discover, bypass, or crack a missing password. None + + + New-OfficeExcelDashboard - CreateOutlineFromHeadings + ChartColumn - Create PDF outlines from Markdown headings. + Top-left chart column. - SwitchParameter + Int32 - SwitchParameter + Int32 None - DefaultImageHeight + ChartPreset - Fallback image height in PDF points. + Dashboard chart preset. - Double + ExcelDashboardChartPreset + + Comparison + Trend + Contribution + CompactComparison + - Double + ExcelDashboardChartPreset None - DefaultImageWidth + ChartRow - Fallback image width in PDF points. + Top-left chart row. - Double + Int32 - Double + Int32 None - FontFamily + ChartTitle - Default font family. + Chart title. Defaults to Title when omitted. String @@ -137517,27 +138286,34 @@ This does not discover, bypass, or crack a missing password. None + + InputObject + + Rows to render in the dashboard table. + + Object + + Object + + + None + - FrontMatterRenderMode + NoAutoFilter - Controls how YAML front matter appears in the PDF body. + Disable AutoFilter dropdowns on the generated table. - MarkdownPdfFrontMatterRenderMode - - Hidden - DocumentHeader - Table - + SwitchParameter - MarkdownPdfFrontMatterRenderMode + SwitchParameter None - IncludeDataUriImages + NoAutoFit - Embed supported data URI images. + Disable auto-fit for generated table columns. SwitchParameter @@ -137547,9 +138323,9 @@ This does not discover, bypass, or crack a missing password. None - IncludeLocalImages + NoChart - Embed supported local image files. + Do not create a chart. SwitchParameter @@ -137559,9 +138335,33 @@ This does not discover, bypass, or crack a missing password. None - Keywords + PassThru - PDF keywords metadata. + Emit dashboard build metadata. + + SwitchParameter + + SwitchParameter + + + None + + + Path + + Workbook path to update. + + String + + String + + + None + + + Sheet + + Worksheet name when using Path or Document. String @@ -137571,9 +138371,9 @@ This does not discover, bypass, or crack a missing password. None - MaximumDataUriImageBytes + SheetIndex - Maximum decoded bytes for one data URI image. + Worksheet index (0-based) when using Path or Document. Int32 @@ -137582,46 +138382,58 @@ This does not discover, bypass, or crack a missing password. None - - Options + + Subtitle - Existing Markdown PDF options to clone and override. + Dashboard subtitle. - MarkdownPdfSaveOptions + String - MarkdownPdfSaveOptions + String None - PdfOptions + TableColumn - Underlying low-level OfficeIMO PDF options. + Top-left column for the generated table. - PdfOptions + Int32 - PdfOptions + Int32 None - RestrictLocalImagesToBaseDirectory + TableName - Require local images to resolve under BaseDirectory. + Name for the generated table. - SwitchParameter + String - SwitchParameter + String None - Subject + TableRow - PDF subject metadata. + Top-left row for the generated table. + + Int32 + + Int32 + + + None + + + TableStyle + + Built-in table style. String @@ -137631,29 +138443,66 @@ This does not discover, bypass, or crack a missing password. None - Theme + Title - Built-in visual theme. + Dashboard title. - OfficeVisualThemeKind + String + + String + + + None + + + + New-OfficeExcelDashboard + + ChartColumn + + Top-left chart column. + + Int32 + + Int32 + + + None + + + ChartPreset + + Dashboard chart preset. + + ExcelDashboardChartPreset - Plain - WordLike - TechnicalDocument - GitHubLike - Compact - Report + Comparison + Trend + Contribution + CompactComparison - OfficeVisualThemeKind + ExcelDashboardChartPreset None - Title + ChartRow - PDF title metadata. + Top-left chart row. + + Int32 + + Int32 + + + None + + + ChartTitle + + Chart title. Defaults to Title when omitted. String @@ -137662,10 +138511,34 @@ This does not discover, bypass, or crack a missing password. None + + Document + + Workbook to update outside the DSL context. + + ExcelDocument + + ExcelDocument + + + None + + + InputObject + + Rows to render in the dashboard table. + + Object + + Object + + + None + - UseFirstHeadingAsTitle + NoAutoFilter - Use the first Markdown heading as the PDF title when no title is supplied. + Disable AutoFilter dropdowns on the generated table. SwitchParameter @@ -137675,9 +138548,9 @@ This does not discover, bypass, or crack a missing password. None - UseFrontMatterMetadata + NoAutoFit - Use front matter values as PDF metadata. + Disable auto-fit for generated table columns. SwitchParameter @@ -137687,9 +138560,21 @@ This does not discover, bypass, or crack a missing password. None - UseFrontMatterVisualTheme + NoChart - Use front matter values to select a visual theme. + Do not create a chart. + + SwitchParameter + + SwitchParameter + + + None + + + PassThru + + Emit dashboard build metadata. SwitchParameter @@ -137698,114 +138583,211 @@ This does not discover, bypass, or crack a missing password. None + + Sheet + + Worksheet name when using Path or Document. + + String + + String + + + None + + + SheetIndex + + Worksheet index (0-based) when using Path or Document. + + Int32 + + Int32 + + + None + + + Subtitle + + Dashboard subtitle. + + String + + String + + + None + + + TableColumn + + Top-left column for the generated table. + + Int32 + + Int32 + + + None + + + TableName + + Name for the generated table. + + String + + String + + + None + + + TableRow + + Top-left row for the generated table. + + Int32 + + Int32 + + + None + + + TableStyle + + Built-in table style. + + String + + String + + + None + + + Title + + Dashboard title. + + String + + String + + + None + - ApplyWordLikeTheme + ChartColumn - Apply the built-in Word-like Markdown PDF baseline theme. + Top-left chart column. - SwitchParameter + Int32 - SwitchParameter + Int32 None - Author + ChartPreset - PDF author metadata. + Dashboard chart preset. - String + ExcelDashboardChartPreset + + Comparison + Trend + Contribution + CompactComparison + - String + ExcelDashboardChartPreset None - BaseDirectory + ChartRow - Base directory used to resolve local Markdown images. + Top-left chart row. - String + Int32 - String + Int32 None - CreateOutlineFromHeadings + ChartTitle - Create PDF outlines from Markdown headings. + Chart title. Defaults to Title when omitted. - SwitchParameter + String - SwitchParameter + String None - - DefaultImageHeight + + Document - Fallback image height in PDF points. + Workbook to update outside the DSL context. - Double + ExcelDocument - Double + ExcelDocument None - - DefaultImageWidth + + InputObject - Fallback image width in PDF points. + Rows to render in the dashboard table. - Double + Object - Double + Object None - FontFamily + NoAutoFilter - Default font family. + Disable AutoFilter dropdowns on the generated table. - String + SwitchParameter - String + SwitchParameter None - FrontMatterRenderMode + NoAutoFit - Controls how YAML front matter appears in the PDF body. + Disable auto-fit for generated table columns. - MarkdownPdfFrontMatterRenderMode - - Hidden - DocumentHeader - Table - + SwitchParameter - MarkdownPdfFrontMatterRenderMode + SwitchParameter None - IncludeDataUriImages + NoChart - Embed supported data URI images. + Do not create a chart. SwitchParameter @@ -137815,9 +138797,9 @@ This does not discover, bypass, or crack a missing password. None - IncludeLocalImages + PassThru - Embed supported local image files. + Emit dashboard build metadata. SwitchParameter @@ -137826,70 +138808,46 @@ This does not discover, bypass, or crack a missing password. None - - Keywords + + Path - PDF keywords metadata. + Workbook path to update. - String + String String None - - MaximumDataUriImageBytes - - Maximum decoded bytes for one data URI image. - - Int32 - - Int32 - - - None - - - Options - - Existing Markdown PDF options to clone and override. - - MarkdownPdfSaveOptions - - MarkdownPdfSaveOptions - - - None - - - PdfOptions + + Sheet - Underlying low-level OfficeIMO PDF options. + Worksheet name when using Path or Document. - PdfOptions + String - PdfOptions + String None - RestrictLocalImagesToBaseDirectory + SheetIndex - Require local images to resolve under BaseDirectory. + Worksheet index (0-based) when using Path or Document. - SwitchParameter + Int32 - SwitchParameter + Int32 None - Subject + Subtitle - PDF subject metadata. + Dashboard subtitle. String @@ -137899,29 +138857,21 @@ This does not discover, bypass, or crack a missing password. None - Theme + TableColumn - Built-in visual theme. + Top-left column for the generated table. - OfficeVisualThemeKind - - Plain - WordLike - TechnicalDocument - GitHubLike - Compact - Report - + Int32 - OfficeVisualThemeKind + Int32 None - Title + TableName - PDF title metadata. + Name for the generated table. String @@ -137931,37 +138881,37 @@ This does not discover, bypass, or crack a missing password. None - UseFirstHeadingAsTitle + TableRow - Use the first Markdown heading as the PDF title when no title is supplied. + Top-left row for the generated table. - SwitchParameter + Int32 - SwitchParameter + Int32 None - UseFrontMatterMetadata + TableStyle - Use front matter values as PDF metadata. + Built-in table style. - SwitchParameter + String - SwitchParameter + String None - UseFrontMatterVisualTheme + Title - Use front matter values to select a visual theme. + Dashboard title. - SwitchParameter + String - SwitchParameter + String None @@ -137970,14 +138920,14 @@ This does not discover, bypass, or crack a missing password. - OfficeIMO.Markdown.Pdf.MarkdownPdfSaveOptions + System.Object - OfficeIMO.Markdown.Pdf.MarkdownPdfSaveOptions + System.Management.Automation.PSObject @@ -137988,14 +138938,13 @@ This does not discover, bypass, or crack a missing password. - Allow local report images and apply PDF metadata. + Create a dashboard table and chart. PS> - $options = New-OfficeMarkdownPdfOptions -Title 'Service report' -Author 'Evotec' -IncludeLocalImages -BaseDirectory .\Assets - Export-OfficeDocumentPdf -InputPath .\Report.md -Path .\Report.pdf -MarkdownOptions $options + $rows | New-OfficeExcelDashboard -Title 'Sales Dashboard' -TableName Sales -ChartPreset CompactComparison - Builds a typed options object through ordinary PowerShell parameters; no hashtable or .NET construction is required. + Writes a table and chart into the current Excel DSL worksheet. @@ -138003,40 +138952,35 @@ This does not discover, bypass, or crack a missing password. - New-OfficeOpenDocument + New-OfficeExcelImageOptions New - OfficeOpenDocument + OfficeExcelImageOptions - Creates a native ODT, ODS, or ODP document. + Creates discoverable rendering settings for Excel range and chart image export. - Creates a native ODT, ODS, or ODP document. + Creates discoverable rendering settings for Excel range and chart image export. - New-OfficeOpenDocument - - Kind + New-OfficeExcelImageOptions + + BackgroundColor - OpenDocument text, spreadsheet, or presentation kind. + - OdfDocumentKind - - Text - Spreadsheet - Presentation - + String - OdfDocumentKind + String None - PassThru + IncludeCharts - Emit the saved file when a destination path is supplied. + Include worksheet charts. SwitchParameter @@ -138045,144 +138989,46 @@ This does not discover, bypass, or crack a missing password. None - - Path + + IncludeConditionalFormatting - Optional initial destination path. + Include conditional formatting. - String + SwitchParameter - String + SwitchParameter None - - - - - Kind - - OpenDocument text, spreadsheet, or presentation kind. - - OdfDocumentKind - - Text - Spreadsheet - Presentation - - - OdfDocumentKind - - - None - - - PassThru - - Emit the saved file when a destination path is supplied. - - SwitchParameter - - SwitchParameter - - - None - - - Path - - Optional initial destination path. - - String - - String - - - None - - - - - - None - - - - - - - OfficeIMO.OpenDocument.OdfDocument - - - - - System.IO.FileInfo - - - - - - - - - - - EXAMPLE 1 - New-OfficeOpenDocument -Path 'C:\Path' - - - - - - - - - - New-OfficePdf - New - OfficePdf - - Creates a PDF document using the OfficeIMO.Pdf composition engine. - - - - New-OfficePdf starts a generated PDF document and optionally executes a PSWriteOffice PDF DSL script block. -The DSL commands are thin adapters over OfficeIMO.Pdf and support document metadata, page setup, headers, footers, -themes, styled text, tables, panels, row layouts, form fields, attachments, compliance settings, and save/open behavior. -Use -NoSave or omit -Path when a document object should be returned for further pipeline operations. - - - - New-OfficePdf - BoldFontPath + IncludeDrawingObjects - Optional bold TrueType font path used when -FontFamily is provided. + Include drawing objects. - String + SwitchParameter - String + SwitchParameter None - BoldItalicFontPath + IncludeHidden - Optional bold italic TrueType font path used when -FontFamily is provided. + Include hidden rows and columns. - String + SwitchParameter - String + SwitchParameter None - CenterWindow + IncludeImages - Request PDF viewers to center the document window on screen. + Include worksheet images. SwitchParameter @@ -138191,60 +139037,122 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Content + + MaximumDegreeOfParallelism - DSL script block describing generated PDF content. + - ScriptBlock + Int32 - ScriptBlock + Int32 None - CreateOutlineFromHeadings + MaximumOutputCount - Create PDF outline/bookmark entries from heading elements. + - SwitchParameter + Int32 - SwitchParameter + Int32 None - DefaultFont + MaximumOutputHeight - Default standard PDF font for generated text. + - PdfStandardFont - - Helvetica - HelveticaOblique - HelveticaBold - HelveticaBoldOblique - TimesRoman - TimesItalic - TimesBold - TimesBoldItalic - Courier - CourierOblique - CourierBold - CourierBoldOblique + Int32 + + Int32 + + + None + + + MaximumOutputWidth + + + + Int32 + + Int32 + + + None + + + MaximumRasterPixels + + + + Int64 + + Int64 + + + None + + + MaximumRenderedCells + + Maximum cells rendered. + + Int32 + + Int32 + + + None + + + MaximumTotalEncodedBytes + + + + Int64 + + Int64 + + + None + + + MaximumTotalRasterPixels + + + + Int64 + + Int64 + + + None + + + RasterOverflowBehavior + + + + OfficeRasterOverflowBehavior + + ReduceScale + Throw - PdfStandardFont + OfficeRasterOverflowBehavior None - DefaultFontSize + RenderTimeoutSeconds - Default generated text font size in points. + Double @@ -138254,40 +139162,33 @@ Use -NoSave or omit -Path when a document object should be returned for further None - DisplayDocTitle + Scale - Request PDF viewers to display the document title instead of the file name. + - SwitchParameter + Double - SwitchParameter + Double None - FileVersion + ShowCommentBodies - PDF file header version emitted by OfficeIMO.Pdf. + Show cell comment bodies. - PdfFileVersion - - Pdf14 - Pdf15 - Pdf16 - Pdf17 - Pdf20 - + SwitchParameter - PdfFileVersion + SwitchParameter None - FitWindow + ShowGridlines - Request PDF viewers to fit the document window to the first displayed page. + Show worksheet gridlines. SwitchParameter @@ -138297,9 +139198,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - FlattenVisualAnnotations + ShowHyperlinkHints - Flatten generated FreeText and Highlight annotations into static page content. + Show hyperlink hints. SwitchParameter @@ -138309,9 +139210,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - FontFamily + TargetDpi - Embedded TrueType font family name for generated text. + + + Double + + Double + + + None + + + TextShapingLanguage + + String @@ -138320,10 +139233,342 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + + + + BackgroundColor + + + + String + + String + + + None + + + IncludeCharts + + Include worksheet charts. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeConditionalFormatting + + Include conditional formatting. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeDrawingObjects + + Include drawing objects. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeHidden + + Include hidden rows and columns. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeImages + + Include worksheet images. + + SwitchParameter + + SwitchParameter + + + None + + + MaximumDegreeOfParallelism + + + + Int32 + + Int32 + + + None + + + MaximumOutputCount + + + + Int32 + + Int32 + + + None + + + MaximumOutputHeight + + + + Int32 + + Int32 + + + None + + + MaximumOutputWidth + + + + Int32 + + Int32 + + + None + + + MaximumRasterPixels + + + + Int64 + + Int64 + + + None + + + MaximumRenderedCells + + Maximum cells rendered. + + Int32 + + Int32 + + + None + + + MaximumTotalEncodedBytes + + + + Int64 + + Int64 + + + None + + + MaximumTotalRasterPixels + + + + Int64 + + Int64 + + + None + + + RasterOverflowBehavior + + + + OfficeRasterOverflowBehavior + + ReduceScale + Throw + + + OfficeRasterOverflowBehavior + + + None + + + RenderTimeoutSeconds + + + + Double + + Double + + + None + + + Scale + + + + Double + + Double + + + None + + + ShowCommentBodies + + Show cell comment bodies. + + SwitchParameter + + SwitchParameter + + + None + + + ShowGridlines + + Show worksheet gridlines. + + SwitchParameter + + SwitchParameter + + + None + + + ShowHyperlinkHints + + Show hyperlink hints. + + SwitchParameter + + SwitchParameter + + + None + + + TargetDpi + + + + Double + + Double + + + None + + + TextShapingLanguage + + + + String + + String + + + None + + + + + + None + + + + + + + OfficeIMO.Excel.ExcelImageExportOptions + + + + + + + + + + + Render a range with gridlines and hyperlinks visible. + + PS> + + $options = New-OfficeExcelImageOptions -ShowGridlines -ShowHyperlinkHints -TargetDpi 144 + Export-OfficeExcelRangeImage -Path .\Workbook.xlsx -Worksheet Summary -Range A1:H20 -OutputPath .\Summary.svg -Options $options + + + + + + Reuse the same rendering controls for a chart. + + PS> + + $options = New-OfficeExcelImageOptions -TargetDpi 144 -MaximumOutputWidth 1600 + Export-OfficeExcelChartImage -Path .\Workbook.xlsx -Worksheet Summary -ChartName Revenue -OutputPath .\Revenue.svg -Options $options + + + + + + + + + + New-OfficeExcelOpenDocumentOptions + New + OfficeExcelOpenDocumentOptions + + Creates Excel/OpenDocument conversion settings. + + + + Creates Excel/OpenDocument conversion settings. + + + + New-OfficeExcelOpenDocumentOptions - HideMenubar + IncludeBasicStyles - Request PDF viewers to hide the menu bar. + Copy common font, fill, and number-format styles. SwitchParameter @@ -138333,21 +139578,180 @@ Use -NoSave or omit -Path when a document object should be returned for further None - HideToolbar + LossPolicy - Request PDF viewers to hide the toolbar. + Whether conversion loss is reported or rejected. - SwitchParameter + OdfConversionLossPolicy + + ReportOnly + ThrowOnSkippedOrUnsupported + ThrowOnAnyLoss + - SwitchParameter + OdfConversionLossPolicy None - HideWindowUI + MaximumColumns - Request PDF viewers to hide user-interface elements. + Maximum spreadsheet columns. + + Int32 + + Int32 + + + None + + + MaximumExpandedCells + + Maximum cells materialized during conversion. + + Int64 + + Int64 + + + None + + + MaximumRows + + Maximum spreadsheet rows. + + Int32 + + Int32 + + + None + + + + + + IncludeBasicStyles + + Copy common font, fill, and number-format styles. + + SwitchParameter + + SwitchParameter + + + None + + + LossPolicy + + Whether conversion loss is reported or rejected. + + OdfConversionLossPolicy + + ReportOnly + ThrowOnSkippedOrUnsupported + ThrowOnAnyLoss + + + OdfConversionLossPolicy + + + None + + + MaximumColumns + + Maximum spreadsheet columns. + + Int32 + + Int32 + + + None + + + MaximumExpandedCells + + Maximum cells materialized during conversion. + + Int64 + + Int64 + + + None + + + MaximumRows + + Maximum spreadsheet rows. + + Int32 + + Int32 + + + None + + + + + + None + + + + + + + OfficeIMO.Excel.OpenDocument.ExcelOpenDocumentConversionOptions + + + + + + + + + + + Convert a bounded worksheet area with basic styles. + + PS> + + $options = New-OfficeExcelOpenDocumentOptions -IncludeBasicStyles -MaximumRows 10000 -MaximumColumns 100 + ConvertTo-OfficeOpenDocument -Path .\Data.xlsx -OutputPath .\Data.ods -ExcelOptions $options + + + + + + + + + + New-OfficeExcelPdfOptions + New + OfficeExcelPdfOptions + + Creates discoverable Excel-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + Creates discoverable Excel-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + New-OfficeExcelPdfOptions + + AllowDocumentFontEmbedding + + Allow embedding fonts stored in the workbook. SwitchParameter @@ -138357,9 +139761,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludePageLabels + AllowSystemFontEmbedding - Emit generated catalog page labels. + Allow embedding fonts discovered on the current system. SwitchParameter @@ -138369,9 +139773,33 @@ Use -NoSave or omit -Path when a document object should be returned for further None - ItalicFontPath + ChartLayout - Optional italic TrueType font path used when -FontFamily is provided. + Chart layout override. + + OfficeChartLayout + + OfficeChartLayout + + + None + + + ChartStyle + + Chart visual style override. + + OfficeChartStyle + + OfficeChartStyle + + + None + + + EmptyCellText + + Text used when a worksheet cell is empty. String @@ -138381,21 +139809,33 @@ Use -NoSave or omit -Path when a document object should be returned for further None - NoSave + FontFamily - Skip saving even when -Path is provided. + Default font family used when the workbook does not specify one. - SwitchParameter + String - SwitchParameter + String None - - Open + + HeaderRowCount - Open the PDF after saving. + Number of leading rows treated as headers. + + Int32 + + Int32 + + + None + + + IncludeSheetHeadings + + Include worksheet row and column headings. SwitchParameter @@ -138405,43 +139845,33 @@ Use -NoSave or omit -Path when a document object should be returned for further None - OpenActionMode + MarginBottom - Open-action destination mode. + Bottom page margin in PDF points. - PdfOpenActionDestinationMode - - Xyz - Fit - FitHorizontal - FitVertical - FitRectangle - FitBoundingBox - FitBoundingBoxHorizontal - FitBoundingBoxVertical - + Double - PdfOpenActionDestinationMode + Double None - OpenActionPage + MarginLeft - Initial one-based page shown by PDF viewers that honor open actions. + Left page margin in PDF points. - Int32 + Double - Int32 + Double None - OpenActionTop + MarginRight - Optional open-action top coordinate. + Right page margin in PDF points. Double @@ -138451,9 +139881,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - OutlineExpansionLevel + MarginTop - Initial outline expansion level when heading outlines are created. + Top page margin in PDF points. + + Double + + Double + + + None + + + MaxRowsPerSheet + + Maximum worksheet rows to read and render. Int32 @@ -138463,73 +139905,69 @@ Use -NoSave or omit -Path when a document object should be returned for further None - OwnerPassword + PageSize - Optional owner password for the generated encrypted PDF. + PDF page size. - String + PageSize - String + PageSize None - PageLabelPrefix + PdfOptions - Optional generated page-label prefix. + Underlying low-level OfficeIMO PDF options. - String + PdfOptions - String + PdfOptions None - PageLayout + RespectWorkbookSheetVisibility - Catalog page layout hint emitted for generated PDFs. + Exclude workbook sheets marked hidden. - PdfCatalogPageLayout - - SinglePage - OneColumn - TwoColumnLeft - TwoColumnRight - TwoPageLeft - TwoPageRight - + SwitchParameter - PdfCatalogPageLayout + SwitchParameter None - PageMode + RespectWorksheetHiddenRowsAndColumns - Catalog page mode hint emitted for generated PDFs. + Exclude hidden worksheet rows and columns. - PdfCatalogPageMode - - UseNone - UseOutlines - UseThumbs - FullScreen - UseOC - UseAttachments - + SwitchParameter - PdfCatalogPageMode + SwitchParameter + + + None + + + SheetName + + Worksheet names to export. The default exports all eligible sheets. + + String[] + + String[] None - PassThru + UseBoundedWorksheetRead - Emit the generated document or saved file for chaining. + Use bounded worksheet reads for large workbooks. SwitchParameter @@ -138538,103 +139976,94 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Password + + UseWorksheetCellStyles - Password required to open the generated PDF. + Render worksheet cell styles. - String + SwitchParameter - String + SwitchParameter None - - Path + + UseWorksheetCharts - Optional destination PDF path. + Render worksheet charts. - String + SwitchParameter - String + SwitchParameter None - - Permission + + UseWorksheetColumnWidths - Raw PDF Standard security permission bit mask. Defaults to allowing all standard operations. + Honor worksheet column widths. - Int32 + SwitchParameter - Int32 + SwitchParameter None - - RegularFontPath + + UseWorksheetHeaderFooterImages - Regular TrueType font path used when -FontFamily is provided. + Render images referenced by worksheet headers and footers. - String + SwitchParameter - String + SwitchParameter None - Theme + UseWorksheetHeadersAndFooters - Built-in OfficeIMO.Pdf theme applied before the DSL content runs. + Render worksheet headers and footers. - OfficePdfThemePreset - - WordLike - TechnicalDocument - Compact - Report - + SwitchParameter - OfficePdfThemePreset + SwitchParameter None - - - New-OfficePdf - BoldFontPath + UseWorksheetHyperlinks - Optional bold TrueType font path used when -FontFamily is provided. + Render worksheet hyperlinks. - String + SwitchParameter - String + SwitchParameter None - BoldItalicFontPath + UseWorksheetImages - Optional bold italic TrueType font path used when -FontFamily is provided. + Render worksheet images. - String + SwitchParameter - String + SwitchParameter None - CenterWindow + UseWorksheetMergedCells - Request PDF viewers to center the document window on screen. + Render merged worksheet cells. SwitchParameter @@ -138643,22 +140072,22 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Content + + UseWorksheetPageBreaks - DSL script block describing generated PDF content. + Honor worksheet page breaks. - ScriptBlock + SwitchParameter - ScriptBlock + SwitchParameter None - CreateOutlineFromHeadings + UseWorksheetPageSetup - Create PDF outline/bookmark entries from heading elements. + Honor worksheet page setup. SwitchParameter @@ -138668,78 +140097,9104 @@ Use -NoSave or omit -Path when a document object should be returned for further None - DefaultFont + UseWorksheetPrintAreas - Default standard PDF font for generated text. + Honor worksheet print areas. - PdfStandardFont - - Helvetica - HelveticaOblique - HelveticaBold - HelveticaBoldOblique - TimesRoman - TimesItalic - TimesBold - TimesBoldItalic - Courier - CourierOblique - CourierBold - CourierBoldOblique - + SwitchParameter - PdfStandardFont + SwitchParameter None - DefaultFontSize + UseWorksheetPrintTitleRows - Default generated text font size in points. + Honor worksheet rows configured to repeat on printed pages. - Double + SwitchParameter - Double + SwitchParameter None - DisplayDocTitle + UseWorksheetRowHeights + + Honor worksheet row heights. + + SwitchParameter + + SwitchParameter + + + None + + + WorksheetLayout + + Controls how worksheet content is laid out on PDF pages. + + ExcelPdfWorksheetLayoutMode + + WorksheetCanvas + FlowTable + + + ExcelPdfWorksheetLayoutMode + + + None + + + + + + AllowDocumentFontEmbedding + + Allow embedding fonts stored in the workbook. + + SwitchParameter + + SwitchParameter + + + None + + + AllowSystemFontEmbedding + + Allow embedding fonts discovered on the current system. + + SwitchParameter + + SwitchParameter + + + None + + + ChartLayout + + Chart layout override. + + OfficeChartLayout + + OfficeChartLayout + + + None + + + ChartStyle + + Chart visual style override. + + OfficeChartStyle + + OfficeChartStyle + + + None + + + EmptyCellText + + Text used when a worksheet cell is empty. + + String + + String + + + None + + + FontFamily + + Default font family used when the workbook does not specify one. + + String + + String + + + None + + + HeaderRowCount + + Number of leading rows treated as headers. + + Int32 + + Int32 + + + None + + + IncludeSheetHeadings + + Include worksheet row and column headings. + + SwitchParameter + + SwitchParameter + + + None + + + MarginBottom + + Bottom page margin in PDF points. + + Double + + Double + + + None + + + MarginLeft + + Left page margin in PDF points. + + Double + + Double + + + None + + + MarginRight + + Right page margin in PDF points. + + Double + + Double + + + None + + + MarginTop + + Top page margin in PDF points. + + Double + + Double + + + None + + + MaxRowsPerSheet + + Maximum worksheet rows to read and render. + + Int32 + + Int32 + + + None + + + PageSize + + PDF page size. + + PageSize + + PageSize + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + RespectWorkbookSheetVisibility + + Exclude workbook sheets marked hidden. + + SwitchParameter + + SwitchParameter + + + None + + + RespectWorksheetHiddenRowsAndColumns + + Exclude hidden worksheet rows and columns. + + SwitchParameter + + SwitchParameter + + + None + + + SheetName + + Worksheet names to export. The default exports all eligible sheets. + + String[] + + String[] + + + None + + + UseBoundedWorksheetRead + + Use bounded worksheet reads for large workbooks. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetCellStyles + + Render worksheet cell styles. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetCharts + + Render worksheet charts. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetColumnWidths + + Honor worksheet column widths. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetHeaderFooterImages + + Render images referenced by worksheet headers and footers. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetHeadersAndFooters + + Render worksheet headers and footers. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetHyperlinks + + Render worksheet hyperlinks. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetImages + + Render worksheet images. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetMergedCells + + Render merged worksheet cells. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPageBreaks + + Honor worksheet page breaks. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPageSetup + + Honor worksheet page setup. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPrintAreas + + Honor worksheet print areas. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetPrintTitleRows + + Honor worksheet rows configured to repeat on printed pages. + + SwitchParameter + + SwitchParameter + + + None + + + UseWorksheetRowHeights + + Honor worksheet row heights. + + SwitchParameter + + SwitchParameter + + + None + + + WorksheetLayout + + Controls how worksheet content is laid out on PDF pages. + + ExcelPdfWorksheetLayoutMode + + WorksheetCanvas + FlowTable + + + ExcelPdfWorksheetLayoutMode + + + None + + + + + + None + + + + + + + OfficeIMO.Excel.Pdf.ExcelPdfSaveOptions + + + + + + + + + + + Export selected visible sheets with workbook layout features. + + PS> + + $options = New-OfficeExcelPdfOptions -SheetName Summary,Services -UseWorksheetCharts -UseWorksheetImages + Export-OfficeDocumentPdf -InputPath .\Report.xlsx -Path .\Report.pdf -ExcelOptions $options + + + + + + + + + + New-OfficeExcelWorkbookImageOptions + New + OfficeExcelWorkbookImageOptions + + Creates discoverable sheet selection and rendering settings for Export-OfficeExcelImage. + + + + Creates discoverable sheet selection and rendering settings for Export-OfficeExcelImage. + + + + New-OfficeExcelWorkbookImageOptions + + BackgroundColor + + + + String + + String + + + None + + + IncludeCharts + + Include worksheet charts. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeConditionalFormatting + + Include conditional formatting. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeDrawingObjects + + Include drawing objects. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeHidden + + Include hidden rows and columns. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeHiddenSheets + + Include hidden worksheets. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeImages + + Include worksheet images. + + SwitchParameter + + SwitchParameter + + + None + + + MaximumDegreeOfParallelism + + + + Int32 + + Int32 + + + None + + + MaximumOutputCount + + + + Int32 + + Int32 + + + None + + + MaximumOutputHeight + + + + Int32 + + Int32 + + + None + + + MaximumOutputWidth + + + + Int32 + + Int32 + + + None + + + MaximumRasterPixels + + + + Int64 + + Int64 + + + None + + + MaximumRenderedCells + + Maximum cells rendered per worksheet. + + Int32 + + Int32 + + + None + + + MaximumTotalEncodedBytes + + + + Int64 + + Int64 + + + None + + + MaximumTotalRasterPixels + + + + Int64 + + Int64 + + + None + + + RasterOverflowBehavior + + + + OfficeRasterOverflowBehavior + + ReduceScale + Throw + + + OfficeRasterOverflowBehavior + + + None + + + RenderTimeoutSeconds + + + + Double + + Double + + + None + + + Scale + + + + Double + + Double + + + None + + + SheetName + + Worksheet names to export. + + String[] + + String[] + + + None + + + ShowGridlines + + Show worksheet gridlines. + + SwitchParameter + + SwitchParameter + + + None + + + SplitWorksheetsByManualPageBreaks + + Split worksheets at manual page breaks. + + SwitchParameter + + SwitchParameter + + + None + + + TargetDpi + + + + Double + + Double + + + None + + + TextShapingLanguage + + + + String + + String + + + None + + + UseWorksheetPrintAreas + + Use worksheet print areas. + + SwitchParameter + + SwitchParameter + + + None + + + + + + BackgroundColor + + + + String + + String + + + None + + + IncludeCharts + + Include worksheet charts. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeConditionalFormatting + + Include conditional formatting. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeDrawingObjects + + Include drawing objects. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeHidden + + Include hidden rows and columns. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeHiddenSheets + + Include hidden worksheets. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeImages + + Include worksheet images. + + SwitchParameter + + SwitchParameter + + + None + + + MaximumDegreeOfParallelism + + + + Int32 + + Int32 + + + None + + + MaximumOutputCount + + + + Int32 + + Int32 + + + None + + + MaximumOutputHeight + + + + Int32 + + Int32 + + + None + + + MaximumOutputWidth + + + + Int32 + + Int32 + + + None + + + MaximumRasterPixels + + + + Int64 + + Int64 + + + None + + + MaximumRenderedCells + + Maximum cells rendered per worksheet. + + Int32 + + Int32 + + + None + + + MaximumTotalEncodedBytes + + + + Int64 + + Int64 + + + None + + + MaximumTotalRasterPixels + + + + Int64 + + Int64 + + + None + + + RasterOverflowBehavior + + + + OfficeRasterOverflowBehavior + + ReduceScale + Throw + + + OfficeRasterOverflowBehavior + + + None + + + RenderTimeoutSeconds + + + + Double + + Double + + + None + + + Scale + + + + Double + + Double + + + None + + + SheetName + + Worksheet names to export. + + String[] + + String[] + + + None + + + ShowGridlines + + Show worksheet gridlines. + + SwitchParameter + + SwitchParameter + + + None + + + SplitWorksheetsByManualPageBreaks + + Split worksheets at manual page breaks. + + SwitchParameter + + SwitchParameter + + + None + + + TargetDpi + + + + Double + + Double + + + None + + + TextShapingLanguage + + + + String + + String + + + None + + + UseWorksheetPrintAreas + + Use worksheet print areas. + + SwitchParameter + + SwitchParameter + + + None + + + + + + None + + + + + + + OfficeIMO.Excel.ExcelWorkbookImageExportOptions + + + + + + + + + + + Render selected worksheets with charts and conditional formatting. + + PS> + + $options = New-OfficeExcelWorkbookImageOptions -SheetName Summary,Data -IncludeCharts -IncludeConditionalFormatting + Export-OfficeExcelImage -Path .\Workbook.xlsx -OutputPath .\Sheets -Options $options + + + + + + + + + + New-OfficeHtmlConversionOptions + New + OfficeHtmlConversionOptions + + Creates discoverable parsing, trust, and document settings for HTML conversion. + + + + Creates discoverable parsing, trust, and document settings for HTML conversion. + + + + New-OfficeHtmlConversionOptions + + BaseUri + + Base URI used to resolve relative references. + + String + + String + + + None + + + IncludeNormalizedHtml + + Retain normalized HTML in the conversion document. + + SwitchParameter + + SwitchParameter + + + None + + + Profile + + Built-in conversion profile. + + HtmlConversionProfile + + Semantic + Document + HighFidelityPrint + PositionedReview + + + HtmlConversionProfile + + + None + + + Trust + + Input trust level. + + HtmlInputTrust + + Untrusted + Trusted + + + HtmlInputTrust + + + None + + + UseBodyContentsOnly + + Convert only body contents. + + SwitchParameter + + SwitchParameter + + + None + + + + + + BaseUri + + Base URI used to resolve relative references. + + String + + String + + + None + + + IncludeNormalizedHtml + + Retain normalized HTML in the conversion document. + + SwitchParameter + + SwitchParameter + + + None + + + Profile + + Built-in conversion profile. + + HtmlConversionProfile + + Semantic + Document + HighFidelityPrint + PositionedReview + + + HtmlConversionProfile + + + None + + + Trust + + Input trust level. + + HtmlInputTrust + + Untrusted + Trusted + + + HtmlInputTrust + + + None + + + UseBodyContentsOnly + + Convert only body contents. + + SwitchParameter + + SwitchParameter + + + None + + + + + + None + + + + + + + OfficeIMO.Html.HtmlConversionDocumentOptions + + + + + + + + + + + Resolve relative resources from a trusted report directory. + + PS> + + $document = New-OfficeHtmlConversionOptions -BaseUri (Resolve-Path .\Assets) -UseBodyContentsOnly + Export-OfficeHtmlImage -Path .\Report.html -OutputPath .\Report.svg -DocumentOptions $document + + + + + + + + + + New-OfficeHtmlRenderOptions + New + OfficeHtmlRenderOptions + + Creates discoverable layout, resource-limit, and rendering settings for HTML image export. + + + + Creates discoverable layout, resource-limit, and rendering settings for HTML image export. + + + + New-OfficeHtmlRenderOptions + + BackgroundColor + + + + String + + String + + + None + + + BaseUri + + Base URI for relative resources. + + String + + String + + + None + + + DefaultFontFamily + + Default font family. + + String + + String + + + None + + + DefaultFontSize + + Default font size. + + Double + + Double + + + None + + + DefaultLineHeight + + Default line-height multiplier. + + Double + + Double + + + None + + + FidelityPolicy + + Fidelity policy for unsupported content. + + HtmlRenderFidelityPolicy + + AllowDiagnosedLoss + RequireNoLoss + + + HtmlRenderFidelityPolicy + + + None + + + HonorCssPageRules + + Honor CSS page rules. + + SwitchParameter + + SwitchParameter + + + None + + + MaxHtmlNodes + + Maximum HTML nodes. + + Int32 + + Int32 + + + None + + + MaximumDegreeOfParallelism + + + + Int32 + + Int32 + + + None + + + MaximumOutputCount + + + + Int32 + + Int32 + + + None + + + MaximumOutputHeight + + + + Int32 + + Int32 + + + None + + + MaximumOutputWidth + + + + Int32 + + Int32 + + + None + + + MaximumRasterPixels + + + + Int64 + + Int64 + + + None + + + MaximumTotalEncodedBytes + + + + Int64 + + Int64 + + + None + + + MaximumTotalRasterPixels + + + + Int64 + + Int64 + + + None + + + MaxInputCharacters + + Maximum HTML input characters. + + Int32 + + Int32 + + + None + + + MaxPageCount + + Maximum rendered page count. + + Int32 + + Int32 + + + None + + + MaxTotalResourceBytes + + Maximum resource bytes loaded for the document. + + Int64 + + Int64 + + + None + + + Mode + + HTML render mode. + + HtmlRenderMode + + Continuous + Paged + + + HtmlRenderMode + + + None + + + PageSize + + Page size used by paged rendering. + + OfficePageSize + + OfficePageSize + + + None + + + RasterOverflowBehavior + + + + OfficeRasterOverflowBehavior + + ReduceScale + Throw + + + OfficeRasterOverflowBehavior + + + None + + + RenderTimeoutSeconds + + + + Double + + Double + + + None + + + ResourceTimeoutSeconds + + Maximum duration allowed for one resource load. + + Double + + Double + + + None + + + Scale + + + + Double + + Double + + + None + + + TargetDpi + + + + Double + + Double + + + None + + + TextShapingLanguage + + + + String + + String + + + None + + + ViewportHeight + + Optional viewport height in CSS pixels. + + Double + + Double + + + None + + + ViewportWidth + + Viewport width in CSS pixels. + + Double + + Double + + + None + + + + + + BackgroundColor + + + + String + + String + + + None + + + BaseUri + + Base URI for relative resources. + + String + + String + + + None + + + DefaultFontFamily + + Default font family. + + String + + String + + + None + + + DefaultFontSize + + Default font size. + + Double + + Double + + + None + + + DefaultLineHeight + + Default line-height multiplier. + + Double + + Double + + + None + + + FidelityPolicy + + Fidelity policy for unsupported content. + + HtmlRenderFidelityPolicy + + AllowDiagnosedLoss + RequireNoLoss + + + HtmlRenderFidelityPolicy + + + None + + + HonorCssPageRules + + Honor CSS page rules. + + SwitchParameter + + SwitchParameter + + + None + + + MaxHtmlNodes + + Maximum HTML nodes. + + Int32 + + Int32 + + + None + + + MaximumDegreeOfParallelism + + + + Int32 + + Int32 + + + None + + + MaximumOutputCount + + + + Int32 + + Int32 + + + None + + + MaximumOutputHeight + + + + Int32 + + Int32 + + + None + + + MaximumOutputWidth + + + + Int32 + + Int32 + + + None + + + MaximumRasterPixels + + + + Int64 + + Int64 + + + None + + + MaximumTotalEncodedBytes + + + + Int64 + + Int64 + + + None + + + MaximumTotalRasterPixels + + + + Int64 + + Int64 + + + None + + + MaxInputCharacters + + Maximum HTML input characters. + + Int32 + + Int32 + + + None + + + MaxPageCount + + Maximum rendered page count. + + Int32 + + Int32 + + + None + + + MaxTotalResourceBytes + + Maximum resource bytes loaded for the document. + + Int64 + + Int64 + + + None + + + Mode + + HTML render mode. + + HtmlRenderMode + + Continuous + Paged + + + HtmlRenderMode + + + None + + + PageSize + + Page size used by paged rendering. + + OfficePageSize + + OfficePageSize + + + None + + + RasterOverflowBehavior + + + + OfficeRasterOverflowBehavior + + ReduceScale + Throw + + + OfficeRasterOverflowBehavior + + + None + + + RenderTimeoutSeconds + + + + Double + + Double + + + None + + + ResourceTimeoutSeconds + + Maximum duration allowed for one resource load. + + Double + + Double + + + None + + + Scale + + + + Double + + Double + + + None + + + TargetDpi + + + + Double + + Double + + + None + + + TextShapingLanguage + + + + String + + String + + + None + + + ViewportHeight + + Optional viewport height in CSS pixels. + + Double + + Double + + + None + + + ViewportWidth + + Viewport width in CSS pixels. + + Double + + Double + + + None + + + + + + None + + + + + + + OfficeIMO.Html.HtmlRenderOptions + + + + + + + + + + + Render HTML with a bounded viewport and resource budget. + + PS> + + $render = New-OfficeHtmlRenderOptions -ViewportWidth 1280 -ViewportHeight 720 -MaxPageCount 10 + Export-OfficeHtmlImage -Path .\Report.html -OutputPath .\Report.svg -RenderOptions $render + + + + + + + + + + New-OfficeMarkdown + New + OfficeMarkdown + + Creates a Markdown document using a DSL scriptblock. + + + + Runs the scriptblock against a Markdown document and saves it to disk unless -NoSave is specified. + + + + New-OfficeMarkdown + + Content + + DSL scriptblock describing Markdown content. + + ScriptBlock + + ScriptBlock + + + None + + + ImageRenderingMode + + Controls how Markdown images are serialized. + + MarkdownImageRenderingMode + + RichMarkdown + PortableMarkdown + Html + + + MarkdownImageRenderingMode + + + None + + + LineEnding + + Markdown line ending: CRLF, LF, CR, or a literal line ending string. + + String + + String + + + None + + + NoSave + + Skip saving after executing the DSL. + + SwitchParameter + + SwitchParameter + + + None + + + PassThru + + Emit a FileInfo for chaining. + + SwitchParameter + + SwitchParameter + + + None + + + Path + + Destination path for the Markdown file. + + String + + String + + + None + + + UnorderedListMarker + + Unordered list marker: '-', '*', or '+'. + + String + + String + + + None + + + WriteOptions + + Optional Markdown writer options. + + MarkdownWriteOptions + + MarkdownWriteOptions + + + None + + + WriteProfile + + Friendly Markdown writer profile. + + OfficeMarkdownWriteProfile + + OfficeIMO + Portable + HtmlImage + + + OfficeMarkdownWriteProfile + + + None + + + + + + Content + + DSL scriptblock describing Markdown content. + + ScriptBlock + + ScriptBlock + + + None + + + ImageRenderingMode + + Controls how Markdown images are serialized. + + MarkdownImageRenderingMode + + RichMarkdown + PortableMarkdown + Html + + + MarkdownImageRenderingMode + + + None + + + LineEnding + + Markdown line ending: CRLF, LF, CR, or a literal line ending string. + + String + + String + + + None + + + NoSave + + Skip saving after executing the DSL. + + SwitchParameter + + SwitchParameter + + + None + + + PassThru + + Emit a FileInfo for chaining. + + SwitchParameter + + SwitchParameter + + + None + + + Path + + Destination path for the Markdown file. + + String + + String + + + None + + + UnorderedListMarker + + Unordered list marker: '-', '*', or '+'. + + String + + String + + + None + + + WriteOptions + + Optional Markdown writer options. + + MarkdownWriteOptions + + MarkdownWriteOptions + + + None + + + WriteProfile + + Friendly Markdown writer profile. + + OfficeMarkdownWriteProfile + + OfficeIMO + Portable + HtmlImage + + + OfficeMarkdownWriteProfile + + + None + + + + + + None + + + + + + + System.IO.FileInfo + + + + + OfficeIMO.Markdown.MarkdownDoc + + + + + + + + + + + Create a Markdown document with headings and a table. + + PS> + + New-OfficeMarkdown -Path .\README.md { MarkdownHeading -Level 1 -Text 'Report'; MarkdownTable -InputObject $data } + + Creates a README file with a heading and table content. + + + + Create a report with multiple tables. + + PS> + + New-OfficeMarkdown -Path .\Report.md { + MarkdownHeading -Level 1 -Text 'Summary' + MarkdownTable -InputObject $summary + MarkdownHeading -Level 2 -Text 'Details' + MarkdownTable -InputObject $details + } + + Creates a report with two tables separated by headings. + + + + + + + + New-OfficeMarkdownPdfOptions + New + OfficeMarkdownPdfOptions + + Creates discoverable Markdown-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + Creates discoverable Markdown-to-PDF conversion options for Export-OfficeDocumentPdf. + + + + New-OfficeMarkdownPdfOptions + + ApplyWordLikeTheme + + Apply the built-in Word-like Markdown PDF baseline theme. + + SwitchParameter + + SwitchParameter + + + None + + + Author + + PDF author metadata. + + String + + String + + + None + + + BaseDirectory + + Base directory used to resolve local Markdown images. + + String + + String + + + None + + + CreateOutlineFromHeadings + + Create PDF outlines from Markdown headings. + + SwitchParameter + + SwitchParameter + + + None + + + DefaultImageHeight + + Fallback image height in PDF points. + + Double + + Double + + + None + + + DefaultImageWidth + + Fallback image width in PDF points. + + Double + + Double + + + None + + + FontFamily + + Default font family. + + String + + String + + + None + + + FrontMatterRenderMode + + Controls how YAML front matter appears in the PDF body. + + MarkdownPdfFrontMatterRenderMode + + Hidden + DocumentHeader + Table + + + MarkdownPdfFrontMatterRenderMode + + + None + + + IncludeDataUriImages + + Embed supported data URI images. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeLocalImages + + Embed supported local image files. + + SwitchParameter + + SwitchParameter + + + None + + + Keywords + + PDF keywords metadata. + + String + + String + + + None + + + MaximumDataUriImageBytes + + Maximum decoded bytes for one data URI image. + + Int32 + + Int32 + + + None + + + Options + + Existing Markdown PDF options to clone and override. + + MarkdownPdfSaveOptions + + MarkdownPdfSaveOptions + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + RestrictLocalImagesToBaseDirectory + + Require local images to resolve under BaseDirectory. + + SwitchParameter + + SwitchParameter + + + None + + + Subject + + PDF subject metadata. + + String + + String + + + None + + + Theme + + Built-in visual theme. + + OfficeVisualThemeKind + + Plain + WordLike + TechnicalDocument + GitHubLike + Compact + Report + + + OfficeVisualThemeKind + + + None + + + Title + + PDF title metadata. + + String + + String + + + None + + + UseFirstHeadingAsTitle + + Use the first Markdown heading as the PDF title when no title is supplied. + + SwitchParameter + + SwitchParameter + + + None + + + UseFrontMatterMetadata + + Use front matter values as PDF metadata. + + SwitchParameter + + SwitchParameter + + + None + + + UseFrontMatterVisualTheme + + Use front matter values to select a visual theme. + + SwitchParameter + + SwitchParameter + + + None + + + + + + ApplyWordLikeTheme + + Apply the built-in Word-like Markdown PDF baseline theme. + + SwitchParameter + + SwitchParameter + + + None + + + Author + + PDF author metadata. + + String + + String + + + None + + + BaseDirectory + + Base directory used to resolve local Markdown images. + + String + + String + + + None + + + CreateOutlineFromHeadings + + Create PDF outlines from Markdown headings. + + SwitchParameter + + SwitchParameter + + + None + + + DefaultImageHeight + + Fallback image height in PDF points. + + Double + + Double + + + None + + + DefaultImageWidth + + Fallback image width in PDF points. + + Double + + Double + + + None + + + FontFamily + + Default font family. + + String + + String + + + None + + + FrontMatterRenderMode + + Controls how YAML front matter appears in the PDF body. + + MarkdownPdfFrontMatterRenderMode + + Hidden + DocumentHeader + Table + + + MarkdownPdfFrontMatterRenderMode + + + None + + + IncludeDataUriImages + + Embed supported data URI images. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeLocalImages + + Embed supported local image files. + + SwitchParameter + + SwitchParameter + + + None + + + Keywords + + PDF keywords metadata. + + String + + String + + + None + + + MaximumDataUriImageBytes + + Maximum decoded bytes for one data URI image. + + Int32 + + Int32 + + + None + + + Options + + Existing Markdown PDF options to clone and override. + + MarkdownPdfSaveOptions + + MarkdownPdfSaveOptions + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions + + + None + + + RestrictLocalImagesToBaseDirectory + + Require local images to resolve under BaseDirectory. + + SwitchParameter + + SwitchParameter + + + None + + + Subject + + PDF subject metadata. + + String + + String + + + None + + + Theme + + Built-in visual theme. + + OfficeVisualThemeKind + + Plain + WordLike + TechnicalDocument + GitHubLike + Compact + Report + + + OfficeVisualThemeKind + + + None + + + Title + + PDF title metadata. + + String + + String + + + None + + + UseFirstHeadingAsTitle + + Use the first Markdown heading as the PDF title when no title is supplied. + + SwitchParameter + + SwitchParameter + + + None + + + UseFrontMatterMetadata + + Use front matter values as PDF metadata. + + SwitchParameter + + SwitchParameter + + + None + + + UseFrontMatterVisualTheme + + Use front matter values to select a visual theme. + + SwitchParameter + + SwitchParameter + + + None + + + + + + OfficeIMO.Markdown.Pdf.MarkdownPdfSaveOptions + + + + + + + OfficeIMO.Markdown.Pdf.MarkdownPdfSaveOptions + + + + + + + + + + + Allow local report images and apply PDF metadata. + + PS> + + $options = New-OfficeMarkdownPdfOptions -Title 'Service report' -Author 'Evotec' -IncludeLocalImages -BaseDirectory .\Assets + Export-OfficeDocumentPdf -InputPath .\Report.md -Path .\Report.pdf -MarkdownOptions $options + + Builds a typed options object through ordinary PowerShell parameters; no hashtable or .NET construction is required. + + + + + + + + New-OfficeOpenDocument + New + OfficeOpenDocument + + Creates a native ODT, ODS, or ODP document. + + + + Creates a native ODT, ODS, or ODP document. + + + + New-OfficeOpenDocument + + Content + + DSL scriptblock describing OpenDocument text, spreadsheet, or presentation content. + + ScriptBlock + + ScriptBlock + + + None + + + Kind + + OpenDocument text, spreadsheet, or presentation kind. + + OdfDocumentKind + + Text + Spreadsheet + Presentation + + + OdfDocumentKind + + + None + + + NoSave + + Skip saving and emit the live OpenDocument model even when -Path is supplied. + + SwitchParameter + + SwitchParameter + + + None + + + PassThru + + Emit the saved file when a destination path is supplied. + + SwitchParameter + + SwitchParameter + + + None + + + Path + + Optional initial destination path. + + String + + String + + + None + + + + + + Content + + DSL scriptblock describing OpenDocument text, spreadsheet, or presentation content. + + ScriptBlock + + ScriptBlock + + + None + + + Kind + + OpenDocument text, spreadsheet, or presentation kind. + + OdfDocumentKind + + Text + Spreadsheet + Presentation + + + OdfDocumentKind + + + None + + + NoSave + + Skip saving and emit the live OpenDocument model even when -Path is supplied. + + SwitchParameter + + SwitchParameter + + + None + + + PassThru + + Emit the saved file when a destination path is supplied. + + SwitchParameter + + SwitchParameter + + + None + + + Path + + Optional initial destination path. + + String + + String + + + None + + + + + + None + + + + + + + OfficeIMO.OpenDocument.OdfDocument + + + + + System.IO.FileInfo + + + + + + + + + + + Create an OpenDocument text report. + + PS> + + New-OfficeOpenDocument -Kind Text -Path .\Report.odt -Content { + Add-OfficeOpenDocumentHeading -Text 'Service report' -Level 1 + Add-OfficeOpenDocumentParagraph -Text 'Generated by PSWriteOffice.' + } + + + + + + Create a spreadsheet with typed cells. + + PS> + + New-OfficeOpenDocument -Kind Spreadsheet -Path .\Status.ods -Content { + Add-OfficeOpenDocumentSheet -Name 'Services' -Content { + Set-OfficeOpenDocumentCell -Row 0 -Column 0 -Value 'Service' + Set-OfficeOpenDocumentCell -Row 0 -Column 1 -Value 'Healthy' + Set-OfficeOpenDocumentCell -Row 1 -Column 0 -Value 'Directory' + Set-OfficeOpenDocumentCell -Row 1 -Column 1 -Value $true + } + } + + + + + + + + + + New-OfficePdf + New + OfficePdf + + Creates a PDF document using the OfficeIMO.Pdf composition engine. + + + + New-OfficePdf starts a generated PDF document and optionally executes a PSWriteOffice PDF DSL script block. +The DSL commands are thin adapters over OfficeIMO.Pdf and support document metadata, page setup, headers, footers, +themes, styled text, tables, panels, row layouts, form fields, attachments, compliance settings, and save/open behavior. +Use -NoSave or omit -Path when a document object should be returned for further pipeline operations. + + + + New-OfficePdf + + BoldFontPath + + Optional bold TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + BoldItalicFontPath + + Optional bold italic TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + CenterWindow + + Request PDF viewers to center the document window on screen. + + SwitchParameter + + SwitchParameter + + + None + + + Content + + DSL script block describing generated PDF content. + + ScriptBlock + + ScriptBlock + + + None + + + CreateOutlineFromHeadings + + Create PDF outline/bookmark entries from heading elements. + + SwitchParameter + + SwitchParameter + + + None + + + DefaultFont + + Default standard PDF font for generated text. + + PdfStandardFont + + Helvetica + HelveticaOblique + HelveticaBold + HelveticaBoldOblique + TimesRoman + TimesItalic + TimesBold + TimesBoldItalic + Courier + CourierOblique + CourierBold + CourierBoldOblique + + + PdfStandardFont + + + None + + + DefaultFontSize + + Default generated text font size in points. + + Double + + Double + + + None + + + DisplayDocTitle + + Request PDF viewers to display the document title instead of the file name. + + SwitchParameter + + SwitchParameter + + + None + + + FileVersion + + PDF file header version emitted by OfficeIMO.Pdf. + + PdfFileVersion + + Pdf14 + Pdf15 + Pdf16 + Pdf17 + Pdf20 + + + PdfFileVersion + + + None + + + FitWindow + + Request PDF viewers to fit the document window to the first displayed page. + + SwitchParameter + + SwitchParameter + + + None + + + FlattenVisualAnnotations + + Flatten generated FreeText and Highlight annotations into static page content. + + SwitchParameter + + SwitchParameter + + + None + + + FontFamily + + Embedded TrueType font family name for generated text. + + String + + String + + + None + + + HideMenubar + + Request PDF viewers to hide the menu bar. + + SwitchParameter + + SwitchParameter + + + None + + + HideToolbar + + Request PDF viewers to hide the toolbar. + + SwitchParameter + + SwitchParameter + + + None + + + HideWindowUI + + Request PDF viewers to hide user-interface elements. + + SwitchParameter + + SwitchParameter + + + None + + + IncludePageLabels + + Emit generated catalog page labels. + + SwitchParameter + + SwitchParameter + + + None + + + ItalicFontPath + + Optional italic TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + NoSave + + Skip saving even when -Path is provided. + + SwitchParameter + + SwitchParameter + + + None + + + Open + + Open the PDF after saving. + + SwitchParameter + + SwitchParameter + + + None + + + OpenActionMode + + Open-action destination mode. + + PdfOpenActionDestinationMode + + Xyz + Fit + FitHorizontal + FitVertical + FitRectangle + FitBoundingBox + FitBoundingBoxHorizontal + FitBoundingBoxVertical + + + PdfOpenActionDestinationMode + + + None + + + OpenActionPage + + Initial one-based page shown by PDF viewers that honor open actions. + + Int32 + + Int32 + + + None + + + OpenActionTop + + Optional open-action top coordinate. + + Double + + Double + + + None + + + OutlineExpansionLevel + + Initial outline expansion level when heading outlines are created. + + Int32 + + Int32 + + + None + + + OwnerPassword + + Optional owner password for the generated encrypted PDF. + + String + + String + + + None + + + PageLabelPrefix + + Optional generated page-label prefix. + + String + + String + + + None + + + PageLayout + + Catalog page layout hint emitted for generated PDFs. + + PdfCatalogPageLayout + + SinglePage + OneColumn + TwoColumnLeft + TwoColumnRight + TwoPageLeft + TwoPageRight + + + PdfCatalogPageLayout + + + None + + + PageMode + + Catalog page mode hint emitted for generated PDFs. + + PdfCatalogPageMode + + UseNone + UseOutlines + UseThumbs + FullScreen + UseOC + UseAttachments + + + PdfCatalogPageMode + + + None + + + PassThru + + Emit the generated document or saved file for chaining. + + SwitchParameter + + SwitchParameter + + + None + + + Password + + Password required to open the generated PDF. + + String + + String + + + None + + + Path + + Optional destination PDF path. + + String + + String + + + None + + + Permission + + Raw PDF Standard security permission bit mask. Defaults to allowing all standard operations. + + Int32 + + Int32 + + + None + + + RegularFontPath + + Regular TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + Theme + + Built-in OfficeIMO.Pdf theme applied before the DSL content runs. + + OfficePdfThemePreset + + WordLike + TechnicalDocument + Compact + Report + + + OfficePdfThemePreset + + + None + + + + New-OfficePdf + + BoldFontPath + + Optional bold TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + BoldItalicFontPath + + Optional bold italic TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + CenterWindow + + Request PDF viewers to center the document window on screen. + + SwitchParameter + + SwitchParameter + + + None + + + Content + + DSL script block describing generated PDF content. + + ScriptBlock + + ScriptBlock + + + None + + + CreateOutlineFromHeadings + + Create PDF outline/bookmark entries from heading elements. + + SwitchParameter + + SwitchParameter + + + None + + + DefaultFont + + Default standard PDF font for generated text. + + PdfStandardFont + + Helvetica + HelveticaOblique + HelveticaBold + HelveticaBoldOblique + TimesRoman + TimesItalic + TimesBold + TimesBoldItalic + Courier + CourierOblique + CourierBold + CourierBoldOblique + + + PdfStandardFont + + + None + + + DefaultFontSize + + Default generated text font size in points. + + Double + + Double + + + None + + + DisplayDocTitle + + Request PDF viewers to display the document title instead of the file name. + + SwitchParameter + + SwitchParameter + + + None + + + FileVersion + + PDF file header version emitted by OfficeIMO.Pdf. + + PdfFileVersion + + Pdf14 + Pdf15 + Pdf16 + Pdf17 + Pdf20 + + + PdfFileVersion + + + None + + + FitWindow + + Request PDF viewers to fit the document window to the first displayed page. + + SwitchParameter + + SwitchParameter + + + None + + + FlattenVisualAnnotations + + Flatten generated FreeText and Highlight annotations into static page content. + + SwitchParameter + + SwitchParameter + + + None + + + FontFamily + + Embedded TrueType font family name for generated text. + + String + + String + + + None + + + HideMenubar + + Request PDF viewers to hide the menu bar. + + SwitchParameter + + SwitchParameter + + + None + + + HideToolbar + + Request PDF viewers to hide the toolbar. + + SwitchParameter + + SwitchParameter + + + None + + + HideWindowUI + + Request PDF viewers to hide user-interface elements. + + SwitchParameter + + SwitchParameter + + + None + + + IncludePageLabels + + Emit generated catalog page labels. + + SwitchParameter + + SwitchParameter + + + None + + + ItalicFontPath + + Optional italic TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + NoSave + + Skip saving even when -Path is provided. + + SwitchParameter + + SwitchParameter + + + None + + + Open + + Open the PDF after saving. + + SwitchParameter + + SwitchParameter + + + None + + + OpenActionMode + + Open-action destination mode. + + PdfOpenActionDestinationMode + + Xyz + Fit + FitHorizontal + FitVertical + FitRectangle + FitBoundingBox + FitBoundingBoxHorizontal + FitBoundingBoxVertical + + + PdfOpenActionDestinationMode + + + None + + + OpenActionPage + + Initial one-based page shown by PDF viewers that honor open actions. + + Int32 + + Int32 + + + None + + + OpenActionTop + + Optional open-action top coordinate. + + Double + + Double + + + None + + + OutlineExpansionLevel + + Initial outline expansion level when heading outlines are created. + + Int32 + + Int32 + + + None + + + OwnerPassword + + Optional owner password for the generated encrypted PDF. + + String + + String + + + None + + + PageLabelPrefix + + Optional generated page-label prefix. + + String + + String + + + None + + + PageLayout + + Catalog page layout hint emitted for generated PDFs. + + PdfCatalogPageLayout + + SinglePage + OneColumn + TwoColumnLeft + TwoColumnRight + TwoPageLeft + TwoPageRight + + + PdfCatalogPageLayout + + + None + + + PageMode + + Catalog page mode hint emitted for generated PDFs. + + PdfCatalogPageMode + + UseNone + UseOutlines + UseThumbs + FullScreen + UseOC + UseAttachments + + + PdfCatalogPageMode + + + None + + + PassThru + + Emit the generated document or saved file for chaining. + + SwitchParameter + + SwitchParameter + + + None + + + Password + + Password required to open the generated PDF. + + String + + String + + + None + + + Permission + + Raw PDF Standard security permission bit mask. Defaults to allowing all standard operations. + + Int32 + + Int32 + + + None + + + RegularFontPath + + Regular TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + Theme + + Built-in OfficeIMO.Pdf theme applied before the DSL content runs. + + OfficePdfThemePreset + + WordLike + TechnicalDocument + Compact + Report + + + OfficePdfThemePreset + + + None + + + + + + BoldFontPath + + Optional bold TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + BoldItalicFontPath + + Optional bold italic TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + CenterWindow + + Request PDF viewers to center the document window on screen. + + SwitchParameter + + SwitchParameter + + + None + + + Content + + DSL script block describing generated PDF content. + + ScriptBlock + + ScriptBlock + + + None + + + CreateOutlineFromHeadings + + Create PDF outline/bookmark entries from heading elements. + + SwitchParameter + + SwitchParameter + + + None + + + DefaultFont + + Default standard PDF font for generated text. + + PdfStandardFont + + Helvetica + HelveticaOblique + HelveticaBold + HelveticaBoldOblique + TimesRoman + TimesItalic + TimesBold + TimesBoldItalic + Courier + CourierOblique + CourierBold + CourierBoldOblique + + + PdfStandardFont + + + None + + + DefaultFontSize + + Default generated text font size in points. + + Double + + Double + + + None + + + DisplayDocTitle + + Request PDF viewers to display the document title instead of the file name. + + SwitchParameter + + SwitchParameter + + + None + + + FileVersion + + PDF file header version emitted by OfficeIMO.Pdf. + + PdfFileVersion + + Pdf14 + Pdf15 + Pdf16 + Pdf17 + Pdf20 + + + PdfFileVersion + + + None + + + FitWindow + + Request PDF viewers to fit the document window to the first displayed page. + + SwitchParameter + + SwitchParameter + + + None + + + FlattenVisualAnnotations + + Flatten generated FreeText and Highlight annotations into static page content. + + SwitchParameter + + SwitchParameter + + + None + + + FontFamily + + Embedded TrueType font family name for generated text. + + String + + String + + + None + + + HideMenubar + + Request PDF viewers to hide the menu bar. + + SwitchParameter + + SwitchParameter + + + None + + + HideToolbar + + Request PDF viewers to hide the toolbar. + + SwitchParameter + + SwitchParameter + + + None + + + HideWindowUI + + Request PDF viewers to hide user-interface elements. + + SwitchParameter + + SwitchParameter + + + None + + + IncludePageLabels + + Emit generated catalog page labels. + + SwitchParameter + + SwitchParameter + + + None + + + ItalicFontPath + + Optional italic TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + NoSave + + Skip saving even when -Path is provided. + + SwitchParameter + + SwitchParameter + + + None + + + Open + + Open the PDF after saving. + + SwitchParameter + + SwitchParameter + + + None + + + OpenActionMode + + Open-action destination mode. + + PdfOpenActionDestinationMode + + Xyz + Fit + FitHorizontal + FitVertical + FitRectangle + FitBoundingBox + FitBoundingBoxHorizontal + FitBoundingBoxVertical + + + PdfOpenActionDestinationMode + + + None + + + OpenActionPage + + Initial one-based page shown by PDF viewers that honor open actions. + + Int32 + + Int32 + + + None + + + OpenActionTop + + Optional open-action top coordinate. + + Double + + Double + + + None + + + OutlineExpansionLevel + + Initial outline expansion level when heading outlines are created. + + Int32 + + Int32 + + + None + + + OwnerPassword + + Optional owner password for the generated encrypted PDF. + + String + + String + + + None + + + PageLabelPrefix + + Optional generated page-label prefix. + + String + + String + + + None + + + PageLayout + + Catalog page layout hint emitted for generated PDFs. + + PdfCatalogPageLayout + + SinglePage + OneColumn + TwoColumnLeft + TwoColumnRight + TwoPageLeft + TwoPageRight + + + PdfCatalogPageLayout + + + None + + + PageMode + + Catalog page mode hint emitted for generated PDFs. + + PdfCatalogPageMode + + UseNone + UseOutlines + UseThumbs + FullScreen + UseOC + UseAttachments + + + PdfCatalogPageMode + + + None + + + PassThru + + Emit the generated document or saved file for chaining. + + SwitchParameter + + SwitchParameter + + + None + + + Password + + Password required to open the generated PDF. + + String + + String + + + None + + + Path + + Optional destination PDF path. + + String + + String + + + None + + + Permission + + Raw PDF Standard security permission bit mask. Defaults to allowing all standard operations. + + Int32 + + Int32 + + + None + + + RegularFontPath + + Regular TrueType font path used when -FontFamily is provided. + + String + + String + + + None + + + Theme + + Built-in OfficeIMO.Pdf theme applied before the DSL content runs. + + OfficePdfThemePreset + + WordLike + TechnicalDocument + Compact + Report + + + OfficePdfThemePreset + + + None + + + + + + None + + + + + + + OfficeIMO.Pdf.PdfDocument + + + + + System.IO.FileInfo + + + + + + + + + + + Create a PDF report. + + PS> + + New-OfficePdf -Path .\Report.pdf { PdfHeading 'Report'; PdfParagraph 'Generated by PSWriteOffice' } -Open + + Builds a PDF and opens it after saving. + + + + Create a polished report with theme, metadata, and layout. + + PS> + + New-OfficePdf -Path .\ServiceReview.pdf { + PdfTheme Report + PdfMetadata -Title 'Service Review' -Author 'PSWriteOffice' + PdfPageSetup -PageSize A4 -Margin 42 + PdfHeader 'Service Review' + PdfFooter 'Page {page}/{pages}' + PdfHeading 'Service Review' + PdfText -Run @( + @{ Text = 'Generated with ' } + @{ Text = 'rich inline text'; Bold = $true; Color = '#0F766E' } + @{ Text = ' and OfficeIMO.Pdf layout.' } + ) + PdfRow -Column @( + @{ Width = 40; Content = @(@{ Type = 'Panel'; Text = 'Left summary' }) } + @{ Width = 60; Content = @(@{ Type = 'Paragraph'; Text = 'Right details' }) } + ) + } + + Shows the preferred high-level PDF report authoring shape. + + + + + + + + New-OfficePdfExcelImportOptions + New + OfficePdfExcelImportOptions + + Creates discoverable PDF-table-to-Excel reconstruction settings. + + + + Creates discoverable PDF-table-to-Excel reconstruction settings. + + + + New-OfficePdfExcelImportOptions + + AutoFitColumns + + Auto-fit worksheet columns. + + SwitchParameter + + SwitchParameter + + + None + + + ContinuationGeometryTolerancePoints + + Geometry tolerance in PDF points for page continuations. + + Double + + Double + + + None + + + ConvertBooleanColumns + + Convert consistently boolean columns. + + SwitchParameter + + SwitchParameter + + + None + + + ConvertDateTimeColumns + + Convert unambiguous date columns. + + SwitchParameter + + SwitchParameter + + + None + + + ConvertNumericColumns + + Convert consistently numeric columns. + + SwitchParameter + + SwitchParameter + + + None + + + ConvertPercentageColumns + + Convert percentage columns to fractional numbers. + + SwitchParameter + + SwitchParameter + + + None + + + EmptyWorkbookSheetName + + Worksheet name used when no tables are detected. + + String + + String + + + None + + + IncludeAutoFilter + + Add table-scoped AutoFilters. + + SwitchParameter + + SwitchParameter + + + None + + + MaximumContinuationSegments + + Maximum table segments merged into one table. + + Int32 + + Int32 + + + None + + + MaxRows + + Maximum body rows imported per detected table; zero means unlimited. + + Int32 + + Int32 + + + None + + + MergePageContinuations + + Merge compatible table segments across pages. + + SwitchParameter + + SwitchParameter + + + None + + + NumericCulture + + Culture name used for numeric parsing, such as en-US. + + String + + String + + + None + + + SheetNamePrefix + + Prefix for generated worksheet names. + + String + + String + + + None + + + SuppressRepeatedBodyHeaderRows + + Suppress repeated body header rows in merged segments. + + SwitchParameter + + SwitchParameter + + + None + + + TableNamePrefix + + Prefix for generated Excel table names. + + String + + String + + + None + + + TableStyle + + Excel table style. + + ExcelTableStyle + + TableStyleLight1 + TableStyleLight2 + TableStyleLight3 + TableStyleLight4 + TableStyleLight5 + TableStyleLight6 + TableStyleLight7 + TableStyleLight8 + TableStyleLight9 + TableStyleLight10 + TableStyleLight11 + TableStyleLight12 + TableStyleLight13 + TableStyleLight14 + TableStyleLight15 + TableStyleLight16 + TableStyleLight17 + TableStyleLight18 + TableStyleLight19 + TableStyleLight20 + TableStyleLight21 + TableStyleMedium1 + TableStyleMedium2 + TableStyleMedium3 + TableStyleMedium4 + TableStyleMedium5 + TableStyleMedium6 + TableStyleMedium7 + TableStyleMedium8 + TableStyleMedium9 + TableStyleMedium10 + TableStyleMedium11 + TableStyleMedium12 + TableStyleMedium13 + TableStyleMedium14 + TableStyleMedium15 + TableStyleMedium16 + TableStyleMedium17 + TableStyleMedium18 + TableStyleMedium19 + TableStyleMedium20 + TableStyleMedium21 + TableStyleMedium22 + TableStyleMedium23 + TableStyleMedium24 + TableStyleMedium25 + TableStyleMedium26 + TableStyleMedium27 + TableStyleMedium28 + TableStyleDark1 + TableStyleDark2 + TableStyleDark3 + TableStyleDark4 + TableStyleDark5 + TableStyleDark6 + TableStyleDark7 + TableStyleDark8 + TableStyleDark9 + TableStyleDark10 + TableStyleDark11 + + + ExcelTableStyle + + + None + + + + + + AutoFitColumns + + Auto-fit worksheet columns. + + SwitchParameter + + SwitchParameter + + + None + + + ContinuationGeometryTolerancePoints + + Geometry tolerance in PDF points for page continuations. + + Double + + Double + + + None + + + ConvertBooleanColumns + + Convert consistently boolean columns. + + SwitchParameter + + SwitchParameter + + + None + + + ConvertDateTimeColumns + + Convert unambiguous date columns. + + SwitchParameter + + SwitchParameter + + + None + + + ConvertNumericColumns + + Convert consistently numeric columns. + + SwitchParameter + + SwitchParameter + + + None + + + ConvertPercentageColumns + + Convert percentage columns to fractional numbers. + + SwitchParameter + + SwitchParameter + + + None + + + EmptyWorkbookSheetName + + Worksheet name used when no tables are detected. + + String + + String + + + None + + + IncludeAutoFilter + + Add table-scoped AutoFilters. + + SwitchParameter + + SwitchParameter + + + None + + + MaximumContinuationSegments + + Maximum table segments merged into one table. + + Int32 + + Int32 + + + None + + + MaxRows + + Maximum body rows imported per detected table; zero means unlimited. + + Int32 + + Int32 + + + None + + + MergePageContinuations + + Merge compatible table segments across pages. + + SwitchParameter + + SwitchParameter + + + None + + + NumericCulture + + Culture name used for numeric parsing, such as en-US. + + String + + String + + + None + + + SheetNamePrefix + + Prefix for generated worksheet names. + + String + + String + + + None + + + SuppressRepeatedBodyHeaderRows + + Suppress repeated body header rows in merged segments. + + SwitchParameter + + SwitchParameter + + + None + + + TableNamePrefix + + Prefix for generated Excel table names. + + String + + String + + + None + + + TableStyle + + Excel table style. + + ExcelTableStyle + + TableStyleLight1 + TableStyleLight2 + TableStyleLight3 + TableStyleLight4 + TableStyleLight5 + TableStyleLight6 + TableStyleLight7 + TableStyleLight8 + TableStyleLight9 + TableStyleLight10 + TableStyleLight11 + TableStyleLight12 + TableStyleLight13 + TableStyleLight14 + TableStyleLight15 + TableStyleLight16 + TableStyleLight17 + TableStyleLight18 + TableStyleLight19 + TableStyleLight20 + TableStyleLight21 + TableStyleMedium1 + TableStyleMedium2 + TableStyleMedium3 + TableStyleMedium4 + TableStyleMedium5 + TableStyleMedium6 + TableStyleMedium7 + TableStyleMedium8 + TableStyleMedium9 + TableStyleMedium10 + TableStyleMedium11 + TableStyleMedium12 + TableStyleMedium13 + TableStyleMedium14 + TableStyleMedium15 + TableStyleMedium16 + TableStyleMedium17 + TableStyleMedium18 + TableStyleMedium19 + TableStyleMedium20 + TableStyleMedium21 + TableStyleMedium22 + TableStyleMedium23 + TableStyleMedium24 + TableStyleMedium25 + TableStyleMedium26 + TableStyleMedium27 + TableStyleMedium28 + TableStyleDark1 + TableStyleDark2 + TableStyleDark3 + TableStyleDark4 + TableStyleDark5 + TableStyleDark6 + TableStyleDark7 + TableStyleDark8 + TableStyleDark9 + TableStyleDark10 + TableStyleDark11 + + + ExcelTableStyle + + + None + + + + + + None + + + + + + + OfficeIMO.Excel.Pdf.PdfExcelTableImportOptions + + + + + + + + + + + Import PDF tables with typed columns and filters. + + PS> + + $options = New-OfficePdfExcelImportOptions -IncludeAutoFilter -AutoFitColumns -ConvertNumericColumns -ConvertDateTimeColumns + ConvertTo-OfficePdfExcel -Path .\Tables.pdf -OutputPath .\Tables.xlsx -Options $options + + + + + + + + + + New-OfficePdfImageOptions + New + OfficePdfImageOptions + + Creates discoverable thumbnail and rendering settings for Export-OfficePdfImage. + + + + Creates discoverable thumbnail and rendering settings for Export-OfficePdfImage. + + + + New-OfficePdfImageOptions + + BackgroundColor + + + + String + + String + + + None + + + MaximumDegreeOfParallelism + + + + Int32 + + Int32 + + + None + + + MaximumOutputCount + + + + Int32 + + Int32 + + + None + + + MaximumOutputHeight + + + + Int32 + + Int32 + + + None + + + MaximumOutputWidth + + + + Int32 + + Int32 + + + None + + + MaximumRasterPixels + + + + Int64 + + Int64 + + + None + + + MaximumTotalEncodedBytes + + + + Int64 + + Int64 + + + None + + + MaximumTotalRasterPixels + + + + Int64 + + Int64 + + + None + + + RasterOverflowBehavior + + + + OfficeRasterOverflowBehavior + + ReduceScale + Throw + + + OfficeRasterOverflowBehavior + + + None + + + RenderTimeoutSeconds + + + + Double + + Double + + + None + + + Scale + + + + Double + + Double + + + None + + + TargetDpi + + + + Double + + Double + + + None + + + TextShapingLanguage + + + + String + + String + + + None + + + ThumbnailMaxDimension + + Maximum thumbnail width or height. + + Int32 + + Int32 + + + None + + + + + + BackgroundColor + + + + String + + String + + + None + + + MaximumDegreeOfParallelism + + + + Int32 + + Int32 + + + None + + + MaximumOutputCount + + + + Int32 + + Int32 + + + None + + + MaximumOutputHeight + + + + Int32 + + Int32 + + + None + + + MaximumOutputWidth + + + + Int32 + + Int32 + + + None + + + MaximumRasterPixels + + + + Int64 + + Int64 + + + None + + + MaximumTotalEncodedBytes + + + + Int64 + + Int64 + + + None + + + MaximumTotalRasterPixels + + + + Int64 + + Int64 + + + None + + + RasterOverflowBehavior + + + + OfficeRasterOverflowBehavior + + ReduceScale + Throw + + + OfficeRasterOverflowBehavior + + + None + + + RenderTimeoutSeconds + + + + Double + + Double + + + None + + + Scale + + + + Double + + Double + + + None + + + TargetDpi + + + + Double + + Double + + + None + + + TextShapingLanguage + + + + String + + String + + + None + + + ThumbnailMaxDimension + + Maximum thumbnail width or height. + + Int32 + + Int32 + + + None + + + + + + None + + + + + + + OfficeIMO.Pdf.PdfImageExportOptions + + + + + + + + + + + Create compact PDF thumbnails with bounded output dimensions. + + PS> + + $options = New-OfficePdfImageOptions -ThumbnailMaxDimension 320 -MaximumOutputWidth 640 + Export-OfficePdfImage -Path .\Report.pdf -OutputPath .\Thumbnails -Options $options + + + + + + + + + + New-OfficePdfPowerPointImportOptions + New + OfficePdfPowerPointImportOptions + + Creates discoverable PDF-to-PowerPoint reconstruction settings. + + + + Creates discoverable PDF-to-PowerPoint reconstruction settings. + + + + New-OfficePdfPowerPointImportOptions + + AlignNumericColumns + + Right-align inferred numeric columns. + + SwitchParameter + + SwitchParameter + + + None + + + BandedRows + + Enable banded-row styling. + + SwitchParameter + + SwitchParameter + + + None + + + Dpi + + Raster resolution used by visual import. + + Double + + Double + + + None + + + EmptyPresentationMessage + + Message used when no supported content is detected. + + String + + String + + + None + + + EmptyPresentationTitle + + Title used when no supported content is detected. + + String + + String + + + None + + + IncludeColumnHeaderRows + + Add inferred column headers. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeSourceTitles + + Add source-page titles. + + SwitchParameter + + SwitchParameter + + + None + + + MaxColumnsPerSlide + + Maximum columns written to one slide; zero means unlimited. + + Int32 + + Int32 + + + None + + + MaxEditableObjectsPerPage + + Maximum editable objects reconstructed per page. + + Int32 + + Int32 + + + None + + + MaxOutputBytesPerPage + + Maximum encoded bytes per rendered page. + + Int64 + + Int64 + + + None + + + MaxPages + + Maximum pages imported. + + Int32 + + Int32 + + + None + + + MaxPixelsPerPage + + Maximum pixels per rendered page. + + Int64 + + Int64 + + + None + + + MaxRows + + Maximum body rows imported per table; zero means unlimited. + + Int32 + + Int32 + + + None + + + MaxRowsPerSlide + + Maximum rows written to one slide; zero means unlimited. + + Int32 + + Int32 + + + None + + + MaxTotalOutputBytes + + Maximum aggregate encoded output bytes. + + Int64 + + Int64 + + + None + + + MergePageContinuations + + Merge compatible table segments across pages. + + SwitchParameter + + SwitchParameter + + + None + + + Mode + + Visual, editable-table, hybrid, editable-content, or automatic import mode. + + PdfPowerPointImportMode + + VisualPages + EditableTables + HybridVisualAndEditableTables + EditableContent + Auto + + + PdfPowerPointImportMode + + + None + + + PageRange + + Optional one-based page ranges such as 1-3,5. + + String + + String + + + None + + + SuppressRepeatedBodyHeaderRows + + Suppress repeated body header rows. + + SwitchParameter + + SwitchParameter + + + None + + + TableStyle + + PowerPoint table style. + + PowerPointTableStylePreset + + PowerPointTableStylePreset + + + None + + + + + + AlignNumericColumns + + Right-align inferred numeric columns. + + SwitchParameter + + SwitchParameter + + + None + + + BandedRows + + Enable banded-row styling. + + SwitchParameter + + SwitchParameter + + + None + + + Dpi + + Raster resolution used by visual import. + + Double + + Double + + + None + + + EmptyPresentationMessage + + Message used when no supported content is detected. + + String + + String + + + None + + + EmptyPresentationTitle + + Title used when no supported content is detected. + + String + + String + + + None + + + IncludeColumnHeaderRows + + Add inferred column headers. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeSourceTitles + + Add source-page titles. + + SwitchParameter + + SwitchParameter + + + None + + + MaxColumnsPerSlide + + Maximum columns written to one slide; zero means unlimited. + + Int32 + + Int32 + + + None + + + MaxEditableObjectsPerPage + + Maximum editable objects reconstructed per page. + + Int32 + + Int32 + + + None + + + MaxOutputBytesPerPage + + Maximum encoded bytes per rendered page. + + Int64 + + Int64 + + + None + + + MaxPages + + Maximum pages imported. + + Int32 + + Int32 + + + None + + + MaxPixelsPerPage + + Maximum pixels per rendered page. + + Int64 + + Int64 + + + None + + + MaxRows + + Maximum body rows imported per table; zero means unlimited. + + Int32 + + Int32 + + + None + + + MaxRowsPerSlide + + Maximum rows written to one slide; zero means unlimited. + + Int32 + + Int32 + + + None + + + MaxTotalOutputBytes + + Maximum aggregate encoded output bytes. + + Int64 + + Int64 + + + None + + + MergePageContinuations + + Merge compatible table segments across pages. + + SwitchParameter + + SwitchParameter + + + None + + + Mode + + Visual, editable-table, hybrid, editable-content, or automatic import mode. + + PdfPowerPointImportMode + + VisualPages + EditableTables + HybridVisualAndEditableTables + EditableContent + Auto + + + PdfPowerPointImportMode + + + None + + + PageRange + + Optional one-based page ranges such as 1-3,5. + + String + + String + + + None + + + SuppressRepeatedBodyHeaderRows + + Suppress repeated body header rows. + + SwitchParameter + + SwitchParameter + + + None + + + TableStyle + + PowerPoint table style. + + PowerPointTableStylePreset + + PowerPointTableStylePreset + + + None + + + + + + None + + + + + + + OfficeIMO.PowerPoint.Pdf.PdfPowerPointImportOptions + + + + + + + + + + + Import selected PDF pages as bounded slide content. + + PS> + + $options = New-OfficePdfPowerPointImportOptions -PageRange '1-5' -MaxPages 5 -IncludeSourceTitles + ConvertTo-OfficePdfPowerPoint -Path .\Source.pdf -OutputPath .\Slides.pptx -Options $options + + + + + + + + + + New-OfficePdfSignature + New + OfficePdfSignature + + Prepares an existing PDF for external digital signing by appending a signature field, /ByteRange, and reserved /Contents placeholder. + + + + The command does not create CMS, CAdES, timestamp, certificate-chain, or revocation data. Use the returned byte range or digest with an external signing service, then inject the produced signature bytes with Set-OfficePdfSignature. + + + + New-OfficePdfSignature + + ContactInfo + + Signer contact information stored in the signature dictionary. + + String + + String + + + None + + + FieldName + + Signature field name to append. + + String + + String + + + None + + + Filter + + Signature handler filter name. The default is Adobe.PPKLite. + + String + + String + + + None + + + IgnorePermissionRestrictions + + After successful password authentication, explicitly ignore owner-imposed signature-field restrictions. + + SwitchParameter + + SwitchParameter + + + None + + + Location + + Signing location stored in the signature dictionary. + + String + + String + + + None + + + Name + + Display signer name stored in the signature dictionary. + + String + + String + + + None + + + OutputPath + + Output prepared PDF path. + + String + + String + + + None + + + PassThruReport + + Return the OfficeIMO.Pdf preparation report instead of only the output file. + + SwitchParameter + + SwitchParameter + + + None + + + Password + + Password used to authenticate an encrypted PDF. + + String + + String + + + None + + + Path + + Input PDF path. + + String + + String + + + None + + + Reason + + Signing reason stored in the signature dictionary. + + String + + String + + + None + + + ReservedBytes + + Raw signature bytes to reserve in /Contents before hex encoding. + + Int32 + + Int32 + + + None + + + SubFilter + + Signature subfilter that describes the external signature bytes to inject later. + + PdfExternalSignatureSubFilter + + DetachedCms + CadesDetached + DocumentTimestamp + + + PdfExternalSignatureSubFilter + + + None + + + + + + ContactInfo + + Signer contact information stored in the signature dictionary. + + String + + String + + + None + + + FieldName + + Signature field name to append. + + String + + String + + + None + + + Filter + + Signature handler filter name. The default is Adobe.PPKLite. + + String + + String + + + None + + + IgnorePermissionRestrictions + + After successful password authentication, explicitly ignore owner-imposed signature-field restrictions. + + SwitchParameter + + SwitchParameter + + + None + + + Location + + Signing location stored in the signature dictionary. + + String + + String + + + None + + + Name + + Display signer name stored in the signature dictionary. + + String + + String + + + None + + + OutputPath + + Output prepared PDF path. + + String + + String + + + None + + + PassThruReport + + Return the OfficeIMO.Pdf preparation report instead of only the output file. + + SwitchParameter + + SwitchParameter + + + None + + + Password + + Password used to authenticate an encrypted PDF. + + String + + String + + + None + + + Path + + Input PDF path. + + String + + String + + + None + + + Reason + + Signing reason stored in the signature dictionary. + + String + + String + + + None + + + ReservedBytes + + Raw signature bytes to reserve in /Contents before hex encoding. + + Int32 + + Int32 + + + None + + + SubFilter + + Signature subfilter that describes the external signature bytes to inject later. + + PdfExternalSignatureSubFilter + + DetachedCms + CadesDetached + DocumentTimestamp + + + PdfExternalSignatureSubFilter + + + None + + + + + + System.String + + + + + + + System.IO.FileInfo + + + + + OfficeIMO.Pdf.PdfExternalSignaturePreparation + + + + + + + + + + + Prepare a PDF for detached CMS signing. + + PS> + + $plan = New-OfficePdfSignature -Path .\Input.pdf -OutputPath .\Prepared.pdf -FieldName Approval -Name 'Alice' -Reason Approval -PassThruReport + $plan.ByteRangeValues + $plan.ComputeSha256Digest() + + Writes a prepared PDF and returns the OfficeIMO.Pdf external signing preparation report. + + + + + + + + New-OfficePdfTableCell + New + OfficePdfTableCell + + Creates a reusable PDF table cell definition for explicit table rows. + + + + Creates a reusable PDF table cell definition for explicit table rows. + + + + New-OfficePdfTableCell + + Align + + Horizontal cell alignment. + + PdfColumnAlign + + Left + Center + Right + + + PdfColumnAlign + + + None + + + Bold + + Render the cell text in bold. + + SwitchParameter + + SwitchParameter + + + None + + + CheckBox + + Typed check boxes rendered inside the cell. + + PdfTableCellCheckBox[] + + PdfTableCellCheckBox[] + + + None + + + ColumnSpan + + Number of logical columns covered by the cell. + + Int32 + + Int32 + + + None + + + FillColor + + Cell fill color. Named colors and hexadecimal colors are accepted. + + String + + String + + + None + + + FontSize + + Cell font size in PDF points. + + Double + + Double + + + None + + + FormField + + Typed text or choice form fields rendered inside the cell. + + PdfTableCellFormField[] + + PdfTableCellFormField[] + + + None + + + Image + + Typed images rendered inside the cell. + + PdfTableCellImage[] + + PdfTableCellImage[] + + + None + + + Italic + + Render the cell text in italics. + + SwitchParameter + + SwitchParameter + + + None + + + LinkContents + + Accessible annotation text for the cell link. + + String + + String + + + None + + + LinkDestinationName + + Named PDF destination linked from the cell. + + String + + String + + + None + + + LinkUri + + Absolute or catalog-base-relative URI linked from the cell. + + String + + String + + + None + + + NamedDestinationName + + Named PDF destination defined at this cell. + + String + + String + + + None + + + NoWrap + + Keep the cell content on one visual line. + + SwitchParameter + + SwitchParameter + + + None + + + RowSpan + + Number of logical rows covered by the cell. + + Int32 + + Int32 + + + None + + + Run + + Rich text runs for the cell. Each run can be created with TextRun/PdfTextRun or provided as a hashtable/object. + + Object[] + + Object[] + + + None + + + Strike + + Render the cell text with strikethrough. + + SwitchParameter + + SwitchParameter + + + None + + + Text + + Cell text. + + String + + String + + + None + + + TextColor + + Cell text color. Named colors and hexadecimal colors are accepted. + + String + + String + + + None + + + Underline + + Render the cell text with underline. + + SwitchParameter + + SwitchParameter + + + None + + + UnderlineStyle + + Optional underline style name. PDF table rendering treats any supported value as underline. + + String + + String + + + None + + + VerticalAlign + + Vertical cell alignment. + + PdfCellVerticalAlign + + Top + Middle + Bottom + + + PdfCellVerticalAlign + + + None + + + + + + Align + + Horizontal cell alignment. + + PdfColumnAlign + + Left + Center + Right + + + PdfColumnAlign + + + None + + + Bold + + Render the cell text in bold. + + SwitchParameter + + SwitchParameter + + + None + + + CheckBox + + Typed check boxes rendered inside the cell. + + PdfTableCellCheckBox[] + + PdfTableCellCheckBox[] + + + None + + + ColumnSpan + + Number of logical columns covered by the cell. + + Int32 + + Int32 + + + None + + + FillColor + + Cell fill color. Named colors and hexadecimal colors are accepted. + + String + + String + + + None + + + FontSize + + Cell font size in PDF points. + + Double + + Double + + + None + + + FormField + + Typed text or choice form fields rendered inside the cell. + + PdfTableCellFormField[] + + PdfTableCellFormField[] + + + None + + + Image + + Typed images rendered inside the cell. + + PdfTableCellImage[] + + PdfTableCellImage[] + + + None + + + Italic + + Render the cell text in italics. + + SwitchParameter + + SwitchParameter + + + None + + + LinkContents + + Accessible annotation text for the cell link. + + String + + String + + + None + + + LinkDestinationName + + Named PDF destination linked from the cell. + + String + + String + + + None + + + LinkUri + + Absolute or catalog-base-relative URI linked from the cell. + + String + + String + + + None + + + NamedDestinationName + + Named PDF destination defined at this cell. + + String + + String + + + None + + + NoWrap + + Keep the cell content on one visual line. + + SwitchParameter + + SwitchParameter + + + None + + + RowSpan + + Number of logical rows covered by the cell. + + Int32 + + Int32 + + + None + + + Run + + Rich text runs for the cell. Each run can be created with TextRun/PdfTextRun or provided as a hashtable/object. + + Object[] + + Object[] + + + None + + + Strike + + Render the cell text with strikethrough. + + SwitchParameter + + SwitchParameter + + + None + + + Text + + Cell text. + + String + + String + + + None + + + TextColor + + Cell text color. Named colors and hexadecimal colors are accepted. + + String + + String + + + None + + + Underline + + Render the cell text with underline. + + SwitchParameter + + SwitchParameter + + + None + + + UnderlineStyle + + Optional underline style name. PDF table rendering treats any supported value as underline. + + String + + String + + + None + + + VerticalAlign + + Vertical cell alignment. + + PdfCellVerticalAlign + + Top + Middle + Bottom + + + PdfCellVerticalAlign + + + None + + + + + + None + + + + + + + PSWriteOffice.Services.Table.OfficeTableCellSpec + + + Describes a logical table cell that can be rendered by multiple Office table surfaces. + + + + + + + + + + + Create a full-width PDF table section row. + + PS> + + $row = @(New-OfficePdfTableCell -Text 'Identity systems' -ColumnSpan 3 -FillColor '#DBEAFE' -TextColor '#1E3A8A' -Bold) + + The returned cell can be passed to PdfTable inside explicit row arrays. + + + + + + + + New-OfficePdfTableCellCheckBox + New + OfficePdfTableCellCheckBox + + Creates a typed check box for a PDF table cell. + + + + Creates a typed check box for a PDF table cell. + + + + New-OfficePdfTableCellCheckBox + + Checked + + Create the check box in its checked state. + + SwitchParameter + + SwitchParameter + + + None + + + CheckedValueName + + PDF appearance-state name written when checked. + + String + + String + + + None + + + Name + + Unique AcroForm field name. + + String + + String + + + None + + + Size + + Visual square size in PDF points. + + Double + + Double + + + None + + + + + + Checked + + Create the check box in its checked state. + + SwitchParameter + + SwitchParameter + + + None + + + CheckedValueName + + PDF appearance-state name written when checked. + + String + + String + + + None + + + Name + + Unique AcroForm field name. + + String + + String + + + None + + + Size + + Visual square size in PDF points. + + Double + + Double + + + None + + + + + + None + + + + + + + OfficeIMO.Pdf.PdfTableCellCheckBox + + + + + + + + + + + Create a checked table-cell field. + + PS> + + $approved = New-OfficePdfTableCellCheckBox -Name Approved -Checked + $cell = New-OfficePdfTableCell -Text 'Approved' -CheckBox $approved + + The check box remains an AcroForm field positioned by the OfficeIMO table renderer. + + + + + + + + New-OfficePdfTableCellField + New + OfficePdfTableCellField + + Creates a typed text or choice field for a PDF table cell. + + + + Creates a typed text or choice field for a PDF table cell. + + + + New-OfficePdfTableCellField + + FontSize + + Field font size in PDF points. + + Double + + Double + + + None + + + Height + + Rendered field height in PDF points. + + Double + + Double + + + None + + + Name + + Unique AcroForm field name. + + String + + String + + + None + + + Value + + Initial field value. + + String + + String + + + None + + + Width + + Rendered field width in PDF points. + + Double + + Double + + + None + + + + New-OfficePdfTableCellField + + FontSize + + Field font size in PDF points. + + Double + + Double + + + None + + + Height + + Rendered field height in PDF points. + + Double + + Double + + + None + + + ListBox + + Render a choice field as a list box instead of a combo box. + + SwitchParameter + + SwitchParameter + + + None + + + Name + + Unique AcroForm field name. + + String + + String + + + None + + + Option + + Available values for a choice field. + + String[] + + String[] + + + None + + + Value + + Initial field value. + + String + + String + + + None + + + Width + + Rendered field width in PDF points. + + Double + + Double + + + None + + + + + + FontSize + + Field font size in PDF points. + + Double + + Double + + + None + + + Height + + Rendered field height in PDF points. + + Double + + Double + + + None + + + ListBox + + Render a choice field as a list box instead of a combo box. + + SwitchParameter + + SwitchParameter + + + None + + + Name + + Unique AcroForm field name. + + String + + String + + + None + + + Option + + Available values for a choice field. + + String[] + + String[] + + + None + + + Value + + Initial field value. + + String + + String + + + None + + + Width + + Rendered field width in PDF points. + + Double + + Double + + + None + + + + + + None + + + + + + + OfficeIMO.Pdf.PdfTableCellFormField + + + + + + + + + + + Create a reviewer choice field for a typed PDF table cell. + + PS> + + $reviewer = New-OfficePdfTableCellField -Name Reviewer -Option 'Unassigned', 'Alice', 'Bob' -Value 'Unassigned' + $cell = New-OfficePdfTableCell -Text 'Reviewer' -FormField $reviewer + + The choice field is positioned by the OfficeIMO PDF table renderer. + + + + + + + + New-OfficePdfTableCellImage + New + OfficePdfTableCellImage + + Creates a typed image for a PDF table cell. + + + + Creates a typed image for a PDF table cell. + + + + New-OfficePdfTableCellImage + + Height + + Rendered height in PDF points. + + Double + + Double + + + None + + + LinkContents + + Accessible annotation text for the image link. + + String + + String + + + None + + + LinkUri + + Optional absolute or catalog-base-relative URI linked from the image. + + String + + String + + + None + + + Path + + Raster image path. + + String + + String + + + None + + + Width + + Rendered width in PDF points. + + Double + + Double + + + None + + + + + + Height + + Rendered height in PDF points. + + Double + + Double + + + None + + + LinkContents + + Accessible annotation text for the image link. + + String + + String + + + None + + + LinkUri + + Optional absolute or catalog-base-relative URI linked from the image. + + String + + String + + + None + + + Path + + Raster image path. + + String + + String + + + None + + + Width + + Rendered width in PDF points. + + Double + + Double + + + None + + + + + + None + + + + + + + OfficeIMO.Pdf.PdfTableCellImage + + + + + + + + + + + Add a linked logo to a typed PDF table cell. + + PS> + + $logo = New-OfficePdfTableCellImage -Path .\logo.png -Width 28 -Height 28 -LinkUri 'https://example.com' + $cell = New-OfficePdfTableCell -Text 'Portal' -Image $logo + + The image remains a native PDF table-cell visual and may carry its own link. + + + + + + + + New-OfficePdfVisualComparisonOptions + New + OfficePdfVisualComparisonOptions + + Creates discoverable rendering and tolerance settings for Compare-OfficePdfVisual. + + + + Creates discoverable rendering and tolerance settings for Compare-OfficePdfVisual. + + + + New-OfficePdfVisualComparisonOptions + + Alignment + + Page alignment used for differently sized renders. + + PdfVisualPageAlignment + + TopLeft + Center + + + PdfVisualPageAlignment + + + None + + + AllowedDifferenceRatio + + Maximum differing-pixel ratio treated as equal. + + Double + + Double + + + None + + + BackgroundColor + + Background color name or hex value. + + String + + String + + + None + + + ChannelTolerance + + Maximum per-channel byte difference treated as equal. + + Byte + + Byte + + + None + + + MaxPages + + Maximum pages compared. + + Int32 + + Int32 + + + None + + + MaxPixelsPerImage + + Maximum pixels accepted per rendered image. + + Int64 + + Int64 + + + None + + + MaxTotalOutputBytes + + Maximum total bytes retained for comparison artifacts. + + Int64 + + Int64 + + + None + + + MaxTotalPixels + + Maximum pixels accepted across the comparison. + + Int64 + + Int64 + + + None + + + Scale + + Render scale applied before comparison. + + Double + + Double + + + None + + + + + + Alignment + + Page alignment used for differently sized renders. + + PdfVisualPageAlignment + + TopLeft + Center + + + PdfVisualPageAlignment + + + None + + + AllowedDifferenceRatio + + Maximum differing-pixel ratio treated as equal. + + Double + + Double + + + None + + + BackgroundColor + + Background color name or hex value. + + String + + String + + + None + + + ChannelTolerance + + Maximum per-channel byte difference treated as equal. + + Byte + + Byte + + + None + + + MaxPages + + Maximum pages compared. + + Int32 + + Int32 + + + None + + + MaxPixelsPerImage + + Maximum pixels accepted per rendered image. + + Int64 + + Int64 + + + None + + + MaxTotalOutputBytes + + Maximum total bytes retained for comparison artifacts. + + Int64 + + Int64 + + + None + + + MaxTotalPixels + + Maximum pixels accepted across the comparison. + + Int64 + + Int64 + + + None + + + Scale + + Render scale applied before comparison. + + Double + + Double + + + None + + + + + + None + + + + + + + OfficeIMO.Pdf.PdfVisualComparisonOptions + + + + + + + + + + + Compare PDFs with a small rendering tolerance. + + PS> + + $options = New-OfficePdfVisualComparisonOptions -ChannelTolerance 2 -AllowedDifferenceRatio 0.001 -MaxPages 50 + Compare-OfficePdfVisual -ReferencePath .\Expected.pdf -DifferencePath .\Actual.pdf -Options $options + + + + + + + + + + New-OfficePdfWordImportOptions + New + OfficePdfWordImportOptions + + Creates discoverable PDF-to-Word reconstruction settings. + + + + Creates discoverable PDF-to-Word reconstruction settings. + + + + New-OfficePdfWordImportOptions + + AlignNumericColumns + + Right-align inferred numeric columns. + + SwitchParameter + + SwitchParameter + + + None + + + AllowedHyperlinkUriScheme + + Allowed absolute hyperlink URI schemes. + + String[] + + String[] + + + None + + + BookmarkPrefix + + Prefix for generated Word bookmarks. + + String + + String + + + None + + + EmptyDocumentMessage + + Text used when no supported content is detected. + + String + + String + + + None + + + FitTablesToPageWidth + + Fit imported tables to page width. + + SwitchParameter + + SwitchParameter + + + None + + + ImportHeadings + + Import detected headings. + + SwitchParameter + + SwitchParameter + + + None + + + ImportImages + + Import supported embedded images. + + SwitchParameter + + SwitchParameter + + + None + + + ImportInternalLinks + + Import supported internal links. + + SwitchParameter + + SwitchParameter + + + None + + + ImportLists + + Import detected lists. + + SwitchParameter + + SwitchParameter + + + None + + + ImportParagraphs + + Import detected paragraphs. + + SwitchParameter + + SwitchParameter + + + None + + + ImportTables + + Import detected tables. + + SwitchParameter + + SwitchParameter + + + None + + + ImportUriLinks + + Import safe URI links. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeEmptyPages + + Represent empty PDF pages. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeFormFieldPlaceholders + + Represent AcroForm widgets with editable placeholders. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeImagePlaceholders + + Use paragraphs when an image cannot be embedded. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeMetadata + + Copy PDF metadata into Word properties. + + SwitchParameter + + SwitchParameter + + + None + + + MaxTableRows + + Maximum body rows imported per table; zero means unlimited. + + Int32 + + Int32 + + + None + + + PreserveImagePlacementSize + + Preserve detected image placement size. + + SwitchParameter + + SwitchParameter + + + None + + + PreservePageBreaks + + Represent source pages with Word page breaks. + + SwitchParameter + + SwitchParameter + + + None + + + RepeatHeaderRows + + Repeat inferred table header rows. + + SwitchParameter + + SwitchParameter + + + None + + + TablesOnly + + Use the built-in tables-only import profile. + + SwitchParameter + + SwitchParameter + + + None + + + TableStyle + + Word table style for imported tables. + + WordTableStyle + + TableNormal + TableGrid + PlainTable1 + PlainTable2 + PlainTable3 + PlainTable4 + PlainTable5 + GridTable1Light + GridTable1LightAccent1 + GridTable1LightAccent2 + GridTable1LightAccent3 + GridTable1LightAccent4 + GridTable1LightAccent5 + GridTable1LightAccent6 + GridTable2 + GridTable2Accent1 + GridTable2Accent2 + GridTable2Accent3 + GridTable2Accent4 + GridTable2Accent5 + GridTable2Accent6 + GridTable3 + GridTable3Accent1 + GridTable3Accent2 + GridTable3Accent3 + GridTable3Accent4 + GridTable3Accent5 + GridTable3Accent6 + GridTable4 + GridTable4Accent1 + GridTable4Accent2 + GridTable4Accent3 + GridTable4Accent4 + GridTable4Accent5 + GridTable4Accent6 + GridTable5Dark + GridTable5DarkAccent1 + GridTable5DarkAccent2 + GridTable5DarkAccent3 + GridTable5DarkAccent4 + GridTable5DarkAccent5 + GridTable5DarkAccent6 + GridTable6Colorful + GridTable6ColorfulAccent1 + GridTable6ColorfulAccent2 + GridTable6ColorfulAccent3 + GridTable6ColorfulAccent4 + GridTable6ColorfulAccent5 + GridTable6ColorfulAccent6 + GridTable7Colorful + GridTable7ColorfulAccent1 + GridTable7ColorfulAccent2 + GridTable7ColorfulAccent3 + GridTable7ColorfulAccent4 + GridTable7ColorfulAccent5 + GridTable7ColorfulAccent6 + ListTable1Light + ListTable1LightAccent1 + ListTable1LightAccent2 + ListTable1LightAccent3 + ListTable1LightAccent4 + ListTable1LightAccent5 + ListTable1LightAccent6 + ListTable2 + ListTable2Accent1 + ListTable2Accent2 + ListTable2Accent3 + ListTable2Accent4 + ListTable2Accent5 + ListTable2Accent6 + ListTable3 + ListTable3Accent1 + ListTable3Accent2 + ListTable3Accent3 + ListTable3Accent4 + ListTable3Accent5 + ListTable3Accent6 + ListTable4 + ListTable4Accent1 + ListTable4Accent2 + ListTable4Accent3 + ListTable4Accent4 + ListTable4Accent5 + ListTable4Accent6 + ListTable5Dark + ListTable5DarkAccent1 + ListTable5DarkAccent2 + ListTable5DarkAccent3 + ListTable5DarkAccent4 + ListTable5DarkAccent5 + ListTable5DarkAccent6 + ListTable6Colorful + ListTable6ColorfulAccent1 + ListTable6ColorfulAccent2 + ListTable6ColorfulAccent3 + ListTable6ColorfulAccent4 + ListTable6ColorfulAccent5 + ListTable6ColorfulAccent6 + ListTable7Colorful + ListTable7ColorfulAccent1 + ListTable7ColorfulAccent2 + ListTable7ColorfulAccent3 + ListTable7ColorfulAccent4 + ListTable7ColorfulAccent5 + ListTable7ColorfulAccent6 + + + WordTableStyle + + + None + + + UseSharedPageReadingOrder + + Use the crop-, rotation-, and column-aware reading order. + + SwitchParameter + + SwitchParameter + + + None + + + + + + AlignNumericColumns + + Right-align inferred numeric columns. + + SwitchParameter + + SwitchParameter + + + None + + + AllowedHyperlinkUriScheme + + Allowed absolute hyperlink URI schemes. + + String[] + + String[] + + + None + + + BookmarkPrefix + + Prefix for generated Word bookmarks. + + String + + String + + + None + + + EmptyDocumentMessage + + Text used when no supported content is detected. + + String + + String + + + None + + + FitTablesToPageWidth + + Fit imported tables to page width. + + SwitchParameter + + SwitchParameter + + + None + + + ImportHeadings + + Import detected headings. + + SwitchParameter + + SwitchParameter + + + None + + + ImportImages + + Import supported embedded images. + + SwitchParameter + + SwitchParameter + + + None + + + ImportInternalLinks + + Import supported internal links. + + SwitchParameter + + SwitchParameter + + + None + + + ImportLists + + Import detected lists. + + SwitchParameter + + SwitchParameter + + + None + + + ImportParagraphs + + Import detected paragraphs. + + SwitchParameter + + SwitchParameter + + + None + + + ImportTables + + Import detected tables. + + SwitchParameter + + SwitchParameter + + + None + + + ImportUriLinks + + Import safe URI links. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeEmptyPages + + Represent empty PDF pages. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeFormFieldPlaceholders + + Represent AcroForm widgets with editable placeholders. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeImagePlaceholders + + Use paragraphs when an image cannot be embedded. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeMetadata + + Copy PDF metadata into Word properties. + + SwitchParameter + + SwitchParameter + + + None + + + MaxTableRows + + Maximum body rows imported per table; zero means unlimited. + + Int32 + + Int32 + + + None + + + PreserveImagePlacementSize + + Preserve detected image placement size. + + SwitchParameter + + SwitchParameter + + + None + + + PreservePageBreaks + + Represent source pages with Word page breaks. + + SwitchParameter + + SwitchParameter + + + None + + + RepeatHeaderRows + + Repeat inferred table header rows. + + SwitchParameter + + SwitchParameter + + + None + + + TablesOnly + + Use the built-in tables-only import profile. + + SwitchParameter + + SwitchParameter + + + None + + + TableStyle + + Word table style for imported tables. + + WordTableStyle + + TableNormal + TableGrid + PlainTable1 + PlainTable2 + PlainTable3 + PlainTable4 + PlainTable5 + GridTable1Light + GridTable1LightAccent1 + GridTable1LightAccent2 + GridTable1LightAccent3 + GridTable1LightAccent4 + GridTable1LightAccent5 + GridTable1LightAccent6 + GridTable2 + GridTable2Accent1 + GridTable2Accent2 + GridTable2Accent3 + GridTable2Accent4 + GridTable2Accent5 + GridTable2Accent6 + GridTable3 + GridTable3Accent1 + GridTable3Accent2 + GridTable3Accent3 + GridTable3Accent4 + GridTable3Accent5 + GridTable3Accent6 + GridTable4 + GridTable4Accent1 + GridTable4Accent2 + GridTable4Accent3 + GridTable4Accent4 + GridTable4Accent5 + GridTable4Accent6 + GridTable5Dark + GridTable5DarkAccent1 + GridTable5DarkAccent2 + GridTable5DarkAccent3 + GridTable5DarkAccent4 + GridTable5DarkAccent5 + GridTable5DarkAccent6 + GridTable6Colorful + GridTable6ColorfulAccent1 + GridTable6ColorfulAccent2 + GridTable6ColorfulAccent3 + GridTable6ColorfulAccent4 + GridTable6ColorfulAccent5 + GridTable6ColorfulAccent6 + GridTable7Colorful + GridTable7ColorfulAccent1 + GridTable7ColorfulAccent2 + GridTable7ColorfulAccent3 + GridTable7ColorfulAccent4 + GridTable7ColorfulAccent5 + GridTable7ColorfulAccent6 + ListTable1Light + ListTable1LightAccent1 + ListTable1LightAccent2 + ListTable1LightAccent3 + ListTable1LightAccent4 + ListTable1LightAccent5 + ListTable1LightAccent6 + ListTable2 + ListTable2Accent1 + ListTable2Accent2 + ListTable2Accent3 + ListTable2Accent4 + ListTable2Accent5 + ListTable2Accent6 + ListTable3 + ListTable3Accent1 + ListTable3Accent2 + ListTable3Accent3 + ListTable3Accent4 + ListTable3Accent5 + ListTable3Accent6 + ListTable4 + ListTable4Accent1 + ListTable4Accent2 + ListTable4Accent3 + ListTable4Accent4 + ListTable4Accent5 + ListTable4Accent6 + ListTable5Dark + ListTable5DarkAccent1 + ListTable5DarkAccent2 + ListTable5DarkAccent3 + ListTable5DarkAccent4 + ListTable5DarkAccent5 + ListTable5DarkAccent6 + ListTable6Colorful + ListTable6ColorfulAccent1 + ListTable6ColorfulAccent2 + ListTable6ColorfulAccent3 + ListTable6ColorfulAccent4 + ListTable6ColorfulAccent5 + ListTable6ColorfulAccent6 + ListTable7Colorful + ListTable7ColorfulAccent1 + ListTable7ColorfulAccent2 + ListTable7ColorfulAccent3 + ListTable7ColorfulAccent4 + ListTable7ColorfulAccent5 + ListTable7ColorfulAccent6 + + + WordTableStyle + + + None + + + UseSharedPageReadingOrder + + Use the crop-, rotation-, and column-aware reading order. + + SwitchParameter + + SwitchParameter + + + None + + + + + + None + + + + + + + OfficeIMO.Word.Pdf.PdfWordImportOptions + + + + + + + + + + + Reconstruct headings, paragraphs, lists, and tables. + + PS> + + $options = New-OfficePdfWordImportOptions -ImportHeadings -ImportParagraphs -ImportLists -ImportTables + ConvertTo-OfficePdfWord -Path .\Source.pdf -OutputPath .\Rebuilt.docx -Options $options + + + + + + + + + + New-OfficePowerPoint + New + OfficePowerPoint + + Creates a PowerPoint presentation using the DSL. + + + + Initializes a presentation, runs the DSL script block, and optionally saves the deck. + + + + New-OfficePowerPoint + + Content + + DSL scriptblock describing presentation content. + + ScriptBlock + + ScriptBlock + + + None + + + NoSave + + Skip saving after executing the DSL. + + SwitchParameter + + SwitchParameter + + + None + + + Open + + Open the presentation after saving. + + SwitchParameter + + SwitchParameter + + + None + + + PassThru + + Emit the saved FileInfo for chaining. + + SwitchParameter + + SwitchParameter + + + None + + + Password + + Password used to save the presentation as an encrypted package. + + String + + String + + + None + + + Path + + Destination path for the new .pptx. + + String + + String + + + None + + + + + + Content + + DSL scriptblock describing presentation content. + + ScriptBlock + + ScriptBlock + + + None + + + NoSave + + Skip saving after executing the DSL. + + SwitchParameter + + SwitchParameter + + + None + + + Open + + Open the presentation after saving. + + SwitchParameter + + SwitchParameter + + + None + + + PassThru + + Emit the saved FileInfo for chaining. + + SwitchParameter + + SwitchParameter + + + None + + + Password + + Password used to save the presentation as an encrypted package. + + String + + String + + + None + + + Path + + Destination path for the new .pptx. + + String + + String + + + None + + + + + + None + + + + + + + + + + + + Create and capture the presentation object. + + PS> + + $ppt = New-OfficePowerPoint -Path .\deck.pptx -NoSave + + Creates a live presentation associated with deck.pptx for incremental composition. + + + + Create a deck with a title slide. + + PS> + + New-OfficePowerPoint -Path .\deck.pptx { PptSlide { PptTitle -Title 'Status Update' } } -Open + + Creates, saves, and opens a deck with one titled slide. + + + + + + + + New-OfficePowerPointDeckPlan + New + OfficePowerPointDeckPlan + + Creates a semantic PowerPoint deck plan for designer rendering. + + + + Creates a semantic PowerPoint deck plan for designer rendering. + + + + New-OfficePowerPointDeckPlan + + Content - Request PDF viewers to display the document title instead of the file name. + Nested deck-plan DSL content. - SwitchParameter + ScriptBlock - SwitchParameter + ScriptBlock None + + + + + Content + + Nested deck-plan DSL content. + + ScriptBlock + + ScriptBlock + + + None + + + + + + None + + + + + + + OfficeIMO.PowerPoint.PowerPointDeckPlan + + + + + + + + + + + Create a semantic service brief plan. + + PS> + + $plan = New-OfficePowerPointDeckPlan { + Add-OfficePowerPointPlanSection -Title 'Service Review' -Subtitle 'Monthly operating brief' + Add-OfficePowerPointPlanProcess -Title 'Operating rhythm' -Steps @( + @{ Title = 'Collect'; Body = 'Gather health signals' } + @{ Title = 'Review'; Body = 'Confirm owner decisions' } + @{ Title = 'Publish'; Body = 'Share the final brief' } + ) + } + New-OfficePowerPoint -Path .\Examples\Documents\DesignerDeck.pptx { + Add-OfficePowerPointDesignerDeck -Plan $plan + } + + Builds a deck plan and renders it through the OfficeIMO designer helpers. + + + + + + + + New-OfficePowerPointImageOptions + New + OfficePowerPointImageOptions + + Creates discoverable slide selection and rendering settings for Export-OfficePowerPointImage. + + + + Creates discoverable slide selection and rendering settings for Export-OfficePowerPointImage. + + + + New-OfficePowerPointImageOptions - FileVersion + BackgroundColor - PDF file header version emitted by OfficeIMO.Pdf. + - PdfFileVersion - - Pdf14 - Pdf15 - Pdf16 - Pdf17 - Pdf20 - + String - PdfFileVersion + String None - FitWindow + IncludeAutoShapes - Request PDF viewers to fit the document window to the first displayed page. + Render auto shapes. SwitchParameter @@ -138749,9 +149204,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - FlattenVisualAnnotations + IncludeCharts - Flatten generated FreeText and Highlight annotations into static page content. + Render charts. SwitchParameter @@ -138761,21 +149216,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - FontFamily - - Embedded TrueType font family name for generated text. - - String - - String - - - None - - - HideMenubar + IncludeHiddenShapes - Request PDF viewers to hide the menu bar. + Render hidden shapes. SwitchParameter @@ -138785,9 +149228,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - HideToolbar + IncludeHiddenSlides - Request PDF viewers to hide the toolbar. + Include hidden slides. SwitchParameter @@ -138797,9 +149240,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - HideWindowUI + IncludePictures - Request PDF viewers to hide user-interface elements. + Render pictures. SwitchParameter @@ -138809,9 +149252,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludePageLabels + IncludeSlideBackground - Emit generated catalog page labels. + Render slide backgrounds. SwitchParameter @@ -138821,21 +149264,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - ItalicFontPath + IncludeSlideContent - Optional italic TrueType font path used when -FontFamily is provided. + Render slide content. - String + SwitchParameter - String + SwitchParameter None - NoSave + IncludeTables - Skip saving even when -Path is provided. + Render tables. SwitchParameter @@ -138844,10 +149287,10 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Open + + IncludeTextBoxes - Open the PDF after saving. + Render text boxes. SwitchParameter @@ -138857,31 +149300,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - OpenActionMode + MaximumDegreeOfParallelism - Open-action destination mode. + - PdfOpenActionDestinationMode - - Xyz - Fit - FitHorizontal - FitVertical - FitRectangle - FitBoundingBox - FitBoundingBoxHorizontal - FitBoundingBoxVertical - + Int32 - PdfOpenActionDestinationMode + Int32 None - OpenActionPage + MaximumOutputCount - Initial one-based page shown by PDF viewers that honor open actions. + Int32 @@ -138891,21 +149324,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - OpenActionTop + MaximumOutputHeight - Optional open-action top coordinate. + - Double + Int32 - Double + Int32 None - OutlineExpansionLevel + MaximumOutputWidth - Initial outline expansion level when heading outlines are created. + Int32 @@ -138915,131 +149348,113 @@ Use -NoSave or omit -Path when a document object should be returned for further None - OwnerPassword + MaximumRasterPixels - Optional owner password for the generated encrypted PDF. + - String + Int64 - String + Int64 None - PageLabelPrefix + MaximumTotalEncodedBytes - Optional generated page-label prefix. + - String + Int64 - String + Int64 None - PageLayout + MaximumTotalRasterPixels - Catalog page layout hint emitted for generated PDFs. + - PdfCatalogPageLayout - - SinglePage - OneColumn - TwoColumnLeft - TwoColumnRight - TwoPageLeft - TwoPageRight - + Int64 - PdfCatalogPageLayout + Int64 None - PageMode + RasterOverflowBehavior - Catalog page mode hint emitted for generated PDFs. + - PdfCatalogPageMode + OfficeRasterOverflowBehavior - UseNone - UseOutlines - UseThumbs - FullScreen - UseOC - UseAttachments + ReduceScale + Throw - PdfCatalogPageMode + OfficeRasterOverflowBehavior None - PassThru + RenderTimeoutSeconds - Emit the generated document or saved file for chaining. + - SwitchParameter + Double - SwitchParameter + Double None - - Password + + Scale - Password required to open the generated PDF. + - String + Double - String + Double None - - Permission + + SlideNumber - Raw PDF Standard security permission bit mask. Defaults to allowing all standard operations. + One-based slide numbers to export. - Int32 + Int32[] - Int32 + Int32[] None - - RegularFontPath + + TargetDpi - Regular TrueType font path used when -FontFamily is provided. + - String + Double - String + Double None - Theme + TextShapingLanguage - Built-in OfficeIMO.Pdf theme applied before the DSL content runs. + - OfficePdfThemePreset - - WordLike - TechnicalDocument - Compact - Report - + String - OfficePdfThemePreset + String None @@ -139048,21 +149463,9 @@ Use -NoSave or omit -Path when a document object should be returned for further - BoldFontPath - - Optional bold TrueType font path used when -FontFamily is provided. - - String - - String - - - None - - - BoldItalicFontPath + BackgroundColor - Optional bold italic TrueType font path used when -FontFamily is provided. + String @@ -139072,33 +149475,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - CenterWindow - - Request PDF viewers to center the document window on screen. - - SwitchParameter - - SwitchParameter - - - None - - - Content - - DSL script block describing generated PDF content. - - ScriptBlock - - ScriptBlock - - - None - - - CreateOutlineFromHeadings + IncludeAutoShapes - Create PDF outline/bookmark entries from heading elements. + Render auto shapes. SwitchParameter @@ -139108,47 +149487,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - DefaultFont - - Default standard PDF font for generated text. - - PdfStandardFont - - Helvetica - HelveticaOblique - HelveticaBold - HelveticaBoldOblique - TimesRoman - TimesItalic - TimesBold - TimesBoldItalic - Courier - CourierOblique - CourierBold - CourierBoldOblique - - - PdfStandardFont - - - None - - - DefaultFontSize - - Default generated text font size in points. - - Double - - Double - - - None - - - DisplayDocTitle + IncludeCharts - Request PDF viewers to display the document title instead of the file name. + Render charts. SwitchParameter @@ -139158,28 +149499,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - FileVersion - - PDF file header version emitted by OfficeIMO.Pdf. - - PdfFileVersion - - Pdf14 - Pdf15 - Pdf16 - Pdf17 - Pdf20 - - - PdfFileVersion - - - None - - - FitWindow + IncludeHiddenShapes - Request PDF viewers to fit the document window to the first displayed page. + Render hidden shapes. SwitchParameter @@ -139189,9 +149511,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - FlattenVisualAnnotations + IncludeHiddenSlides - Flatten generated FreeText and Highlight annotations into static page content. + Include hidden slides. SwitchParameter @@ -139201,21 +149523,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - FontFamily - - Embedded TrueType font family name for generated text. - - String - - String - - - None - - - HideMenubar + IncludePictures - Request PDF viewers to hide the menu bar. + Render pictures. SwitchParameter @@ -139225,9 +149535,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - HideToolbar + IncludeSlideBackground - Request PDF viewers to hide the toolbar. + Render slide backgrounds. SwitchParameter @@ -139237,9 +149547,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - HideWindowUI + IncludeSlideContent - Request PDF viewers to hide user-interface elements. + Render slide content. SwitchParameter @@ -139249,9 +149559,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludePageLabels + IncludeTables - Emit generated catalog page labels. + Render tables. SwitchParameter @@ -139261,33 +149571,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - ItalicFontPath - - Optional italic TrueType font path used when -FontFamily is provided. - - String - - String - - - None - - - NoSave - - Skip saving even when -Path is provided. - - SwitchParameter - - SwitchParameter - - - None - - - Open + IncludeTextBoxes - Open the PDF after saving. + Render text boxes. SwitchParameter @@ -139297,31 +149583,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - OpenActionMode + MaximumDegreeOfParallelism - Open-action destination mode. + - PdfOpenActionDestinationMode - - Xyz - Fit - FitHorizontal - FitVertical - FitRectangle - FitBoundingBox - FitBoundingBoxHorizontal - FitBoundingBoxVertical - + Int32 - PdfOpenActionDestinationMode + Int32 None - OpenActionPage + MaximumOutputCount - Initial one-based page shown by PDF viewers that honor open actions. + Int32 @@ -139331,21 +149607,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - OpenActionTop + MaximumOutputHeight - Optional open-action top coordinate. + - Double + Int32 - Double + Int32 None - OutlineExpansionLevel + MaximumOutputWidth - Initial outline expansion level when heading outlines are created. + Int32 @@ -139355,121 +149631,109 @@ Use -NoSave or omit -Path when a document object should be returned for further None - OwnerPassword + MaximumRasterPixels - Optional owner password for the generated encrypted PDF. + - String + Int64 - String + Int64 None - PageLabelPrefix + MaximumTotalEncodedBytes - Optional generated page-label prefix. + - String + Int64 - String + Int64 None - PageLayout + MaximumTotalRasterPixels - Catalog page layout hint emitted for generated PDFs. + - PdfCatalogPageLayout - - SinglePage - OneColumn - TwoColumnLeft - TwoColumnRight - TwoPageLeft - TwoPageRight - + Int64 - PdfCatalogPageLayout + Int64 None - PageMode + RasterOverflowBehavior - Catalog page mode hint emitted for generated PDFs. + - PdfCatalogPageMode + OfficeRasterOverflowBehavior - UseNone - UseOutlines - UseThumbs - FullScreen - UseOC - UseAttachments + ReduceScale + Throw - PdfCatalogPageMode + OfficeRasterOverflowBehavior None - PassThru + RenderTimeoutSeconds - Emit the generated document or saved file for chaining. + - SwitchParameter + Double - SwitchParameter + Double None - - Password + + Scale - Password required to open the generated PDF. + - String + Double - String + Double None - - Path + + SlideNumber - Optional destination PDF path. + One-based slide numbers to export. - String + Int32[] - String + Int32[] None - - Permission + + TargetDpi - Raw PDF Standard security permission bit mask. Defaults to allowing all standard operations. + - Int32 + Double - Int32 + Double None - - RegularFontPath + + TextShapingLanguage - Regular TrueType font path used when -FontFamily is provided. + String @@ -139478,24 +149742,6 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Theme - - Built-in OfficeIMO.Pdf theme applied before the DSL content runs. - - OfficePdfThemePreset - - WordLike - TechnicalDocument - Compact - Report - - - OfficePdfThemePreset - - - None - @@ -139507,12 +149753,7 @@ Use -NoSave or omit -Path when a document object should be returned for further - OfficeIMO.Pdf.PdfDocument - - - - - System.IO.FileInfo + OfficeIMO.PowerPoint.PowerPointPresentationImageExportOptions @@ -139523,39 +149764,14 @@ Use -NoSave or omit -Path when a document object should be returned for further - Create a PDF report. - - PS> - - New-OfficePdf -Path .\Report.pdf { PdfHeading 'Report'; PdfParagraph 'Generated by PSWriteOffice' } -Open - - Builds a PDF and opens it after saving. - - - - Create a polished report with theme, metadata, and layout. + Render selected slides with their backgrounds and content. PS> - New-OfficePdf -Path .\ServiceReview.pdf { - PdfTheme Report - PdfMetadata -Title 'Service Review' -Author 'PSWriteOffice' - PdfPageSetup -PageSize A4 -Margin 42 - PdfHeader 'Service Review' - PdfFooter 'Page {page}/{pages}' - PdfHeading 'Service Review' - PdfText -Run @( - @{ Text = 'Generated with ' } - @{ Text = 'rich inline text'; Bold = $true; Color = '#0F766E' } - @{ Text = ' and OfficeIMO.Pdf layout.' } - ) - PdfRow -Column @( - @{ Width = 40; Content = @(@{ Type = 'Panel'; Text = 'Left summary' }) } - @{ Width = 60; Content = @(@{ Type = 'Paragraph'; Text = 'Right details' }) } - ) - } + $options = New-OfficePowerPointImageOptions -SlideNumber 1,3 -IncludeSlideBackground -IncludeSlideContent + Export-OfficePowerPointImage -Path .\Deck.pptx -OutputPath .\Slides -Options $options - Shows the preferred high-level PDF report authoring shape. + @@ -139563,59 +149779,23 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficePdfSignature + New-OfficePowerPointOpenDocumentOptions New - OfficePdfSignature + OfficePowerPointOpenDocumentOptions - Prepares an existing PDF for external digital signing by appending a signature field, /ByteRange, and reserved /Contents placeholder. + Creates PowerPoint/OpenDocument conversion settings. - The command does not create CMS, CAdES, timestamp, certificate-chain, or revocation data. Use the returned byte range or digest with an external signing service, then inject the produced signature bytes with Set-OfficePdfSignature. + Creates PowerPoint/OpenDocument conversion settings. - New-OfficePdfSignature + New-OfficePowerPointOpenDocumentOptions - ContactInfo - - Signer contact information stored in the signature dictionary. - - String - - String - - - None - - - FieldName - - Signature field name to append. - - String - - String - - - None - - - Filter - - Signature handler filter name. The default is Adobe.PPKLite. - - String - - String - - - None - - - IgnorePermissionRestrictions + IncludeBasicFormatting - After successful password authentication, explicitly ignore owner-imposed signature-field restrictions. + Copy common fills, outlines, and text-run formatting. SwitchParameter @@ -139625,45 +149805,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Location - - Signing location stored in the signature dictionary. - - String - - String - - - None - - - Name - - Display signer name stored in the signature dictionary. - - String - - String - - - None - - - OutputPath - - Output prepared PDF path. - - String - - String - - - None - - - PassThruReport + IncludeImages - Return the OfficeIMO.Pdf preparation report instead of only the output file. + Copy supported embedded images. SwitchParameter @@ -139673,45 +149817,38 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Password - - Password used to authenticate an encrypted PDF. - - String - - String - - - None - - - Path + IncludeSpeakerNotes - Input PDF path. + Copy plain speaker-note text. - String + SwitchParameter - String + SwitchParameter None - Reason + LossPolicy - Signing reason stored in the signature dictionary. + Whether conversion loss is reported or rejected. - String + OdfConversionLossPolicy + + ReportOnly + ThrowOnSkippedOrUnsupported + ThrowOnAnyLoss + - String + OdfConversionLossPolicy None - ReservedBytes + MaxTableColumns - Raw signature bytes to reserve in /Contents before hex encoding. + Maximum columns in converted presentation tables. Int32 @@ -139721,18 +149858,13 @@ Use -NoSave or omit -Path when a document object should be returned for further None - SubFilter + MaxTableRows - Signature subfilter that describes the external signature bytes to inject later. + Maximum rows in converted presentation tables. - PdfExternalSignatureSubFilter - - DetachedCms - CadesDetached - DocumentTimestamp - + Int32 - PdfExternalSignatureSubFilter + Int32 None @@ -139741,45 +149873,9 @@ Use -NoSave or omit -Path when a document object should be returned for further - ContactInfo - - Signer contact information stored in the signature dictionary. - - String - - String - - - None - - - FieldName - - Signature field name to append. - - String - - String - - - None - - - Filter - - Signature handler filter name. The default is Adobe.PPKLite. - - String - - String - - - None - - - IgnorePermissionRestrictions + IncludeBasicFormatting - After successful password authentication, explicitly ignore owner-imposed signature-field restrictions. + Copy common fills, outlines, and text-run formatting. SwitchParameter @@ -139789,45 +149885,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Location - - Signing location stored in the signature dictionary. - - String - - String - - - None - - - Name - - Display signer name stored in the signature dictionary. - - String - - String - - - None - - - OutputPath - - Output prepared PDF path. - - String - - String - - - None - - - PassThruReport + IncludeImages - Return the OfficeIMO.Pdf preparation report instead of only the output file. + Copy supported embedded images. SwitchParameter @@ -139837,45 +149897,38 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Password - - Password used to authenticate an encrypted PDF. - - String - - String - - - None - - - Path + IncludeSpeakerNotes - Input PDF path. + Copy plain speaker-note text. - String + SwitchParameter - String + SwitchParameter None - Reason + LossPolicy - Signing reason stored in the signature dictionary. + Whether conversion loss is reported or rejected. - String + OdfConversionLossPolicy + + ReportOnly + ThrowOnSkippedOrUnsupported + ThrowOnAnyLoss + - String + OdfConversionLossPolicy None - ReservedBytes + MaxTableColumns - Raw signature bytes to reserve in /Contents before hex encoding. + Maximum columns in converted presentation tables. Int32 @@ -139885,18 +149938,13 @@ Use -NoSave or omit -Path when a document object should be returned for further None - SubFilter + MaxTableRows - Signature subfilter that describes the external signature bytes to inject later. + Maximum rows in converted presentation tables. - PdfExternalSignatureSubFilter - - DetachedCms - CadesDetached - DocumentTimestamp - + Int32 - PdfExternalSignatureSubFilter + Int32 None @@ -139905,19 +149953,14 @@ Use -NoSave or omit -Path when a document object should be returned for further - System.String + None - System.IO.FileInfo - - - - - OfficeIMO.Pdf.PdfExternalSignaturePreparation + OfficeIMO.PowerPoint.OpenDocument.PowerPointOpenDocumentConversionOptions @@ -139928,15 +149971,14 @@ Use -NoSave or omit -Path when a document object should be returned for further - Prepare a PDF for detached CMS signing. + Include slide images, notes, and basic formatting. PS> - $plan = New-OfficePdfSignature -Path .\Input.pdf -OutputPath .\Prepared.pdf -FieldName Approval -Name 'Alice' -Reason Approval -PassThruReport - $plan.ByteRangeValues - $plan.ComputeSha256Digest() + $options = New-OfficePowerPointOpenDocumentOptions -IncludeImages -IncludeSpeakerNotes -IncludeBasicFormatting + ConvertTo-OfficeOpenDocument -Path .\Deck.pptx -OutputPath .\Deck.odp -PowerPointOptions $options - Writes a prepared PDF and returns the OfficeIMO.Pdf external signing preparation report. + @@ -139944,40 +149986,35 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficePdfTableCell + New-OfficePowerPointPdfOptions New - OfficePdfTableCell + OfficePowerPointPdfOptions - Creates a reusable PDF table cell definition for explicit table rows. + Creates discoverable PowerPoint-to-PDF conversion options for Export-OfficeDocumentPdf. - Creates a reusable PDF table cell definition for explicit table rows. + Creates discoverable PowerPoint-to-PDF conversion options for Export-OfficeDocumentPdf. - New-OfficePdfTableCell + New-OfficePowerPointPdfOptions - Align + AllowDocumentFontEmbedding - Horizontal cell alignment. + Allow embedding fonts stored in the presentation. - PdfColumnAlign - - Left - Center - Right - + SwitchParameter - PdfColumnAlign + SwitchParameter None - Bold + AllowSystemFontEmbedding - Render the cell text in bold. + Allow embedding fonts discovered on the current system. SwitchParameter @@ -139986,34 +150023,34 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - CheckBox + + ChartLayout - Typed check boxes rendered inside the cell. + Chart layout override. - PdfTableCellCheckBox[] + OfficeChartLayout - PdfTableCellCheckBox[] + OfficeChartLayout None - ColumnSpan + ChartStyle - Number of logical columns covered by the cell. + Chart visual style override. - Int32 + OfficeChartStyle - Int32 + OfficeChartStyle None - - FillColor + + FontFamily - Cell fill color. Named colors and hexadecimal colors are accepted. + Default font family used when the presentation does not specify one. String @@ -140023,45 +150060,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - FontSize - - Cell font size in PDF points. - - Double - - Double - - - None - - - FormField - - Typed text or choice form fields rendered inside the cell. - - PdfTableCellFormField[] - - PdfTableCellFormField[] - - - None - - - Image + HandoutSlidesPerPage - Typed images rendered inside the cell. + Number of slides on each handout page. - PdfTableCellImage[] + Int32 - PdfTableCellImage[] + Int32 None - Italic + IncludeAutoShapes - Render the cell text in italics. + Render automatic shapes. SwitchParameter @@ -140071,57 +150084,57 @@ Use -NoSave or omit -Path when a document object should be returned for further None - LinkContents + IncludeCharts - Accessible annotation text for the cell link. + Render charts. - String + SwitchParameter - String + SwitchParameter None - LinkDestinationName + IncludeHiddenSlides - Named PDF destination linked from the cell. + Include slides marked hidden. - String + SwitchParameter - String + SwitchParameter None - LinkUri + IncludePictures - Absolute or catalog-base-relative URI linked from the cell. + Render pictures. - String + SwitchParameter - String + SwitchParameter None - NamedDestinationName + IncludeSlideBackgrounds - Named PDF destination defined at this cell. + Render slide backgrounds. - String + SwitchParameter - String + SwitchParameter None - NoWrap + IncludeSmartArt - Keep the cell content on one visual line. + Render SmartArt. SwitchParameter @@ -140131,33 +150144,33 @@ Use -NoSave or omit -Path when a document object should be returned for further None - RowSpan + IncludeSpeakerNotes - Number of logical rows covered by the cell. + Include speaker notes. - Int32 + SwitchParameter - Int32 + SwitchParameter None - - Run + + IncludeTables - Rich text runs for the cell. Each run can be created with TextRun/PdfTextRun or provided as a hashtable/object. + Render tables. - Object[] + SwitchParameter - Object[] + SwitchParameter None - Strike + IncludeTextBoxes - Render the cell text with strikethrough. + Render text boxes. SwitchParameter @@ -140166,67 +150179,72 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Text + + MaxGroupShapeDepth - Cell text. + Maximum nested group-shape depth to render. - String + Int32 - String + Int32 None - - TextColor + + PageLayout - Cell text color. Named colors and hexadecimal colors are accepted. + PDF page layout, such as slides, notes, or handouts. - String + PowerPointPdfPageLayout + + Slides + NotesPages + Handouts + - String + PowerPointPdfPageLayout None - Underline + PdfOptions - Render the cell text with underline. + Underlying low-level OfficeIMO PDF options. - SwitchParameter + PdfOptions - SwitchParameter + PdfOptions None - UnderlineStyle + PictureFit - Optional underline style name. PDF table rendering treats any supported value as underline. + How pictures fit their shape bounds. - String + OfficeImageFit + + Stretch + Contain + Cover + - String + OfficeImageFit None - VerticalAlign + WarnOnPictureAspectRatioDistortion - Vertical cell alignment. + Report pictures whose requested fit distorts their aspect ratio. - PdfCellVerticalAlign - - Top - Middle - Bottom - + SwitchParameter - PdfCellVerticalAlign + SwitchParameter None @@ -140235,26 +150253,21 @@ Use -NoSave or omit -Path when a document object should be returned for further - Align + AllowDocumentFontEmbedding - Horizontal cell alignment. + Allow embedding fonts stored in the presentation. - PdfColumnAlign - - Left - Center - Right - + SwitchParameter - PdfColumnAlign + SwitchParameter None - Bold + AllowSystemFontEmbedding - Render the cell text in bold. + Allow embedding fonts discovered on the current system. SwitchParameter @@ -140263,34 +150276,34 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - CheckBox + + ChartLayout - Typed check boxes rendered inside the cell. + Chart layout override. - PdfTableCellCheckBox[] + OfficeChartLayout - PdfTableCellCheckBox[] + OfficeChartLayout None - ColumnSpan + ChartStyle - Number of logical columns covered by the cell. + Chart visual style override. - Int32 + OfficeChartStyle - Int32 + OfficeChartStyle None - - FillColor + + FontFamily - Cell fill color. Named colors and hexadecimal colors are accepted. + Default font family used when the presentation does not specify one. String @@ -140300,45 +150313,45 @@ Use -NoSave or omit -Path when a document object should be returned for further None - FontSize + HandoutSlidesPerPage - Cell font size in PDF points. + Number of slides on each handout page. - Double + Int32 - Double + Int32 None - - FormField + + IncludeAutoShapes - Typed text or choice form fields rendered inside the cell. + Render automatic shapes. - PdfTableCellFormField[] + SwitchParameter - PdfTableCellFormField[] + SwitchParameter None - - Image + + IncludeCharts - Typed images rendered inside the cell. + Render charts. - PdfTableCellImage[] + SwitchParameter - PdfTableCellImage[] + SwitchParameter None - Italic + IncludeHiddenSlides - Render the cell text in italics. + Include slides marked hidden. SwitchParameter @@ -140348,57 +150361,57 @@ Use -NoSave or omit -Path when a document object should be returned for further None - LinkContents + IncludePictures - Accessible annotation text for the cell link. + Render pictures. - String + SwitchParameter - String + SwitchParameter None - LinkDestinationName + IncludeSlideBackgrounds - Named PDF destination linked from the cell. + Render slide backgrounds. - String + SwitchParameter - String + SwitchParameter None - LinkUri + IncludeSmartArt - Absolute or catalog-base-relative URI linked from the cell. + Render SmartArt. - String + SwitchParameter - String + SwitchParameter None - NamedDestinationName + IncludeSpeakerNotes - Named PDF destination defined at this cell. + Include speaker notes. - String + SwitchParameter - String + SwitchParameter None - NoWrap + IncludeTables - Keep the cell content on one visual line. + Render tables. SwitchParameter @@ -140408,9 +150421,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - RowSpan + IncludeTextBoxes - Number of logical rows covered by the cell. + Render text boxes. + + SwitchParameter + + SwitchParameter + + + None + + + MaxGroupShapeDepth + + Maximum nested group-shape depth to render. Int32 @@ -140419,58 +150444,217 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Run + + PageLayout - Rich text runs for the cell. Each run can be created with TextRun/PdfTextRun or provided as a hashtable/object. + PDF page layout, such as slides, notes, or handouts. - Object[] + PowerPointPdfPageLayout + + Slides + NotesPages + Handouts + - Object[] + PowerPointPdfPageLayout None - Strike + PdfOptions - Render the cell text with strikethrough. + Underlying low-level OfficeIMO PDF options. - SwitchParameter + PdfOptions - SwitchParameter + PdfOptions None - - Text + + PictureFit - Cell text. + How pictures fit their shape bounds. - String + OfficeImageFit + + Stretch + Contain + Cover + - String + OfficeImageFit None - - TextColor + + WarnOnPictureAspectRatioDistortion - Cell text color. Named colors and hexadecimal colors are accepted. + Report pictures whose requested fit distorts their aspect ratio. - String + SwitchParameter - String + SwitchParameter None + + + + + None + + + + + + + OfficeIMO.PowerPoint.Pdf.PowerPointPdfSaveOptions + + + + + + + + + + + Create a handout PDF with notes and hidden slides. + + PS> + + $options = New-OfficePowerPointPdfOptions -PageLayout Handouts -HandoutSlidesPerPage 3 -IncludeSpeakerNotes -IncludeHiddenSlides + Export-OfficeDocumentPdf -InputPath .\Briefing.pptx -Path .\Briefing.pdf -PowerPointOptions $options + + + + + + + + + + New-OfficeReaderHierarchyOptions + New + OfficeReaderHierarchyOptions + + Creates discoverable token and hierarchy settings for Get-OfficeDocumentHierarchy. + + + + Creates discoverable token and hierarchy settings for Get-OfficeDocumentHierarchy. + + + + New-OfficeReaderHierarchyOptions + + IncludeContextInText + + Include hierarchy context in chunk text. + + SwitchParameter + + SwitchParameter + + + None + + + MaxContextCharacters + + Maximum heading-context characters retained. + + Int32 + + Int32 + + + None + + + MaxHierarchyDepth + + Maximum heading hierarchy depth. + + Int32 + + Int32 + + + None + + + MaxInputChunks + + Maximum source chunks accepted. + + Int32 + + Int32 + + + None + + + MaxOutputChunks + + Maximum chunks returned. + + Int32 + + Int32 + + + None + + + MaxTokens + + Maximum tokens per output chunk. + + Int32 + + Int32 + + + None + + + OverlapTokens + + Tokens repeated between adjacent chunks. + + Int32 + + Int32 + + + None + + + PreferMarkdown + + Prefer Markdown text where the reader supports it. + + SwitchParameter + + SwitchParameter + + + None + + + + - Underline + IncludeContextInText - Render the cell text with underline. + Include hierarchy context in chunk text. SwitchParameter @@ -140480,30 +150664,85 @@ Use -NoSave or omit -Path when a document object should be returned for further None - UnderlineStyle + MaxContextCharacters - Optional underline style name. PDF table rendering treats any supported value as underline. + Maximum heading-context characters retained. - String + Int32 - String + Int32 None - VerticalAlign + MaxHierarchyDepth - Vertical cell alignment. + Maximum heading hierarchy depth. - PdfCellVerticalAlign - - Top - Middle - Bottom - + Int32 - PdfCellVerticalAlign + Int32 + + + None + + + MaxInputChunks + + Maximum source chunks accepted. + + Int32 + + Int32 + + + None + + + MaxOutputChunks + + Maximum chunks returned. + + Int32 + + Int32 + + + None + + + MaxTokens + + Maximum tokens per output chunk. + + Int32 + + Int32 + + + None + + + OverlapTokens + + Tokens repeated between adjacent chunks. + + Int32 + + Int32 + + + None + + + PreferMarkdown + + Prefer Markdown text where the reader supports it. + + SwitchParameter + + SwitchParameter None @@ -140519,11 +150758,8 @@ Use -NoSave or omit -Path when a document object should be returned for further - PSWriteOffice.Services.Table.OfficeTableCellSpec + OfficeIMO.Reader.ReaderHierarchicalChunkingOptions - - Describes a logical table cell that can be rendered by multiple Office table surfaces. - @@ -140533,13 +150769,14 @@ Use -NoSave or omit -Path when a document object should be returned for further - Create a full-width PDF table section row. + Create embedding-ready chunks. PS> - $row = @(New-OfficePdfTableCell -Text 'Identity systems' -ColumnSpan 3 -FillColor '#DBEAFE' -TextColor '#1E3A8A' -Bold) + $options = New-OfficeReaderHierarchyOptions -MaxTokens 500 -OverlapTokens 50 -IncludeContextInText + Get-OfficeDocumentHierarchy -Path .\handbook.pdf -ChunkingOptions $options - The returned cell can be passed to PdfTable inside explicit row arrays. + @@ -140547,23 +150784,23 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficePdfTableCellCheckBox + New-OfficeRtf New - OfficePdfTableCellCheckBox + OfficeRtf - Creates a typed check box for a PDF table cell. + Creates an RTF document with plain paragraph content. - Creates a typed check box for a PDF table cell. + Creates an RTF document with plain paragraph content. - New-OfficePdfTableCellCheckBox + New-OfficeRtf - Checked + NoSave - Create the check box in its checked state. + Return the OfficeIMO RTF document without saving. SwitchParameter @@ -140573,21 +150810,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - CheckedValueName + PassThru - PDF appearance-state name written when checked. + Emit a FileInfo for chaining. - String + SwitchParameter - String + SwitchParameter None - - Name + + Path - Unique AcroForm field name. + Destination path for the RTF file. String @@ -140596,14 +150833,14 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Size + + Text - Visual square size in PDF points. + Plain paragraph text to add to the document. - Double + String[] - Double + String[] None @@ -140612,9 +150849,9 @@ Use -NoSave or omit -Path when a document object should be returned for further - Checked + NoSave - Create the check box in its checked state. + Return the OfficeIMO RTF document without saving. SwitchParameter @@ -140624,21 +150861,21 @@ Use -NoSave or omit -Path when a document object should be returned for further None - CheckedValueName + PassThru - PDF appearance-state name written when checked. + Emit a FileInfo for chaining. - String + SwitchParameter - String + SwitchParameter None - - Name + + Path - Unique AcroForm field name. + Destination path for the RTF file. String @@ -140647,14 +150884,14 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Size + + Text - Visual square size in PDF points. + Plain paragraph text to add to the document. - Double + String[] - Double + String[] None @@ -140663,14 +150900,19 @@ Use -NoSave or omit -Path when a document object should be returned for further - None + System.String[] - OfficeIMO.Pdf.PdfTableCellCheckBox + System.IO.FileInfo + + + + + OfficeIMO.Rtf.RtfDocument @@ -140681,14 +150923,14 @@ Use -NoSave or omit -Path when a document object should be returned for further - Create a checked table-cell field. + Create a small RTF file. PS> - $approved = New-OfficePdfTableCellCheckBox -Name Approved -Checked - $cell = New-OfficePdfTableCell -Text 'Approved' -CheckBox $approved + $file = New-OfficeRtf -Path .\Report.rtf -Text 'Summary', 'Ready for review' -PassThru + Get-OfficeRtf -Path $file.FullName - The check box remains an AcroForm field positioned by the OfficeIMO table renderer. + Creates an RTF document with two paragraphs and returns the file. @@ -140696,110 +150938,107 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficePdfTableCellField + New-OfficeRtfPdfOptions New - OfficePdfTableCellField + OfficeRtfPdfOptions - Creates a typed text or choice field for a PDF table cell. + Creates discoverable RTF-to-PDF conversion options for Export-OfficeDocumentPdf. - Creates a typed text or choice field for a PDF table cell. + Creates discoverable RTF-to-PDF conversion options for Export-OfficeDocumentPdf. - - New-OfficePdfTableCellField + + New-OfficeRtfPdfOptions - FontSize + AllowDocumentFontEmbedding - Field font size in PDF points. + Allow embedding fonts referenced by the RTF document. - Double + SwitchParameter - Double + SwitchParameter None - Height + AllowSystemFontEmbedding - Rendered field height in PDF points. + Allow embedding fonts discovered on the current system. - Double + SwitchParameter - Double + SwitchParameter None - - Name + + DefaultImageHeight - Unique AcroForm field name. + Fallback image height in PDF points. - String + Double - String + Double None - - Value + + DefaultImageWidth - Initial field value. + Fallback image width in PDF points. - String + Double - String + Double None - Width + IncludeHeaderFooters - Rendered field width in PDF points. + Render headers and footers. - Double + SwitchParameter - Double + SwitchParameter None - - - New-OfficePdfTableCellField - FontSize + IncludeHiddenText - Field font size in PDF points. + Include text marked hidden. - Double + SwitchParameter - Double + SwitchParameter None - Height + IncludeImages - Rendered field height in PDF points. + Render images. - Double + SwitchParameter - Double + SwitchParameter None - ListBox + IncludeMetadata - Render a choice field as a list box instead of a combo box. + Copy document metadata into the PDF. SwitchParameter @@ -140808,50 +151047,50 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Name + + IncludeNotes - Unique AcroForm field name. + Render document notes. - String + SwitchParameter - String + SwitchParameter None - - Option + + IncludeTables - Available values for a choice field. + Render tables. - String[] + SwitchParameter - String[] + SwitchParameter None - - Value + + MaximumSystemFontFamilies - Initial field value. + Maximum number of system font families to discover. - String + Int32 - String + Int32 None - Width + PdfOptions - Rendered field width in PDF points. + Underlying low-level OfficeIMO PDF options. - Double + PdfOptions - Double + PdfOptions None @@ -140860,9 +151099,33 @@ Use -NoSave or omit -Path when a document object should be returned for further - FontSize + AllowDocumentFontEmbedding - Field font size in PDF points. + Allow embedding fonts referenced by the RTF document. + + SwitchParameter + + SwitchParameter + + + None + + + AllowSystemFontEmbedding + + Allow embedding fonts discovered on the current system. + + SwitchParameter + + SwitchParameter + + + None + + + DefaultImageHeight + + Fallback image height in PDF points. Double @@ -140872,9 +151135,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Height + DefaultImageWidth - Rendered field height in PDF points. + Fallback image width in PDF points. Double @@ -140884,9 +151147,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - ListBox + IncludeHeaderFooters - Render a choice field as a list box instead of a combo box. + Render headers and footers. SwitchParameter @@ -140895,50 +151158,86 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Name + + IncludeHiddenText - Unique AcroForm field name. + Include text marked hidden. - String + SwitchParameter - String + SwitchParameter None - - Option + + IncludeImages - Available values for a choice field. + Render images. - String[] + SwitchParameter - String[] + SwitchParameter None - - Value + + IncludeMetadata - Initial field value. + Copy document metadata into the PDF. - String + SwitchParameter - String + SwitchParameter None - Width + IncludeNotes - Rendered field width in PDF points. + Render document notes. - Double + SwitchParameter - Double + SwitchParameter + + + None + + + IncludeTables + + Render tables. + + SwitchParameter + + SwitchParameter + + + None + + + MaximumSystemFontFamilies + + Maximum number of system font families to discover. + + Int32 + + Int32 + + + None + + + PdfOptions + + Underlying low-level OfficeIMO PDF options. + + PdfOptions + + PdfOptions None @@ -140954,7 +151253,7 @@ Use -NoSave or omit -Path when a document object should be returned for further - OfficeIMO.Pdf.PdfTableCellFormField + OfficeIMO.Rtf.Pdf.RtfPdfSaveOptions @@ -140965,14 +151264,14 @@ Use -NoSave or omit -Path when a document object should be returned for further - Create a reviewer choice field for a typed PDF table cell. + Include document structure and bound system-font discovery. PS> - $reviewer = New-OfficePdfTableCellField -Name Reviewer -Option 'Unassigned', 'Alice', 'Bob' -Value 'Unassigned' - $cell = New-OfficePdfTableCell -Text 'Reviewer' -FormField $reviewer + $options = New-OfficeRtfPdfOptions -IncludeImages -IncludeTables -IncludeHeaderFooters -MaximumSystemFontFamilies 32 + Export-OfficeDocumentPdf -InputPath .\Report.rtf -Path .\Report.pdf -RtfOptions $options - The choice field is positioned by the OfficeIMO PDF table renderer. + @@ -140980,25 +151279,85 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficePdfTableCellImage + New-OfficeTextRun New - OfficePdfTableCellImage + OfficeTextRun - Creates a typed image for a PDF table cell. + Creates a reusable rich text run specification for Word, Excel, PowerPoint, and PDF commands. - Creates a typed image for a PDF table cell. + Creates a reusable rich text run specification for Word, Excel, PowerPoint, and PDF commands. - New-OfficePdfTableCellImage - - Height + New-OfficeTextRun + + BackgroundColor - Rendered height in PDF points. + Run background or highlight color. Named colors and hexadecimal colors are accepted. - Double + String + + String + + + None + + + Baseline + + Target-specific baseline name, such as Superscript or Subscript. + + String + + String + + + None + + + Bold + + Render the run in bold. + + SwitchParameter + + SwitchParameter + + + None + + + Color + + Text color. Named colors and hexadecimal colors are accepted. + + String + + String + + + None + + + FontName + + Font name, family, or target-specific font identifier. + + String + + String + + + None + + + FontSize + + Font size in points. + + Double Double @@ -141006,9 +151365,33 @@ Use -NoSave or omit -Path when a document object should be returned for further None + Italic + + Render the run in italics. + + SwitchParameter + + SwitchParameter + + + None + + + Kind + + Run kind such as Text, LineBreak, Tab, Superscript, or Subscript. + + String + + String + + + None + + LinkContents - Accessible annotation text for the image link. + Optional link tooltip or annotation contents. String @@ -141017,10 +151400,22 @@ Use -NoSave or omit -Path when a document object should be returned for further None - + + LinkDestinationName + + Named destination or bookmark target when supported by the target format. + + String + + String + + + None + + LinkUri - Optional absolute or catalog-base-relative URI linked from the image. + URI link target when supported by the target format. String @@ -141029,26 +151424,74 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Path + + Strike - Raster image path. + Render the run with strikethrough. - String + SwitchParameter + + SwitchParameter + + + None + + + TabAlignment + + Tab alignment name. + + String String None - - Width + + TabLeader - Rendered width in PDF points. + PDF tab leader style name. - Double + String - Double + String + + + None + + + Text + + Run text. + + String + + String + + + None + + + Underline + + Render the run with underline. + + SwitchParameter + + SwitchParameter + + + None + + + UnderlineStyle + + Optional underline style name when the target format supports it. + + String + + String None @@ -141056,22 +151499,154 @@ Use -NoSave or omit -Path when a document object should be returned for further - - Height + + BackgroundColor - Rendered height in PDF points. + Run background or highlight color. Named colors and hexadecimal colors are accepted. + + String + + String + + + None + + + Baseline + + Target-specific baseline name, such as Superscript or Subscript. + + String + + String + + + None + + + Bold + + Render the run in bold. + + SwitchParameter + + SwitchParameter + + + None + + + Color + + Text color. Named colors and hexadecimal colors are accepted. + + String + + String + + + None + + + FontName + + Font name, family, or target-specific font identifier. + + String + + String + + + None + + + FontSize + + Font size in points. + + Double + + Double + + + None + + + Italic + + Render the run in italics. + + SwitchParameter + + SwitchParameter + + + None + + + Kind + + Run kind such as Text, LineBreak, Tab, Superscript, or Subscript. + + String + + String + + + None + + + LinkContents + + Optional link tooltip or annotation contents. + + String + + String + + + None + + + LinkDestinationName + + Named destination or bookmark target when supported by the target format. + + String + + String + + + None + + + LinkUri + + URI link target when supported by the target format. + + String + + String + + + None + + + Strike + + Render the run with strikethrough. - Double + SwitchParameter - Double + SwitchParameter None - - LinkContents + + TabAlignment - Accessible annotation text for the image link. + Tab alignment name. String @@ -141080,10 +151655,10 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - LinkUri + + TabLeader - Optional absolute or catalog-base-relative URI linked from the image. + PDF tab leader style name. String @@ -141092,26 +151667,38 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Path + + Text - Raster image path. + Run text. - String + String String None - - Width + + Underline - Rendered width in PDF points. + Render the run with underline. - Double + SwitchParameter - Double + SwitchParameter + + + None + + + UnderlineStyle + + Optional underline style name when the target format supports it. + + String + + String None @@ -141127,8 +151714,11 @@ Use -NoSave or omit -Path when a document object should be returned for further - OfficeIMO.Pdf.PdfTableCellImage + PSWriteOffice.Services.Text.OfficeTextRunSpec + + PowerShell-friendly rich text run specification used by document adapters. + @@ -141138,14 +151728,10 @@ Use -NoSave or omit -Path when a document object should be returned for further - Add a linked logo to a typed PDF table cell. - - PS> - - $logo = New-OfficePdfTableCellImage -Path .\logo.png -Width 28 -Height 28 -LinkUri 'https://example.com' - $cell = New-OfficePdfTableCell -Text 'Portal' -Image $logo + EXAMPLE 1 + New-OfficeTextRun -BackgroundColor 'Value' - The image remains a native PDF table-cell visual and may carry its own link. + @@ -141153,23 +151739,35 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficePowerPoint + New-OfficeVisio New - OfficePowerPoint + OfficeVisio - Creates a PowerPoint presentation using the DSL. + Creates a new OfficeIMO.Visio document with an initial page and optional DSL content. - Initializes a presentation, runs the DSL script block, and optionally saves the deck. + Creates a new OfficeIMO.Visio document with an initial page and optional DSL content. - New-OfficePowerPoint + New-OfficeVisio + + Author + + Optional document author. + + String + + String + + + None + Content - DSL scriptblock describing presentation content. + DSL script block describing Visio pages, shapes, and connectors. ScriptBlock @@ -141178,10 +151776,22 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + Height + + Initial page height. + + Double + + Double + + + None + NoSave - Skip saving after executing the DSL. + Skip saving and emit the document object. SwitchParameter @@ -141190,10 +151800,10 @@ Use -NoSave or omit -Path when a document object should be returned for further None - + Open - Open the presentation after saving. + Open the document after saving. SwitchParameter @@ -141202,10 +151812,46 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + PageName + + Initial page name. + + String + + String + + + None + PassThru - Emit the saved FileInfo for chaining. + Emit the document object instead of the saved file. + + SwitchParameter + + SwitchParameter + + + None + + + Path + + Destination .vsdx path. + + String + + String + + + None + + + RequestRecalcOnOpen + + Ask Visio to recalculate layout and connector routing when the document opens. SwitchParameter @@ -141215,9 +151861,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Password + Title - Password used to save the presentation as an encrypted package. + Optional document title. String @@ -141226,14 +151872,43 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Path + + Unit - Destination path for the new .pptx. + Measurement unit for page width and height. - String + VisioMeasurementUnit + + Inches + Centimeters + Millimeters + - String + VisioMeasurementUnit + + + None + + + UseMastersByDefault + + Use Visio masters for supported built-in stencil shapes when saving. + + SwitchParameter + + SwitchParameter + + + None + + + Width + + Initial page width. + + Double + + Double None @@ -141241,10 +151916,22 @@ Use -NoSave or omit -Path when a document object should be returned for further + + Author + + Optional document author. + + String + + String + + + None + Content - DSL scriptblock describing presentation content. + DSL script block describing Visio pages, shapes, and connectors. ScriptBlock @@ -141253,10 +151940,22 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + Height + + Initial page height. + + Double + + Double + + + None + NoSave - Skip saving after executing the DSL. + Skip saving and emit the document object. SwitchParameter @@ -141265,10 +151964,10 @@ Use -NoSave or omit -Path when a document object should be returned for further None - + Open - Open the presentation after saving. + Open the document after saving. SwitchParameter @@ -141277,10 +151976,22 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + PageName + + Initial page name. + + String + + String + + + None + PassThru - Emit the saved FileInfo for chaining. + Emit the document object instead of the saved file. SwitchParameter @@ -141289,10 +152000,34 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + Path + + Destination .vsdx path. + + String + + String + + + None + - Password + RequestRecalcOnOpen - Password used to save the presentation as an encrypted package. + Ask Visio to recalculate layout and connector routing when the document opens. + + SwitchParameter + + SwitchParameter + + + None + + + Title + + Optional document title. String @@ -141301,14 +152036,43 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Path + + Unit - Destination path for the new .pptx. + Measurement unit for page width and height. - String + VisioMeasurementUnit + + Inches + Centimeters + Millimeters + - String + VisioMeasurementUnit + + + None + + + UseMastersByDefault + + Use Visio masters for supported built-in stencil shapes when saving. + + SwitchParameter + + SwitchParameter + + + None + + + Width + + Initial page width. + + Double + + Double None @@ -141321,7 +152085,18 @@ Use -NoSave or omit -Path when a document object should be returned for further - + + + + OfficeIMO.Visio.VisioDocument + + + + + System.IO.FileInfo + + + @@ -141329,23 +152104,17 @@ Use -NoSave or omit -Path when a document object should be returned for further - Create and capture the presentation object. - - PS> - - $ppt = New-OfficePowerPoint -Path .\deck.pptx -NoSave - - Creates a live presentation associated with deck.pptx for incremental composition. - - - - Create a deck with a title slide. + Create a simple service map. PS> - New-OfficePowerPoint -Path .\deck.pptx { PptSlide { PptTitle -Title 'Status Update' } } -Open + New-OfficeVisio -Path .\ServiceMap.vsdx -Title 'Service map' -RequestRecalcOnOpen { + VisioRectangle -Key web -Text 'Web' -X 1 -Y 4 -FillColor LightBlue + VisioRectangle -Key api -Text 'API' -X 4 -Y 4 -FillColor LightGreen + VisioConnector -From web -To api -EndArrow Triangle -Label 'calls' + } - Creates, saves, and opens a deck with one titled slide. + Creates an editable .vsdx diagram with two shapes and a connector. @@ -141353,27 +152122,51 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficePowerPointDeckPlan + New-OfficeVisioGallery New - OfficePowerPointDeckPlan + OfficeVisioGallery - Creates a semantic PowerPoint deck plan for designer rendering. + Generates the OfficeIMO Visio reference gallery as editable .vsdx diagrams. - Creates a semantic PowerPoint deck plan for designer rendering. + Generates the OfficeIMO Visio reference gallery as editable .vsdx diagrams. - New-OfficePowerPointDeckPlan - - Content + New-OfficeVisioGallery + + NoPackageValidation - Nested deck-plan DSL content. + Skip structural package validation after gallery documents are generated. - ScriptBlock + SwitchParameter - ScriptBlock + SwitchParameter + + + None + + + NoVisualQualityAnalysis + + Skip visual quality analysis after gallery documents are generated. + + SwitchParameter + + SwitchParameter + + + None + + + OutputDirectory + + Directory that receives generated .vsdx gallery documents. + + String + + String None @@ -141381,14 +152174,38 @@ Use -NoSave or omit -Path when a document object should be returned for further - - Content + + NoPackageValidation - Nested deck-plan DSL content. + Skip structural package validation after gallery documents are generated. - ScriptBlock + SwitchParameter - ScriptBlock + SwitchParameter + + + None + + + NoVisualQualityAnalysis + + Skip visual quality analysis after gallery documents are generated. + + SwitchParameter + + SwitchParameter + + + None + + + OutputDirectory + + Directory that receives generated .vsdx gallery documents. + + String + + String None @@ -141404,7 +152221,7 @@ Use -NoSave or omit -Path when a document object should be returned for further - OfficeIMO.PowerPoint.PowerPointDeckPlan + OfficeIMO.Visio.VisioGalleryResult @@ -141415,23 +152232,14 @@ Use -NoSave or omit -Path when a document object should be returned for further - Create a semantic service brief plan. + Generate the Visio reference gallery. PS> - $plan = New-OfficePowerPointDeckPlan { - Add-OfficePowerPointPlanSection -Title 'Service Review' -Subtitle 'Monthly operating brief' - Add-OfficePowerPointPlanProcess -Title 'Operating rhythm' -Steps @( - @{ Title = 'Collect'; Body = 'Gather health signals' } - @{ Title = 'Review'; Body = 'Confirm owner decisions' } - @{ Title = 'Publish'; Body = 'Share the final brief' } - ) - } - New-OfficePowerPoint -Path .\Examples\Documents\DesignerDeck.pptx { - Add-OfficePowerPointDesignerDeck -Plan $plan - } + New-OfficeVisioGallery -OutputDirectory .\VisioGallery | + Select-Object Name, FilePath, IsClean - Builds a deck plan and renders it through the OfficeIMO designer helpers. + Creates polished, editable Visio samples for flowcharts, architecture, network, timeline, swimlane, org chart, and graph diagrams. @@ -141439,35 +152247,35 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficePowerPointPdfOptions + New-OfficeVisioImageOptions New - OfficePowerPointPdfOptions + OfficeVisioImageOptions - Creates discoverable PowerPoint-to-PDF conversion options for Export-OfficeDocumentPdf. + Creates discoverable page and rendering settings for Export-OfficeVisioImage. - Creates discoverable PowerPoint-to-PDF conversion options for Export-OfficeDocumentPdf. + Creates discoverable page and rendering settings for Export-OfficeVisioImage. - New-OfficePowerPointPdfOptions + New-OfficeVisioImageOptions - AllowDocumentFontEmbedding + BackgroundColor - Allow embedding fonts stored in the presentation. + - SwitchParameter + String - SwitchParameter + String None - AllowSystemFontEmbedding + IncludeSvgXmlDeclaration - Allow embedding fonts discovered on the current system. + Include an XML declaration in SVG output. SwitchParameter @@ -141477,45 +152285,45 @@ Use -NoSave or omit -Path when a document object should be returned for further None - ChartLayout + MaximumDegreeOfParallelism - Chart layout override. + - OfficeChartLayout + Int32 - OfficeChartLayout + Int32 None - ChartStyle + MaximumOutputCount - Chart visual style override. + - OfficeChartStyle + Int32 - OfficeChartStyle + Int32 None - FontFamily + MaximumOutputHeight - Default font family used when the presentation does not specify one. + - String + Int32 - String + Int32 None - HandoutSlidesPerPage + MaximumOutputWidth - Number of slides on each handout page. + Int32 @@ -141525,81 +152333,85 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeAutoShapes + MaximumRasterPixels - Render automatic shapes. + - SwitchParameter + Int64 - SwitchParameter + Int64 None - IncludeCharts + MaximumTotalEncodedBytes - Render charts. + - SwitchParameter + Int64 - SwitchParameter + Int64 None - IncludeHiddenSlides + MaximumTotalRasterPixels - Include slides marked hidden. + - SwitchParameter + Int64 - SwitchParameter + Int64 None - IncludePictures + PageCount - Render pictures. + Maximum pages exported. - SwitchParameter + Int32 - SwitchParameter + Int32 None - IncludeSlideBackgrounds + PageIndex - Render slide backgrounds. + Zero-based first page index. - SwitchParameter + Int32 - SwitchParameter + Int32 None - IncludeSmartArt + RasterOverflowBehavior - Render SmartArt. + - SwitchParameter + OfficeRasterOverflowBehavior + + ReduceScale + Throw + - SwitchParameter + OfficeRasterOverflowBehavior None - IncludeSpeakerNotes + RenderConnectorLabels - Include speaker notes. + Render connector labels. SwitchParameter @@ -141609,9 +152421,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeTables + RenderStencilArtwork - Render tables. + Render supported stencil artwork. SwitchParameter @@ -141621,9 +152433,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeTextBoxes + RenderText - Render text boxes. + Render page text. SwitchParameter @@ -141633,71 +152445,73 @@ Use -NoSave or omit -Path when a document object should be returned for further None - MaxGroupShapeDepth + RenderTimeoutSeconds - Maximum nested group-shape depth to render. + - Int32 + Double - Int32 + Double None - PageLayout + ResolveConnectorLabelOverlaps - PDF page layout, such as slides, notes, or handouts. + Resolve connector-label overlaps. - PowerPointPdfPageLayout - - Slides - NotesPages - Handouts - + SwitchParameter - PowerPointPdfPageLayout + SwitchParameter None - PdfOptions + Scale - Underlying low-level OfficeIMO PDF options. + - PdfOptions + Double - PdfOptions + Double None - PictureFit + Supersampling - How pictures fit their shape bounds. + Raster supersampling factor. - OfficeImageFit - - Stretch - Contain - Cover - + Int32 - OfficeImageFit + Int32 None - WarnOnPictureAspectRatioDistortion + TargetDpi - Report pictures whose requested fit distorts their aspect ratio. + - SwitchParameter + Double - SwitchParameter + Double + + + None + + + TextShapingLanguage + + + + String + + String None @@ -141706,21 +152520,21 @@ Use -NoSave or omit -Path when a document object should be returned for further - AllowDocumentFontEmbedding + BackgroundColor - Allow embedding fonts stored in the presentation. + - SwitchParameter + String - SwitchParameter + String None - AllowSystemFontEmbedding + IncludeSvgXmlDeclaration - Allow embedding fonts discovered on the current system. + Include an XML declaration in SVG output. SwitchParameter @@ -141730,45 +152544,45 @@ Use -NoSave or omit -Path when a document object should be returned for further None - ChartLayout + MaximumDegreeOfParallelism - Chart layout override. + - OfficeChartLayout + Int32 - OfficeChartLayout + Int32 None - ChartStyle + MaximumOutputCount - Chart visual style override. + - OfficeChartStyle + Int32 - OfficeChartStyle + Int32 None - FontFamily + MaximumOutputHeight - Default font family used when the presentation does not specify one. + - String + Int32 - String + Int32 None - HandoutSlidesPerPage + MaximumOutputWidth - Number of slides on each handout page. + Int32 @@ -141778,81 +152592,85 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeAutoShapes + MaximumRasterPixels - Render automatic shapes. + - SwitchParameter + Int64 - SwitchParameter + Int64 None - IncludeCharts + MaximumTotalEncodedBytes - Render charts. + - SwitchParameter + Int64 - SwitchParameter + Int64 None - IncludeHiddenSlides + MaximumTotalRasterPixels - Include slides marked hidden. + - SwitchParameter + Int64 - SwitchParameter + Int64 None - IncludePictures + PageCount - Render pictures. + Maximum pages exported. - SwitchParameter + Int32 - SwitchParameter + Int32 None - IncludeSlideBackgrounds + PageIndex - Render slide backgrounds. + Zero-based first page index. - SwitchParameter + Int32 - SwitchParameter + Int32 None - IncludeSmartArt + RasterOverflowBehavior - Render SmartArt. + - SwitchParameter + OfficeRasterOverflowBehavior + + ReduceScale + Throw + - SwitchParameter + OfficeRasterOverflowBehavior None - IncludeSpeakerNotes + RenderConnectorLabels - Include speaker notes. + Render connector labels. SwitchParameter @@ -141862,9 +152680,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeTables + RenderStencilArtwork - Render tables. + Render supported stencil artwork. SwitchParameter @@ -141874,9 +152692,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeTextBoxes + RenderText - Render text boxes. + Render page text. SwitchParameter @@ -141886,241 +152704,89 @@ Use -NoSave or omit -Path when a document object should be returned for further None - MaxGroupShapeDepth + RenderTimeoutSeconds - Maximum nested group-shape depth to render. + - Int32 + Double - Int32 + Double None - PageLayout + ResolveConnectorLabelOverlaps - PDF page layout, such as slides, notes, or handouts. + Resolve connector-label overlaps. - PowerPointPdfPageLayout - - Slides - NotesPages - Handouts - + SwitchParameter - PowerPointPdfPageLayout + SwitchParameter None - PdfOptions + Scale - Underlying low-level OfficeIMO PDF options. + - PdfOptions + Double - PdfOptions + Double None - PictureFit + Supersampling - How pictures fit their shape bounds. + Raster supersampling factor. - OfficeImageFit - - Stretch - Contain - Cover - + Int32 - OfficeImageFit + Int32 None - WarnOnPictureAspectRatioDistortion + TargetDpi - Report pictures whose requested fit distorts their aspect ratio. - - SwitchParameter - - SwitchParameter - - - None - - - - - - None - - - - - - - OfficeIMO.PowerPoint.Pdf.PowerPointPdfSaveOptions - - - - - - - - - - - Create a handout PDF with notes and hidden slides. - - PS> - - $options = New-OfficePowerPointPdfOptions -PageLayout Handouts -HandoutSlidesPerPage 3 -IncludeSpeakerNotes -IncludeHiddenSlides - Export-OfficeDocumentPdf -InputPath .\Briefing.pptx -Path .\Briefing.pdf -PowerPointOptions $options - - - - - - - - - New-OfficeRtf - New - OfficeRtf - - Creates an RTF document with plain paragraph content. - - - - Creates an RTF document with plain paragraph content. - - - - New-OfficeRtf - - NoSave - - Return the OfficeIMO RTF document without saving. - - SwitchParameter - - SwitchParameter - - - None - - - PassThru - - Emit a FileInfo for chaining. - - SwitchParameter - - SwitchParameter - - - None - - - Path - - Destination path for the RTF file. - - String - - String - - - None - - - Text - - Plain paragraph text to add to the document. - - String[] - - String[] - - - None - - - - - - NoSave - - Return the OfficeIMO RTF document without saving. - SwitchParameter + Double - SwitchParameter + Double None - PassThru - - Emit a FileInfo for chaining. - - SwitchParameter - - SwitchParameter - - - None - - - Path + TextShapingLanguage - Destination path for the RTF file. + - String + String String None - - Text - - Plain paragraph text to add to the document. - - String[] - - String[] - - - None - - System.String[] + None - System.IO.FileInfo - - - - - OfficeIMO.Rtf.RtfDocument + OfficeIMO.Visio.VisioImageExportOptions @@ -142131,14 +152797,14 @@ Use -NoSave or omit -Path when a document object should be returned for further - Create a small RTF file. + Render the first Visio page with text and connector labels. PS> - $file = New-OfficeRtf -Path .\Report.rtf -Text 'Summary', 'Ready for review' -PassThru - Get-OfficeRtf -Path $file.FullName + $options = New-OfficeVisioImageOptions -PageIndex 0 -PageCount 1 -RenderText -RenderConnectorLabels + Export-OfficeVisioImage -Path .\Diagram.vsdx -OutputPath .\Preview.svg -Options $options - Creates an RTF document with two paragraphs and returns the file. + @@ -142146,95 +152812,35 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficeRtfPdfOptions + New-OfficeWord New - OfficeRtfPdfOptions + OfficeWord - Creates discoverable RTF-to-PDF conversion options for Export-OfficeDocumentPdf. + Creates a Word document using the DSL. - Creates discoverable RTF-to-PDF conversion options for Export-OfficeDocumentPdf. + Handles file creation or template cloning, scriptblock execution, explicit save or live-document composition, and emits the document path when -PassThru is used. - New-OfficeRtfPdfOptions - - AllowDocumentFontEmbedding - - Allow embedding fonts referenced by the RTF document. - - SwitchParameter - - SwitchParameter - - - None - - - AllowSystemFontEmbedding - - Allow embedding fonts discovered on the current system. - - SwitchParameter - - SwitchParameter - - - None - - - DefaultImageHeight - - Fallback image height in PDF points. - - Double - - Double - - - None - - - DefaultImageWidth - - Fallback image width in PDF points. - - Double - - Double - - - None - - - IncludeHeaderFooters - - Render headers and footers. - - SwitchParameter - - SwitchParameter - - - None - - - IncludeHiddenText + New-OfficeWord + + Content - Include text marked hidden. + DSL scriptblock describing document content. - SwitchParameter + ScriptBlock - SwitchParameter + ScriptBlock None - IncludeImages + NoSave - Render images. + Skip saving after executing the DSL. SwitchParameter @@ -142244,9 +152850,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeMetadata + Open - Copy document metadata into the PDF. + Open the document after saving. SwitchParameter @@ -142256,9 +152862,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeNotes + PassThru - Render document notes. + Emit a FileInfo for chaining. SwitchParameter @@ -142268,37 +152874,37 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeTables + Password - Render tables. + Password used to save the document as an encrypted package. - SwitchParameter + String - SwitchParameter + String None - - MaximumSystemFontFamilies + + Path - Maximum number of system font families to discover. + Destination path for the document. - Int32 + String - Int32 + String None - PdfOptions + TemplatePath - Underlying low-level OfficeIMO PDF options. + Existing .docx file to clone before running the DSL. - PdfOptions + String - PdfOptions + String None @@ -142306,82 +152912,22 @@ Use -NoSave or omit -Path when a document object should be returned for further - - AllowDocumentFontEmbedding - - Allow embedding fonts referenced by the RTF document. - - SwitchParameter - - SwitchParameter - - - None - - - AllowSystemFontEmbedding - - Allow embedding fonts discovered on the current system. - - SwitchParameter - - SwitchParameter - - - None - - - DefaultImageHeight - - Fallback image height in PDF points. - - Double - - Double - - - None - - - DefaultImageWidth - - Fallback image width in PDF points. - - Double - - Double - - - None - - - IncludeHeaderFooters - - Render headers and footers. - - SwitchParameter - - SwitchParameter - - - None - - - IncludeHiddenText + + Content - Include text marked hidden. + DSL scriptblock describing document content. - SwitchParameter + ScriptBlock - SwitchParameter + ScriptBlock None - IncludeImages + NoSave - Render images. + Skip saving after executing the DSL. SwitchParameter @@ -142391,9 +152937,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeMetadata + Open - Copy document metadata into the PDF. + Open the document after saving. SwitchParameter @@ -142403,9 +152949,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeNotes + PassThru - Render document notes. + Emit a FileInfo for chaining. SwitchParameter @@ -142415,37 +152961,37 @@ Use -NoSave or omit -Path when a document object should be returned for further None - IncludeTables + Password - Render tables. + Password used to save the document as an encrypted package. - SwitchParameter + String - SwitchParameter + String None - - MaximumSystemFontFamilies + + Path - Maximum number of system font families to discover. + Destination path for the document. - Int32 + String - Int32 + String None - PdfOptions + TemplatePath - Underlying low-level OfficeIMO PDF options. + Existing .docx file to clone before running the DSL. - PdfOptions + String - PdfOptions + String None @@ -142458,13 +153004,7 @@ Use -NoSave or omit -Path when a document object should be returned for further - - - - OfficeIMO.Rtf.Pdf.RtfPdfSaveOptions - - - + @@ -142472,14 +153012,36 @@ Use -NoSave or omit -Path when a document object should be returned for further - Include document structure and bound system-font discovery. + Create a document inline. PS> - $options = New-OfficeRtfPdfOptions -IncludeImages -IncludeTables -IncludeHeaderFooters -MaximumSystemFontFamilies 32 - Export-OfficeDocumentPdf -InputPath .\Report.rtf -Path .\Report.pdf -RtfOptions $options + New-OfficeWord -Path .\Report.docx { WordSection { WordParagraph 'Hello DSL' } } -Open - + Builds a document, adds one paragraph, saves it to disk, and opens it. + + + + Create a document from a template. + + PS> + + New-OfficeWord -TemplatePath .\Template.docx -Path .\Report.docx { WordParagraph -Text 'Generated content' -StyleId 'ReportBody' } + + Copies the template to the output path, runs the DSL against the copied document, and saves it. + + + + Keep a document for incremental composition. + + PS> + + $document = New-OfficeWord -Path .\Report.docx -NoSave + $document | Add-OfficeWordParagraph -Text 'Status report' -Style Heading1 + $document | Save-OfficeWord + $document | Close-OfficeWord + + Associates the output path with a live document, adds content through the pipeline, then saves and closes it once. @@ -142487,47 +153049,47 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficeTextRun + New-OfficeWordComparisonOptions New - OfficeTextRun + OfficeWordComparisonOptions - Creates a reusable rich text run specification for Word, Excel, PowerPoint, and PDF commands. + Creates discoverable structural comparison settings for Compare-OfficeWordDocument. - Creates a reusable rich text run specification for Word, Excel, PowerPoint, and PDF commands. + Creates discoverable structural comparison settings for Compare-OfficeWordDocument. - New-OfficeTextRun - - BackgroundColor + New-OfficeWordComparisonOptions + + CompareBlockOrder - Run background or highlight color. Named colors and hexadecimal colors are accepted. + Compare document block order. - String + SwitchParameter - String + SwitchParameter None - Baseline + CompareBookmarks - Target-specific baseline name, such as Superscript or Subscript. + Compare bookmarks. - String + SwitchParameter - String + SwitchParameter None - Bold + CompareCommentAuthors - Render the run in bold. + Compare comment authors. SwitchParameter @@ -142536,46 +153098,46 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Color + + CompareCommentReplies - Text color. Named colors and hexadecimal colors are accepted. + Compare comment replies. - String + SwitchParameter - String + SwitchParameter None - - FontName + + CompareCommentResolvedState - Font name, family, or target-specific font identifier. + Compare comment resolved state. - String + SwitchParameter - String + SwitchParameter None - FontSize + CompareComments - Font size in points. + Compare comments. - Double + SwitchParameter - Double + SwitchParameter None - Italic + CompareCommentTargets - Render the run in italics. + Compare comment targets. SwitchParameter @@ -142585,57 +153147,57 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Kind + CompareCommentText - Run kind such as Text, LineBreak, Tab, Superscript, or Subscript. + Compare comment text. - String + SwitchParameter - String + SwitchParameter None - - LinkContents + + CompareContentControls - Optional link tooltip or annotation contents. + Compare content controls. - String + SwitchParameter - String + SwitchParameter None - - LinkDestinationName + + CompareEffectiveFormatting - Named destination or bookmark target when supported by the target format. + Compare resolved effective formatting. - String + SwitchParameter - String + SwitchParameter None - - LinkUri + + CompareFields - URI link target when supported by the target format. + Compare fields. - String + SwitchParameter - String + SwitchParameter None - Strike + CompareGeneratedIds - Render the run with strikethrough. + Compare generated identifiers. SwitchParameter @@ -142644,46 +153206,46 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - TabAlignment + + CompareHyperlinks - Tab alignment name. + Compare hyperlinks. - String + SwitchParameter - String + SwitchParameter None - - TabLeader + + CompareImages - PDF tab leader style name. + Compare images. - String + SwitchParameter - String + SwitchParameter None - - Text + + CompareLists - Run text. + Compare lists. - String + SwitchParameter - String + SwitchParameter None - Underline + CompareParagraphStyleIds - Render the run with underline. + Compare paragraph style identifiers. SwitchParameter @@ -142693,13 +153255,177 @@ Use -NoSave or omit -Path when a document object should be returned for further None - UnderlineStyle + CompareRevisionAuthors - Optional underline style name when the target format supports it. + Compare revision authors. - String + SwitchParameter - String + SwitchParameter + + + None + + + CompareRevisionLocations + + Compare revision locations. + + SwitchParameter + + SwitchParameter + + + None + + + CompareRevisions + + Compare tracked revisions. + + SwitchParameter + + SwitchParameter + + + None + + + CompareRevisionText + + Compare revision text. + + SwitchParameter + + SwitchParameter + + + None + + + CompareRunFormatting + + Compare direct run formatting. + + SwitchParameter + + SwitchParameter + + + None + + + CompareRunStyleIds + + Compare run style identifiers. + + SwitchParameter + + SwitchParameter + + + None + + + CompareShapes + + Compare supported shapes. + + SwitchParameter + + SwitchParameter + + + None + + + CompareVolatileMetadata + + Compare volatile timestamps and metadata. + + SwitchParameter + + SwitchParameter + + + None + + + ExcludeScope + + Remove these comparison scopes from results. + + WordComparisonScope[] + + Paragraph + Run + Field + ContentControl + Bookmark + Hyperlink + List + Comment + Revision + Table + TableRow + TableCell + Image + Shape + + + WordComparisonScope[] + + + None + + + IgnoreCase + + Ignore character casing. + + SwitchParameter + + SwitchParameter + + + None + + + IgnoreWhitespace + + Ignore differences caused only by whitespace runs. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeScope + + Limit results to these comparison scopes. + + WordComparisonScope[] + + Paragraph + Run + Field + ContentControl + Bookmark + Hyperlink + List + Comment + Revision + Table + TableRow + TableCell + Image + Shape + + + WordComparisonScope[] None @@ -142707,34 +153433,34 @@ Use -NoSave or omit -Path when a document object should be returned for further - - BackgroundColor + + CompareBlockOrder - Run background or highlight color. Named colors and hexadecimal colors are accepted. + Compare document block order. - String + SwitchParameter - String + SwitchParameter None - Baseline + CompareBookmarks - Target-specific baseline name, such as Superscript or Subscript. + Compare bookmarks. - String + SwitchParameter - String + SwitchParameter None - Bold + CompareCommentAuthors - Render the run in bold. + Compare comment authors. SwitchParameter @@ -142743,46 +153469,46 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Color + + CompareCommentReplies - Text color. Named colors and hexadecimal colors are accepted. + Compare comment replies. - String + SwitchParameter - String + SwitchParameter None - - FontName + + CompareCommentResolvedState - Font name, family, or target-specific font identifier. + Compare comment resolved state. - String + SwitchParameter - String + SwitchParameter None - FontSize + CompareComments - Font size in points. + Compare comments. - Double + SwitchParameter - Double + SwitchParameter None - Italic + CompareCommentTargets - Render the run in italics. + Compare comment targets. SwitchParameter @@ -142792,57 +153518,57 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Kind + CompareCommentText - Run kind such as Text, LineBreak, Tab, Superscript, or Subscript. + Compare comment text. - String + SwitchParameter - String + SwitchParameter None - - LinkContents + + CompareContentControls - Optional link tooltip or annotation contents. + Compare content controls. - String + SwitchParameter - String + SwitchParameter None - - LinkDestinationName + + CompareEffectiveFormatting - Named destination or bookmark target when supported by the target format. + Compare resolved effective formatting. - String + SwitchParameter - String + SwitchParameter None - - LinkUri + + CompareFields - URI link target when supported by the target format. + Compare fields. - String + SwitchParameter - String + SwitchParameter None - Strike + CompareGeneratedIds - Render the run with strikethrough. + Compare generated identifiers. SwitchParameter @@ -142851,46 +153577,46 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - TabAlignment + + CompareHyperlinks - Tab alignment name. + Compare hyperlinks. - String + SwitchParameter - String + SwitchParameter None - - TabLeader + + CompareImages - PDF tab leader style name. + Compare images. - String + SwitchParameter - String + SwitchParameter None - - Text + + CompareLists - Run text. + Compare lists. - String + SwitchParameter - String + SwitchParameter None - Underline + CompareParagraphStyleIds - Render the run with underline. + Compare paragraph style identifiers. SwitchParameter @@ -142900,13 +153626,177 @@ Use -NoSave or omit -Path when a document object should be returned for further None - UnderlineStyle + CompareRevisionAuthors - Optional underline style name when the target format supports it. + Compare revision authors. - String + SwitchParameter - String + SwitchParameter + + + None + + + CompareRevisionLocations + + Compare revision locations. + + SwitchParameter + + SwitchParameter + + + None + + + CompareRevisions + + Compare tracked revisions. + + SwitchParameter + + SwitchParameter + + + None + + + CompareRevisionText + + Compare revision text. + + SwitchParameter + + SwitchParameter + + + None + + + CompareRunFormatting + + Compare direct run formatting. + + SwitchParameter + + SwitchParameter + + + None + + + CompareRunStyleIds + + Compare run style identifiers. + + SwitchParameter + + SwitchParameter + + + None + + + CompareShapes + + Compare supported shapes. + + SwitchParameter + + SwitchParameter + + + None + + + CompareVolatileMetadata + + Compare volatile timestamps and metadata. + + SwitchParameter + + SwitchParameter + + + None + + + ExcludeScope + + Remove these comparison scopes from results. + + WordComparisonScope[] + + Paragraph + Run + Field + ContentControl + Bookmark + Hyperlink + List + Comment + Revision + Table + TableRow + TableCell + Image + Shape + + + WordComparisonScope[] + + + None + + + IgnoreCase + + Ignore character casing. + + SwitchParameter + + SwitchParameter + + + None + + + IgnoreWhitespace + + Ignore differences caused only by whitespace runs. + + SwitchParameter + + SwitchParameter + + + None + + + IncludeScope + + Limit results to these comparison scopes. + + WordComparisonScope[] + + Paragraph + Run + Field + ContentControl + Bookmark + Hyperlink + List + Comment + Revision + Table + TableRow + TableCell + Image + Shape + + + WordComparisonScope[] None @@ -142922,11 +153812,8 @@ Use -NoSave or omit -Path when a document object should be returned for further - PSWriteOffice.Services.Text.OfficeTextRunSpec + OfficeIMO.Word.WordComparisonOptions - - PowerShell-friendly rich text run specification used by document adapters. - @@ -142936,8 +153823,12 @@ Use -NoSave or omit -Path when a document object should be returned for further - EXAMPLE 1 - New-OfficeTextRun -BackgroundColor 'Value' + Ignore text normalization differences and exclude volatile metadata. + + PS> + + $options = New-OfficeWordComparisonOptions -IgnoreWhitespace -IgnoreCase -CompareVolatileMetadata:$false + Compare-OfficeWordDocument -ReferencePath .\Before.docx -DifferencePath .\After.docx -Options $options @@ -142947,23 +153838,23 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficeVisio + New-OfficeWordImageOptions New - OfficeVisio + OfficeWordImageOptions - Creates a new OfficeIMO.Visio document with an initial page and optional DSL content. + Creates discoverable page and rendering settings for Export-OfficeWordImage. - Creates a new OfficeIMO.Visio document with an initial page and optional DSL content. + Creates discoverable page and rendering settings for Export-OfficeWordImage. - New-OfficeVisio + New-OfficeWordImageOptions - Author + BackgroundColor - Optional document author. + String @@ -142972,147 +153863,170 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Content + + IncludeDocumentContent - DSL script block describing Visio pages, shapes, and connectors. + Render document content. - ScriptBlock + SwitchParameter - ScriptBlock + SwitchParameter None - Height + MaximumDegreeOfParallelism - Initial page height. + - Double + Int32 - Double + Int32 None - NoSave + MaximumOutputCount - Skip saving and emit the document object. + - SwitchParameter + Int32 - SwitchParameter + Int32 None - - Open + + MaximumOutputHeight - Open the document after saving. + - SwitchParameter + Int32 - SwitchParameter + Int32 None - PageName + MaximumOutputWidth - Initial page name. + - String + Int32 - String + Int32 None - PassThru + MaximumRasterPixels - Emit the document object instead of the saved file. + - SwitchParameter + Int64 - SwitchParameter + Int64 None - - Path + + MaximumTotalEncodedBytes - Destination .vsdx path. + - String + Int64 - String + Int64 None - RequestRecalcOnOpen + MaximumTotalRasterPixels - Ask Visio to recalculate layout and connector routing when the document opens. + - SwitchParameter + Int64 - SwitchParameter + Int64 None - Title + PageCount - Optional document title. + Maximum pages exported. Supplying this value selects batch export. - String + Int32 - String + Int32 None - Unit + PageIndex - Measurement unit for page width and height. + Zero-based first page index. - VisioMeasurementUnit + Int32 + + Int32 + + + None + + + RasterOverflowBehavior + + + + OfficeRasterOverflowBehavior - Inches - Centimeters - Millimeters + ReduceScale + Throw - VisioMeasurementUnit + OfficeRasterOverflowBehavior None - UseMastersByDefault + RenderTimeoutSeconds - Use Visio masters for supported built-in stencil shapes when saving. + - SwitchParameter + Double - SwitchParameter + Double None - Width + Scale - Initial page width. + + + Double + + Double + + + None + + + TargetDpi + + Double @@ -143121,13 +154035,25 @@ Use -NoSave or omit -Path when a document object should be returned for further None + + TextShapingLanguage + + + + String + + String + + + None + - Author + BackgroundColor - Optional document author. + String @@ -143136,147 +154062,146 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - Content + + IncludeDocumentContent - DSL script block describing Visio pages, shapes, and connectors. + Render document content. - ScriptBlock + SwitchParameter - ScriptBlock + SwitchParameter None - Height + MaximumDegreeOfParallelism - Initial page height. + - Double + Int32 - Double + Int32 None - NoSave + MaximumOutputCount - Skip saving and emit the document object. + - SwitchParameter + Int32 - SwitchParameter + Int32 None - - Open + + MaximumOutputHeight - Open the document after saving. + - SwitchParameter + Int32 - SwitchParameter + Int32 None - PageName + MaximumOutputWidth - Initial page name. + - String + Int32 - String + Int32 None - PassThru + MaximumRasterPixels - Emit the document object instead of the saved file. + - SwitchParameter + Int64 - SwitchParameter + Int64 None - - Path + + MaximumTotalEncodedBytes - Destination .vsdx path. + - String + Int64 - String + Int64 None - RequestRecalcOnOpen + MaximumTotalRasterPixels - Ask Visio to recalculate layout and connector routing when the document opens. + - SwitchParameter + Int64 - SwitchParameter + Int64 None - Title + PageCount - Optional document title. + Maximum pages exported. Supplying this value selects batch export. - String + Int32 - String + Int32 None - Unit + PageIndex - Measurement unit for page width and height. + Zero-based first page index. - VisioMeasurementUnit - - Inches - Centimeters - Millimeters - + Int32 - VisioMeasurementUnit + Int32 None - UseMastersByDefault + RasterOverflowBehavior - Use Visio masters for supported built-in stencil shapes when saving. + - SwitchParameter + OfficeRasterOverflowBehavior + + ReduceScale + Throw + - SwitchParameter + OfficeRasterOverflowBehavior None - Width + RenderTimeoutSeconds - Initial page width. + Double @@ -143285,133 +154210,36 @@ Use -NoSave or omit -Path when a document object should be returned for further None - - - - - None - - - - - - - OfficeIMO.Visio.VisioDocument - - - - - System.IO.FileInfo - - - - - - - - - - - Create a simple service map. - - PS> - - New-OfficeVisio -Path .\ServiceMap.vsdx -Title 'Service map' -RequestRecalcOnOpen { - VisioRectangle -Key web -Text 'Web' -X 1 -Y 4 -FillColor LightBlue - VisioRectangle -Key api -Text 'API' -X 4 -Y 4 -FillColor LightGreen - VisioConnector -From web -To api -EndArrow Triangle -Label 'calls' - } - - Creates an editable .vsdx diagram with two shapes and a connector. - - - - - - - - New-OfficeVisioGallery - New - OfficeVisioGallery - - Generates the OfficeIMO Visio reference gallery as editable .vsdx diagrams. - - - - Generates the OfficeIMO Visio reference gallery as editable .vsdx diagrams. - - - - New-OfficeVisioGallery - - NoPackageValidation - - Skip structural package validation after gallery documents are generated. - - SwitchParameter - - SwitchParameter - - - None - - - NoVisualQualityAnalysis - - Skip visual quality analysis after gallery documents are generated. - - SwitchParameter - - SwitchParameter - - - None - - - OutputDirectory - - Directory that receives generated .vsdx gallery documents. - - String - - String - - - None - - - - - NoPackageValidation + Scale - Skip structural package validation after gallery documents are generated. + - SwitchParameter + Double - SwitchParameter + Double None - NoVisualQualityAnalysis + TargetDpi - Skip visual quality analysis after gallery documents are generated. + - SwitchParameter + Double - SwitchParameter + Double None - - OutputDirectory + + TextShapingLanguage - Directory that receives generated .vsdx gallery documents. + - String + String String @@ -143429,7 +154257,7 @@ Use -NoSave or omit -Path when a document object should be returned for further - OfficeIMO.Visio.VisioGalleryResult + OfficeIMO.Word.WordImageExportOptions @@ -143440,14 +154268,14 @@ Use -NoSave or omit -Path when a document object should be returned for further - Generate the Visio reference gallery. + Render the first two pages at higher density. PS> - New-OfficeVisioGallery -OutputDirectory .\VisioGallery | - Select-Object Name, FilePath, IsClean + $options = New-OfficeWordImageOptions -PageIndex 0 -PageCount 2 -TargetDpi 144 -IncludeDocumentContent + Export-OfficeWordImage -Path .\Report.docx -OutputPath .\Pages -Options $options - Creates polished, editable Visio samples for flowcharts, architecture, network, timeline, swimlane, org chart, and graph diagrams. + Supplying PageCount selects batch export, so OutputPath is a folder. Use -AllPages on the export command for the complete document. @@ -143455,47 +154283,23 @@ Use -NoSave or omit -Path when a document object should be returned for further - New-OfficeWord + New-OfficeWordOpenDocumentOptions New - OfficeWord + OfficeWordOpenDocumentOptions - Creates a Word document using the DSL. + Creates Word/OpenDocument conversion settings. - Handles file creation or template cloning, scriptblock execution, explicit save or live-document composition, and emits the document path when -PassThru is used. + Creates Word/OpenDocument conversion settings. - New-OfficeWord - - Content - - DSL scriptblock describing document content. - - ScriptBlock - - ScriptBlock - - - None - - - NoSave - - Skip saving after executing the DSL. - - SwitchParameter - - SwitchParameter - - - None - + New-OfficeWordOpenDocumentOptions - Open + IncludeHeadersAndFooters - Open the document after saving. + Copy default headers and footers. SwitchParameter @@ -143505,9 +154309,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - PassThru + IncludeImages - Emit a FileInfo for chaining. + Copy supported inline images. SwitchParameter @@ -143517,37 +154321,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Password - - Password used to save the document as an encrypted package. - - String - - String - - - None - - - Path - - Destination path for the document. - - String - - String - - - None - - - TemplatePath + LossPolicy - Existing .docx file to clone before running the DSL. + Whether conversion loss is reported or rejected. - String + OdfConversionLossPolicy + + ReportOnly + ThrowOnSkippedOrUnsupported + ThrowOnAnyLoss + - String + OdfConversionLossPolicy None @@ -143555,34 +154340,10 @@ Use -NoSave or omit -Path when a document object should be returned for further - - Content - - DSL scriptblock describing document content. - - ScriptBlock - - ScriptBlock - - - None - - - NoSave - - Skip saving after executing the DSL. - - SwitchParameter - - SwitchParameter - - - None - - Open + IncludeHeadersAndFooters - Open the document after saving. + Copy default headers and footers. SwitchParameter @@ -143592,9 +154353,9 @@ Use -NoSave or omit -Path when a document object should be returned for further None - PassThru + IncludeImages - Emit a FileInfo for chaining. + Copy supported inline images. SwitchParameter @@ -143604,37 +154365,18 @@ Use -NoSave or omit -Path when a document object should be returned for further None - Password - - Password used to save the document as an encrypted package. - - String - - String - - - None - - - Path - - Destination path for the document. - - String - - String - - - None - - - TemplatePath + LossPolicy - Existing .docx file to clone before running the DSL. + Whether conversion loss is reported or rejected. - String + OdfConversionLossPolicy + + ReportOnly + ThrowOnSkippedOrUnsupported + ThrowOnAnyLoss + - String + OdfConversionLossPolicy None @@ -143647,7 +154389,13 @@ Use -NoSave or omit -Path when a document object should be returned for further - + + + + OfficeIMO.Word.OpenDocument.WordOpenDocumentConversionOptions + + + @@ -143655,36 +154403,14 @@ Use -NoSave or omit -Path when a document object should be returned for further - Create a document inline. - - PS> - - New-OfficeWord -Path .\Report.docx { WordSection { WordParagraph 'Hello DSL' } } -Open - - Builds a document, adds one paragraph, saves it to disk, and opens it. - - - - Create a document from a template. - - PS> - - New-OfficeWord -TemplatePath .\Template.docx -Path .\Report.docx { WordParagraph -Text 'Generated content' -StyleId 'ReportBody' } - - Copies the template to the output path, runs the DSL against the copied document, and saves it. - - - - Keep a document for incremental composition. + Include Word images and headers during conversion. PS> - $document = New-OfficeWord -Path .\Report.docx -NoSave - $document | Add-OfficeWordParagraph -Text 'Status report' -Style Heading1 - $document | Save-OfficeWord - $document | Close-OfficeWord + $options = New-OfficeWordOpenDocumentOptions -IncludeImages -IncludeHeadersAndFooters + ConvertTo-OfficeOpenDocument -Path .\Report.docx -OutputPath .\Report.odt -WordOptions $options - Associates the output path with a live document, adds content through the pipeline, then saves and closes it once. + @@ -144239,6 +154965,411 @@ Use -NoSave or omit -Path when a document object should be returned for further + + + New-OfficeWordRevisionFilter + New + OfficeWordRevisionFilter + + Creates a discoverable Word revision filter for Resolve-OfficeWordRevision. + + + + Creates a discoverable Word revision filter for Resolve-OfficeWordRevision. + + + + New-OfficeWordRevisionFilter + + Author + + Revision author. + + String + + String + + + None + + + DateFrom + + Earliest revision date. + + DateTime + + DateTime + + + None + + + DateTo + + Latest revision date. + + DateTime + + DateTime + + + None + + + InContentControl + + Limit results to revisions inside content controls. + + SwitchParameter + + SwitchParameter + + + None + + + InTable + + Limit results to revisions inside tables. + + SwitchParameter + + SwitchParameter + + + None + + + InTextBox + + Limit results to revisions inside text boxes. + + SwitchParameter + + SwitchParameter + + + None + + + LocationKind + + Word part or container location kind. + + WordReviewLocationKind + + Body + Header + Footer + Footnote + Endnote + + + WordReviewLocationKind + + + None + + + NotInContentControl + + Limit results to revisions outside content controls. + + SwitchParameter + + SwitchParameter + + + None + + + NotInTable + + Limit results to revisions outside tables. + + SwitchParameter + + SwitchParameter + + + None + + + NotInTextBox + + Limit results to revisions outside text boxes. + + SwitchParameter + + SwitchParameter + + + None + + + PartUri + + Package part URI. + + String + + String + + + None + + + RevisionId + + Revision identifier. + + String + + String + + + None + + + RevisionType + + Revision operation type. + + WordReviewRevisionType + + Insertion + Deletion + MoveFrom + MoveTo + ParagraphFormatting + RunFormatting + TableFormatting + TableRowFormatting + TableCellFormatting + SectionFormatting + Unknown + + + WordReviewRevisionType + + + None + + + + + + Author + + Revision author. + + String + + String + + + None + + + DateFrom + + Earliest revision date. + + DateTime + + DateTime + + + None + + + DateTo + + Latest revision date. + + DateTime + + DateTime + + + None + + + InContentControl + + Limit results to revisions inside content controls. + + SwitchParameter + + SwitchParameter + + + None + + + InTable + + Limit results to revisions inside tables. + + SwitchParameter + + SwitchParameter + + + None + + + InTextBox + + Limit results to revisions inside text boxes. + + SwitchParameter + + SwitchParameter + + + None + + + LocationKind + + Word part or container location kind. + + WordReviewLocationKind + + Body + Header + Footer + Footnote + Endnote + + + WordReviewLocationKind + + + None + + + NotInContentControl + + Limit results to revisions outside content controls. + + SwitchParameter + + SwitchParameter + + + None + + + NotInTable + + Limit results to revisions outside tables. + + SwitchParameter + + SwitchParameter + + + None + + + NotInTextBox + + Limit results to revisions outside text boxes. + + SwitchParameter + + SwitchParameter + + + None + + + PartUri + + Package part URI. + + String + + String + + + None + + + RevisionId + + Revision identifier. + + String + + String + + + None + + + RevisionType + + Revision operation type. + + WordReviewRevisionType + + Insertion + Deletion + MoveFrom + MoveTo + ParagraphFormatting + RunFormatting + TableFormatting + TableRowFormatting + TableCellFormatting + SectionFormatting + Unknown + + + WordReviewRevisionType + + + None + + + + + + None + + + + + + + OfficeIMO.Word.WordRevisionFilter + + + + + + + + + + + Accept only table revisions from one author. + + PS> + + $filter = New-OfficeWordRevisionFilter -Author 'Alex' -InTable + Resolve-OfficeWordRevision -Path .\Review.docx -Action Accept -Filter $filter + + + + + + + New-OfficeWordTableCell @@ -147370,8 +158501,11 @@ Use -NoSave or omit -Path when a document object should be returned for further - EXAMPLE 1 - Remove-OfficePdfAnnotation -Path 'C:\Path' + Remove text annotations from the first page. + + PS> + + Remove-OfficePdfAnnotation -Path .\Reviewed.pdf -OutputPath .\Clean.pdf -PageNumber 1 -Subtype Text -Confirm:$false @@ -148945,7 +160079,8 @@ Use -NoSave or omit -Path when a document object should be returned for further PS> - $filter = [OfficeIMO.Word.WordRevisionFilter]::new(); $filter.Author = 'Reviewer'; Resolve-OfficeWordRevision -Path .\Draft.docx -OutputPath .\Accepted.docx -Action Accept -Filter $filter + $filter = New-OfficeWordRevisionFilter -Author 'Reviewer' -InContentControl + Resolve-OfficeWordRevision -Path .\Draft.docx -OutputPath .\Accepted.docx -Action Accept -Filter $filter Applies only matching revisions, saves the result, and returns the matched revision report. @@ -149155,8 +160290,12 @@ Use -NoSave or omit -Path when a document object should be returned for further - EXAMPLE 1 - Save-OfficeAsciiDoc -Path 'C:\Path' + Load, edit, and save an AsciiDoc document. + + PS> + + $document = Get-OfficeAsciiDoc -Path .\Guide.adoc + $document | Save-OfficeAsciiDoc -Path .\Guide-normalized.adoc -Mode Canonical @@ -149342,8 +160481,12 @@ Use -NoSave or omit -Path when a document object should be returned for further - EXAMPLE 1 - Save-OfficeEmail -Document 'Value' + Save a message with an explicit loss policy. + + PS> + + $options = New-OfficeEmailWriterOptions -ConversionLossPolicy Block + $message | Save-OfficeEmail -Path .\Message.eml -Options $options -PassThru @@ -149487,8 +160630,12 @@ Use -NoSave or omit -Path when a document object should be returned for further - EXAMPLE 1 - Save-OfficeEmailMailbox -Mailbox 'Value' + Save an mboxrd mailbox and return its diagnostics. + + PS> + + $options = New-OfficeEmailMailboxWriterOptions -Variant Mboxrd + $mailbox | Save-OfficeEmailMailbox -Path .\Archive.mbox -Options $options -PassThru @@ -150098,8 +161245,12 @@ Use -NoSave or omit -Path when a document object should be returned for further - EXAMPLE 1 - Save-OfficeLatex -Path 'C:\Path' + Load and save a canonical LaTeX document. + + PS> + + $document = Get-OfficeLatex -Path .\Article.tex + $document | Save-OfficeLatex -Path .\Article-normalized.tex -Mode Canonical @@ -170636,6 +181787,179 @@ The document is saved through the normal OfficeIMO.Pdf save path. + + + Set-OfficeOpenDocumentCell + Set + OfficeOpenDocumentCell + + Sets a typed zero-based cell value in an OpenDocument spreadsheet. + + + + Sets a typed zero-based cell value in an OpenDocument spreadsheet. + + + + Set-OfficeOpenDocumentCell + + Column + + Zero-based column index. + + Int64 + + Int64 + + + None + + + PassThru + + Emit the updated cell. + + SwitchParameter + + SwitchParameter + + + None + + + Row + + Zero-based row index. + + Int64 + + Int64 + + + None + + + Sheet + + Worksheet target. Omit inside Add-OfficeOpenDocumentSheet -Content. + + OdsSheet + + OdsSheet + + + None + + + Value + + String, number, decimal, boolean, date, date-time offset, or time span value. + + Object + + Object + + + None + + + + + + Column + + Zero-based column index. + + Int64 + + Int64 + + + None + + + PassThru + + Emit the updated cell. + + SwitchParameter + + SwitchParameter + + + None + + + Row + + Zero-based row index. + + Int64 + + Int64 + + + None + + + Sheet + + Worksheet target. Omit inside Add-OfficeOpenDocumentSheet -Content. + + OdsSheet + + OdsSheet + + + None + + + Value + + String, number, decimal, boolean, date, date-time offset, or time span value. + + Object + + Object + + + None + + + + + + OfficeIMO.OpenDocument.OdsSheet + + + + + + + OfficeIMO.OpenDocument.OdsCell + + + + + + + + + + + Set typed values inside the active worksheet. + + PS> + + Set-OfficeOpenDocumentCell -Row 0 -Column 0 -Value 'Healthy' + Set-OfficeOpenDocumentCell -Row 0 -Column 1 -Value $true + + + + + + + Set-OfficePdfAnnotation diff --git a/WebsiteArtifacts/apidocs/powershell/PSWriteOffice.psd1 b/WebsiteArtifacts/apidocs/powershell/PSWriteOffice.psd1 index 5c1ab8d3..3f34f5b5 100644 --- a/WebsiteArtifacts/apidocs/powershell/PSWriteOffice.psd1 +++ b/WebsiteArtifacts/apidocs/powershell/PSWriteOffice.psd1 @@ -1,7 +1,7 @@ @{ AliasesToExport = @('Compare-OfficeExcelSheet', 'ConvertFrom-MarkdownHtml', 'ConvertFrom-PdfHtml', 'ConvertFrom-Rtf', 'ConvertFrom-WordHtml', 'ConvertFrom-WordMarkdown', 'ConvertTo-ExcelHtml', 'ConvertTo-MarkdownHtml', 'ConvertTo-PdfExcel', 'ConvertTo-PdfHtml', 'ConvertTo-PdfPowerPoint', 'ConvertTo-PdfWord', 'ConvertTo-PowerPointHtml', 'ConvertTo-Rtf', 'ConvertTo-VisioPng', 'ConvertTo-VisioSvg', 'ConvertTo-WordHtml', 'ConvertTo-WordMarkdown', 'Edit-ExcelRow', 'ExcelAccessibility', 'ExcelActiveSheet', 'ExcelAutoFilter', 'ExcelAutoFilterClear', 'ExcelAutoFilterSet', 'ExcelAutoFit', 'ExcelCell', 'ExcelChart', 'ExcelChartAxis', 'ExcelChartPoint', 'ExcelChartSeries', 'ExcelChartTrendline', 'ExcelColumn', 'ExcelColumnGroup', 'ExcelColumnStyle', 'ExcelColumnStyleByHeader', 'ExcelComment', 'ExcelCommentAudit', 'ExcelCommentClear', 'ExcelCommentRemove', 'ExcelComments', 'ExcelCommentsAudit', 'ExcelCommentUpdate', 'ExcelCompare', 'ExcelConditionalColorScale', 'ExcelConditionalDataBar', 'ExcelConditionalFormatting', 'ExcelConditionalFormattingClear', 'ExcelConditionalIconSet', 'ExcelConditionalRule', 'ExcelConnectionMetadata', 'ExcelCsvImport', 'ExcelDashboard', 'ExcelDashboardChart', 'ExcelDataModel', 'ExcelDataSet', 'ExcelDataValidation', 'ExcelDataValidationClear', 'ExcelDataValidationMessage', 'ExcelDateSystem', 'ExcelDelimitedImport', 'ExcelDoctor', 'ExcelExecutionPolicy', 'ExcelExport', 'ExcelFormula', 'ExcelFormulaAnalysis', 'ExcelFormulaAudit', 'ExcelFreeze', 'ExcelGridlines', 'ExcelHeaderFooter', 'ExcelHyperlink', 'ExcelHyperlinkHost', 'ExcelHyperlinkSmart', 'ExcelImage', 'ExcelImageFromUrl', 'ExcelImport', 'ExcelInternalLinks', 'ExcelInternalLinksByHeader', 'ExcelMargins', 'ExcelNamedRange', 'ExcelNamedRangeRemove', 'ExcelNamedRangeRename', 'ExcelNew', 'ExcelNumberFormatPreset', 'ExcelOrientation', 'ExcelPackageCopy', 'ExcelPackageMetadata', 'ExcelPageBreak', 'ExcelPageBreakClear', 'ExcelPageBreaks', 'ExcelPageSetup', 'ExcelPivotTable', 'ExcelPivotTables', 'ExcelPowerQuery', 'ExcelPowerQueryMetadata', 'ExcelPreflight', 'ExcelPrintArea', 'ExcelPrintLayout', 'ExcelPrintTitles', 'ExcelProtect', 'ExcelQueryMetadata', 'ExcelRangeClear', 'ExcelRefreshOnOpen', 'ExcelRepair', 'ExcelReportCallout', 'ExcelReportKpiRow', 'ExcelReportLegend', 'ExcelReportParagraph', 'ExcelReportSection', 'ExcelReportSheet', 'ExcelReportSpacer', 'ExcelReportTable', 'ExcelReportTitle', 'ExcelRichText', 'ExcelRichTextRuns', 'ExcelRow', 'ExcelRowEdit', 'ExcelRowGroup', 'ExcelRuntimePreflight', 'ExcelSheet', 'ExcelSheetCopy', 'ExcelSheetJoin', 'ExcelSheetMerge', 'ExcelSheetOrder', 'ExcelSheetTabColor', 'ExcelSheetView', 'ExcelSheetVisibility', 'ExcelSlicer', 'ExcelSort', 'ExcelSparkline', 'ExcelStreamingContract', 'ExcelSubtotals', 'ExcelSubtotalSummary', 'ExcelSummary', 'ExcelTable', 'ExcelTableOfContents', 'ExcelTableStyle', 'ExcelTemplate', 'ExcelTemplateApply', 'ExcelTemplateBinding', 'ExcelTemplateMarkers', 'ExcelTemplateOptionalRow', 'ExcelTemplateOptionalRows', 'ExcelTemplateRow', 'ExcelTemplateRows', 'ExcelTemplateSheet', 'ExcelTemplateSheets', 'ExcelTemplateValidate', 'ExcelTextRun', 'ExcelTheme', 'ExcelThreadedComment', 'ExcelTimeline', 'ExcelUnprotect', 'ExcelUrlLinks', 'ExcelUrlLinksByHeader', 'ExcelValidationCustomFormula', 'ExcelValidationDate', 'ExcelValidationDecimal', 'ExcelValidationList', 'ExcelValidationTextLength', 'ExcelValidationTime', 'ExcelValidationWholeNumber', 'ExcelVisual', 'ExcelWorkbookCompare', 'ExcelWorkbookCopy', 'ExcelWorkbookDoctor', 'ExcelWorkbookJoin', 'ExcelWorkbookMerge', 'ExcelWorkbookProtect', 'ExcelWorkbookRepair', 'ExcelWorkbookUnprotect', 'ExcelWorksheetView', 'ExcelWriteReservation', 'ExcelWriteReservationClear', 'ExcelWriteReservationSet', 'Export-OfficeDocumentAsset', 'Export-VisioStencilPreviewGallery', 'Find-VisioStencil', 'Get-OfficeReaderCapability', 'Import-VisioStencil', 'MarkdownCallout', 'MarkdownCode', 'MarkdownDefinitionList', 'MarkdownDetails', 'MarkdownFrontMatter', 'MarkdownHeading', 'MarkdownHorizontalRule', 'MarkdownHr', 'MarkdownImage', 'MarkdownList', 'MarkdownNew', 'MarkdownParagraph', 'MarkdownQuote', 'MarkdownTable', 'MarkdownTableOfContents', 'MarkdownTaskList', 'MarkdownToc', 'Merge-OfficeExcelSheet', 'Merge-OfficeExcelWorkbook', 'Merge-OfficeWordDocument', 'New-VisioGallery', 'OfficeVisual', 'PdfAttachment', 'PdfBackground', 'PdfBackgroundImage', 'PdfBackgroundShape', 'PdfBookmark', 'PdfCanvasStamp', 'PdfCanvasText', 'PdfCompliance', 'PdfElectronicInvoice', 'PdfFooter', 'PdfFormField', 'PdfHeader', 'PdfHeading', 'PdfHorizontalRule', 'PdfHr', 'PdfImage', 'PdfList', 'PdfMetadata', 'PdfNativeTextRun', 'PdfNew', 'PdfPageBorder', 'PdfPageBreak', 'PdfPageOverlay', 'PdfPageSetup', 'PdfPanel', 'PdfParagraph', 'PdfRow', 'PdfSpace', 'PdfSpacer', 'PdfStamp', 'PdfTable', 'PdfTableCell', 'PdfTableCellCheckBox', 'PdfTableCellField', 'PdfTableCellImage', 'PdfText', 'PdfTextRun', 'PdfTheme', 'PdfVisual', 'PdfWatermark', 'PowerPointNew', 'PowerPointTextRun', 'PptArrange', 'PptBackground', 'PptBullets', 'PptChart', 'PptDeckPlan', 'PptDesignerDeck', 'PptImage', 'PptLayoutBox', 'PptLayoutPlaceholderBounds', 'PptLayoutPlaceholderMargins', 'PptLayoutPlaceholders', 'PptLayoutPlaceholderTextStyle', 'PptNew', 'PptNotes', 'PptPlaceholderText', 'PptPlanCapability', 'PptPlanCardGrid', 'PptPlanCaseStudy', 'PptPlanCoverage', 'PptPlanLogoWall', 'PptPlanProcess', 'PptPlanSection', 'PptSection', 'PptShape', 'PptShapeLayout', 'PptSlide', 'PptSlideLayout', 'PptSlideSize', 'PptTable', 'PptTextBox', 'PptTextRun', 'PptTheme', 'PptThemeColor', 'PptThemeFonts', 'PptThemeName', 'PptTitle', 'PptTransition', 'PptVisual', 'Read-OfficeDocument', 'Read-OfficeDocumentAsset', 'Read-OfficeDocumentChunk', 'Read-OfficeDocumentTable', 'Read-OfficeDocumentVisual', 'Replace-OfficeExcelText', 'Replace-OfficePowerPointText', 'Replace-OfficeRtfText', 'Replace-OfficeWordText', 'RtfNew', 'RtfOpen', 'RtfText', 'Set-OfficeExcelSheetOrder', 'TextRun', 'VisioArrange', 'VisioConnector', 'VisioContainer', 'VisioDiamond', 'VisioEllipse', 'VisioInfo', 'VisioLayout', 'VisioNew', 'VisioOpen', 'VisioPage', 'VisioRect', 'VisioRectangle', 'VisioSave', 'VisioStencil', 'VisioStencilCatalog', 'VisioText', 'VisioTextBox', 'WordBold', 'WordBookmark', 'WordBreak', 'WordChart', 'WordCheckBox', 'WordCheckBoxes', 'WordComboBox', 'WordComboBoxes', 'WordContentControl', 'WordContentControls', 'WordCoverPage', 'WordDatePicker', 'WordDatePickers', 'WordDocumentJoin', 'WordDropDownList', 'WordDropDownLists', 'WordEndnote', 'WordEndnotes', 'WordEquation', 'WordField', 'WordFooter', 'WordFootnote', 'WordFootnotes', 'WordHeader', 'WordHyperlink', 'WordImage', 'WordImages', 'WordImageStyle', 'WordItalic', 'WordList', 'WordListItem', 'WordNew', 'WordPageNumber', 'WordPageSetup', 'WordParagraph', 'WordParagraphStyle', 'WordPictureControl', 'WordPictureControls', 'WordRepeatingSection', 'WordRepeatingSections', 'WordSection', 'WordShape', 'WordShapes', 'WordShapeStyle', 'WordStatistics', 'WordTable', 'WordTableCell', 'WordTableCells', 'WordTableCellSpec', 'WordTableCellStyle', 'WordTableCondition', 'WordTableOfContents', 'WordTabStop', 'WordText', 'WordTextBox', 'WordTextRun', 'WordTextStyle', 'WordVisual', 'WordWatermark') Author = 'Przemyslaw Klys' - CmdletsToExport = @('Add-OfficeExcelAutoFilter', 'Add-OfficeExcelChart', 'Add-OfficeExcelComment', 'Add-OfficeExcelConditionalColorScale', 'Add-OfficeExcelConditionalDataBar', 'Add-OfficeExcelConditionalIconSet', 'Add-OfficeExcelConditionalRule', 'Add-OfficeExcelDashboardChart', 'Add-OfficeExcelDataSet', 'Add-OfficeExcelImage', 'Add-OfficeExcelImageFromUrl', 'Add-OfficeExcelPackageMetadata', 'Add-OfficeExcelPageBreak', 'Add-OfficeExcelPivotTable', 'Add-OfficeExcelPowerQueryMetadata', 'Add-OfficeExcelReportCallout', 'Add-OfficeExcelReportKpiRow', 'Add-OfficeExcelReportLegend', 'Add-OfficeExcelReportParagraph', 'Add-OfficeExcelReportSection', 'Add-OfficeExcelReportSheet', 'Add-OfficeExcelReportSpacer', 'Add-OfficeExcelReportTable', 'Add-OfficeExcelReportTitle', 'Add-OfficeExcelSheet', 'Add-OfficeExcelSlicer', 'Add-OfficeExcelSparkline', 'Add-OfficeExcelSubtotalSummary', 'Add-OfficeExcelTable', 'Add-OfficeExcelTableOfContents', 'Add-OfficeExcelTableRow', 'Add-OfficeExcelThreadedComment', 'Add-OfficeExcelTimeline', 'Add-OfficeExcelValidationCustomFormula', 'Add-OfficeExcelValidationDate', 'Add-OfficeExcelValidationDecimal', 'Add-OfficeExcelValidationList', 'Add-OfficeExcelValidationTextLength', 'Add-OfficeExcelValidationTime', 'Add-OfficeExcelValidationWholeNumber', 'Add-OfficeExcelVisual', 'Add-OfficeMarkdownCallout', 'Add-OfficeMarkdownCode', 'Add-OfficeMarkdownDefinitionList', 'Add-OfficeMarkdownDetails', 'Add-OfficeMarkdownFrontMatter', 'Add-OfficeMarkdownHeading', 'Add-OfficeMarkdownHorizontalRule', 'Add-OfficeMarkdownImage', 'Add-OfficeMarkdownList', 'Add-OfficeMarkdownParagraph', 'Add-OfficeMarkdownQuote', 'Add-OfficeMarkdownTable', 'Add-OfficeMarkdownTableOfContents', 'Add-OfficeMarkdownTaskList', 'Add-OfficePdfAttachment', 'Add-OfficePdfBackgroundShape', 'Add-OfficePdfBookmark', 'Add-OfficePdfCanvas', 'Add-OfficePdfCanvasText', 'Add-OfficePdfFormField', 'Add-OfficePdfHeading', 'Add-OfficePdfHorizontalRule', 'Add-OfficePdfImage', 'Add-OfficePdfList', 'Add-OfficePdfPageBreak', 'Add-OfficePdfPageOverlay', 'Add-OfficePdfPanel', 'Add-OfficePdfParagraph', 'Add-OfficePdfRow', 'Add-OfficePdfSpacer', 'Add-OfficePdfStamp', 'Add-OfficePdfTable', 'Add-OfficePdfText', 'Add-OfficePdfVisual', 'Add-OfficePdfWatermark', 'Add-OfficePowerPointBullets', 'Add-OfficePowerPointChart', 'Add-OfficePowerPointDesignerDeck', 'Add-OfficePowerPointImage', 'Add-OfficePowerPointPlanCapability', 'Add-OfficePowerPointPlanCardGrid', 'Add-OfficePowerPointPlanCaseStudy', 'Add-OfficePowerPointPlanCoverage', 'Add-OfficePowerPointPlanLogoWall', 'Add-OfficePowerPointPlanProcess', 'Add-OfficePowerPointPlanSection', 'Add-OfficePowerPointSection', 'Add-OfficePowerPointShape', 'Add-OfficePowerPointSlide', 'Add-OfficePowerPointTable', 'Add-OfficePowerPointTableRow', 'Add-OfficePowerPointTextBox', 'Add-OfficePowerPointVisual', 'Add-OfficeVisioConnector', 'Add-OfficeVisioContainer', 'Add-OfficeVisioDiamond', 'Add-OfficeVisioEllipse', 'Add-OfficeVisioPage', 'Add-OfficeVisioRectangle', 'Add-OfficeVisioStencilShape', 'Add-OfficeVisioTextBox', 'Add-OfficeWordBookmark', 'Add-OfficeWordBreak', 'Add-OfficeWordChart', 'Add-OfficeWordCheckBox', 'Add-OfficeWordComboBox', 'Add-OfficeWordContentControl', 'Add-OfficeWordCoverPage', 'Add-OfficeWordDatePicker', 'Add-OfficeWordDropDownList', 'Add-OfficeWordEndnote', 'Add-OfficeWordEquation', 'Add-OfficeWordField', 'Add-OfficeWordFooter', 'Add-OfficeWordFootnote', 'Add-OfficeWordHeader', 'Add-OfficeWordHyperlink', 'Add-OfficeWordImage', 'Add-OfficeWordList', 'Add-OfficeWordListItem', 'Add-OfficeWordPageNumber', 'Add-OfficeWordParagraph', 'Add-OfficeWordPictureControl', 'Add-OfficeWordRepeatingSection', 'Add-OfficeWordSection', 'Add-OfficeWordShape', 'Add-OfficeWordTable', 'Add-OfficeWordTableCell', 'Add-OfficeWordTableCondition', 'Add-OfficeWordTableOfContents', 'Add-OfficeWordTableRow', 'Add-OfficeWordTabStop', 'Add-OfficeWordText', 'Add-OfficeWordTextBox', 'Add-OfficeWordVisual', 'Add-OfficeWordWatermark', 'Clear-OfficeExcelAutoFilter', 'Clear-OfficeExcelComment', 'Clear-OfficeExcelConditionalFormatting', 'Clear-OfficeExcelDataValidation', 'Clear-OfficeExcelPageBreak', 'Clear-OfficeExcelRange', 'Clear-OfficeExcelWriteReservation', 'Clear-OfficePdfBackgroundShape', 'Close-OfficeExcel', 'Close-OfficePowerPoint', 'Close-OfficeWord', 'Compare-OfficeExcelRange', 'Compare-OfficeExcelWorkbook', 'Compare-OfficePdfVisual', 'Compare-OfficeWordDocument', 'ConvertFrom-OfficeAsciiDocMarkdown', 'ConvertFrom-OfficeCsv', 'ConvertFrom-OfficeLatexMarkdown', 'ConvertFrom-OfficeMarkdownHtml', 'ConvertFrom-OfficeOpenDocument', 'ConvertFrom-OfficePdfHtml', 'ConvertFrom-OfficeRtf', 'ConvertFrom-OfficeWordHtml', 'ConvertFrom-OfficeWordMarkdown', 'ConvertTo-OfficeAsciiDocMarkdown', 'ConvertTo-OfficeCsv', 'ConvertTo-OfficeExcelHtml', 'ConvertTo-OfficeExcelWorkbook', 'ConvertTo-OfficeLatexMarkdown', 'ConvertTo-OfficeMarkdown', 'ConvertTo-OfficeMarkdownHtml', 'ConvertTo-OfficeOpenDocument', 'ConvertTo-OfficePdfExcel', 'ConvertTo-OfficePdfFlatAnnotation', 'ConvertTo-OfficePdfFlatForm', 'ConvertTo-OfficePdfHtml', 'ConvertTo-OfficePdfMarkdown', 'ConvertTo-OfficePdfOptimized', 'ConvertTo-OfficePdfPowerPoint', 'ConvertTo-OfficePdfRedacted', 'ConvertTo-OfficePdfSanitized', 'ConvertTo-OfficePdfTextRun', 'ConvertTo-OfficePdfWord', 'ConvertTo-OfficePowerPointHtml', 'ConvertTo-OfficeRtf', 'ConvertTo-OfficeVisioPng', 'ConvertTo-OfficeVisioSvg', 'ConvertTo-OfficeVisioVisual', 'ConvertTo-OfficeVisual', 'ConvertTo-OfficeWordDocument', 'ConvertTo-OfficeWordHtml', 'ConvertTo-OfficeWordMarkdown', 'Copy-OfficeExcelSheet', 'Copy-OfficeExcelWorkbook', 'Copy-OfficePdfPage', 'Copy-OfficePowerPointSlide', 'Edit-OfficeExcelRow', 'Export-OfficeCsv', 'Export-OfficeDocumentPdf', 'Export-OfficeExcel', 'Export-OfficeExcelChartImage', 'Export-OfficeExcelGoogleSpreadsheet', 'Export-OfficeExcelImage', 'Export-OfficeExcelRangeImage', 'Export-OfficeHtmlImage', 'Export-OfficePdfImage', 'Export-OfficePdfLayoutOverlay', 'Export-OfficePdfXfdf', 'Export-OfficePowerPointImage', 'Export-OfficeVisioImage', 'Export-OfficeVisioStencilPreviewGallery', 'Export-OfficeVisioVisual', 'Export-OfficeWordGoogleDocument', 'Export-OfficeWordImage', 'Find-OfficeExcel', 'Find-OfficePowerPointShape', 'Find-OfficeVisioStencil', 'Find-OfficeWord', 'Find-OfficeWordList', 'Find-OfficeWordTable', 'Get-OfficeAsciiDoc', 'Get-OfficeConfluenceAttachment', 'Get-OfficeConfluencePage', 'Get-OfficeCsv', 'Get-OfficeDocument', 'Get-OfficeDocumentAsset', 'Get-OfficeDocumentBatch', 'Get-OfficeDocumentCapability', 'Get-OfficeDocumentChunk', 'Get-OfficeDocumentDetection', 'Get-OfficeDocumentHierarchy', 'Get-OfficeDocumentIngest', 'Get-OfficeDocumentPageMarkdown', 'Get-OfficeDocumentStructured', 'Get-OfficeDocumentTable', 'Get-OfficeDocumentVisual', 'Get-OfficeEmail', 'Get-OfficeEmailMailbox', 'Get-OfficeExcel', 'Get-OfficeExcelComment', 'Get-OfficeExcelCommentAudit', 'Get-OfficeExcelConditionalFormatting', 'Get-OfficeExcelData', 'Get-OfficeExcelDataModel', 'Get-OfficeExcelDataValidation', 'Get-OfficeExcelDocumentProperty', 'Get-OfficeExcelFormulaAnalysis', 'Get-OfficeExcelNamedRange', 'Get-OfficeExcelNumberFormatPreset', 'Get-OfficeExcelPageBreak', 'Get-OfficeExcelPivotTable', 'Get-OfficeExcelPreflight', 'Get-OfficeExcelRange', 'Get-OfficeExcelRichText', 'Get-OfficeExcelRuntimePreflight', 'Get-OfficeExcelStreamingContract', 'Get-OfficeExcelSummary', 'Get-OfficeExcelTable', 'Get-OfficeExcelTableStyle', 'Get-OfficeExcelTemplateMarker', 'Get-OfficeExcelUsedRange', 'Get-OfficeExcelWorksheetView', 'Get-OfficeExcelWriteReservation', 'Get-OfficeLatex', 'Get-OfficeMarkdown', 'Get-OfficeMarkdownFrontMatter', 'Get-OfficeMarkdownHeading', 'Get-OfficeMarkdownNode', 'Get-OfficeMarkdownTable', 'Get-OfficeOpenDocument', 'Get-OfficePdf', 'Get-OfficePdfAnnotation', 'Get-OfficePdfAppendOnlyMutation', 'Get-OfficePdfAttachment', 'Get-OfficePdfCompliance', 'Get-OfficePdfDiagnostic', 'Get-OfficePdfFont', 'Get-OfficePdfFormField', 'Get-OfficePdfImage', 'Get-OfficePdfInfo', 'Get-OfficePdfInteractionMap', 'Get-OfficePdfOptimization', 'Get-OfficePdfPreflight', 'Get-OfficePdfRedactionPlan', 'Get-OfficePdfSignature', 'Get-OfficePdfText', 'Get-OfficePdfTextDiagnostic', 'Get-OfficePowerPoint', 'Get-OfficePowerPointInspection', 'Get-OfficePowerPointLayout', 'Get-OfficePowerPointLayoutBox', 'Get-OfficePowerPointLayoutPlaceholder', 'Get-OfficePowerPointNotes', 'Get-OfficePowerPointPlaceholder', 'Get-OfficePowerPointSection', 'Get-OfficePowerPointShape', 'Get-OfficePowerPointSlide', 'Get-OfficePowerPointSlideSummary', 'Get-OfficePowerPointTheme', 'Get-OfficeProtectionCapability', 'Get-OfficeRtf', 'Get-OfficeVisio', 'Get-OfficeVisioInfo', 'Get-OfficeVisioStencilCatalog', 'Get-OfficeWord', 'Get-OfficeWordBookmark', 'Get-OfficeWordCheckBox', 'Get-OfficeWordComboBox', 'Get-OfficeWordContentControl', 'Get-OfficeWordDatePicker', 'Get-OfficeWordDocumentProperty', 'Get-OfficeWordDropDownList', 'Get-OfficeWordEndnote', 'Get-OfficeWordField', 'Get-OfficeWordFootnote', 'Get-OfficeWordHyperlink', 'Get-OfficeWordImage', 'Get-OfficeWordList', 'Get-OfficeWordParagraph', 'Get-OfficeWordPictureControl', 'Get-OfficeWordRepeatingSection', 'Get-OfficeWordReview', 'Get-OfficeWordSection', 'Get-OfficeWordShape', 'Get-OfficeWordStatistics', 'Get-OfficeWordTable', 'Get-OfficeWordTableCell', 'Get-OfficeWordTableOfContents', 'Get-OfficeWordText', 'Import-OfficeCsv', 'Import-OfficeExcel', 'Import-OfficeExcelDelimitedText', 'Import-OfficePdfXfdf', 'Import-OfficePowerPointSlide', 'Import-OfficeVisioStencil', 'Invoke-OfficeExcelAutoFit', 'Invoke-OfficeExcelSort', 'Invoke-OfficeExcelTemplate', 'Invoke-OfficeExcelTemplateOptionalRow', 'Invoke-OfficeExcelTemplateRow', 'Invoke-OfficeExcelTemplateSheet', 'Invoke-OfficePdfOcrMerge', 'Invoke-OfficeWordMailMerge', 'Join-OfficeExcelSheet', 'Join-OfficeExcelWorkbook', 'Join-OfficePdf', 'Join-OfficeWordDocument', 'Move-OfficeExcelSheet', 'Move-OfficePdfPage', 'New-OfficeConfluenceSession', 'New-OfficeDocumentReader', 'New-OfficeExcel', 'New-OfficeExcelDashboard', 'New-OfficeExcelPdfOptions', 'New-OfficeMarkdown', 'New-OfficeMarkdownPdfOptions', 'New-OfficeOpenDocument', 'New-OfficePdf', 'New-OfficePdfSignature', 'New-OfficePdfTableCell', 'New-OfficePdfTableCellCheckBox', 'New-OfficePdfTableCellField', 'New-OfficePdfTableCellImage', 'New-OfficePowerPoint', 'New-OfficePowerPointDeckPlan', 'New-OfficePowerPointPdfOptions', 'New-OfficeRtf', 'New-OfficeRtfPdfOptions', 'New-OfficeTextRun', 'New-OfficeVisio', 'New-OfficeVisioGallery', 'New-OfficeWord', 'New-OfficeWordPdfOptions', 'New-OfficeWordTableCell', 'Protect-OfficeExcelSheet', 'Protect-OfficeExcelWorkbook', 'Protect-OfficeWordDocument', 'Publish-OfficeConfluencePage', 'Remove-OfficeConfluencePage', 'Remove-OfficeExcelComment', 'Remove-OfficeExcelNamedRange', 'Remove-OfficePdfAnnotation', 'Remove-OfficePdfPage', 'Remove-OfficePowerPointSlide', 'Remove-OfficeWordTableOfContents', 'Rename-OfficeExcelNamedRange', 'Rename-OfficePowerPointSection', 'Repair-OfficeExcelWorkbook', 'Resolve-OfficeWordRevision', 'Save-OfficeAsciiDoc', 'Save-OfficeEmail', 'Save-OfficeEmailMailbox', 'Save-OfficeExcel', 'Save-OfficeLatex', 'Save-OfficeMarkdown', 'Save-OfficeOpenDocument', 'Save-OfficePdf', 'Save-OfficePowerPoint', 'Save-OfficeVisio', 'Save-OfficeWord', 'Search-OfficeDocument', 'Send-OfficeConfluenceAttachment', 'Set-OfficeConfluenceManagedSection', 'Set-OfficeExcelActiveSheet', 'Set-OfficeExcelAutoFilter', 'Set-OfficeExcelCell', 'Set-OfficeExcelChartAxis', 'Set-OfficeExcelChartDataLabels', 'Set-OfficeExcelChartLegend', 'Set-OfficeExcelChartPoint', 'Set-OfficeExcelChartSeries', 'Set-OfficeExcelChartStyle', 'Set-OfficeExcelChartTrendline', 'Set-OfficeExcelColumn', 'Set-OfficeExcelColumnGroup', 'Set-OfficeExcelColumnStyleByHeader', 'Set-OfficeExcelDataValidationMessage', 'Set-OfficeExcelDateSystem', 'Set-OfficeExcelDocumentProperty', 'Set-OfficeExcelExecutionPolicy', 'Set-OfficeExcelFormula', 'Set-OfficeExcelFreeze', 'Set-OfficeExcelGridlines', 'Set-OfficeExcelHeaderFooter', 'Set-OfficeExcelHostHyperlink', 'Set-OfficeExcelHyperlink', 'Set-OfficeExcelInternalLinks', 'Set-OfficeExcelInternalLinksByHeader', 'Set-OfficeExcelMargins', 'Set-OfficeExcelNamedRange', 'Set-OfficeExcelOrientation', 'Set-OfficeExcelPageSetup', 'Set-OfficeExcelPrintArea', 'Set-OfficeExcelPrintLayout', 'Set-OfficeExcelPrintTitles', 'Set-OfficeExcelRefreshOnOpen', 'Set-OfficeExcelRichText', 'Set-OfficeExcelRow', 'Set-OfficeExcelRowGroup', 'Set-OfficeExcelSheetTabColor', 'Set-OfficeExcelSheetVisibility', 'Set-OfficeExcelSmartHyperlink', 'Set-OfficeExcelTheme', 'Set-OfficeExcelUrlLinks', 'Set-OfficeExcelUrlLinksByHeader', 'Set-OfficeExcelWorksheetView', 'Set-OfficeExcelWriteReservation', 'Set-OfficePdfAnnotation', 'Set-OfficePdfBackground', 'Set-OfficePdfBackgroundImage', 'Set-OfficePdfCompliance', 'Set-OfficePdfElectronicInvoice', 'Set-OfficePdfFooter', 'Set-OfficePdfForm', 'Set-OfficePdfHeader', 'Set-OfficePdfMetadata', 'Set-OfficePdfPage', 'Set-OfficePdfPageBorder', 'Set-OfficePdfPageSetup', 'Set-OfficePdfSignature', 'Set-OfficePdfTheme', 'Set-OfficePowerPointBackground', 'Set-OfficePowerPointLayoutPlaceholderBounds', 'Set-OfficePowerPointLayoutPlaceholderTextMargins', 'Set-OfficePowerPointLayoutPlaceholderTextStyle', 'Set-OfficePowerPointNotes', 'Set-OfficePowerPointPlaceholderText', 'Set-OfficePowerPointShapeLayout', 'Set-OfficePowerPointShapeText', 'Set-OfficePowerPointSlideLayout', 'Set-OfficePowerPointSlideSize', 'Set-OfficePowerPointSlideTitle', 'Set-OfficePowerPointSlideTransition', 'Set-OfficePowerPointTableCell', 'Set-OfficePowerPointThemeColor', 'Set-OfficePowerPointThemeFonts', 'Set-OfficePowerPointThemeName', 'Set-OfficeVisioShapeLayout', 'Set-OfficeWordBackground', 'Set-OfficeWordDocumentProperty', 'Set-OfficeWordImage', 'Set-OfficeWordPageSetup', 'Set-OfficeWordParagraphStyle', 'Set-OfficeWordShape', 'Set-OfficeWordTableCell', 'Set-OfficeWordTableOfContents', 'Set-OfficeWordTextStyle', 'Split-OfficePdf', 'Test-OfficeExcelAccessibility', 'Test-OfficeExcelTemplateBinding', 'Test-OfficeExcelWorkbook', 'Test-OfficePdfRewrite', 'Unprotect-OfficeExcelSheet', 'Unprotect-OfficeExcelWorkbook', 'Update-OfficeExcelComment', 'Update-OfficeExcelText', 'Update-OfficePowerPointText', 'Update-OfficeRtfText', 'Update-OfficeWordFields', 'Update-OfficeWordTableOfContents', 'Update-OfficeWordText') + CmdletsToExport = @('Add-OfficeExcelAutoFilter', 'Add-OfficeExcelChart', 'Add-OfficeExcelComment', 'Add-OfficeExcelConditionalColorScale', 'Add-OfficeExcelConditionalDataBar', 'Add-OfficeExcelConditionalIconSet', 'Add-OfficeExcelConditionalRule', 'Add-OfficeExcelDashboardChart', 'Add-OfficeExcelDataSet', 'Add-OfficeExcelImage', 'Add-OfficeExcelImageFromUrl', 'Add-OfficeExcelPackageMetadata', 'Add-OfficeExcelPageBreak', 'Add-OfficeExcelPivotTable', 'Add-OfficeExcelPowerQueryMetadata', 'Add-OfficeExcelReportCallout', 'Add-OfficeExcelReportKpiRow', 'Add-OfficeExcelReportLegend', 'Add-OfficeExcelReportParagraph', 'Add-OfficeExcelReportSection', 'Add-OfficeExcelReportSheet', 'Add-OfficeExcelReportSpacer', 'Add-OfficeExcelReportTable', 'Add-OfficeExcelReportTitle', 'Add-OfficeExcelSheet', 'Add-OfficeExcelSlicer', 'Add-OfficeExcelSparkline', 'Add-OfficeExcelSubtotalSummary', 'Add-OfficeExcelTable', 'Add-OfficeExcelTableOfContents', 'Add-OfficeExcelTableRow', 'Add-OfficeExcelThreadedComment', 'Add-OfficeExcelTimeline', 'Add-OfficeExcelValidationCustomFormula', 'Add-OfficeExcelValidationDate', 'Add-OfficeExcelValidationDecimal', 'Add-OfficeExcelValidationList', 'Add-OfficeExcelValidationTextLength', 'Add-OfficeExcelValidationTime', 'Add-OfficeExcelValidationWholeNumber', 'Add-OfficeExcelVisual', 'Add-OfficeMarkdownCallout', 'Add-OfficeMarkdownCode', 'Add-OfficeMarkdownDefinitionList', 'Add-OfficeMarkdownDetails', 'Add-OfficeMarkdownFrontMatter', 'Add-OfficeMarkdownHeading', 'Add-OfficeMarkdownHorizontalRule', 'Add-OfficeMarkdownImage', 'Add-OfficeMarkdownList', 'Add-OfficeMarkdownParagraph', 'Add-OfficeMarkdownQuote', 'Add-OfficeMarkdownTable', 'Add-OfficeMarkdownTableOfContents', 'Add-OfficeMarkdownTaskList', 'Add-OfficeOpenDocumentHeading', 'Add-OfficeOpenDocumentParagraph', 'Add-OfficeOpenDocumentSheet', 'Add-OfficeOpenDocumentSlide', 'Add-OfficeOpenDocumentTextBox', 'Add-OfficePdfAttachment', 'Add-OfficePdfBackgroundShape', 'Add-OfficePdfBookmark', 'Add-OfficePdfCanvas', 'Add-OfficePdfCanvasText', 'Add-OfficePdfFormField', 'Add-OfficePdfHeading', 'Add-OfficePdfHorizontalRule', 'Add-OfficePdfImage', 'Add-OfficePdfList', 'Add-OfficePdfPageBreak', 'Add-OfficePdfPageOverlay', 'Add-OfficePdfPanel', 'Add-OfficePdfParagraph', 'Add-OfficePdfRow', 'Add-OfficePdfSpacer', 'Add-OfficePdfStamp', 'Add-OfficePdfTable', 'Add-OfficePdfText', 'Add-OfficePdfVisual', 'Add-OfficePdfWatermark', 'Add-OfficePowerPointBullets', 'Add-OfficePowerPointChart', 'Add-OfficePowerPointDesignerDeck', 'Add-OfficePowerPointImage', 'Add-OfficePowerPointPlanCapability', 'Add-OfficePowerPointPlanCardGrid', 'Add-OfficePowerPointPlanCaseStudy', 'Add-OfficePowerPointPlanCoverage', 'Add-OfficePowerPointPlanLogoWall', 'Add-OfficePowerPointPlanProcess', 'Add-OfficePowerPointPlanSection', 'Add-OfficePowerPointSection', 'Add-OfficePowerPointShape', 'Add-OfficePowerPointSlide', 'Add-OfficePowerPointTable', 'Add-OfficePowerPointTableRow', 'Add-OfficePowerPointTextBox', 'Add-OfficePowerPointVisual', 'Add-OfficeVisioConnector', 'Add-OfficeVisioContainer', 'Add-OfficeVisioDiamond', 'Add-OfficeVisioEllipse', 'Add-OfficeVisioPage', 'Add-OfficeVisioRectangle', 'Add-OfficeVisioStencilShape', 'Add-OfficeVisioTextBox', 'Add-OfficeWordBookmark', 'Add-OfficeWordBreak', 'Add-OfficeWordChart', 'Add-OfficeWordCheckBox', 'Add-OfficeWordComboBox', 'Add-OfficeWordContentControl', 'Add-OfficeWordCoverPage', 'Add-OfficeWordDatePicker', 'Add-OfficeWordDropDownList', 'Add-OfficeWordEndnote', 'Add-OfficeWordEquation', 'Add-OfficeWordField', 'Add-OfficeWordFooter', 'Add-OfficeWordFootnote', 'Add-OfficeWordHeader', 'Add-OfficeWordHyperlink', 'Add-OfficeWordImage', 'Add-OfficeWordList', 'Add-OfficeWordListItem', 'Add-OfficeWordPageNumber', 'Add-OfficeWordParagraph', 'Add-OfficeWordPictureControl', 'Add-OfficeWordRepeatingSection', 'Add-OfficeWordSection', 'Add-OfficeWordShape', 'Add-OfficeWordTable', 'Add-OfficeWordTableCell', 'Add-OfficeWordTableCondition', 'Add-OfficeWordTableOfContents', 'Add-OfficeWordTableRow', 'Add-OfficeWordTabStop', 'Add-OfficeWordText', 'Add-OfficeWordTextBox', 'Add-OfficeWordVisual', 'Add-OfficeWordWatermark', 'Clear-OfficeExcelAutoFilter', 'Clear-OfficeExcelComment', 'Clear-OfficeExcelConditionalFormatting', 'Clear-OfficeExcelDataValidation', 'Clear-OfficeExcelPageBreak', 'Clear-OfficeExcelRange', 'Clear-OfficeExcelWriteReservation', 'Clear-OfficePdfBackgroundShape', 'Close-OfficeExcel', 'Close-OfficePowerPoint', 'Close-OfficeWord', 'Compare-OfficeExcelRange', 'Compare-OfficeExcelWorkbook', 'Compare-OfficePdfVisual', 'Compare-OfficeWordDocument', 'ConvertFrom-OfficeAsciiDocMarkdown', 'ConvertFrom-OfficeCsv', 'ConvertFrom-OfficeLatexMarkdown', 'ConvertFrom-OfficeMarkdownHtml', 'ConvertFrom-OfficeOpenDocument', 'ConvertFrom-OfficePdfHtml', 'ConvertFrom-OfficeRtf', 'ConvertFrom-OfficeWordHtml', 'ConvertFrom-OfficeWordMarkdown', 'ConvertTo-OfficeAsciiDocMarkdown', 'ConvertTo-OfficeCsv', 'ConvertTo-OfficeExcelHtml', 'ConvertTo-OfficeExcelWorkbook', 'ConvertTo-OfficeLatexMarkdown', 'ConvertTo-OfficeMarkdown', 'ConvertTo-OfficeMarkdownHtml', 'ConvertTo-OfficeOpenDocument', 'ConvertTo-OfficePdfExcel', 'ConvertTo-OfficePdfFlatAnnotation', 'ConvertTo-OfficePdfFlatForm', 'ConvertTo-OfficePdfHtml', 'ConvertTo-OfficePdfMarkdown', 'ConvertTo-OfficePdfOptimized', 'ConvertTo-OfficePdfPowerPoint', 'ConvertTo-OfficePdfRedacted', 'ConvertTo-OfficePdfSanitized', 'ConvertTo-OfficePdfTextRun', 'ConvertTo-OfficePdfWord', 'ConvertTo-OfficePowerPointHtml', 'ConvertTo-OfficeRtf', 'ConvertTo-OfficeVisioPng', 'ConvertTo-OfficeVisioSvg', 'ConvertTo-OfficeVisioVisual', 'ConvertTo-OfficeVisual', 'ConvertTo-OfficeWordDocument', 'ConvertTo-OfficeWordHtml', 'ConvertTo-OfficeWordMarkdown', 'Copy-OfficeExcelSheet', 'Copy-OfficeExcelWorkbook', 'Copy-OfficePdfPage', 'Copy-OfficePowerPointSlide', 'Edit-OfficeExcelRow', 'Export-OfficeCsv', 'Export-OfficeDocumentPdf', 'Export-OfficeExcel', 'Export-OfficeExcelChartImage', 'Export-OfficeExcelGoogleSpreadsheet', 'Export-OfficeExcelImage', 'Export-OfficeExcelRangeImage', 'Export-OfficeHtmlImage', 'Export-OfficePdfImage', 'Export-OfficePdfLayoutOverlay', 'Export-OfficePdfXfdf', 'Export-OfficePowerPointImage', 'Export-OfficeVisioImage', 'Export-OfficeVisioStencilPreviewGallery', 'Export-OfficeVisioVisual', 'Export-OfficeWordGoogleDocument', 'Export-OfficeWordImage', 'Find-OfficeExcel', 'Find-OfficePowerPointShape', 'Find-OfficeVisioStencil', 'Find-OfficeWord', 'Find-OfficeWordList', 'Find-OfficeWordTable', 'Get-OfficeAsciiDoc', 'Get-OfficeConfluenceAttachment', 'Get-OfficeConfluencePage', 'Get-OfficeCsv', 'Get-OfficeDocument', 'Get-OfficeDocumentAsset', 'Get-OfficeDocumentBatch', 'Get-OfficeDocumentCapability', 'Get-OfficeDocumentChunk', 'Get-OfficeDocumentDetection', 'Get-OfficeDocumentHierarchy', 'Get-OfficeDocumentIngest', 'Get-OfficeDocumentPageMarkdown', 'Get-OfficeDocumentStructured', 'Get-OfficeDocumentTable', 'Get-OfficeDocumentVisual', 'Get-OfficeEmail', 'Get-OfficeEmailMailbox', 'Get-OfficeExcel', 'Get-OfficeExcelComment', 'Get-OfficeExcelCommentAudit', 'Get-OfficeExcelConditionalFormatting', 'Get-OfficeExcelData', 'Get-OfficeExcelDataModel', 'Get-OfficeExcelDataValidation', 'Get-OfficeExcelDocumentProperty', 'Get-OfficeExcelFormulaAnalysis', 'Get-OfficeExcelNamedRange', 'Get-OfficeExcelNumberFormatPreset', 'Get-OfficeExcelPageBreak', 'Get-OfficeExcelPivotTable', 'Get-OfficeExcelPreflight', 'Get-OfficeExcelRange', 'Get-OfficeExcelRichText', 'Get-OfficeExcelRuntimePreflight', 'Get-OfficeExcelStreamingContract', 'Get-OfficeExcelSummary', 'Get-OfficeExcelTable', 'Get-OfficeExcelTableStyle', 'Get-OfficeExcelTemplateMarker', 'Get-OfficeExcelUsedRange', 'Get-OfficeExcelWorksheetView', 'Get-OfficeExcelWriteReservation', 'Get-OfficeLatex', 'Get-OfficeMarkdown', 'Get-OfficeMarkdownFrontMatter', 'Get-OfficeMarkdownHeading', 'Get-OfficeMarkdownNode', 'Get-OfficeMarkdownTable', 'Get-OfficeOpenDocument', 'Get-OfficePdf', 'Get-OfficePdfAnnotation', 'Get-OfficePdfAppendOnlyMutation', 'Get-OfficePdfAttachment', 'Get-OfficePdfCompliance', 'Get-OfficePdfDiagnostic', 'Get-OfficePdfFont', 'Get-OfficePdfFormField', 'Get-OfficePdfImage', 'Get-OfficePdfInfo', 'Get-OfficePdfInteractionMap', 'Get-OfficePdfOptimization', 'Get-OfficePdfPreflight', 'Get-OfficePdfRedactionPlan', 'Get-OfficePdfSignature', 'Get-OfficePdfText', 'Get-OfficePdfTextDiagnostic', 'Get-OfficePowerPoint', 'Get-OfficePowerPointInspection', 'Get-OfficePowerPointLayout', 'Get-OfficePowerPointLayoutBox', 'Get-OfficePowerPointLayoutPlaceholder', 'Get-OfficePowerPointNotes', 'Get-OfficePowerPointPlaceholder', 'Get-OfficePowerPointSection', 'Get-OfficePowerPointShape', 'Get-OfficePowerPointSlide', 'Get-OfficePowerPointSlideSummary', 'Get-OfficePowerPointTheme', 'Get-OfficeProtectionCapability', 'Get-OfficeRtf', 'Get-OfficeVisio', 'Get-OfficeVisioInfo', 'Get-OfficeVisioStencilCatalog', 'Get-OfficeWord', 'Get-OfficeWordBookmark', 'Get-OfficeWordCheckBox', 'Get-OfficeWordComboBox', 'Get-OfficeWordContentControl', 'Get-OfficeWordDatePicker', 'Get-OfficeWordDocumentProperty', 'Get-OfficeWordDropDownList', 'Get-OfficeWordEndnote', 'Get-OfficeWordField', 'Get-OfficeWordFootnote', 'Get-OfficeWordHyperlink', 'Get-OfficeWordImage', 'Get-OfficeWordList', 'Get-OfficeWordParagraph', 'Get-OfficeWordPictureControl', 'Get-OfficeWordRepeatingSection', 'Get-OfficeWordReview', 'Get-OfficeWordSection', 'Get-OfficeWordShape', 'Get-OfficeWordStatistics', 'Get-OfficeWordTable', 'Get-OfficeWordTableCell', 'Get-OfficeWordTableOfContents', 'Get-OfficeWordText', 'Import-OfficeCsv', 'Import-OfficeExcel', 'Import-OfficeExcelDelimitedText', 'Import-OfficePdfXfdf', 'Import-OfficePowerPointSlide', 'Import-OfficeVisioStencil', 'Invoke-OfficeExcelAutoFit', 'Invoke-OfficeExcelSort', 'Invoke-OfficeExcelTemplate', 'Invoke-OfficeExcelTemplateOptionalRow', 'Invoke-OfficeExcelTemplateRow', 'Invoke-OfficeExcelTemplateSheet', 'Invoke-OfficePdfOcrMerge', 'Invoke-OfficeWordMailMerge', 'Join-OfficeExcelSheet', 'Join-OfficeExcelWorkbook', 'Join-OfficePdf', 'Join-OfficeWordDocument', 'Move-OfficeExcelSheet', 'Move-OfficePdfPage', 'New-OfficeConfluenceSession', 'New-OfficeDocumentReader', 'New-OfficeEmailMailboxReaderOptions', 'New-OfficeEmailMailboxWriterOptions', 'New-OfficeEmailReaderOptions', 'New-OfficeEmailStoreReaderOptions', 'New-OfficeEmailWriterOptions', 'New-OfficeExcel', 'New-OfficeExcelDashboard', 'New-OfficeExcelImageOptions', 'New-OfficeExcelOpenDocumentOptions', 'New-OfficeExcelPdfOptions', 'New-OfficeExcelWorkbookImageOptions', 'New-OfficeHtmlConversionOptions', 'New-OfficeHtmlRenderOptions', 'New-OfficeMarkdown', 'New-OfficeMarkdownPdfOptions', 'New-OfficeOpenDocument', 'New-OfficePdf', 'New-OfficePdfExcelImportOptions', 'New-OfficePdfImageOptions', 'New-OfficePdfPowerPointImportOptions', 'New-OfficePdfSignature', 'New-OfficePdfTableCell', 'New-OfficePdfTableCellCheckBox', 'New-OfficePdfTableCellField', 'New-OfficePdfTableCellImage', 'New-OfficePdfVisualComparisonOptions', 'New-OfficePdfWordImportOptions', 'New-OfficePowerPoint', 'New-OfficePowerPointDeckPlan', 'New-OfficePowerPointImageOptions', 'New-OfficePowerPointOpenDocumentOptions', 'New-OfficePowerPointPdfOptions', 'New-OfficeReaderHierarchyOptions', 'New-OfficeRtf', 'New-OfficeRtfPdfOptions', 'New-OfficeTextRun', 'New-OfficeVisio', 'New-OfficeVisioGallery', 'New-OfficeVisioImageOptions', 'New-OfficeWord', 'New-OfficeWordComparisonOptions', 'New-OfficeWordImageOptions', 'New-OfficeWordOpenDocumentOptions', 'New-OfficeWordPdfOptions', 'New-OfficeWordRevisionFilter', 'New-OfficeWordTableCell', 'Protect-OfficeExcelSheet', 'Protect-OfficeExcelWorkbook', 'Protect-OfficeWordDocument', 'Publish-OfficeConfluencePage', 'Remove-OfficeConfluencePage', 'Remove-OfficeExcelComment', 'Remove-OfficeExcelNamedRange', 'Remove-OfficePdfAnnotation', 'Remove-OfficePdfPage', 'Remove-OfficePowerPointSlide', 'Remove-OfficeWordTableOfContents', 'Rename-OfficeExcelNamedRange', 'Rename-OfficePowerPointSection', 'Repair-OfficeExcelWorkbook', 'Resolve-OfficeWordRevision', 'Save-OfficeAsciiDoc', 'Save-OfficeEmail', 'Save-OfficeEmailMailbox', 'Save-OfficeExcel', 'Save-OfficeLatex', 'Save-OfficeMarkdown', 'Save-OfficeOpenDocument', 'Save-OfficePdf', 'Save-OfficePowerPoint', 'Save-OfficeVisio', 'Save-OfficeWord', 'Search-OfficeDocument', 'Send-OfficeConfluenceAttachment', 'Set-OfficeConfluenceManagedSection', 'Set-OfficeExcelActiveSheet', 'Set-OfficeExcelAutoFilter', 'Set-OfficeExcelCell', 'Set-OfficeExcelChartAxis', 'Set-OfficeExcelChartDataLabels', 'Set-OfficeExcelChartLegend', 'Set-OfficeExcelChartPoint', 'Set-OfficeExcelChartSeries', 'Set-OfficeExcelChartStyle', 'Set-OfficeExcelChartTrendline', 'Set-OfficeExcelColumn', 'Set-OfficeExcelColumnGroup', 'Set-OfficeExcelColumnStyleByHeader', 'Set-OfficeExcelDataValidationMessage', 'Set-OfficeExcelDateSystem', 'Set-OfficeExcelDocumentProperty', 'Set-OfficeExcelExecutionPolicy', 'Set-OfficeExcelFormula', 'Set-OfficeExcelFreeze', 'Set-OfficeExcelGridlines', 'Set-OfficeExcelHeaderFooter', 'Set-OfficeExcelHostHyperlink', 'Set-OfficeExcelHyperlink', 'Set-OfficeExcelInternalLinks', 'Set-OfficeExcelInternalLinksByHeader', 'Set-OfficeExcelMargins', 'Set-OfficeExcelNamedRange', 'Set-OfficeExcelOrientation', 'Set-OfficeExcelPageSetup', 'Set-OfficeExcelPrintArea', 'Set-OfficeExcelPrintLayout', 'Set-OfficeExcelPrintTitles', 'Set-OfficeExcelRefreshOnOpen', 'Set-OfficeExcelRichText', 'Set-OfficeExcelRow', 'Set-OfficeExcelRowGroup', 'Set-OfficeExcelSheetTabColor', 'Set-OfficeExcelSheetVisibility', 'Set-OfficeExcelSmartHyperlink', 'Set-OfficeExcelTheme', 'Set-OfficeExcelUrlLinks', 'Set-OfficeExcelUrlLinksByHeader', 'Set-OfficeExcelWorksheetView', 'Set-OfficeExcelWriteReservation', 'Set-OfficeOpenDocumentCell', 'Set-OfficePdfAnnotation', 'Set-OfficePdfBackground', 'Set-OfficePdfBackgroundImage', 'Set-OfficePdfCompliance', 'Set-OfficePdfElectronicInvoice', 'Set-OfficePdfFooter', 'Set-OfficePdfForm', 'Set-OfficePdfHeader', 'Set-OfficePdfMetadata', 'Set-OfficePdfPage', 'Set-OfficePdfPageBorder', 'Set-OfficePdfPageSetup', 'Set-OfficePdfSignature', 'Set-OfficePdfTheme', 'Set-OfficePowerPointBackground', 'Set-OfficePowerPointLayoutPlaceholderBounds', 'Set-OfficePowerPointLayoutPlaceholderTextMargins', 'Set-OfficePowerPointLayoutPlaceholderTextStyle', 'Set-OfficePowerPointNotes', 'Set-OfficePowerPointPlaceholderText', 'Set-OfficePowerPointShapeLayout', 'Set-OfficePowerPointShapeText', 'Set-OfficePowerPointSlideLayout', 'Set-OfficePowerPointSlideSize', 'Set-OfficePowerPointSlideTitle', 'Set-OfficePowerPointSlideTransition', 'Set-OfficePowerPointTableCell', 'Set-OfficePowerPointThemeColor', 'Set-OfficePowerPointThemeFonts', 'Set-OfficePowerPointThemeName', 'Set-OfficeVisioShapeLayout', 'Set-OfficeWordBackground', 'Set-OfficeWordDocumentProperty', 'Set-OfficeWordImage', 'Set-OfficeWordPageSetup', 'Set-OfficeWordParagraphStyle', 'Set-OfficeWordShape', 'Set-OfficeWordTableCell', 'Set-OfficeWordTableOfContents', 'Set-OfficeWordTextStyle', 'Split-OfficePdf', 'Test-OfficeExcelAccessibility', 'Test-OfficeExcelTemplateBinding', 'Test-OfficeExcelWorkbook', 'Test-OfficePdfRewrite', 'Unprotect-OfficeExcelSheet', 'Unprotect-OfficeExcelWorkbook', 'Update-OfficeExcelComment', 'Update-OfficeExcelText', 'Update-OfficePowerPointText', 'Update-OfficeRtfText', 'Update-OfficeWordFields', 'Update-OfficeWordTableOfContents', 'Update-OfficeWordText') CompanyName = 'Evotec' CompatiblePSEditions = @('Desktop', 'Core') Copyright = '(c) 2011 - 2026 Przemyslaw Klys @ Evotec. All rights reserved.' diff --git a/WebsiteArtifacts/apidocs/powershell/command-metadata.json b/WebsiteArtifacts/apidocs/powershell/command-metadata.json index d1027235..53213611 100644 --- a/WebsiteArtifacts/apidocs/powershell/command-metadata.json +++ b/WebsiteArtifacts/apidocs/powershell/command-metadata.json @@ -555,6 +555,46 @@ "sourceLine": 23, "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Markdown/AddOfficeMarkdownTaskListCommand.cs#L23" }, + { + "name": "Add-OfficeOpenDocumentHeading", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentHeadingCommand.cs", + "sourceLine": 15, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentHeadingCommand.cs#L15" + }, + { + "name": "Add-OfficeOpenDocumentParagraph", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentParagraphCommand.cs", + "sourceLine": 15, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentParagraphCommand.cs#L15" + }, + { + "name": "Add-OfficeOpenDocumentSheet", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentSheetCommand.cs", + "sourceLine": 17, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentSheetCommand.cs#L17" + }, + { + "name": "Add-OfficeOpenDocumentSlide", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentSlideCommand.cs", + "sourceLine": 17, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentSlideCommand.cs#L17" + }, + { + "name": "Add-OfficeOpenDocumentTextBox", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentTextBoxCommand.cs", + "sourceLine": 15, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/OpenDocument/AddOfficeOpenDocumentTextBoxCommand.cs#L15" + }, { "name": "Add-OfficePdfAttachment", "kind": "Cmdlet", @@ -1505,16 +1545,16 @@ "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/Pdf/CompareOfficePdfVisualCommand.cs", - "sourceLine": 16, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Pdf/CompareOfficePdfVisualCommand.cs#L16" + "sourceLine": 17, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Pdf/CompareOfficePdfVisualCommand.cs#L17" }, { "name": "Compare-OfficeWordDocument", "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/Word/CompareOfficeWordDocumentCommand.cs", - "sourceLine": 16, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Word/CompareOfficeWordDocumentCommand.cs#L16" + "sourceLine": 22, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Word/CompareOfficeWordDocumentCommand.cs#L22" }, { "name": "ConvertFrom-OfficeAsciiDocMarkdown", @@ -1555,8 +1595,8 @@ "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/OpenDocument/ConvertFromOfficeOpenDocumentCommand.cs", - "sourceLine": 13, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/OpenDocument/ConvertFromOfficeOpenDocumentCommand.cs#L13" + "sourceLine": 19, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/OpenDocument/ConvertFromOfficeOpenDocumentCommand.cs#L19" }, { "name": "ConvertFrom-OfficePdfHtml", @@ -1663,8 +1703,8 @@ "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/OpenDocument/ConvertToOfficeOpenDocumentCommand.cs", - "sourceLine": 20, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/OpenDocument/ConvertToOfficeOpenDocumentCommand.cs#L20" + "sourceLine": 26, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/OpenDocument/ConvertToOfficeOpenDocumentCommand.cs#L26" }, { "name": "ConvertTo-OfficePdfExcel", @@ -1911,8 +1951,8 @@ "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs", - "sourceLine": 37, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs#L37" + "sourceLine": 44, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs#L44" }, { "name": "Export-OfficeExcel", @@ -1977,8 +2017,8 @@ "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficePdfLayoutOverlayCommand.cs", - "sourceLine": 12, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficePdfLayoutOverlayCommand.cs#L12" + "sourceLine": 17, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficePdfLayoutOverlayCommand.cs#L17" }, { "name": "Export-OfficePdfXfdf", @@ -2035,8 +2075,8 @@ "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/Word/ExportOfficeWordImageCommand.cs", - "sourceLine": 18, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Word/ExportOfficeWordImageCommand.cs#L18" + "sourceLine": 25, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Word/ExportOfficeWordImageCommand.cs#L25" }, { "name": "Find-OfficeExcel", @@ -2182,8 +2222,8 @@ "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/Reader/GetOfficeDocumentHierarchyCommand.cs", - "sourceLine": 16, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Reader/GetOfficeDocumentHierarchyCommand.cs#L16" + "sourceLine": 17, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Reader/GetOfficeDocumentHierarchyCommand.cs#L17" }, { "name": "Get-OfficeDocumentIngest", @@ -2234,16 +2274,16 @@ "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/Email/GetOfficeEmailCommand.cs", - "sourceLine": 13, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Email/GetOfficeEmailCommand.cs#L13" + "sourceLine": 19, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Email/GetOfficeEmailCommand.cs#L19" }, { "name": "Get-OfficeEmailMailbox", "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/Email/GetOfficeEmailMailboxCommand.cs", - "sourceLine": 9, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Email/GetOfficeEmailMailboxCommand.cs#L9" + "sourceLine": 15, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Email/GetOfficeEmailMailboxCommand.cs#L15" }, { "name": "Get-OfficeExcel", @@ -3265,6 +3305,46 @@ "sourceLine": 22, "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Reader/NewOfficeDocumentReaderCommand.cs#L22" }, + { + "name": "New-OfficeEmailMailboxReaderOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailMailboxReaderOptionsCommand.cs", + "sourceLine": 16, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailMailboxReaderOptionsCommand.cs#L16" + }, + { + "name": "New-OfficeEmailMailboxWriterOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailMailboxWriterOptionsCommand.cs", + "sourceLine": 16, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailMailboxWriterOptionsCommand.cs#L16" + }, + { + "name": "New-OfficeEmailReaderOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailReaderOptionsCommand.cs", + "sourceLine": 15, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailReaderOptionsCommand.cs#L15" + }, + { + "name": "New-OfficeEmailStoreReaderOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailStoreReaderOptionsCommand.cs", + "sourceLine": 16, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailStoreReaderOptionsCommand.cs#L16" + }, + { + "name": "New-OfficeEmailWriterOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailWriterOptionsCommand.cs", + "sourceLine": 15, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Email/NewOfficeEmailWriterOptionsCommand.cs#L15" + }, { "name": "New-OfficeExcel", "kind": "Cmdlet", @@ -3285,6 +3365,22 @@ "sourceLine": 21, "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelDashboardCommand.cs#L21" }, + { + "name": "New-OfficeExcelImageOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelImageOptionsCommand.cs", + "sourceLine": 22, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelImageOptionsCommand.cs#L22" + }, + { + "name": "New-OfficeExcelOpenDocumentOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficeExcelOpenDocumentOptionsCommand.cs", + "sourceLine": 16, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficeExcelOpenDocumentOptionsCommand.cs#L16" + }, { "name": "New-OfficeExcelPdfOptions", "kind": "Cmdlet", @@ -3293,6 +3389,30 @@ "sourceLine": 18, "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelPdfOptionsCommand.cs#L18" }, + { + "name": "New-OfficeExcelWorkbookImageOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelWorkbookImageOptionsCommand.cs", + "sourceLine": 16, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficeExcelWorkbookImageOptionsCommand.cs#L16" + }, + { + "name": "New-OfficeHtmlConversionOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/Html/NewOfficeHtmlConversionOptionsCommand.cs", + "sourceLine": 16, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Html/NewOfficeHtmlConversionOptionsCommand.cs#L16" + }, + { + "name": "New-OfficeHtmlRenderOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/Html/NewOfficeHtmlRenderOptionsCommand.cs", + "sourceLine": 18, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Html/NewOfficeHtmlRenderOptionsCommand.cs#L18" + }, { "name": "New-OfficeMarkdown", "kind": "Cmdlet", @@ -3316,8 +3436,8 @@ "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficeOpenDocumentCommand.cs", - "sourceLine": 10, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficeOpenDocumentCommand.cs#L10" + "sourceLine": 31, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficeOpenDocumentCommand.cs#L31" }, { "name": "New-OfficePdf", @@ -3329,6 +3449,30 @@ "sourceLine": 47, "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Pdf/NewOfficePdfCommand.cs#L47" }, + { + "name": "New-OfficePdfExcelImportOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/Excel/NewOfficePdfExcelImportOptionsCommand.cs", + "sourceLine": 17, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Excel/NewOfficePdfExcelImportOptionsCommand.cs#L17" + }, + { + "name": "New-OfficePdfImageOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/Pdf/NewOfficePdfImageOptionsCommand.cs", + "sourceLine": 16, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Pdf/NewOfficePdfImageOptionsCommand.cs#L16" + }, + { + "name": "New-OfficePdfPowerPointImportOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePdfPowerPointImportOptionsCommand.cs", + "sourceLine": 17, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePdfPowerPointImportOptionsCommand.cs#L17" + }, { "name": "New-OfficePdfSignature", "kind": "Cmdlet", @@ -3377,6 +3521,22 @@ "sourceLine": 19, "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Pdf/NewOfficePdfTableCellImageCommand.cs#L19" }, + { + "name": "New-OfficePdfVisualComparisonOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/Pdf/NewOfficePdfVisualComparisonOptionsCommand.cs", + "sourceLine": 16, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Pdf/NewOfficePdfVisualComparisonOptionsCommand.cs#L16" + }, + { + "name": "New-OfficePdfWordImportOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/Word/NewOfficePdfWordImportOptionsCommand.cs", + "sourceLine": 17, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Word/NewOfficePdfWordImportOptionsCommand.cs#L17" + }, { "name": "New-OfficePowerPoint", "kind": "Cmdlet", @@ -3398,6 +3558,22 @@ "sourceLine": 27, "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointDeckPlanCommand.cs#L27" }, + { + "name": "New-OfficePowerPointImageOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointImageOptionsCommand.cs", + "sourceLine": 16, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointImageOptionsCommand.cs#L16" + }, + { + "name": "New-OfficePowerPointOpenDocumentOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficePowerPointOpenDocumentOptionsCommand.cs", + "sourceLine": 16, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficePowerPointOpenDocumentOptionsCommand.cs#L16" + }, { "name": "New-OfficePowerPointPdfOptions", "kind": "Cmdlet", @@ -3406,6 +3582,14 @@ "sourceLine": 16, "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/PowerPoint/NewOfficePowerPointPdfOptionsCommand.cs#L16" }, + { + "name": "New-OfficeReaderHierarchyOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/Reader/NewOfficeReaderHierarchyOptionsCommand.cs", + "sourceLine": 15, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Reader/NewOfficeReaderHierarchyOptionsCommand.cs#L15" + }, { "name": "New-OfficeRtf", "kind": "Cmdlet", @@ -3459,6 +3643,14 @@ "sourceLine": 18, "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Visio/NewOfficeVisioGalleryCommand.cs#L18" }, + { + "name": "New-OfficeVisioImageOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/Visio/NewOfficeVisioImageOptionsCommand.cs", + "sourceLine": 16, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Visio/NewOfficeVisioImageOptionsCommand.cs#L16" + }, { "name": "New-OfficeWord", "kind": "Cmdlet", @@ -3469,6 +3661,30 @@ "sourceLine": 34, "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordCommand.cs#L34" }, + { + "name": "New-OfficeWordComparisonOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordComparisonOptionsCommand.cs", + "sourceLine": 16, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordComparisonOptionsCommand.cs#L16" + }, + { + "name": "New-OfficeWordImageOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordImageOptionsCommand.cs", + "sourceLine": 17, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordImageOptionsCommand.cs#L17" + }, + { + "name": "New-OfficeWordOpenDocumentOptions", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficeWordOpenDocumentOptionsCommand.cs", + "sourceLine": 16, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/OpenDocument/NewOfficeWordOpenDocumentOptionsCommand.cs#L16" + }, { "name": "New-OfficeWordPdfOptions", "kind": "Cmdlet", @@ -3477,6 +3693,14 @@ "sourceLine": 18, "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordPdfOptionsCommand.cs#L18" }, + { + "name": "New-OfficeWordRevisionFilter", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordRevisionFilterCommand.cs", + "sourceLine": 15, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Word/NewOfficeWordRevisionFilterCommand.cs#L15" + }, { "name": "New-OfficeWordTableCell", "kind": "Cmdlet", @@ -3556,8 +3780,8 @@ "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/Pdf/RemoveOfficePdfAnnotationCommand.cs", - "sourceLine": 12, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Pdf/RemoveOfficePdfAnnotationCommand.cs#L12" + "sourceLine": 17, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Pdf/RemoveOfficePdfAnnotationCommand.cs#L17" }, { "name": "Remove-OfficePdfPage", @@ -3617,32 +3841,32 @@ "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/Word/ResolveOfficeWordRevisionCommand.cs", - "sourceLine": 17, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Word/ResolveOfficeWordRevisionCommand.cs#L17" + "sourceLine": 18, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Word/ResolveOfficeWordRevisionCommand.cs#L18" }, { "name": "Save-OfficeAsciiDoc", "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/AsciiDoc/SaveOfficeAsciiDocCommand.cs", - "sourceLine": 10, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/AsciiDoc/SaveOfficeAsciiDocCommand.cs#L10" + "sourceLine": 16, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/AsciiDoc/SaveOfficeAsciiDocCommand.cs#L16" }, { "name": "Save-OfficeEmail", "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/Email/SaveOfficeEmailCommand.cs", - "sourceLine": 11, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Email/SaveOfficeEmailCommand.cs#L11" + "sourceLine": 17, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Email/SaveOfficeEmailCommand.cs#L17" }, { "name": "Save-OfficeEmailMailbox", "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/Email/SaveOfficeEmailMailboxCommand.cs", - "sourceLine": 10, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Email/SaveOfficeEmailMailboxCommand.cs#L10" + "sourceLine": 16, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Email/SaveOfficeEmailMailboxCommand.cs#L16" }, { "name": "Save-OfficeExcel", @@ -3657,8 +3881,8 @@ "kind": "Cmdlet", "aliases": [], "sourcePath": "Sources/PSWriteOffice/Cmdlets/Latex/SaveOfficeLatexCommand.cs", - "sourceLine": 10, - "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Latex/SaveOfficeLatexCommand.cs#L10" + "sourceLine": 16, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Latex/SaveOfficeLatexCommand.cs#L16" }, { "name": "Save-OfficeMarkdown", @@ -4167,6 +4391,14 @@ "sourceLine": 17, "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/Excel/SetOfficeExcelWriteReservationCommand.cs#L17" }, + { + "name": "Set-OfficeOpenDocumentCell", + "kind": "Cmdlet", + "aliases": [], + "sourcePath": "Sources/PSWriteOffice/Cmdlets/OpenDocument/SetOfficeOpenDocumentCellCommand.cs", + "sourceLine": 17, + "sourceUrl": "https://github.com/EvotecIT/PSWriteOffice/blob/main/Sources/PSWriteOffice/Cmdlets/OpenDocument/SetOfficeOpenDocumentCellCommand.cs#L17" + }, { "name": "Set-OfficePdfAnnotation", "kind": "Cmdlet", diff --git a/WebsiteArtifacts/apidocs/powershell/examples/Integrations/Recipe-Mailozaurr-PdfDelivery.ps1 b/WebsiteArtifacts/apidocs/powershell/examples/Integrations/Recipe-Mailozaurr-PdfDelivery.ps1 new file mode 100644 index 00000000..50661f8f --- /dev/null +++ b/WebsiteArtifacts/apidocs/powershell/examples/Integrations/Recipe-Mailozaurr-PdfDelivery.ps1 @@ -0,0 +1,34 @@ +param( + [string] $SmtpServer = 'smtp.example.com', + [string] $From = 'reports@example.com', + [string] $To = 'operations@example.com', + [string] $OutputPath = '.\Daily-Service-Report.pdf', + [switch] $Send +) + +Import-Module PSWriteOffice -ErrorAction Stop +Import-Module Mailozaurr -ErrorAction Stop + +$services = @( + [pscustomobject]@{ Service = 'Directory'; Status = 'Healthy'; Incidents = 0 } + [pscustomobject]@{ Service = 'Messaging'; Status = 'Attention'; Incidents = 2 } + [pscustomobject]@{ Service = 'Database'; Status = 'Healthy'; Incidents = 0 } +) + +New-OfficePdf -Path $OutputPath -Content { + Add-OfficePdfHeading -Text 'Daily service report' + Add-OfficePdfParagraph -Text "Generated $((Get-Date).ToString('u'))" + Add-OfficePdfTable -InputObject $services +} + +$mail = @{ + From = $From + To = $To + Subject = 'Daily service report' + Body = 'The report generated by PSWriteOffice is attached.' + SmtpServer = $SmtpServer + Attachment = $OutputPath + WhatIf = -not $Send +} + +Send-EmailMessage @mail diff --git a/WebsiteArtifacts/apidocs/powershell/examples/Integrations/Recipe-PSEventViewer-OfficeReport.ps1 b/WebsiteArtifacts/apidocs/powershell/examples/Integrations/Recipe-PSEventViewer-OfficeReport.ps1 new file mode 100644 index 00000000..eb9b335f --- /dev/null +++ b/WebsiteArtifacts/apidocs/powershell/examples/Integrations/Recipe-PSEventViewer-OfficeReport.ps1 @@ -0,0 +1,48 @@ +param( + [string] $OutputDirectory = '.', + [string] $LogName = 'System', + [int] $MaxEvents = 200 +) + +Import-Module PSEventViewer -ErrorAction Stop +Import-Module PSWriteOffice -ErrorAction Stop + +$events = @(Get-EVXEvent ` + -LogName $LogName ` + -Level 1, 2, 3 ` + -TimePeriod Last24Hours ` + -ReadMode Message ` + -MaxEvents $MaxEvents) + +$rows = @($events | Select-Object TimeCreated, Id, ProviderName, LevelDisplayName, MachineName, Message) +if ($rows.Count -eq 0) { + $rows = @([pscustomobject]@{ + TimeCreated = Get-Date + Id = $null + ProviderName = $null + LevelDisplayName = 'Information' + MachineName = $env:COMPUTERNAME + Message = "No warning or error events were returned from $LogName in the last 24 hours." + }) +} + +$excelPath = Join-Path $OutputDirectory 'Event-Report.xlsx' +$wordPath = Join-Path $OutputDirectory 'Event-Report.docx' + +$rows | Export-OfficeExcel ` + -Path $excelPath ` + -WorksheetName 'Events' ` + -TableName 'EventReport' ` + -AutoFit ` + -FreezeTopRow + +New-OfficeWord -Path $wordPath -Content { + Add-OfficeWordParagraph -Text "Event report: $LogName" -Style Heading1 + Add-OfficeWordParagraph -Text "Warnings and errors returned: $($events.Count)" + Add-OfficeWordTable -InputObject $rows -Style GridTable4Accent1 -Layout AutoFitToWindow +} + +[pscustomobject]@{ + ExcelReport = Get-Item -LiteralPath $excelPath + WordReport = Get-Item -LiteralPath $wordPath +} diff --git a/WebsiteArtifacts/apidocs/powershell/examples/README.md b/WebsiteArtifacts/apidocs/powershell/examples/README.md index e9ed6f5d..750db1b9 100644 --- a/WebsiteArtifacts/apidocs/powershell/examples/README.md +++ b/WebsiteArtifacts/apidocs/powershell/examples/README.md @@ -1,6 +1,6 @@ # PSWriteOffice example library -These 58 recipes are complete PowerShell scripts that create, read, update, combine, or convert real files. Start with the workflow you need, then move to the larger showcase scripts when you want to see several features working together. +These 60 recipes are complete PowerShell scripts that create, read, update, combine, or convert real files. Start with the workflow you need, then move to the larger showcase scripts when you want to see several features working together. ```powershell Install-Module PSWriteOffice -Scope CurrentUser @@ -52,6 +52,8 @@ The [workflow guide](https://officeimo.com/docs/pswriteoffice/object-workflows/) - [Update and convert RTF](Rtf/Recipe-Rtf-UpdateAndConvert.ps1) and [RTF/Markdown round trip](Rtf/Example-RtfMarkdownRoundTrip.ps1) - [Safe CSV export](Csv/Recipe-Csv-SafeExport.ps1), [CSV basics](Csv/Example-CsvBasic.ps1), [advanced CSV options](Csv/Example-CsvAdvanced.ps1), and [DbaClientX round trip](Csv/Example-CsvDbaClientXRoundTrip.ps1) - [Excel and DbaClientX round trip](Excel/Example-ExcelDbaClientXRoundTrip.ps1) +- [Generate a PDF and deliver it with Mailozaurr](Integrations/Recipe-Mailozaurr-PdfDelivery.ps1) +- [Turn PSEventViewer results into Word and Excel reports](Integrations/Recipe-PSEventViewer-OfficeReport.ps1) - [HTML review for Word](Word/Example-WordHtmlConvert.ps1), [Excel](Excel/Example-ExcelHtmlReview.ps1), and [PowerPoint](PowerPoint/Example-PowerPointHtmlReview.ps1) - [ChartForgeX visuals](Visuals/Example-ChartForgeXVisuals.ps1) - [Confluence report publishing](Confluence/Example-ConfluenceAzureTableReport.ps1) diff --git a/WebsiteArtifacts/documentation/command-catalog.json b/WebsiteArtifacts/documentation/command-catalog.json index 66438707..539d7c51 100644 --- a/WebsiteArtifacts/documentation/command-catalog.json +++ b/WebsiteArtifacts/documentation/command-catalog.json @@ -1 +1 @@ -{"schemaVersion":1,"format":"pswriteoffice.documentation-catalog","module":{"name":"PSWriteOffice","version":"3.0.6","commandCount":498,"aliasCount":371,"familyCount":18,"sourceManifest":"PSWriteOffice.psd1"},"families":[{"id":"word","title":"Word","description":"Create, inspect, update, review, merge, protect, and convert DOC and DOCX documents.","commandCount":93,"docsUrl":"/docs/pswriteoffice/word/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Word","featuredCommands":["New-OfficeWord","Add-OfficeWordTable","Get-OfficeWordReview","Invoke-OfficeWordMailMerge","ConvertTo-OfficeWordDocument"]},{"id":"excel","title":"Excel","description":"Build, read, convert, validate, repair, compare, and publish XLS and XLSX workbook workflows.","commandCount":159,"docsUrl":"/docs/pswriteoffice/excel/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Excel","featuredCommands":["New-OfficeExcel","Add-OfficeExcelTable","Add-OfficeExcelPivotTable","Test-OfficeExcelWorkbook","ConvertTo-OfficeExcelWorkbook"]},{"id":"powerpoint","title":"PowerPoint","description":"Compose, inspect, update, import, theme, and render repeatable presentation decks.","commandCount":59,"docsUrl":"/docs/pswriteoffice/powerpoint/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/PowerPoint","featuredCommands":["New-OfficePowerPoint","Add-OfficePowerPointSlide","Add-OfficePowerPointChart","Get-OfficePowerPointInspection"]},{"id":"pdf","title":"PDF","description":"Author, inspect, transform, sign, annotate, extract, preflight, and combine PDF files.","commandCount":86,"docsUrl":"/docs/pswriteoffice/pdf/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Pdf","featuredCommands":["New-OfficePdf","Join-OfficePdf","Get-OfficePdfPreflight","Set-OfficePdfSignature"]},{"id":"reader","title":"Reader and extraction","description":"Detect formats and extract normalized documents, chunks, tables, visuals, assets, and ingest results.","commandCount":13,"docsUrl":"/docs/pswriteoffice/reader/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Reader","featuredCommands":["New-OfficeDocumentReader","Get-OfficeDocumentChunk","Get-OfficeDocumentTable","Search-OfficeDocument"]},{"id":"confluence","title":"Confluence Cloud","description":"Plan and publish pages, preserve managed sections, and transfer attachments through OfficeIMO.Confluence.","commandCount":7,"docsUrl":"/docs/pswriteoffice/confluence/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Confluence","featuredCommands":["New-OfficeConfluenceSession","Publish-OfficeConfluencePage","Set-OfficeConfluenceManagedSection","Send-OfficeConfluenceAttachment"]},{"id":"visio","title":"Visio","description":"Create, inspect, arrange, and export VSDX diagrams with built-in and imported stencils.","commandCount":23,"docsUrl":"/docs/pswriteoffice/visio/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Visio","featuredCommands":["New-OfficeVisio","Add-OfficeVisioStencilShape","Get-OfficeVisioInfo","ConvertTo-OfficeVisioSvg"]},{"id":"markdown","title":"Markdown","description":"Compose typed Markdown, parse documents, and convert between Markdown and HTML or Word.","commandCount":26,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Markdown","featuredCommands":["New-OfficeMarkdown","Add-OfficeMarkdownTable","ConvertTo-OfficeMarkdownHtml","ConvertFrom-OfficeWordMarkdown"]},{"id":"rtf","title":"RTF","description":"Create, open, edit, inspect, and bridge Rich Text Format documents.","commandCount":6,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Rtf","featuredCommands":["New-OfficeRtf","Get-OfficeRtf","Update-OfficeRtfText","ConvertTo-OfficeRtf"]},{"id":"csv","title":"CSV","description":"Create, import, inspect, and export delimited data with typed options.","commandCount":5,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Csv","featuredCommands":["ConvertTo-OfficeCsv","Import-OfficeCsv","Export-OfficeCsv","Get-OfficeCsv"]},{"id":"open-document","title":"OpenDocument","description":"Create, read, and save ODT, ODS, and ODP workflows.","commandCount":5,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["New-OfficeOpenDocument","Get-OfficeOpenDocument","Save-OfficeOpenDocument"]},{"id":"email","title":"Email","description":"Read and write messages and mailbox artifacts through the managed OfficeIMO.Email engine.","commandCount":4,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeEmail","Get-OfficeEmailMailbox","Save-OfficeEmail","Save-OfficeEmailMailbox"]},{"id":"asciidoc","title":"AsciiDoc","description":"Read, create, update, and save bounded AsciiDoc workflows.","commandCount":4,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeAsciiDoc","ConvertFrom-OfficeAsciiDocMarkdown","ConvertTo-OfficeAsciiDocMarkdown","Save-OfficeAsciiDoc"]},{"id":"latex","title":"LaTeX","description":"Read, create, update, and save bounded LaTeX interoperability workflows.","commandCount":4,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeLatex","ConvertFrom-OfficeLatexMarkdown","ConvertTo-OfficeLatexMarkdown","Save-OfficeLatex"]},{"id":"html","title":"HTML assets","description":"Export images and review surfaces used by document-to-HTML workflows.","commandCount":1,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Export-OfficeHtmlImage"]},{"id":"visuals","title":"Cross-format visuals","description":"Convert reusable visual artifacts for Word, Excel, PowerPoint, and PDF placement.","commandCount":1,"docsUrl":"/docs/pswriteoffice/automation-patterns/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["ConvertTo-OfficeVisual"]},{"id":"protection","title":"Protection capabilities","description":"Discover the machine-readable protected-content support contract shared across OfficeIMO formats.","commandCount":1,"docsUrl":"/docs/pswriteoffice/automation-patterns/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeProtectionCapability"]},{"id":"shared","title":"Shared authoring primitives","description":"Create reusable text runs shared by document DSLs.","commandCount":1,"docsUrl":"/docs/pswriteoffice/automation-patterns/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["New-OfficeTextRun"]}]} +{"schemaVersion":1,"format":"pswriteoffice.documentation-catalog","module":{"name":"PSWriteOffice","version":"3.0.6","commandCount":527,"aliasCount":371,"familyCount":18,"sourceManifest":"PSWriteOffice.psd1"},"families":[{"id":"word","title":"Word","description":"Create, inspect, update, review, merge, protect, and convert DOC and DOCX documents.","commandCount":97,"docsUrl":"/docs/pswriteoffice/word/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Word","featuredCommands":["New-OfficeWord","Add-OfficeWordTable","Get-OfficeWordReview","Invoke-OfficeWordMailMerge","ConvertTo-OfficeWordDocument"]},{"id":"excel","title":"Excel","description":"Build, read, convert, validate, repair, compare, and publish XLS and XLSX workbook workflows.","commandCount":162,"docsUrl":"/docs/pswriteoffice/excel/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Excel","featuredCommands":["New-OfficeExcel","Add-OfficeExcelTable","Add-OfficeExcelPivotTable","Test-OfficeExcelWorkbook","ConvertTo-OfficeExcelWorkbook"]},{"id":"powerpoint","title":"PowerPoint","description":"Compose, inspect, update, import, theme, and render repeatable presentation decks.","commandCount":61,"docsUrl":"/docs/pswriteoffice/powerpoint/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/PowerPoint","featuredCommands":["New-OfficePowerPoint","Add-OfficePowerPointSlide","Add-OfficePowerPointChart","Get-OfficePowerPointInspection"]},{"id":"pdf","title":"PDF","description":"Author, inspect, transform, sign, annotate, extract, preflight, and combine PDF files.","commandCount":91,"docsUrl":"/docs/pswriteoffice/pdf/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Pdf","featuredCommands":["New-OfficePdf","Join-OfficePdf","Get-OfficePdfPreflight","Set-OfficePdfSignature"]},{"id":"reader","title":"Reader and extraction","description":"Detect formats and extract normalized documents, chunks, tables, visuals, assets, and ingest results.","commandCount":14,"docsUrl":"/docs/pswriteoffice/reader/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Reader","featuredCommands":["New-OfficeDocumentReader","Get-OfficeDocumentChunk","Get-OfficeDocumentTable","Search-OfficeDocument"]},{"id":"confluence","title":"Confluence Cloud","description":"Plan and publish pages, preserve managed sections, and transfer attachments through OfficeIMO.Confluence.","commandCount":7,"docsUrl":"/docs/pswriteoffice/confluence/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Confluence","featuredCommands":["New-OfficeConfluenceSession","Publish-OfficeConfluencePage","Set-OfficeConfluenceManagedSection","Send-OfficeConfluenceAttachment"]},{"id":"visio","title":"Visio","description":"Create, inspect, arrange, and export VSDX diagrams with built-in and imported stencils.","commandCount":24,"docsUrl":"/docs/pswriteoffice/visio/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Visio","featuredCommands":["New-OfficeVisio","Add-OfficeVisioStencilShape","Get-OfficeVisioInfo","ConvertTo-OfficeVisioSvg"]},{"id":"markdown","title":"Markdown","description":"Compose typed Markdown, parse documents, and convert between Markdown and HTML or Word.","commandCount":26,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Markdown","featuredCommands":["New-OfficeMarkdown","Add-OfficeMarkdownTable","ConvertTo-OfficeMarkdownHtml","ConvertFrom-OfficeWordMarkdown"]},{"id":"rtf","title":"RTF","description":"Create, open, edit, inspect, and bridge Rich Text Format documents.","commandCount":6,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Rtf","featuredCommands":["New-OfficeRtf","Get-OfficeRtf","Update-OfficeRtfText","ConvertTo-OfficeRtf"]},{"id":"csv","title":"CSV","description":"Create, import, inspect, and export delimited data with typed options.","commandCount":5,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples/Csv","featuredCommands":["ConvertTo-OfficeCsv","Import-OfficeCsv","Export-OfficeCsv","Get-OfficeCsv"]},{"id":"open-document","title":"OpenDocument","description":"Compose, read, convert, and save ODT, ODS, and ODP workflows.","commandCount":11,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["New-OfficeOpenDocument","Add-OfficeOpenDocumentParagraph","Set-OfficeOpenDocumentCell","Save-OfficeOpenDocument"]},{"id":"email","title":"Email","description":"Read and write messages and mailbox artifacts through the managed OfficeIMO.Email engine.","commandCount":9,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeEmail","Get-OfficeEmailMailbox","Save-OfficeEmail","Save-OfficeEmailMailbox"]},{"id":"asciidoc","title":"AsciiDoc","description":"Read, create, update, and save bounded AsciiDoc workflows.","commandCount":4,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeAsciiDoc","ConvertFrom-OfficeAsciiDocMarkdown","ConvertTo-OfficeAsciiDocMarkdown","Save-OfficeAsciiDoc"]},{"id":"latex","title":"LaTeX","description":"Read, create, update, and save bounded LaTeX interoperability workflows.","commandCount":4,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeLatex","ConvertFrom-OfficeLatexMarkdown","ConvertTo-OfficeLatexMarkdown","Save-OfficeLatex"]},{"id":"html","title":"HTML assets","description":"Export images and review surfaces used by document-to-HTML workflows.","commandCount":3,"docsUrl":"/docs/pswriteoffice/open-text-formats/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Export-OfficeHtmlImage"]},{"id":"visuals","title":"Cross-format visuals","description":"Convert reusable visual artifacts for Word, Excel, PowerPoint, and PDF placement.","commandCount":1,"docsUrl":"/docs/pswriteoffice/automation-patterns/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["ConvertTo-OfficeVisual"]},{"id":"protection","title":"Protection capabilities","description":"Discover the machine-readable protected-content support contract shared across OfficeIMO formats.","commandCount":1,"docsUrl":"/docs/pswriteoffice/automation-patterns/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["Get-OfficeProtectionCapability"]},{"id":"shared","title":"Shared authoring primitives","description":"Create reusable text runs shared by document DSLs.","commandCount":1,"docsUrl":"/docs/pswriteoffice/automation-patterns/","apiUrl":"/api/powershell/","examplesUrl":"https://github.com/EvotecIT/PSWriteOffice/tree/main/Examples","featuredCommands":["New-OfficeTextRun"]}]} From be3238cba6fe36539f5b650fb4045f70c701a8e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20K=C5=82ys?= Date: Fri, 21 Aug 2026 18:53:11 +0200 Subject: [PATCH 8/8] Fix remaining PowerShell API edge cases --- Docs/Export-OfficeDocumentPdf.md | 4 +-- Docs/Generated/PSWriteOffice-help.xml | 14 ++++++++- Docs/New-OfficeVisioImageOptions.md | 2 +- .../Html/HtmlOptionsCommandUtilities.cs | 28 ++++++++++++++++++ .../NewOfficeHtmlConversionOptionsCommand.cs | 2 +- .../Html/NewOfficeHtmlRenderOptionsCommand.cs | 2 +- .../SetOfficeOpenDocumentCellCommand.cs | 4 +++ .../Pdf/ExportOfficeDocumentPdfCommand.cs | 2 +- .../NewOfficeVisioImageOptionsCommand.cs | 2 +- Tests/OfficeIMONextSupport.Tests.ps1 | 6 ++++ Tests/PublicApiConsistency.Tests.ps1 | 29 ++++++++++++++++++- .../apidocs/powershell/PSWriteOffice-help.xml | 14 ++++++++- 12 files changed, 99 insertions(+), 10 deletions(-) create mode 100644 Sources/PSWriteOffice/Cmdlets/Html/HtmlOptionsCommandUtilities.cs diff --git a/Docs/Export-OfficeDocumentPdf.md b/Docs/Export-OfficeDocumentPdf.md index 0eeca5a1..d67fd0c7 100644 --- a/Docs/Export-OfficeDocumentPdf.md +++ b/Docs/Export-OfficeDocumentPdf.md @@ -11,7 +11,7 @@ Exports a Word, Excel, PowerPoint, Markdown, or RTF document to PDF. ## SYNTAX ### Document (Default) ```powershell -Export-OfficeDocumentPdf [-Document] [-Path] [-WordOptions ] [-ExcelOptions ] [-PowerPointOptions ] [-MarkdownOptions ] [-RtfOptions ] [-PdfWarningVariable ] [-PdfConversionReportVariable ] [-Open] [-PassThru] [-WhatIf] [-Confirm] [] +Export-OfficeDocumentPdf [-Document] [-Path] [-Password ] [-WordOptions ] [-ExcelOptions ] [-PowerPointOptions ] [-MarkdownOptions ] [-RtfOptions ] [-PdfWarningVariable ] [-PdfConversionReportVariable ] [-Open] [-PassThru] [-WhatIf] [-Confirm] [] ``` ### Path @@ -147,7 +147,7 @@ Password used to open an encrypted Word, Excel, or PowerPoint source file. ```yaml Type: String -Parameter Sets: Path +Parameter Sets: Document, Path Aliases: None Possible values: diff --git a/Docs/Generated/PSWriteOffice-help.xml b/Docs/Generated/PSWriteOffice-help.xml index 6c4a9165..1d195143 100644 --- a/Docs/Generated/PSWriteOffice-help.xml +++ b/Docs/Generated/PSWriteOffice-help.xml @@ -81857,6 +81857,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + Password + + Password used to open an encrypted Word, Excel, or PowerPoint source file. + + String + + String + + + None + Path @@ -152802,7 +152814,7 @@ Use -NoSave or omit -Path when a document object should be returned for further PS> $options = New-OfficeVisioImageOptions -PageIndex 0 -PageCount 1 -RenderText -RenderConnectorLabels - Export-OfficeVisioImage -Path .\Diagram.vsdx -OutputPath .\Preview.svg -Options $options + Export-OfficeVisioImage -Path .\Diagram.vsdx -OutputPath .\Preview -Format Svg -Options $options diff --git a/Docs/New-OfficeVisioImageOptions.md b/Docs/New-OfficeVisioImageOptions.md index 050d1d86..38cfce81 100644 --- a/Docs/New-OfficeVisioImageOptions.md +++ b/Docs/New-OfficeVisioImageOptions.md @@ -22,7 +22,7 @@ Creates discoverable page and rendering settings for Export-OfficeVisioImage. ### EXAMPLE 1 ```powershell PS> $options = New-OfficeVisioImageOptions -PageIndex 0 -PageCount 1 -RenderText -RenderConnectorLabels -Export-OfficeVisioImage -Path .\Diagram.vsdx -OutputPath .\Preview.svg -Options $options +Export-OfficeVisioImage -Path .\Diagram.vsdx -OutputPath .\Preview -Format Svg -Options $options ``` diff --git a/Sources/PSWriteOffice/Cmdlets/Html/HtmlOptionsCommandUtilities.cs b/Sources/PSWriteOffice/Cmdlets/Html/HtmlOptionsCommandUtilities.cs new file mode 100644 index 00000000..f1b7fcec --- /dev/null +++ b/Sources/PSWriteOffice/Cmdlets/Html/HtmlOptionsCommandUtilities.cs @@ -0,0 +1,28 @@ +using System; +using System.IO; +using System.Management.Automation; + +namespace PSWriteOffice.Cmdlets.Html; + +internal static class HtmlOptionsCommandUtilities { + internal static Uri NormalizeBaseUri(SessionState sessionState, string value) { + if (Uri.TryCreate(value, UriKind.Absolute, out Uri? absoluteUri) && + !absoluteUri.IsFile && + absoluteUri.Scheme.Length > 1) { + return absoluteUri; + } + + string providerPath = absoluteUri?.IsFile == true + ? absoluteUri.LocalPath + : sessionState.Path.GetUnresolvedProviderPathFromPSPath(value); + string fullPath = Path.GetFullPath(providerPath); + bool isDirectory = Directory.Exists(fullPath) || + value.EndsWith(Path.DirectorySeparatorChar.ToString(), StringComparison.Ordinal) || + value.EndsWith(Path.AltDirectorySeparatorChar.ToString(), StringComparison.Ordinal); + if (isDirectory) { + fullPath = fullPath.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar) + Path.DirectorySeparatorChar; + } + + return new Uri(fullPath, UriKind.Absolute); + } +} diff --git a/Sources/PSWriteOffice/Cmdlets/Html/NewOfficeHtmlConversionOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Html/NewOfficeHtmlConversionOptionsCommand.cs index 401ffd3b..c5d72260 100644 --- a/Sources/PSWriteOffice/Cmdlets/Html/NewOfficeHtmlConversionOptionsCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Html/NewOfficeHtmlConversionOptionsCommand.cs @@ -30,7 +30,7 @@ protected override void ProcessRecord() { var options = new HtmlConversionDocumentOptions(); if (Profile.HasValue) options.Profile = Profile.Value; if (Trust.HasValue) options.Trust = Trust.Value; - if (!string.IsNullOrWhiteSpace(BaseUri)) options.BaseUri = new Uri(BaseUri!, UriKind.RelativeOrAbsolute); + if (!string.IsNullOrWhiteSpace(BaseUri)) options.BaseUri = HtmlOptionsCommandUtilities.NormalizeBaseUri(SessionState, BaseUri!); if (IsBound(nameof(UseBodyContentsOnly))) options.UseBodyContentsOnly = UseBodyContentsOnly.IsPresent; if (IsBound(nameof(IncludeNormalizedHtml))) options.IncludeNormalizedHtml = IncludeNormalizedHtml.IsPresent; WriteObject(options); diff --git a/Sources/PSWriteOffice/Cmdlets/Html/NewOfficeHtmlRenderOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Html/NewOfficeHtmlRenderOptionsCommand.cs index 33f684d5..4837f124 100644 --- a/Sources/PSWriteOffice/Cmdlets/Html/NewOfficeHtmlRenderOptionsCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Html/NewOfficeHtmlRenderOptionsCommand.cs @@ -60,7 +60,7 @@ protected override void ProcessRecord() { if (DefaultFontFamily != null) options.DefaultFontFamily = DefaultFontFamily; if (DefaultFontSize.HasValue) options.DefaultFontSize = DefaultFontSize.Value; if (DefaultLineHeight.HasValue) options.DefaultLineHeight = DefaultLineHeight.Value; - if (!string.IsNullOrWhiteSpace(BaseUri)) options.BaseUri = new Uri(BaseUri!, UriKind.RelativeOrAbsolute); + if (!string.IsNullOrWhiteSpace(BaseUri)) options.BaseUri = HtmlOptionsCommandUtilities.NormalizeBaseUri(SessionState, BaseUri!); if (MaxPageCount.HasValue) options.MaxPageCount = MaxPageCount.Value; if (MaxInputCharacters.HasValue) options.MaxInputCharacters = MaxInputCharacters.Value; if (MaxHtmlNodes.HasValue) options.MaxHtmlNodes = MaxHtmlNodes.Value; diff --git a/Sources/PSWriteOffice/Cmdlets/OpenDocument/SetOfficeOpenDocumentCellCommand.cs b/Sources/PSWriteOffice/Cmdlets/OpenDocument/SetOfficeOpenDocumentCellCommand.cs index 9c77dc82..8760ad2c 100644 --- a/Sources/PSWriteOffice/Cmdlets/OpenDocument/SetOfficeOpenDocumentCellCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/OpenDocument/SetOfficeOpenDocumentCellCommand.cs @@ -46,10 +46,14 @@ protected override void ProcessRecord() { switch (value) { case null: cell.ClearValue(); break; case bool boolean: cell.SetBoolean(boolean); break; + case sbyte number: cell.SetNumber(number); break; case byte number: cell.SetNumber(number); break; case short number: cell.SetNumber(number); break; + case ushort number: cell.SetNumber(number); break; case int number: cell.SetNumber(number); break; + case uint number: cell.SetNumber(number); break; case long number: cell.SetNumber(number); break; + case ulong number: cell.SetNumber(number); break; case float number: cell.SetNumber(number); break; case double number: cell.SetNumber(number); break; case decimal number: cell.SetDecimal(number); break; diff --git a/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs b/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs index 196aa88d..242122ea 100644 --- a/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Pdf/ExportOfficeDocumentPdfCommand.cs @@ -60,7 +60,7 @@ public sealed class ExportOfficeDocumentPdfCommand : PSCmdlet { public string Path { get; set; } = string.Empty; /// Password used to open an encrypted Word, Excel, or PowerPoint source file. - [Parameter(ParameterSetName = ParameterSetPath)] + [Parameter] public string? Password { get; set; } /// Word-specific PDF options. diff --git a/Sources/PSWriteOffice/Cmdlets/Visio/NewOfficeVisioImageOptionsCommand.cs b/Sources/PSWriteOffice/Cmdlets/Visio/NewOfficeVisioImageOptionsCommand.cs index e8b18f4e..223e4f71 100644 --- a/Sources/PSWriteOffice/Cmdlets/Visio/NewOfficeVisioImageOptionsCommand.cs +++ b/Sources/PSWriteOffice/Cmdlets/Visio/NewOfficeVisioImageOptionsCommand.cs @@ -9,7 +9,7 @@ namespace PSWriteOffice.Cmdlets.Visio; /// Render the first Visio page with text and connector labels. /// PS> /// $options = New-OfficeVisioImageOptions -PageIndex 0 -PageCount 1 -RenderText -RenderConnectorLabels -/// Export-OfficeVisioImage -Path .\Diagram.vsdx -OutputPath .\Preview.svg -Options $options +/// Export-OfficeVisioImage -Path .\Diagram.vsdx -OutputPath .\Preview -Format Svg -Options $options /// [Cmdlet(VerbsCommon.New, "OfficeVisioImageOptions")] [OutputType(typeof(VisioImageExportOptions))] diff --git a/Tests/OfficeIMONextSupport.Tests.ps1 b/Tests/OfficeIMONextSupport.Tests.ps1 index a40b1661..e9f1ef73 100644 --- a/Tests/OfficeIMONextSupport.Tests.ps1 +++ b/Tests/OfficeIMONextSupport.Tests.ps1 @@ -180,6 +180,12 @@ Describe 'Expanded OfficeIMO support' { $sheet = $objectSpreadsheet | Add-OfficeOpenDocumentSheet -Name 'Object' -PassThru $cell = $sheet | Set-OfficeOpenDocumentCell -Row 0 -Column 0 -Value 42 -PassThru $cell.Value.AsDouble() | Should -Be 42 + + $numericValues = @([sbyte]-7, [uint16]8, [uint32]9, [uint64]10) + for ($column = 0; $column -lt $numericValues.Count; $column++) { + $numericCell = $sheet | Set-OfficeOpenDocumentCell -Row 1 -Column $column -Value $numericValues[$column] -PassThru + $numericCell.Value.AsDouble() | Should -Be ([double]$numericValues[$column]) + } } It 'protects OpenDocument destinations and validates conversion extensions' { diff --git a/Tests/PublicApiConsistency.Tests.ps1 b/Tests/PublicApiConsistency.Tests.ps1 index ee5fe738..030a6667 100644 --- a/Tests/PublicApiConsistency.Tests.ps1 +++ b/Tests/PublicApiConsistency.Tests.ps1 @@ -70,7 +70,9 @@ Describe 'PSWriteOffice public API consistency' { $builder.OutputType.Type.Name | Should -Contain $consumer.Parameters[$contract.Parameter].ParameterType.Name @($builder.Parameters.Values | Where-Object ParameterType -eq ([System.Nullable[bool]])) | Should -HaveCount 0 -Because "$($contract.Builder) should expose PowerShell switches rather than nullable booleans" - $exampleText = Get-Help $contract.Builder -Examples | Out-String + $helpPath = Join-Path (Join-Path $PSScriptRoot '..\Docs') "$($contract.Builder).md" + Test-Path -LiteralPath $helpPath | Should -BeTrue -Because "$($contract.Builder) should have generated command help" + $exampleText = Get-Content -LiteralPath $helpPath -Raw $exampleText | Should -Match ([regex]::Escape($contract.Command)) -Because "$($contract.Builder) should show how its result reaches the consuming command" $exampleText | Should -Not -Match "(?m)-[A-Za-z]+\s+'Value'" -Because "$($contract.Builder) should not publish generated placeholder examples" } @@ -109,6 +111,31 @@ Describe 'PSWriteOffice public API consistency' { $command.ParameterSets.Name | Should -Contain 'Path' } + It 'accepts a password when a source path string is piped to PDF export' { + $sourcePath = Join-Path $TestDrive 'encrypted.docx' + $outputPath = Join-Path $TestDrive 'encrypted.pdf' + + { $sourcePath | Export-OfficeDocumentPdf -Path $outputPath -Password 'secret' -WhatIf -ErrorAction Stop } | + Should -Not -Throw + } + + It 'normalizes filesystem directories used as HTML base URIs' { + $assetsPath = Join-Path $TestDrive 'Assets' + New-Item -ItemType Directory -Path $assetsPath | Out-Null + + foreach ($options in @( + New-OfficeHtmlConversionOptions -BaseUri $assetsPath + New-OfficeHtmlRenderOptions -BaseUri $assetsPath + )) { + $options.BaseUri.IsAbsoluteUri | Should -BeTrue + $options.BaseUri.IsFile | Should -BeTrue + $options.BaseUri.AbsoluteUri | Should -Match '/$' + } + + (New-OfficeHtmlConversionOptions -BaseUri 'https://example.test/assets/').BaseUri.AbsoluteUri | + Should -Be 'https://example.test/assets/' + } + It 'provides a discoverable PowerShell builder for every PDF export options type' { $command = Get-Command Export-OfficeDocumentPdf $builders = [ordered]@{ diff --git a/WebsiteArtifacts/apidocs/powershell/PSWriteOffice-help.xml b/WebsiteArtifacts/apidocs/powershell/PSWriteOffice-help.xml index 6c4a9165..1d195143 100644 --- a/WebsiteArtifacts/apidocs/powershell/PSWriteOffice-help.xml +++ b/WebsiteArtifacts/apidocs/powershell/PSWriteOffice-help.xml @@ -81857,6 +81857,18 @@ such as a rich generated header or footer. Styling remains owned by New-OfficeTe None + + Password + + Password used to open an encrypted Word, Excel, or PowerPoint source file. + + String + + String + + + None + Path @@ -152802,7 +152814,7 @@ Use -NoSave or omit -Path when a document object should be returned for further PS> $options = New-OfficeVisioImageOptions -PageIndex 0 -PageCount 1 -RenderText -RenderConnectorLabels - Export-OfficeVisioImage -Path .\Diagram.vsdx -OutputPath .\Preview.svg -Options $options + Export-OfficeVisioImage -Path .\Diagram.vsdx -OutputPath .\Preview -Format Svg -Options $options