diff --git a/.gitattributes b/.gitattributes index 9fb85ec49f011..ff067eed84e37 100644 --- a/.gitattributes +++ b/.gitattributes @@ -9,6 +9,10 @@ # Declare files that will always have CRLF line endings on checkout. *.sln text eol=crlf +# Reference docs are generated by PlatyPS/transform scripts on Windows. +# Force LF so regenerated markdown never churns the diff with CRLF endings. +*.md text eol=lf + # Denote all files that are truly binary and should not be modified. *.png binary *.jpg binary \ No newline at end of file diff --git a/azure-pipelines/common-templates/generate-module-docs-steps.yml b/azure-pipelines/common-templates/generate-module-docs-steps.yml new file mode 100644 index 0000000000000..290ee79651d59 --- /dev/null +++ b/azure-pipelines/common-templates/generate-module-docs-steps.yml @@ -0,0 +1,219 @@ +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. +# +# Reusable steps that generate and post-process documentation for a SINGLE module in a SINGLE +# SDK profile, then open a dedicated pull request for it. Designed to run inside an isolated +# per-module stage so an import/assembly conflict for one module can never affect another. +# +# Failure containment: the generate step runs with continueOnError, and every step after it is +# gated on the ModuleGenerated variable (set only when generation actually succeeds). If the +# module fails to import, nothing is deleted, no PR is opened, and the stage is marked +# partially-succeeded WITHOUT failing the overall pipeline or any other module's stage. + +parameters: + - name: Module + type: string + - name: GraphProfileFilter + type: string + - name: BranchPrefix + type: string + default: WeeklyDocs + - name: BaseBranch + type: string + default: main + +steps: + - template: ../update-template.yml + parameters: + InstallProfile: ${{ parameters.GraphProfileFilter }} + Module: ${{ parameters.Module }} + + - task: PowerShell@2 + name: ComputeBranch + displayName: 'Compute branch name' + inputs: + targetType: 'inline' + pwsh: true + script: | + git submodule update --init --recursive + $branch = "{0}-{1}-{2}_{3}" -f "${{ parameters.BranchPrefix }}", "${{ parameters.GraphProfileFilter }}", "${{ parameters.Module }}", (Get-Date -Format yyyyMMddHHmm) + Write-Host "Compute branch: $branch" + Write-Host "##vso[task.setvariable variable=ModuleBranch;isOutput=true]$branch" + + - task: Bash@3 + displayName: 'Create module refresh branch' + inputs: + targetType: inline + script: | + git status + git branch $(ComputeBranch.ModuleBranch) + git checkout $(ComputeBranch.ModuleBranch) + git status + + - task: PowerShell@2 + displayName: 'Create missing external docs folder' + inputs: + targetType: 'filePath' + pwsh: true + filePath: scripts/CreateExternalDocsFolder.ps1 + + - task: PowerShell@2 + name: GenerateDocs + displayName: 'Generate markdown (${{ parameters.Module }} / ${{ parameters.GraphProfileFilter }})' + continueOnError: true + inputs: + targetType: 'filePath' + pwsh: true + filePath: scripts/GenerateMarkDown.ps1 + arguments: -GraphProfileFilter "${{ parameters.GraphProfileFilter }}" -ModuleFilter "${{ parameters.Module }}" + + - task: PowerShell@2 + displayName: 'Escape disallowed html tags' + condition: and(succeeded(), eq(variables['ModuleGenerated'], 'true')) + continueOnError: true + inputs: + targetType: 'filePath' + pwsh: true + filePath: scripts/EscapeDisallowedHtmlTags.ps1 + arguments: -GraphProfileFilter "${{ parameters.GraphProfileFilter }}" -ModuleFilter "${{ parameters.Module }}" + + - task: PowerShell@2 + displayName: 'Update metadata header' + condition: and(succeeded(), eq(variables['ModuleGenerated'], 'true')) + continueOnError: true + inputs: + targetType: 'filePath' + pwsh: true + filePath: scripts/MsSubserviceUpdate.ps1 + arguments: -GraphProfileFilter "${{ parameters.GraphProfileFilter }}" -ModuleFilter "${{ parameters.Module }}" + + - task: PowerShell@2 + displayName: 'Generate permissions table' + condition: and(succeeded(), eq(variables['ModuleGenerated'], 'true')) + continueOnError: true + inputs: + targetType: 'filePath' + pwsh: true + filePath: scripts/GeneratePermissionsTable.ps1 + arguments: -GraphProfileFilter "${{ parameters.GraphProfileFilter }}" -ModuleFilter "${{ parameters.Module }}" + + - task: PowerShell@2 + displayName: 'Update Links' + condition: and(succeeded(), eq(variables['ModuleGenerated'], 'true')) + continueOnError: true + inputs: + targetType: 'filePath' + pwsh: true + filePath: scripts/UpdateLinks.ps1 + arguments: -GraphProfileFilter "${{ parameters.GraphProfileFilter }}" -ModuleFilter "${{ parameters.Module }}" + + - task: PowerShell@2 + displayName: 'Repair Examples and Descriptions and Title' + condition: and(succeeded(), eq(variables['ModuleGenerated'], 'true')) + continueOnError: true + inputs: + targetType: 'filePath' + pwsh: true + filePath: scripts/RepairExamplesDescriptionsAndTitle.ps1 + arguments: -GraphProfileFilter "${{ parameters.GraphProfileFilter }}" -ModuleFilter "${{ parameters.Module }}" + + - task: PowerShell@2 + displayName: 'Remove boiler plate code' + condition: and(succeeded(), eq(variables['ModuleGenerated'], 'true')) + continueOnError: true + inputs: + targetType: 'filePath' + pwsh: true + filePath: scripts/RemoveBoilerPlateCode.ps1 + arguments: -GraphProfileFilter "${{ parameters.GraphProfileFilter }}" -ModuleFilter "${{ parameters.Module }}" + + - task: PowerShell@2 + displayName: 'Remove invalid fullstops' + condition: and(succeeded(), eq(variables['ModuleGenerated'], 'true')) + continueOnError: true + inputs: + targetType: 'filePath' + pwsh: true + filePath: scripts/RemoveInvalidFullStops.ps1 + arguments: -GraphProfileFilter "${{ parameters.GraphProfileFilter }}" -ModuleFilter "${{ parameters.Module }}" + + - task: PowerShell@2 + displayName: 'Generate missing docs for aliased cmdlets' + condition: and(succeeded(), eq(variables['ModuleGenerated'], 'true')) + continueOnError: true + inputs: + targetType: 'filePath' + pwsh: true + filePath: scripts/GenerateAliasedDocs.ps1 + arguments: -GraphProfileFilter "${{ parameters.GraphProfileFilter }}" -ModuleFilter "${{ parameters.Module }}" + + - task: PowerShell@2 + displayName: 'Correct related links section' + condition: and(succeeded(), eq(variables['ModuleGenerated'], 'true')) + continueOnError: true + inputs: + targetType: 'filePath' + pwsh: true + filePath: scripts/CorrectRelatedLinks-AllFiles.ps1 + arguments: -GraphProfileFilter "${{ parameters.GraphProfileFilter }}" -ModuleFilter "${{ parameters.Module }}" + + - task: AzureKeyVault@2 + displayName: "Azure Key Vault: Get GitHub App secrets" + condition: and(succeeded(), eq(variables['ModuleGenerated'], 'true')) + inputs: + azureSubscription: "Federated AKV Managed Identity Connection" + KeyVaultName: akv-prod-eastus + SecretsFilter: "microsoft-graph-devx-bot-appid,microsoft-graph-devx-bot-privatekey" + + - task: PowerShell@2 + displayName: 'Push ${{ parameters.Module }} (${{ parameters.GraphProfileFilter }}) branch' + condition: and(succeeded(), eq(variables['ModuleGenerated'], 'true')) + continueOnError: true + env: + GhAppId: $(microsoft-graph-devx-bot-appid) + GhAppKey: $(microsoft-graph-devx-bot-privatekey) + inputs: + targetType: inline + pwsh: true + script: | + git config --global user.email "GraphTooling@service.microsoft.com" + git config --global user.name "Microsoft Graph DevX Tooling" + git config --system core.longpaths true + # The microsoft-graph-devx-bot GitHub App must have contents:write on this repo. + $token = & "$(Build.SourcesDirectory)/scripts/Generate-Github-Token.ps1" -AppClientId $env:GhAppId -AppPrivateKeyContents $env:GhAppKey -Repository "MicrosoftDocs/microsoftgraph-docs-powershell" + if ([string]::IsNullOrWhiteSpace($token)) { throw "Failed to generate GitHub App installation token." } + # Mask the token so it is never surfaced in pipeline logs. + Write-Host "##vso[task.setsecret]$token" + git status + git add . + $pending = git status --porcelain + if (-not [string]::IsNullOrWhiteSpace($pending)) { + git commit -m "Updating reference docs for ${{ parameters.Module }} (${{ parameters.GraphProfileFilter }})" + } + else { + $global:LASTEXITCODE = 0 + } + git push --set-upstream "https://x-access-token:$token@github.com/MicrosoftDocs/microsoftgraph-docs-powershell.git" $(ComputeBranch.ModuleBranch) + git status + + - task: PowerShell@2 + displayName: 'Create PR for ${{ parameters.Module }} (${{ parameters.GraphProfileFilter }})' + condition: and(succeeded(), eq(variables['ModuleGenerated'], 'true')) + continueOnError: true + env: + GhAppId: $(microsoft-graph-devx-bot-appid) + GhAppKey: $(microsoft-graph-devx-bot-privatekey) + inputs: + targetType: inline + pwsh: true + script: | + $BaseBranchName = "${{ parameters.BaseBranch }}" + $Head = "MicrosoftDocs:$(ComputeBranch.ModuleBranch)" + $Title = "Weekly Docs Refresh: ${{ parameters.Module }} (${{ parameters.GraphProfileFilter }})" + $Body = "This pull request was automatically created by Azure Pipelines for the ``${{ parameters.Module }}`` module (``${{ parameters.GraphProfileFilter }}`` profile). **Important** Check for unexpected deletions or changes in this PR." + # The microsoft-graph-devx-bot GitHub App must have pull_requests:write on this repo. + $env:GITHUB_TOKEN = & "$(Build.SourcesDirectory)/scripts/Generate-Github-Token.ps1" -AppClientId $env:GhAppId -AppPrivateKeyContents $env:GhAppKey -Repository "MicrosoftDocs/microsoftgraph-docs-powershell" + if ([string]::IsNullOrWhiteSpace($env:GITHUB_TOKEN)) { throw "Failed to generate GitHub App installation token." } + # Mask the token so it is never surfaced in pipeline logs. + Write-Host "##vso[task.setsecret]$env:GITHUB_TOKEN" + gh pr create -t $Title -b $Body -B $BaseBranchName -H $Head diff --git a/azure-pipelines/common-templates/module-stages.yml b/azure-pipelines/common-templates/module-stages.yml new file mode 100644 index 0000000000000..f8a1f19f2cfc1 --- /dev/null +++ b/azure-pipelines/common-templates/module-stages.yml @@ -0,0 +1,50 @@ +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. +# +# Emits one fully independent stage per module for a given SDK profile. Each stage runs on its +# own agent (clean assembly-load context), generates + post-processes docs for that single +# module, and opens its own pull request. All stages have dependsOn: [] so they run in +# parallel and one module can never block or fail another. + +parameters: + - name: GraphProfileFilter + type: string + # Short label used in stage names (stage names cannot contain '.'), e.g. "v1" or "beta". + - name: ProfileLabel + type: string + - name: Modules + type: object + default: [] + - name: BranchPrefix + type: string + default: WeeklyDocs + - name: BaseBranch + type: string + default: main + - name: PipelineTimeout + type: number + default: 120 + +stages: + - ${{ each module in parameters.Modules }}: + - stage: "Gen_${{ parameters.ProfileLabel }}_${{ replace(module, '.', '_') }}" + displayName: '${{ parameters.GraphProfileFilter }} - ${{ module }}' + dependsOn: [] + jobs: + - job: GenerateModuleDocs + timeoutInMinutes: ${{ parameters.PipelineTimeout }} + templateContext: + outputs: + - output: pipelineArtifact + displayName: 'Publish missing external docs' + targetPath: missingexternaldocsurl + artifactName: "MissingExternalDocs-${{ parameters.ProfileLabel }}-${{ replace(module, '.', '-') }}" + publishLocation: 'Container' + condition: succeededOrFailed() + steps: + - template: generate-module-docs-steps.yml + parameters: + Module: ${{ module }} + GraphProfileFilter: ${{ parameters.GraphProfileFilter }} + BranchPrefix: ${{ parameters.BranchPrefix }} + BaseBranch: ${{ parameters.BaseBranch }} diff --git a/azure-pipelines/powershell-docs.yml b/azure-pipelines/powershell-docs.yml index c0304ad79ada1..71679bf595944 100644 --- a/azure-pipelines/powershell-docs.yml +++ b/azure-pipelines/powershell-docs.yml @@ -47,156 +47,106 @@ extends: customBuildTags: - ES365AIMigrationTooling stages: - - stage: stage - jobs: - - job: PowerShellDocsUpdate - timeoutInMinutes: ${{ parameters.PipelineTimeout }} - templateContext: - outputs: - - output: pipelineArtifact - displayName: 'Publish Examples to be reviewed as artifact' - targetPath: missingexternaldocsurl - artifactName: 'MissingExternalDocs' - publishLocation: 'Container' - steps: - - template: azure-pipelines/update-template.yml@self - - task : PowerShell@2 - name: "ComputeBranch" - displayName: 'Compute Branch Name' - inputs: - targetType: 'inline' - script: | - git submodule update --init --recursive - $branch = "{0}_{1}" -f "WeeklyReferenceDocsUpdate", (Get-Date -Format yyyyMMddHHmm) - Write-Host "Compute branch: $branch" - Write-Host "##vso[task.setvariable variable=WeeklyReferenceDocsBranch;isOutput=true]$branch" - - task: Bash@3 - displayName: "Create weekly refresh branch" - inputs: - targetType: inline - script: | - git status - git branch $(ComputeBranch.WeeklyReferenceDocsBranch) - git checkout $(ComputeBranch.WeeklyReferenceDocsBranch) - git status - - task: PowerShell@2 - displayName: 'Create missing external docs folder' - continueOnError: false - inputs: - targetType: 'filePath' - pwsh: true - filePath: scripts/CreateExternalDocsFolder.ps1 - - - task: PowerShell@2 - displayName: 'Generate markdown files from PowerShell help files' - continueOnError: false - inputs: - targetType: 'filePath' - pwsh: true - filePath: scripts/GenerateMarkDown.ps1 - - task: PowerShell@2 - displayName: 'Escape disallowed html tags' - continueOnError: false - inputs: - targetType: 'filePath' - pwsh: true - filePath: scripts/EscapeDisallowedHtmlTags.ps1 - - task: PowerShell@2 - displayName: 'Update metadata header' - continueOnError: false - inputs: - targetType: 'filePath' - pwsh: true - filePath: scripts/MsSubserviceUpdate.ps1 - - task: PowerShell@2 - displayName: 'Generate permissions table' - continueOnError: false - inputs: - targetType: 'filePath' - pwsh: true - filePath: scripts/GeneratePermissionsTable.ps1 - - task: PowerShell@2 - displayName: 'Update Links' - continueOnError: false - inputs: - targetType: 'filePath' - pwsh: true - filePath: scripts/UpdateLinks.ps1 - errorActionPreference: 'stop' - - task: PowerShell@2 - displayName: 'Repair Examples and Descriptions and Title' - continueOnError: false - inputs: - targetType: 'filePath' - pwsh: true - filePath: scripts/RepairExamplesDescriptionsAndTitle.ps1 - - task: PowerShell@2 - displayName: 'Remove boiler plate code' - continueOnError: false - inputs: - targetType: 'filePath' - pwsh: true - filePath: scripts/RemoveBoilerPlateCode.ps1 - - task: PowerShell@2 - displayName: 'Remove invalid fullstops' - continueOnError: false - inputs: - targetType: 'filePath' - pwsh: true - filePath: scripts/RemoveInvalidFullStops.ps1 - - task: PowerShell@2 - displayName: 'Generate missing docs for aliased cmdlets' - continueOnError: false - inputs: - targetType: 'filePath' - pwsh: true - filePath: scripts/GenerateAliasedDocs.ps1 - - task: PowerShell@2 - displayName: 'Correct related links section' - continueOnError: false - inputs: - targetType: 'filePath' - pwsh: true - filePath: scripts/CorrectRelatedLinks-AllFiles.ps1 - - task: PowerShell@2 - displayName: 'Stabilize ms.date values' - continueOnError: false - inputs: - targetType: 'filePath' - pwsh: true - filePath: scripts/StabilizeMsDate.ps1 - errorActionPreference: 'stop' - - task: AzureKeyVault@2 - displayName: "Azure Key Vault: Get GitHub App secrets" - inputs: - azureSubscription: "Federated AKV Managed Identity Connection" - KeyVaultName: akv-prod-eastus - SecretsFilter: "microsoft-graph-devx-bot-appid,microsoft-graph-devx-bot-privatekey" - - task: PowerShell@2 - displayName: Pushing to github - env: - GhAppId: $(microsoft-graph-devx-bot-appid) - GhAppKey: $(microsoft-graph-devx-bot-privatekey) - inputs: - targetType: inline - pwsh: true - script: | - git config --global user.email "GraphTooling@service.microsoft.com" - git config --global user.name "Microsoft Graph DevX Tooling" - git config --system core.longpaths true - # The microsoft-graph-devx-bot GitHub App must have contents:write on this repo. - $token = & "$(Build.SourcesDirectory)/scripts/Generate-Github-Token.ps1" -AppClientId $env:GhAppId -AppPrivateKeyContents $env:GhAppKey -Repository "MicrosoftDocs/microsoftgraph-docs-powershell" - if ([string]::IsNullOrWhiteSpace($token)) { throw "Failed to generate GitHub App installation token." } - # Mask the token so it is never surfaced in pipeline logs. - Write-Host "##vso[task.setsecret]$token" - git status - git add . - git commit -m "Updating reference docs" - git push --set-upstream "https://x-access-token:$token@github.com/MicrosoftDocs/microsoftgraph-docs-powershell.git" $(ComputeBranch.WeeklyReferenceDocsBranch) - git status - - template: azure-pipelines/common-templates/create-pr.yml@self - parameters: - BaseBranch: "main" - TargetBranch: $(ComputeBranch.WeeklyReferenceDocsBranch) - Title: "Weekly PowerShell Microsoft Graph Reference Docs Refresh" - Body: "This pull request was automatically created by Azure Pipelines. **Important** Check for unexpected deletions or changes in this PR." \ No newline at end of file + - template: common-templates/module-stages.yml@self + parameters: + GraphProfileFilter: "v1.0" + ProfileLabel: "v1" + BranchPrefix: "WeeklyDocs" + BaseBranch: "main" + PipelineTimeout: ${{ parameters.PipelineTimeout }} + Modules: + - Authentication + - Applications + - Bookings + - BusinessScenario + - BackupRestore + - Calendar + - ChangeNotifications + - CloudCommunications + - Compliance + - CrossDeviceExperiences + - Devices.CloudPrint + - Devices.CorporateManagement + - Devices.ServiceAnnouncement + - DeviceManagement + - DeviceManagement.Administration + - DeviceManagement.Enrollment + - DeviceManagement.Actions + - DeviceManagement.Functions + - DirectoryObjects + - Education + - Files + - Financials + - Groups + - Identity.DirectoryManagement + - Identity.Governance + - Identity.SignIns + - Identity.Partner + - Mail + - ManagedTenants + - NetworkAccess + - Notes + - People + - PersonalContacts + - Planner + - Reports + - SchemaExtensions + - Search + - Security + - Sites + - Teams + - Users + - Users.Actions + - Users.Functions + - WindowsUpdates + - template: common-templates/module-stages.yml@self + parameters: + GraphProfileFilter: "beta" + ProfileLabel: "beta" + BranchPrefix: "WeeklyDocs" + BaseBranch: "main" + PipelineTimeout: ${{ parameters.PipelineTimeout }} + Modules: + - Applications + - Bookings + - BusinessScenario + - BackupRestore + - Calendar + - ChangeNotifications + - CloudCommunications + - Compliance + - CrossDeviceExperiences + - Devices.CloudPrint + - Devices.CorporateManagement + - Devices.ServiceAnnouncement + - DeviceManagement + - DeviceManagement.Administration + - DeviceManagement.Enrollment + - DeviceManagement.Actions + - DeviceManagement.Functions + - DirectoryObjects + - Education + - Files + - Financials + - Groups + - Identity.DirectoryManagement + - Identity.Governance + - Identity.SignIns + - Identity.Partner + - Mail + - ManagedTenants + - NetworkAccess + - Notes + - People + - PersonalContacts + - Planner + - Reports + - SchemaExtensions + - Search + - Security + - Sites + - Teams + - Users + - Users.Actions + - Users.Functions + - WindowsUpdates diff --git a/azure-pipelines/update-template.yml b/azure-pipelines/update-template.yml index cd0ec7be60216..8884e887a9aae 100644 --- a/azure-pipelines/update-template.yml +++ b/azure-pipelines/update-template.yml @@ -1,3 +1,16 @@ +parameters: + # Which SDK profile to install for. "both" preserves the original full-run behaviour and + # installs the Microsoft.Graph and Microsoft.Graph.Beta meta modules. + - name: InstallProfile + type: string + default: both + # When set, only the single workload submodule for that module (plus Authentication) is + # installed instead of the whole SDK. This keeps each isolated per-module stage fast and + # guarantees only one workload module is ever present in the session. + - name: Module + type: string + default: "" + steps: - task: PowerShell@2 displayName: Install Required Modules @@ -12,25 +25,44 @@ steps: if (-not (Get-PSRepository -Name PowerShell_V2_Build -ErrorAction SilentlyContinue)) { Register-PSRepository -Name PowerShell_V2_Build -SourceLocation $feedUrl -InstallationPolicy Trusted -Credential $cred } - try{ - # Try to update the V1 module first. - Install-Module Microsoft.Graph.Beta -Repository PowerShell_V2_Build -Credential $cred -Scope AllUsers -AcceptLicense -SkipPublisherCheck -Force -AllowClobber - }catch{ - # If the module is not installed, install it. - echo "Error when installing Beta" + + $installProfile = "${{ parameters.InstallProfile }}" + $module = "${{ parameters.Module }}" + + # Build the list of modules to install. + $toInstall = @() + if ([string]::IsNullOrWhiteSpace($module)) { + # Full-run behaviour: install the meta module(s) for the requested profile(s). + if ($installProfile -ne 'v1.0') { $toInstall += 'Microsoft.Graph.Beta' } + if ($installProfile -ne 'beta') { $toInstall += 'Microsoft.Graph' } } - try{ - # Try to update the beta module first. - Install-Module Microsoft.Graph -Repository PowerShell_V2_Build -Credential $cred -Scope AllUsers -AcceptLicense -SkipPublisherCheck -Force -AllowClobber - }catch{ - # If the module is not installed, install it. - echo "Error when installing V1" + else { + # Isolated per-module run: install only Authentication + the single workload + # submodule for the target profile. + $toInstall += 'Microsoft.Graph.Authentication' + if ($installProfile -eq 'beta') { + $toInstall += "Microsoft.Graph.Beta.$module" + } + else { + $toInstall += "Microsoft.Graph.$module" + } + } + + foreach ($m in $toInstall) { + try { + Install-Module $m -Repository PowerShell_V2_Build -Credential $cred -Scope AllUsers -AcceptLicense -SkipPublisherCheck -Force -AllowClobber + } + catch { + # Do not fail the install step; a missing/failed module surfaces later as a + # fail-safe (no deletion, no PR) in the isolated generation stage. + Write-Host "##vso[task.logissue type=warning]Failed to install $m : $($_.Exception.Message)" + } } - $modules = Get-Module -Name Microsoft.Graph -ListAvailable + $modules = Get-Module -Name Microsoft.Graph* -ListAvailable foreach($r in $modules) { - echo $r.Version + echo "$($r.Name) $($r.Version)" } env: SYSTEM_ACCESSTOKEN: $(System.AccessToken) diff --git a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementHealthOverview.md b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementHealthOverview.md index 721851ce8ab37..6aef4ec643c09 100644 --- a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementHealthOverview.md +++ b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementHealthOverview.md @@ -4,7 +4,7 @@ external help file: Microsoft.Graph.Devices.ServiceAnnouncement-Help.xml HelpUri: https://learn.microsoft.com/powershell/module/microsoft.graph.devices.serviceannouncement/get-mgserviceannouncementhealthoverview Locale: en-US Module Name: Microsoft.Graph.Devices.ServiceAnnouncement -ms.date: 06/05/2026 +ms.date: 07/31/2026 PlatyPS schema version: 2024-05-01 title: Get-MgServiceAnnouncementHealthOverview --- @@ -29,7 +29,7 @@ Get-MgServiceAnnouncementHealthOverview [-ExpandProperty ] [-Property [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] [-PageSize ] [-All] - [-CountVariable ] [] + [-CountVariable ] ``` ### Get @@ -38,7 +38,7 @@ Get-MgServiceAnnouncementHealthOverview [-ExpandProperty ] [-Property Get-MgServiceAnnouncementHealthOverview -ServiceHealthId [-ExpandProperty ] [-Property ] [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] - [-ProxyCredential ] [-ProxyUseDefaultCredentials] [] + [-ProxyCredential ] [-ProxyUseDefaultCredentials] ``` ### GetViaIdentity @@ -48,7 +48,7 @@ Get-MgServiceAnnouncementHealthOverview -InputObject ] [-Property ] [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] - [-ProxyUseDefaultCredentials] [] + [-ProxyUseDefaultCredentials] ``` ## ALIASES diff --git a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementHealthOverviewCount.md b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementHealthOverviewCount.md index 997f7f9fd3e2c..faae575022b20 100644 --- a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementHealthOverviewCount.md +++ b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementHealthOverviewCount.md @@ -4,7 +4,7 @@ external help file: Microsoft.Graph.Devices.ServiceAnnouncement-Help.xml HelpUri: https://learn.microsoft.com/powershell/module/microsoft.graph.devices.serviceannouncement/get-mgserviceannouncementhealthoverviewcount Locale: en-US Module Name: Microsoft.Graph.Devices.ServiceAnnouncement -ms.date: 06/05/2026 +ms.date: 07/31/2026 PlatyPS schema version: 2024-05-01 title: Get-MgServiceAnnouncementHealthOverviewCount --- @@ -26,7 +26,7 @@ Get the number of the resource Get-MgServiceAnnouncementHealthOverviewCount [-Filter ] [-Search ] [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] - [-ProxyCredential ] [-ProxyUseDefaultCredentials] [] + [-ProxyCredential ] [-ProxyUseDefaultCredentials] ``` ## ALIASES diff --git a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementHealthOverviewIssue.md b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementHealthOverviewIssue.md index 79681896c9311..1d34b6b48416b 100644 --- a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementHealthOverviewIssue.md +++ b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementHealthOverviewIssue.md @@ -4,7 +4,7 @@ external help file: Microsoft.Graph.Devices.ServiceAnnouncement-Help.xml HelpUri: https://learn.microsoft.com/powershell/module/microsoft.graph.devices.serviceannouncement/get-mgserviceannouncementhealthoverviewissue Locale: en-US Module Name: Microsoft.Graph.Devices.ServiceAnnouncement -ms.date: 06/05/2026 +ms.date: 07/31/2026 PlatyPS schema version: 2024-05-01 title: Get-MgServiceAnnouncementHealthOverviewIssue --- @@ -28,7 +28,7 @@ Get-MgServiceAnnouncementHealthOverviewIssue -ServiceHealthId [-ExpandP [-Top ] [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] [-PageSize ] [-All] - [-CountVariable ] [] + [-CountVariable ] ``` ### Get @@ -38,7 +38,7 @@ Get-MgServiceAnnouncementHealthOverviewIssue -ServiceHealthId -ServiceHealthIssueId [-ExpandProperty ] [-Property ] [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] - [-ProxyCredential ] [-ProxyUseDefaultCredentials] [] + [-ProxyCredential ] [-ProxyUseDefaultCredentials] ``` ### GetViaIdentity @@ -48,7 +48,7 @@ Get-MgServiceAnnouncementHealthOverviewIssue -InputObject ] [-Property ] [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] - [-ProxyUseDefaultCredentials] [] + [-ProxyUseDefaultCredentials] ``` ## ALIASES diff --git a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementHealthOverviewIssueCount.md b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementHealthOverviewIssueCount.md index 71544952fae42..86acf8deaab4b 100644 --- a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementHealthOverviewIssueCount.md +++ b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementHealthOverviewIssueCount.md @@ -4,7 +4,7 @@ external help file: Microsoft.Graph.Devices.ServiceAnnouncement-Help.xml HelpUri: https://learn.microsoft.com/powershell/module/microsoft.graph.devices.serviceannouncement/get-mgserviceannouncementhealthoverviewissuecount Locale: en-US Module Name: Microsoft.Graph.Devices.ServiceAnnouncement -ms.date: 06/05/2026 +ms.date: 07/31/2026 PlatyPS schema version: 2024-05-01 title: Get-MgServiceAnnouncementHealthOverviewIssueCount --- @@ -26,7 +26,7 @@ Get the number of the resource Get-MgServiceAnnouncementHealthOverviewIssueCount -ServiceHealthId [-Filter ] [-Search ] [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] - [-ProxyCredential ] [-ProxyUseDefaultCredentials] [] + [-ProxyCredential ] [-ProxyUseDefaultCredentials] ``` ### GetViaIdentity @@ -36,7 +36,7 @@ Get-MgServiceAnnouncementHealthOverviewIssueCount -InputObject ] [-Search ] [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] - [-ProxyUseDefaultCredentials] [] + [-ProxyUseDefaultCredentials] ``` ## ALIASES diff --git a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementIssue.md b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementIssue.md index eae6c97ef2e49..18f164294c3da 100644 --- a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementIssue.md +++ b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementIssue.md @@ -4,7 +4,7 @@ external help file: Microsoft.Graph.Devices.ServiceAnnouncement-Help.xml HelpUri: https://learn.microsoft.com/powershell/module/microsoft.graph.devices.serviceannouncement/get-mgserviceannouncementissue Locale: en-US Module Name: Microsoft.Graph.Devices.ServiceAnnouncement -ms.date: 06/05/2026 +ms.date: 07/31/2026 PlatyPS schema version: 2024-05-01 title: Get-MgServiceAnnouncementIssue --- @@ -30,7 +30,7 @@ Get-MgServiceAnnouncementIssue [-ExpandProperty ] [-Property ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] [-PageSize ] [-All] - [-CountVariable ] [] + [-CountVariable ] ``` ### Get @@ -39,7 +39,7 @@ Get-MgServiceAnnouncementIssue [-ExpandProperty ] [-Property [-ExpandProperty ] [-Property ] [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] - [-ProxyCredential ] [-ProxyUseDefaultCredentials] [] + [-ProxyCredential ] [-ProxyUseDefaultCredentials] ``` ### GetViaIdentity @@ -49,7 +49,7 @@ Get-MgServiceAnnouncementIssue -InputObject ] [-Property ] [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] - [-ProxyUseDefaultCredentials] [] + [-ProxyUseDefaultCredentials] ``` ## ALIASES diff --git a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementIssueCount.md b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementIssueCount.md index ba04cea24d3e5..82bd32a7d47ed 100644 --- a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementIssueCount.md +++ b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementIssueCount.md @@ -4,7 +4,7 @@ external help file: Microsoft.Graph.Devices.ServiceAnnouncement-Help.xml HelpUri: https://learn.microsoft.com/powershell/module/microsoft.graph.devices.serviceannouncement/get-mgserviceannouncementissuecount Locale: en-US Module Name: Microsoft.Graph.Devices.ServiceAnnouncement -ms.date: 06/05/2026 +ms.date: 07/31/2026 PlatyPS schema version: 2024-05-01 title: Get-MgServiceAnnouncementIssueCount --- @@ -26,7 +26,7 @@ Get the number of the resource Get-MgServiceAnnouncementIssueCount [-Filter ] [-Search ] [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] - [-ProxyCredential ] [-ProxyUseDefaultCredentials] [] + [-ProxyCredential ] [-ProxyUseDefaultCredentials] ``` ## ALIASES diff --git a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessage.md b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessage.md index 706d10a54e15a..7d8392f17cc16 100644 --- a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessage.md +++ b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessage.md @@ -4,7 +4,7 @@ external help file: Microsoft.Graph.Devices.ServiceAnnouncement-Help.xml HelpUri: https://learn.microsoft.com/powershell/module/microsoft.graph.devices.serviceannouncement/get-mgserviceannouncementmessage Locale: en-US Module Name: Microsoft.Graph.Devices.ServiceAnnouncement -ms.date: 06/05/2026 +ms.date: 07/31/2026 PlatyPS schema version: 2024-05-01 title: Get-MgServiceAnnouncementMessage --- @@ -30,7 +30,7 @@ Get-MgServiceAnnouncementMessage [-ExpandProperty ] [-Property ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] [-PageSize ] [-All] - [-CountVariable ] [] + [-CountVariable ] ``` ### Get @@ -39,7 +39,7 @@ Get-MgServiceAnnouncementMessage [-ExpandProperty ] [-Property [-ExpandProperty ] [-Property ] [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] - [-ProxyCredential ] [-ProxyUseDefaultCredentials] [] + [-ProxyCredential ] [-ProxyUseDefaultCredentials] ``` ### GetViaIdentity @@ -49,7 +49,7 @@ Get-MgServiceAnnouncementMessage -InputObject ] [-Property ] [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] - [-ProxyUseDefaultCredentials] [] + [-ProxyUseDefaultCredentials] ``` ## ALIASES diff --git a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessageAttachment.md b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessageAttachment.md index c50a6f00ed6db..fdf257fe22645 100644 --- a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessageAttachment.md +++ b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessageAttachment.md @@ -4,7 +4,7 @@ external help file: Microsoft.Graph.Devices.ServiceAnnouncement-Help.xml HelpUri: https://learn.microsoft.com/powershell/module/microsoft.graph.devices.serviceannouncement/get-mgserviceannouncementmessageattachment Locale: en-US Module Name: Microsoft.Graph.Devices.ServiceAnnouncement -ms.date: 06/05/2026 +ms.date: 07/31/2026 PlatyPS schema version: 2024-05-01 title: Get-MgServiceAnnouncementMessageAttachment --- @@ -29,7 +29,6 @@ Get-MgServiceAnnouncementMessageAttachment -ServiceUpdateMessageId [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] [-PageSize ] [-All] [-CountVariable ] - [] ``` ### Get @@ -39,7 +38,7 @@ Get-MgServiceAnnouncementMessageAttachment -ServiceAnnouncementAttachmentId [-ExpandProperty ] [-Property ] [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] - [-ProxyCredential ] [-ProxyUseDefaultCredentials] [] + [-ProxyCredential ] [-ProxyUseDefaultCredentials] ``` ### GetViaIdentity @@ -49,7 +48,7 @@ Get-MgServiceAnnouncementMessageAttachment -InputObject ] [-Property ] [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] - [-ProxyUseDefaultCredentials] [] + [-ProxyUseDefaultCredentials] ``` ## ALIASES diff --git a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessageAttachmentArchive.md b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessageAttachmentArchive.md index edf8d90227198..3042cf7f11850 100644 --- a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessageAttachmentArchive.md +++ b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessageAttachmentArchive.md @@ -4,7 +4,7 @@ external help file: Microsoft.Graph.Devices.ServiceAnnouncement-Help.xml HelpUri: https://learn.microsoft.com/powershell/module/microsoft.graph.devices.serviceannouncement/get-mgserviceannouncementmessageattachmentarchive Locale: en-US Module Name: Microsoft.Graph.Devices.ServiceAnnouncement -ms.date: 06/05/2026 +ms.date: 07/31/2026 PlatyPS schema version: 2024-05-01 title: Get-MgServiceAnnouncementMessageAttachmentArchive --- @@ -26,7 +26,7 @@ Get the list of attachments associated with a service message. Get-MgServiceAnnouncementMessageAttachmentArchive -ServiceUpdateMessageId -OutFile [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-PassThru] - [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] [] + [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] ``` ### GetViaIdentity @@ -35,7 +35,7 @@ Get-MgServiceAnnouncementMessageAttachmentArchive -ServiceUpdateMessageId -OutFile [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-PassThru] - [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] [] + [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] ``` ## ALIASES diff --git a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessageAttachmentContent.md b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessageAttachmentContent.md index 8d8399e9acb90..d25ede7540cde 100644 --- a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessageAttachmentContent.md +++ b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessageAttachmentContent.md @@ -4,7 +4,7 @@ external help file: Microsoft.Graph.Devices.ServiceAnnouncement-Help.xml HelpUri: https://learn.microsoft.com/powershell/module/microsoft.graph.devices.serviceannouncement/get-mgserviceannouncementmessageattachmentcontent Locale: en-US Module Name: Microsoft.Graph.Devices.ServiceAnnouncement -ms.date: 06/05/2026 +ms.date: 07/31/2026 PlatyPS schema version: 2024-05-01 title: Get-MgServiceAnnouncementMessageAttachmentContent --- @@ -27,7 +27,7 @@ Get-MgServiceAnnouncementMessageAttachmentContent -ServiceAnnouncementAttachment -ServiceUpdateMessageId -OutFile [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-PassThru] [-Proxy ] - [-ProxyCredential ] [-ProxyUseDefaultCredentials] [] + [-ProxyCredential ] [-ProxyUseDefaultCredentials] ``` ### GetViaIdentity @@ -36,7 +36,7 @@ Get-MgServiceAnnouncementMessageAttachmentContent -ServiceAnnouncementAttachment Get-MgServiceAnnouncementMessageAttachmentContent -InputObject -OutFile [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-PassThru] - [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] [] + [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] ``` ## ALIASES diff --git a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessageAttachmentCount.md b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessageAttachmentCount.md index 1d9dd1873e70c..928e9c026f0e3 100644 --- a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessageAttachmentCount.md +++ b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessageAttachmentCount.md @@ -4,7 +4,7 @@ external help file: Microsoft.Graph.Devices.ServiceAnnouncement-Help.xml HelpUri: https://learn.microsoft.com/powershell/module/microsoft.graph.devices.serviceannouncement/get-mgserviceannouncementmessageattachmentcount Locale: en-US Module Name: Microsoft.Graph.Devices.ServiceAnnouncement -ms.date: 06/05/2026 +ms.date: 07/31/2026 PlatyPS schema version: 2024-05-01 title: Get-MgServiceAnnouncementMessageAttachmentCount --- @@ -26,7 +26,7 @@ Get the number of the resource Get-MgServiceAnnouncementMessageAttachmentCount -ServiceUpdateMessageId [-Filter ] [-Search ] [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] - [-ProxyCredential ] [-ProxyUseDefaultCredentials] [] + [-ProxyCredential ] [-ProxyUseDefaultCredentials] ``` ### GetViaIdentity @@ -36,7 +36,7 @@ Get-MgServiceAnnouncementMessageAttachmentCount -InputObject ] [-Search ] [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] - [-ProxyUseDefaultCredentials] [] + [-ProxyUseDefaultCredentials] ``` ## ALIASES diff --git a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessageCount.md b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessageCount.md index 9350a18c5a4bc..a354ce4bc7200 100644 --- a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessageCount.md +++ b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Get-MgServiceAnnouncementMessageCount.md @@ -4,7 +4,7 @@ external help file: Microsoft.Graph.Devices.ServiceAnnouncement-Help.xml HelpUri: https://learn.microsoft.com/powershell/module/microsoft.graph.devices.serviceannouncement/get-mgserviceannouncementmessagecount Locale: en-US Module Name: Microsoft.Graph.Devices.ServiceAnnouncement -ms.date: 06/05/2026 +ms.date: 07/31/2026 PlatyPS schema version: 2024-05-01 title: Get-MgServiceAnnouncementMessageCount --- @@ -26,7 +26,7 @@ Get the number of the resource Get-MgServiceAnnouncementMessageCount [-Filter ] [-Search ] [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] - [-ProxyCredential ] [-ProxyUseDefaultCredentials] [] + [-ProxyCredential ] [-ProxyUseDefaultCredentials] ``` ## ALIASES diff --git a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgArchiveServiceAnnouncementMessage.md b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgArchiveServiceAnnouncementMessage.md index da5c012db90b6..076249459272d 100644 --- a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgArchiveServiceAnnouncementMessage.md +++ b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgArchiveServiceAnnouncementMessage.md @@ -4,7 +4,7 @@ external help file: Microsoft.Graph.Devices.ServiceAnnouncement-Help.xml HelpUri: https://learn.microsoft.com/powershell/module/microsoft.graph.devices.serviceannouncement/invoke-mgarchiveserviceannouncementmessage Locale: en-US Module Name: Microsoft.Graph.Devices.ServiceAnnouncement -ms.date: 06/05/2026 +ms.date: 07/31/2026 PlatyPS schema version: 2024-05-01 title: Invoke-MgArchiveServiceAnnouncementMessage --- @@ -27,7 +27,6 @@ Invoke-MgArchiveServiceAnnouncementMessage [-ResponseHeadersVariable ] [-AdditionalProperties ] [-MessageIds ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] [-WhatIf] [-Confirm] - [] ``` ### Archive @@ -38,7 +37,6 @@ Invoke-MgArchiveServiceAnnouncementMessage [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] [-WhatIf] [-Confirm] - [] ``` ## ALIASES diff --git a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgFavoriteServiceAnnouncementMessage.md b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgFavoriteServiceAnnouncementMessage.md index 82efc066d9531..b6ad961b81b5f 100644 --- a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgFavoriteServiceAnnouncementMessage.md +++ b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgFavoriteServiceAnnouncementMessage.md @@ -4,7 +4,7 @@ external help file: Microsoft.Graph.Devices.ServiceAnnouncement-Help.xml HelpUri: https://learn.microsoft.com/powershell/module/microsoft.graph.devices.serviceannouncement/invoke-mgfavoriteserviceannouncementmessage Locale: en-US Module Name: Microsoft.Graph.Devices.ServiceAnnouncement -ms.date: 06/05/2026 +ms.date: 07/31/2026 PlatyPS schema version: 2024-05-01 title: Invoke-MgFavoriteServiceAnnouncementMessage --- @@ -27,7 +27,6 @@ Invoke-MgFavoriteServiceAnnouncementMessage [-ResponseHeadersVariable ] [-AdditionalProperties ] [-MessageIds ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] [-WhatIf] [-Confirm] - [] ``` ### Favorite @@ -38,7 +37,6 @@ Invoke-MgFavoriteServiceAnnouncementMessage [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] [-WhatIf] [-Confirm] - [] ``` ## ALIASES diff --git a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgMarkServiceAnnouncementMessageRead.md b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgMarkServiceAnnouncementMessageRead.md index 83f953c658fbc..b77376ebdd131 100644 --- a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgMarkServiceAnnouncementMessageRead.md +++ b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgMarkServiceAnnouncementMessageRead.md @@ -4,7 +4,7 @@ external help file: Microsoft.Graph.Devices.ServiceAnnouncement-Help.xml HelpUri: https://learn.microsoft.com/powershell/module/microsoft.graph.devices.serviceannouncement/invoke-mgmarkserviceannouncementmessageread Locale: en-US Module Name: Microsoft.Graph.Devices.ServiceAnnouncement -ms.date: 06/05/2026 +ms.date: 07/31/2026 PlatyPS schema version: 2024-05-01 title: Invoke-MgMarkServiceAnnouncementMessageRead --- @@ -27,7 +27,6 @@ Invoke-MgMarkServiceAnnouncementMessageRead [-ResponseHeadersVariable ] [-AdditionalProperties ] [-MessageIds ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] [-WhatIf] [-Confirm] - [] ``` ### Mark @@ -38,7 +37,6 @@ Invoke-MgMarkServiceAnnouncementMessageRead [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] [-WhatIf] [-Confirm] - [] ``` ## ALIASES diff --git a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgMarkServiceAnnouncementMessageUnread.md b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgMarkServiceAnnouncementMessageUnread.md index 25fb37d2c2966..b79f8ea8b19ab 100644 --- a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgMarkServiceAnnouncementMessageUnread.md +++ b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgMarkServiceAnnouncementMessageUnread.md @@ -4,7 +4,7 @@ external help file: Microsoft.Graph.Devices.ServiceAnnouncement-Help.xml HelpUri: https://learn.microsoft.com/powershell/module/microsoft.graph.devices.serviceannouncement/invoke-mgmarkserviceannouncementmessageunread Locale: en-US Module Name: Microsoft.Graph.Devices.ServiceAnnouncement -ms.date: 06/05/2026 +ms.date: 07/31/2026 PlatyPS schema version: 2024-05-01 title: Invoke-MgMarkServiceAnnouncementMessageUnread --- @@ -27,7 +27,6 @@ Invoke-MgMarkServiceAnnouncementMessageUnread [-ResponseHeadersVariable [-AdditionalProperties ] [-MessageIds ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] [-WhatIf] [-Confirm] - [] ``` ### Mark @@ -38,7 +37,6 @@ Invoke-MgMarkServiceAnnouncementMessageUnread [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] [-WhatIf] [-Confirm] - [] ``` ## ALIASES diff --git a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgReportServiceAnnouncementHealthOverviewIssueIncident.md b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgReportServiceAnnouncementHealthOverviewIssueIncident.md index 29eea0b05641a..89292348e2451 100644 --- a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgReportServiceAnnouncementHealthOverviewIssueIncident.md +++ b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgReportServiceAnnouncementHealthOverviewIssueIncident.md @@ -4,7 +4,7 @@ external help file: Microsoft.Graph.Devices.ServiceAnnouncement-Help.xml HelpUri: https://learn.microsoft.com/powershell/module/microsoft.graph.devices.serviceannouncement/invoke-mgreportserviceannouncementhealthoverviewissueincident Locale: en-US Module Name: Microsoft.Graph.Devices.ServiceAnnouncement -ms.date: 06/05/2026 +ms.date: 07/31/2026 PlatyPS schema version: 2024-05-01 title: Invoke-MgReportServiceAnnouncementHealthOverviewIssueIncident --- @@ -29,7 +29,7 @@ Invoke-MgReportServiceAnnouncementHealthOverviewIssueIncident -ServiceHealthId < -ServiceHealthIssueId -OutFile [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-PassThru] [-Proxy ] - [-ProxyCredential ] [-ProxyUseDefaultCredentials] [] + [-ProxyCredential ] [-ProxyUseDefaultCredentials] ``` ### ReportViaIdentity @@ -39,7 +39,7 @@ Invoke-MgReportServiceAnnouncementHealthOverviewIssueIncident -InputObject -OutFile [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-PassThru] - [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] [] + [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] ``` ## ALIASES diff --git a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgReportServiceAnnouncementIssueIncident.md b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgReportServiceAnnouncementIssueIncident.md index 9f19a9f6eecd3..8ca54b3e7f7f1 100644 --- a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgReportServiceAnnouncementIssueIncident.md +++ b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgReportServiceAnnouncementIssueIncident.md @@ -4,7 +4,7 @@ external help file: Microsoft.Graph.Devices.ServiceAnnouncement-Help.xml HelpUri: https://learn.microsoft.com/powershell/module/microsoft.graph.devices.serviceannouncement/invoke-mgreportserviceannouncementissueincident Locale: en-US Module Name: Microsoft.Graph.Devices.ServiceAnnouncement -ms.date: 06/05/2026 +ms.date: 07/31/2026 PlatyPS schema version: 2024-05-01 title: Invoke-MgReportServiceAnnouncementIssueIncident --- @@ -28,7 +28,7 @@ The operation returns an error if the specified issue doesn't exist for the tena Invoke-MgReportServiceAnnouncementIssueIncident -ServiceHealthIssueId -OutFile [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-PassThru] - [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] [] + [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] ``` ### ReportViaIdentity @@ -37,7 +37,7 @@ Invoke-MgReportServiceAnnouncementIssueIncident -ServiceHealthIssueId - Invoke-MgReportServiceAnnouncementIssueIncident -InputObject -OutFile [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-PassThru] - [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] [] + [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] ``` ## ALIASES diff --git a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgUnarchiveServiceAnnouncementMessage.md b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgUnarchiveServiceAnnouncementMessage.md index d59a43897bbb8..7c0ad84990cc5 100644 --- a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgUnarchiveServiceAnnouncementMessage.md +++ b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgUnarchiveServiceAnnouncementMessage.md @@ -4,7 +4,7 @@ external help file: Microsoft.Graph.Devices.ServiceAnnouncement-Help.xml HelpUri: https://learn.microsoft.com/powershell/module/microsoft.graph.devices.serviceannouncement/invoke-mgunarchiveserviceannouncementmessage Locale: en-US Module Name: Microsoft.Graph.Devices.ServiceAnnouncement -ms.date: 06/05/2026 +ms.date: 07/31/2026 PlatyPS schema version: 2024-05-01 title: Invoke-MgUnarchiveServiceAnnouncementMessage --- @@ -27,7 +27,6 @@ Invoke-MgUnarchiveServiceAnnouncementMessage [-ResponseHeadersVariable ] [-AdditionalProperties ] [-MessageIds ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] [-WhatIf] [-Confirm] - [] ``` ### Unarchive @@ -38,7 +37,6 @@ Invoke-MgUnarchiveServiceAnnouncementMessage [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] [-WhatIf] [-Confirm] - [] ``` ## ALIASES diff --git a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgUnfavoriteServiceAnnouncementMessage.md b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgUnfavoriteServiceAnnouncementMessage.md index 30dca62cc059b..09af647d7db08 100644 --- a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgUnfavoriteServiceAnnouncementMessage.md +++ b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Invoke-MgUnfavoriteServiceAnnouncementMessage.md @@ -4,7 +4,7 @@ external help file: Microsoft.Graph.Devices.ServiceAnnouncement-Help.xml HelpUri: https://learn.microsoft.com/powershell/module/microsoft.graph.devices.serviceannouncement/invoke-mgunfavoriteserviceannouncementmessage Locale: en-US Module Name: Microsoft.Graph.Devices.ServiceAnnouncement -ms.date: 06/05/2026 +ms.date: 07/31/2026 PlatyPS schema version: 2024-05-01 title: Invoke-MgUnfavoriteServiceAnnouncementMessage --- @@ -27,7 +27,6 @@ Invoke-MgUnfavoriteServiceAnnouncementMessage [-ResponseHeadersVariable [-AdditionalProperties ] [-MessageIds ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] [-WhatIf] [-Confirm] - [] ``` ### Unfavorite @@ -38,7 +37,6 @@ Invoke-MgUnfavoriteServiceAnnouncementMessage [-ResponseHeadersVariable ] [-Break] [-Headers ] [-HttpPipelineAppend ] [-HttpPipelinePrepend ] [-Proxy ] [-ProxyCredential ] [-ProxyUseDefaultCredentials] [-WhatIf] [-Confirm] - [] ``` ## ALIASES diff --git a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Microsoft.Graph.Devices.ServiceAnnouncement.md b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Microsoft.Graph.Devices.ServiceAnnouncement.md index f5295bad64c1e..418f29029f210 100644 --- a/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Microsoft.Graph.Devices.ServiceAnnouncement.md +++ b/microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Devices.ServiceAnnouncement/Microsoft.Graph.Devices.ServiceAnnouncement.md @@ -1,6 +1,6 @@ --- Module Name: Microsoft.Graph.Devices.ServiceAnnouncement -Module Guid: e6f1a8e2-bf6b-4b02-ba8b-1791e0708739 +Module Guid: 39918cc9-1b57-4edc-8405-7fe68f2250c1 Download Help Link: https://learn.microsoft.com/en-us/powershell/module/microsoft.graph.devices.serviceannouncement/?view=graph-powershell-1.0 Help Version: 1.0.0.0 Locale: en-US diff --git a/scripts/CorrectRelatedLinks-AllFiles.ps1 b/scripts/CorrectRelatedLinks-AllFiles.ps1 index 3f6a71383b9e6..be414538528a7 100644 --- a/scripts/CorrectRelatedLinks-AllFiles.ps1 +++ b/scripts/CorrectRelatedLinks-AllFiles.ps1 @@ -19,7 +19,11 @@ param( [Parameter(Mandatory = $false)] [ValidateSet("v1.0", "beta", "both")] - [string]$GraphProfile = "both" + [Alias("GraphProfileFilter")] + [string]$GraphProfile = "both", + + [Parameter(Mandatory = $false)] + [string]$ModuleFilter = "" ) function Get-GraphMapping { @@ -217,6 +221,10 @@ if ($ModulesToGenerate.Count -eq 0) { } } +if (-not [string]::IsNullOrWhiteSpace($ModuleFilter)) { + $ModulesToGenerate = @($ModulesToGenerate | Where-Object { $_ -eq $ModuleFilter }) +} + # Main execution Write-Host "=== Related Links Correction Script ===" -ForegroundColor Blue Write-Host "Working directory: $WorkLoadDocsPath" -ForegroundColor Blue diff --git a/scripts/EscapeDisallowedHtmlTags.ps1 b/scripts/EscapeDisallowedHtmlTags.ps1 index 7f2d4079ff9da..0039a05b33500 100644 --- a/scripts/EscapeDisallowedHtmlTags.ps1 +++ b/scripts/EscapeDisallowedHtmlTags.ps1 @@ -2,7 +2,10 @@ # Licensed under the MIT License. Param( $ModulesToGenerate = @(), - [string] $ModuleMappingConfigPath = (Join-Path $PSScriptRoot "../microsoftgraph/config/ModulesMapping.jsonc") + [string] $ModuleMappingConfigPath = (Join-Path $PSScriptRoot "../microsoftgraph/config/ModulesMapping.jsonc"), + [ValidateSet("both", "v1.0", "beta")] + [string] $GraphProfileFilter = "both", + [string] $ModuleFilter = "" ) function Get-GraphMapping { $graphMapping = @{} @@ -20,13 +23,19 @@ function EscapeDisallowedHtmlTags { $GraphMapping = Get-GraphMapping $GraphMapping.Keys | ForEach-Object { $graphProfile = $_ + if ($GraphProfileFilter -ne "both" -and $graphProfile -ne $GraphProfileFilter) { return } Get-FilesByProfile -GraphProfile $graphProfile -GraphProfilePath $GraphMapping[$graphProfile] -ModulePrefix $ModulePrefix -ModulesToGenerate $ModulesToGenerate } - git config --global user.email "timwamalwa@gmail.com" - git config --global user.name "Timothy Wamalwa" + git config --global user.email "GraphTooling@service.microsoft.com" + git config --global user.name "Microsoft Graph DevX Tooling" git add . - git commit -m "Escaped disallowed html tags" + $pending = git status --porcelain + if (-not [string]::IsNullOrWhiteSpace($pending)) { + git commit -m "Escaped disallowed html tags" + } else { + $global:LASTEXITCODE = 0 + } } function Get-FilesByProfile { Param( @@ -322,5 +331,8 @@ function CleanupFile { } Write-Host -ForegroundColor Green "-------------finished checking out to today's branch-------------" +if (-not [string]::IsNullOrWhiteSpace($ModuleFilter)) { + $ModulesToGenerate = @($ModulesToGenerate | Where-Object { $_ -eq $ModuleFilter }) +} EscapeDisallowedHtmlTags -ModulesToGenerate $ModulesToGenerate Write-Host -ForegroundColor Green "-------------Done-------------" \ No newline at end of file diff --git a/scripts/GenerateAliasedDocs.ps1 b/scripts/GenerateAliasedDocs.ps1 index 97eba9685354d..c7ba9bec1d19c 100644 --- a/scripts/GenerateAliasedDocs.ps1 +++ b/scripts/GenerateAliasedDocs.ps1 @@ -6,12 +6,18 @@ See related PR for more information. #> +Param( + [ValidateSet("both", "v1.0", "beta")] + [string] $GraphProfileFilter = "both", + [string] $ModuleFilter = "" +) + function Start-GenerateAliasedDocs { $BreakingChangeReportV1Report = (Join-Path $PSScriptRoot "../msgraph-sdk-powershell/docs/PowerShellBreakingChanges-V1.0.csv") $BreakingChangeReportBetaReport = (Join-Path $PSScriptRoot "../msgraph-sdk-powershell/docs/PowerShellBreakingChanges-beta.csv") $Reports = @() - $Reports += $BreakingChangeReportV1Report - $Reports += $BreakingChangeReportBetaReport + if ($GraphProfileFilter -ne "beta") { $Reports += $BreakingChangeReportV1Report } + if ($GraphProfileFilter -ne "v1.0") { $Reports += $BreakingChangeReportBetaReport } foreach ($BreakingChangeReport in $Reports) { Import-Csv $BreakingChangeReport | ForEach-Object { $Command = $_."NewCmdlet" @@ -39,6 +45,7 @@ function Copy-Files { if($CmdDetails){ $Module = $CmdDetails.Module $Module = $Module.Replace("Beta.", "") + if (-not [string]::IsNullOrWhiteSpace($ModuleFilter) -and $Module -ne $ModuleFilter) { return } $Module = "$ModulePrefix.$Module" $NewDoc = (Join-Path $PSScriptRoot "../microsoftgraph" $GraphProfilePath $Module "$Command.md") if(Test-Path $NewDoc) { diff --git a/scripts/GenerateMarkDown.ps1 b/scripts/GenerateMarkDown.ps1 index 52498f065e01d..ed6c85dcdb009 100644 --- a/scripts/GenerateMarkDown.ps1 +++ b/scripts/GenerateMarkDown.ps1 @@ -5,7 +5,16 @@ Param( $ModulesToGenerate = @(), [string] $ModuleMappingConfigPath = (Join-Path $PSScriptRoot "../microsoftgraph/config\ModulesMapping.jsonc"), [string] $WorkLoadDocsPath = (Join-Path $PSScriptRoot "../microsoftgraph"), - [string] $CmdletMetadataPath = (Join-Path $PSScriptRoot "../msgraph-sdk-powershell/src/Authentication/Authentication/custom/common/MgCommandMetadata.json") + [string] $CmdletMetadataPath = (Join-Path $PSScriptRoot "../msgraph-sdk-powershell/src/Authentication/Authentication/custom/common/MgCommandMetadata.json"), + # Restrict generation to a single SDK profile ("v1.0" or "beta"); "both" keeps the + # original full-run behaviour. + [ValidateSet("both", "v1.0", "beta")] + [string] $GraphProfileFilter = "both", + # Restrict generation to a single module (e.g. "Applications" or "Authentication"). Empty + # means all modules. When set, the run is "scoped": the module's folder is completely + # cleared and regenerated, and an import failure aborts THIS run (fail-safe, no deletion) + # instead of silently skipping. + [string] $ModuleFilter = "" ) function Get-GraphMapping { $graphMapping = @{} @@ -13,36 +22,6 @@ function Get-GraphMapping { $graphMapping.Add("beta", "graph-powershell-beta") return $graphMapping } - -function Get-NormalizedContent { - param ( - [ValidateNotNullOrEmpty()] - [string] $FilePath - ) - $content = Get-Content $FilePath -Raw - # Normalize line endings to LF and trim trailing whitespace - $content = $content -replace "`r`n", "`n" - $content = $content.TrimEnd() - # Strip ms.date line so date-only changes are ignored during comparison - $content = $content -replace '(?m)^ms\.date: .+$', '' - return $content -} - -function Get-DeterministicGuid { - param ( - [ValidateNotNullOrEmpty()] - [string] $InputString - ) - $bytes = [System.Text.Encoding]::UTF8.GetBytes($InputString) - $sha256 = [System.Security.Cryptography.SHA256]::Create() - try { - $hash = $sha256.ComputeHash($bytes) - return [guid]::new([byte[]]$hash[0..15]).ToString() - } finally { - $sha256.Dispose() - } -} - function Set-Help { param ( [ValidateNotNullOrEmpty()] @@ -57,7 +36,7 @@ function Set-Help { Command = (Get-Command $Command) OutputFolder = $ModuleDocsPath Force = $true - Encoding = [System.Text.Encoding]::UTF8 + Encoding = [System.Text.UTF8Encoding]::new($false) } if ($Module -eq "Microsoft.Graph.Authentication") { @@ -65,7 +44,7 @@ function Set-Help { Module = (Get-Module $Module) OutputFolder = $ModuleDocsPath WithModulePage = $true - Encoding = [System.Text.Encoding]::UTF8 + Encoding = [System.Text.UTF8Encoding]::new($false) } Import-Module $Module -Force -Global } @@ -81,55 +60,55 @@ function Start-GraphHelp { Param( $ModulesToGenerate = @() ) - - #Generate for auth module first + $ModulePrefix = "Microsoft.Graph" $AuthPath = "$ModulePrefix.Authentication" $AuthDestination = Join-Path $WorkLoadDocsPath "graph-powershell-1.0" $AuthPath - - Import-Module Microsoft.Graph.Authentication -Global - $GraphMapping = Get-GraphMapping - $TempAuthDir = Join-Path ([System.IO.Path]::GetTempPath()) "GraphDocsTempAuth_$([guid]::NewGuid().ToString('N'))" - New-Item -Path $TempAuthDir -ItemType Directory -Force | Out-Null - $GraphMapping.Keys | ForEach-Object { - $graphProfile = $_ - $profilePath = "graph-powershell-1.0" - if ($graphProfile -eq "beta") { - $profilePath = "graph-powershell-beta" - } - # Generate all auth module docs to temp directory using module-level generation - Set-Help -ModuleDocsPath $TempAuthDir -Command "Connect-MgGraph" -Module "Microsoft.Graph.Authentication" + # Determine which profiles this run covers. + $GraphMapping = Get-GraphMapping + $profilesToProcess = @($GraphMapping.Keys) + if ($GraphProfileFilter -ne "both") { + $profilesToProcess = @($GraphProfileFilter) + } - # Compare and copy all generated auth files - $TempAuthModuleDir = Join-Path $TempAuthDir $AuthPath - if (Test-Path $TempAuthModuleDir) { - if (-not (Test-Path $AuthDestination)) { - New-Item -Path $AuthDestination -ItemType Directory -Force | Out-Null - } - Get-ChildItem -Path $TempAuthModuleDir -Filter "*.md" -File | ForEach-Object { - $tempFile = $_.FullName - $existingFile = Join-Path $AuthDestination $_.Name - if (Test-Path $existingFile) { - $existingContent = Get-NormalizedContent -FilePath $existingFile - $newContent = Get-NormalizedContent -FilePath $tempFile - if ($existingContent -ne $newContent) { - Copy-Item -Path $tempFile -Destination $existingFile -Force - Write-Host "Updated auth doc: $($_.BaseName)" - } - } else { - Copy-Item -Path $tempFile -Destination $existingFile -Force - Write-Host "Added auth doc: $($_.BaseName)" - } + # Authentication docs live under graph-powershell-1.0 and are only generated on a full run + # or when Authentication is the explicitly targeted module. + $generateAuth = ([string]::IsNullOrWhiteSpace($ModuleFilter) -or $ModuleFilter -eq "Authentication") + if ($generateAuth -and ($profilesToProcess -contains "v1.0")) { + # Guard against catastrophic deletions: never remove existing docs unless the module + # is available to regenerate them. Authentication is required for every run, so abort + # if it failed to install rather than wiping committed documentation. + if (-not (Get-Module -Name Microsoft.Graph.Authentication -ListAvailable -ErrorAction SilentlyContinue)) { + throw "Microsoft.Graph.Authentication module is not available. Aborting generation to avoid deleting existing documentation." + } + Import-Module Microsoft.Graph.Authentication -Force -Global -ErrorAction Stop + Get-ChildItem -Path $AuthDestination * -File -Recurse | foreach { $_.Delete() } + $AuthenticationDocsPath = Join-Path $PSScriptRoot "..\microsoftgraph\graph-powershell-1.0" + Set-Help -ModuleDocsPath $AuthenticationDocsPath -Command "Connect-MgGraph" -Module "Microsoft.Graph.Authentication" + } + + # Workload modules. Skip entirely when Authentication is the explicit single target. + if ($ModuleFilter -ne "Authentication") { + $profilesToProcess | ForEach-Object { + $graphProfile = $_ + $profilePath = "graph-powershell-1.0" + if ($graphProfile -eq "beta") { + $profilePath = "graph-powershell-beta" } + Get-FolderByProfile -GraphProfile $graphProfile -GraphProfilePath $profilePath -ModulePrefix $ModulePrefix -ModulesToGenerate $ModulesToGenerate } - Get-FolderByProfile -GraphProfile $graphProfile -GraphProfilePath $profilePath -ModulePrefix $ModulePrefix -ModulesToGenerate $ModulesToGenerate } - Remove-Item -Path $TempAuthDir -Recurse -Force -ErrorAction SilentlyContinue + git config --global user.email "GraphTooling@service.microsoft.com" git config --global user.name "Microsoft Graph DevX Tooling" git add . - git commit -m "Updated markdown help" + $pending = git status --porcelain + if (-not [string]::IsNullOrWhiteSpace($pending)) { + git commit -m "Updated markdown help" + } else { + $global:LASTEXITCODE = 0 + } } function Get-FolderByProfile { @@ -145,10 +124,14 @@ function Get-FolderByProfile { ) $CommandMetadataContent = Get-Content $CmdletMetadataPath | ConvertFrom-Json - # Create a single temp directory for this profile's generation - $TempOutputDir = Join-Path ([System.IO.Path]::GetTempPath()) "GraphDocsTemp_$([guid]::NewGuid().ToString('N'))" - New-Item -Path $TempOutputDir -ItemType Directory -Force | Out-Null - + # In scoped (single-module) runs, restrict to the requested module and enable + # complete-delete + regenerate for it (safe because the module is verified to import + # below before anything is removed). + $Scoped = -not [string]::IsNullOrWhiteSpace($ModuleFilter) + if ($Scoped) { + $ModulesToGenerate = @($ModulesToGenerate | Where-Object { $_ -eq $ModuleFilter }) + } + $ModulesToGenerate | ForEach-Object { $ModuleName = $_ Write-Host $ModuleName @@ -160,107 +143,102 @@ function Get-FolderByProfile { } $Destination = Join-Path $WorkLoadDocsPath $GraphProfilePath $Path $DocsDestination = Join-Path $WorkLoadDocsPath $GraphProfilePath + + # Guard against catastrophic deletions. A module can be installed yet fail to + # import (e.g. an Authentication version conflict), and ListAvailable alone does + # not catch that. Verify the module actually imports AND exposes commands; if it + # does not, skip it so its committed docs are preserved instead of being wiped + # and never regenerated (which is what produced the mass-deletion refresh PRs). + $ModuleUsable = $false + if (Get-Module -Name $Path -ListAvailable -ErrorAction SilentlyContinue) { + try { + Import-Module $Path -Force -Global -ErrorAction Stop + if (Get-Command -Module $Path -ErrorAction SilentlyContinue) { + $ModuleUsable = $true + } + } catch { + Write-Warning "Module $Path failed to import: $($_.Exception.Message)" + } + } + if (-not $ModuleUsable) { + if ($Scoped) { + # Isolated single-module run: fail fast WITHOUT deleting anything so the + # module's committed docs are preserved. The pipeline job contains this + # failure (continueOnError) so it never fails the whole run or other modules. + throw "Module $Path is not usable in isolated generation; aborting this module without deleting its documentation." + } + Write-Warning "Module $Path is not usable; skipping to preserve existing documentation." + return + } + if (-not(Test-Path $Destination)) { New-Item -Path $Destination -ItemType Directory } + elseif ($Scoped) { + # Complete deletion + regeneration for this single module. Safe here because the + # module imported successfully above, so regeneration repopulates the folder. + Get-ChildItem -Path $Destination -Filter "*.md" -File | ForEach-Object { + Remove-Item $_.FullName -Force + } + } + # NOTE: docs are intentionally NOT bulk-deleted here. Each doc is overwritten in + # place as it is regenerated, and only genuine orphans (commands no longer in the + # metadata) are removed afterwards. This guarantees that a transient generation + # failure can never wipe a module's documentation. $CmdletCount = 0 $MetadataCommands = @{} - - # Generate table of contents for each module using a deterministic GUID + # Generate table of contents for each module $TocFileName = "$Path.md" - $ModuleGuid = Get-DeterministicGuid -InputString $Path + $ModuleGuid = [guid]::NewGuid().ToString() $LinkProfile = $GraphProfile.Replace("v", "") $LinkModuleName = $Path.ToLower() $HelpVersion = "1.0.0.0" $HelpLocale = "en-US" - $DownloadLink = "https://learn.microsoft.com/en-us/powershell/module/$LinkModuleName/?view=graph-powershell-$LinkProfile" - - # Build TOC content in memory to compare before writing - $TocContent = @() - $TocContent += "---" - $TocContent += "Module Name: $Path" - $TocContent += "Module Guid: $ModuleGuid" - $TocContent += "Download Help Link: $DownloadLink" - $TocContent += "Help Version: $HelpVersion" - $TocContent += "Locale: $HelpLocale" - $TocContent += "---" - $TocContent += "" - $TocContent += "# $Path Module" - $TocContent += "## Description" - $TocContent += "Microsoft Graph PowerShell Cmdlets" - $TocContent += "" - $TocContent += "## $Path Cmdlets" - + $DownloadLink = "https://learn.microsoft.com/en-us/powershell/module/$LinkModuleName/?view=graph-powershell-$LinkProfile" + New-Item -Path $Destination -Name $TocFileName -ItemType File -Force + Add-Content -Path $Destination\$TocFileName -Value "---" + Add-Content -Path $Destination\$TocFileName -Value "Module Name: $Path" + Add-Content -Path $Destination\$TocFileName -Value "Module Guid: $ModuleGuid" + Add-Content -Path $Destination\$TocFileName -Value "Download Help Link: $DownloadLink" + Add-Content -Path $Destination\$TocFileName -Value "Help Version: $HelpVersion" + Add-Content -Path $Destination\$TocFileName -Value "Locale: $HelpLocale" + Add-Content -Path $Destination\$TocFileName -Value "---" + Add-Content -Path $Destination\$TocFileName -Value "" + Add-Content -Path $Destination\$TocFileName -Value "# $Path Module" + Add-Content -Path $Destination\$TocFileName -Value "## Description" + Add-Content -Path $Destination\$TocFileName -Value "Microsoft Graph PowerShell Cmdlets" + Add-Content -Path $Destination\$TocFileName -Value "" + Add-Content -Path $Destination\$TocFileName -Value "## $Path Cmdlets" $CommandMetadataContent | Where-Object { $_.Module -eq $ModName -and $_.ApiVersion -eq $GraphProfile } | ForEach-Object { $Command = $_.Command $MetadataCommands[$Command] = $true - $CmdletDocsPath = Join-Path $WorkLoadDocsPath $GraphProfilePath $Path "$Command.md" - - # Generate to temp directory and compare with existing if (Get-Command -Name $Command -ErrorAction SilentlyContinue) { - Set-Help -ModuleDocsPath $TempOutputDir -Command $Command -Module $Path - $TempFilePath = Join-Path $TempOutputDir $Path "$Command.md" - if (Test-Path $TempFilePath) { - if (Test-Path $CmdletDocsPath) { - $existingContent = Get-NormalizedContent -FilePath $CmdletDocsPath - $newContent = Get-NormalizedContent -FilePath $TempFilePath - if ($existingContent -ne $newContent) { - Copy-Item -Path $TempFilePath -Destination $CmdletDocsPath -Force - Write-Host "Updated: $Command" - } - } else { - Copy-Item -Path $TempFilePath -Destination $CmdletDocsPath -Force - Write-Host "Added: $Command" - } - } - } elseif (-not (Test-Path $CmdletDocsPath)) { + Set-Help -ModuleDocsPath $DocsDestination -Command $Command -Module $Path + } else { Write-Warning "Cmdlet $Command is not available." } - - $TocContent += "### [$Command]($Command.md)" - $TocContent += "" + Add-Content -Path $Destination\$TocFileName -Value "### [$Command]($Command.md)" + Add-Content -Path $Destination\$TocFileName -Value "" $CmdletCount++ } - if ($CmdletCount -eq 0) { - Remove-Item -LiteralPath $Destination -Force -Recurse - } else { - # Only write TOC if content has changed - $TocFilePath = Join-Path $Destination $TocFileName - $newTocText = ($TocContent -join "`r`n") + "`r`n" - if (Test-Path $TocFilePath) { - $existingTocText = Get-Content $TocFilePath -Raw - # Normalize both to LF for comparison - $existingNormalized = $existingTocText -replace "`r`n", "`n" - $newNormalized = $newTocText -replace "`r`n", "`n" - if ($existingNormalized.TrimEnd() -ne $newNormalized.TrimEnd()) { - $newTocText | Out-File $TocFilePath -Encoding UTF8 -NoNewline - Write-Host "Updated TOC: $TocFileName" - } - } else { - $newTocText | Out-File $TocFilePath -Encoding UTF8 -NoNewline - Write-Host "Added TOC: $TocFileName" - } - - # Remove orphaned docs — files for commands no longer in metadata - Get-ChildItem -Path $Destination -Filter "*.md" -File | Where-Object { - $cmdName = $_.BaseName - -not $MetadataCommands.ContainsKey($cmdName) -and $_.Name -ne $TocFileName - } | ForEach-Object { - Write-Host "Removing orphaned doc: $($_.Name)" - Remove-Item $_.FullName -Force - } + # Remove only genuine orphans: docs whose command is no longer in the metadata. + # Docs for commands still in metadata are preserved even if this run failed to + # regenerate them, so a bad run cannot delete valid documentation. + Get-ChildItem -Path $Destination -Filter "*.md" -File | Where-Object { + $_.Name -ne $TocFileName -and -not $MetadataCommands.ContainsKey($_.BaseName) + } | ForEach-Object { + Write-Host "Removing orphaned doc: $($_.Name)" + Remove-Item $_.FullName -Force } - # Clean up temp module folder for this iteration - $TempModuleDir = Join-Path $TempOutputDir $Path - if (Test-Path $TempModuleDir) { - Remove-Item -Path $TempModuleDir -Recurse -Force -ErrorAction SilentlyContinue + if($CmdletCount -eq 0){ + Remove-Item -LiteralPath $Destination -Force -Recurse } - } - Remove-Item -Path $TempOutputDir -Recurse -Force -ErrorAction SilentlyContinue + } + } # Install PlatyPS Install-Module -Name Microsoft.PowerShell.PlatyPS -Force @@ -280,4 +258,8 @@ if ($ModulesToGenerate.Count -eq 0) { } Write-Host -ForegroundColor Green "-------------finished checking out to today's branch-------------" Start-GraphHelp -ModulesToGenerate $ModulesToGenerate +# Signal successful generation so downstream pipeline steps (post-processing, push, PR) only +# run when this module actually generated. On an import failure the script throws before this +# line, the variable is never set, and the isolated stage opens no PR and deletes nothing. +Write-Host "##vso[task.setvariable variable=ModuleGenerated]true" Write-Host -ForegroundColor Green "-------------Done-------------" \ No newline at end of file diff --git a/scripts/GeneratePermissionsTable.ps1 b/scripts/GeneratePermissionsTable.ps1 index aeca973f7f228..d854d62458c62 100644 --- a/scripts/GeneratePermissionsTable.ps1 +++ b/scripts/GeneratePermissionsTable.ps1 @@ -1,6 +1,9 @@ param( [string]$MgCommandMetadatJsonFile = (Join-Path $PSScriptRoot "../msgraph-sdk-powershell/src/Authentication/Authentication/custom/common/MgCommandMetadata.json"), - [string[]]$CmdList = @() + [string[]]$CmdList = @(), + [ValidateSet("both", "v1.0", "beta")] + [string] $GraphProfileFilter = "both", + [string] $ModuleFilter = "" ) function Start-Generator { @@ -11,6 +14,9 @@ function Start-Generator { $CommandName = $_.Command; $ApiVersion = $_.ApiVersion $Module = $_.Module; + if ($GraphProfileFilter -ne "both" -and $ApiVersion -ne $GraphProfileFilter) { return } + $normalizedModule = $Module -replace "^Beta\.", "" + if (-not [string]::IsNullOrWhiteSpace($ModuleFilter) -and $normalizedModule -ne $ModuleFilter) { return } #Array for DelegatedWork Permissions $DelegatedWorkPermissions = @(); #Array for Application Permissions @@ -70,7 +76,12 @@ function Start-Generator { git config --global user.email "GraphTooling@service.microsoft.com" git config --global user.name "Microsoft Graph DevX Tooling" git add . - git commit -m "Inserted permissions Table" + $pending = git status --porcelain + if (-not [string]::IsNullOrWhiteSpace($pending)) { + git commit -m "Inserted permissions Table" + } else { + $global:LASTEXITCODE = 0 + } } catch { Write-Host "Error in $_"; @@ -136,7 +147,12 @@ function New-ReferenceTable { "@; - if ((Get-Content -Raw -Path $File) -match '(## DESCRIPTION)[\s\S]*## EXAMPLES') { + if ((Get-Content -Raw -Path $File) -match '\*\*Permissions\*\*') { + # A permissions table has already been inserted on a previous run. + # Skip to avoid prepending a duplicate '**Permissions**' block. + Write-Host "Skipping $CommandName as it already has a permissions table"; + } + elseif ((Get-Content -Raw -Path $File) -match '(## DESCRIPTION)[\s\S]*## EXAMPLES') { $Link = "**Permissions**`r`n`n$markdownTable`r`n`n## EXAMPLES" (Get-Content $File) | Foreach-Object { $_ -replace '## EXAMPLES', $Link } | diff --git a/scripts/MsSubserviceUpdate.ps1 b/scripts/MsSubserviceUpdate.ps1 index d9bbd826afe67..54ce3c003d8ca 100644 --- a/scripts/MsSubserviceUpdate.ps1 +++ b/scripts/MsSubserviceUpdate.ps1 @@ -5,7 +5,10 @@ Param( [string] $SDKDocsPath = (Join-Path $PSScriptRoot "../msgraph-sdk-powershell/src"), [string] $SDKOpenApiPath = (Join-Path $PSScriptRoot "../msgraph-sdk-powershell"), [string] $WorkLoadDocsPath = (Join-Path $PSScriptRoot "../microsoftgraph"), - [string] $MissingMsSubserviceHeaderPath = (Join-Path $PSScriptRoot "../missingexternaldocsurl") + [string] $MissingMsSubserviceHeaderPath = (Join-Path $PSScriptRoot "../missingexternaldocsurl"), + [ValidateSet("both", "v1.0", "beta")] + [string] $GraphProfileFilter = "both", + [string] $ModuleFilter = "" ) function Start-Generator { if (Test-Path $CommandMetadataPath) { @@ -22,6 +25,8 @@ function Start-Generator { $ModulePrefix = "Microsoft.Graph.Beta" $ModuleName = $ModuleName.Replace("Beta.", "") } + if ($GraphProfileFilter -ne "both" -and $GraphProfile -ne $GraphProfileFilter) { return } + if (-not [string]::IsNullOrWhiteSpace($ModuleFilter) -and $ModuleName -ne $ModuleFilter) { return } $Path = "$ModulePrefix.$ModuleName" $DestinationFile = Join-Path $WorkLoadDocsPath $GraphProfilePath $Path "$Command.md" try { diff --git a/scripts/RemoveBoilerPlateCode.ps1 b/scripts/RemoveBoilerPlateCode.ps1 index 246e79ba3febe..8158654b106a1 100644 --- a/scripts/RemoveBoilerPlateCode.ps1 +++ b/scripts/RemoveBoilerPlateCode.ps1 @@ -4,7 +4,10 @@ Param( $ModulesToGenerate = @(), [string] $ModuleMappingConfigPath = (Join-Path $PSScriptRoot "../microsoftgraph/config/ModulesMapping.jsonc"), [string] $WorkLoadDocsPath = (Join-Path $PSScriptRoot "../microsoftgraph"), - [string] $AuthLoadDocsPath = (Join-Path $PSScriptRoot "../microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Authentication") + [string] $AuthLoadDocsPath = (Join-Path $PSScriptRoot "../microsoftgraph/graph-powershell-1.0/Microsoft.Graph.Authentication"), + [ValidateSet("both", "v1.0", "beta")] + [string] $GraphProfileFilter = "both", + [string] $ModuleFilter = "" ) function Get-GraphMapping { $graphMapping = @{} @@ -19,19 +22,22 @@ function Start-Repair { $ModulesToGenerate = @() ) - #Cleanup Authentication Module first - $files = Get-ChildItem -Path $AuthLoadDocsPath -Filter *.md -Recurse - foreach ($file in $files) { - $content = Get-Content -Path $file.FullName - # Remove lines that contain '{{ Fill in the Description }}' or '### This' or '### *' or '### have' or '### certain' or '### the' - $cleanedContent = $content | Where-Object { $_ -notmatch '^\s*{{ Fill in the Description }}|^\s*### This|^\s*### \*|^\s*### have|^\s*### certain|^\s*### the' } - # Write the cleaned content back to the file - $cleanedContent | Set-Content -Path $file.FullName + #Cleanup Authentication Module first (only on a full run or the Authentication stage). + if ([string]::IsNullOrWhiteSpace($ModuleFilter) -or $ModuleFilter -eq "Authentication") { + $files = Get-ChildItem -Path $AuthLoadDocsPath -Filter *.md -Recurse + foreach ($file in $files) { + $content = Get-Content -Path $file.FullName + # Remove lines that contain '{{ Fill in the Description }}' or '### This' or '### *' or '### have' or '### certain' or '### the' + $cleanedContent = $content | Where-Object { $_ -notmatch '^\s*{{ Fill in the Description }}|^\s*### This|^\s*### \*|^\s*### have|^\s*### certain|^\s*### the' } + # Write the cleaned content back to the file + $cleanedContent | Set-Content -Path $file.FullName + } } $ModulePrefix = "Microsoft.Graph" $GraphMapping = Get-GraphMapping $GraphMapping.Keys | ForEach-Object { $graphProfile = $_ + if ($GraphProfileFilter -ne "both" -and $graphProfile -ne $GraphProfileFilter) { return } $profilePath = "graph-powershell-1.0" if ($graphProfile -eq "beta") { $profilePath = "graph-powershell-beta" @@ -41,7 +47,12 @@ function Start-Repair { git config --global user.email "GraphTooling@service.microsoft.com" git config --global user.name "Microsoft Graph DevX Tooling" git add . - git commit -m "Remove boiler plate code injected by Autorest" + $pending = git status --porcelain + if (-not [string]::IsNullOrWhiteSpace($pending)) { + git commit -m "Remove boiler plate code injected by Autorest" + } else { + $global:LASTEXITCODE = 0 + } } function Get-FilesByProfile { Param( @@ -118,5 +129,8 @@ if ($ModulesToGenerate.Count -eq 0) { } Write-Host -ForegroundColor Green "-------------finished checking out to today's branch-------------" +if (-not [string]::IsNullOrWhiteSpace($ModuleFilter)) { + $ModulesToGenerate = @($ModulesToGenerate | Where-Object { $_ -eq $ModuleFilter }) +} Start-Repair -ModulesToGenerate $ModulesToGenerate Write-Host -ForegroundColor Green "-------------Done-------------" \ No newline at end of file diff --git a/scripts/RemoveInvalidFullStops.ps1 b/scripts/RemoveInvalidFullStops.ps1 index 37be47e7c73df..21cfad73afe51 100644 --- a/scripts/RemoveInvalidFullStops.ps1 +++ b/scripts/RemoveInvalidFullStops.ps1 @@ -2,7 +2,10 @@ # Licensed under the MIT License. Param( $ModulesToGenerate = @(), - [string] $ModuleMappingConfigPath = (Join-Path $PSScriptRoot "../microsoftgraph/config/ModulesMapping.jsonc") + [string] $ModuleMappingConfigPath = (Join-Path $PSScriptRoot "../microsoftgraph/config/ModulesMapping.jsonc"), + [ValidateSet("both", "v1.0", "beta")] + [string] $GraphProfileFilter = "both", + [string] $ModuleFilter = "" ) function Get-GraphMapping { $graphMapping = @{} @@ -20,13 +23,19 @@ function Remove-InvalidFullStops { $GraphMapping = Get-GraphMapping $GraphMapping.Keys | ForEach-Object { $graphProfile = $_ + if ($GraphProfileFilter -ne "both" -and $graphProfile -ne $GraphProfileFilter) { return } Get-FilesByProfile -GraphProfile $graphProfile -GraphProfilePath $GraphMapping[$graphProfile] -ModulePrefix $ModulePrefix -ModulesToGenerate $ModulesToGenerate } - git config --global user.email "timwamalwa@gmail.com" - git config --global user.name "Timothy Wamalwa" + git config --global user.email "GraphTooling@service.microsoft.com" + git config --global user.name "Microsoft Graph DevX Tooling" git add . - git commit -m "Removed invalid full stops from the beginning of lines" + $pending = git status --porcelain + if (-not [string]::IsNullOrWhiteSpace($pending)) { + git commit -m "Removed invalid full stops from the beginning of lines" + } else { + $global:LASTEXITCODE = 0 + } } function Get-FilesByProfile { Param( @@ -88,6 +97,9 @@ if ($ModulesToGenerate.Count -eq 0) { [HashTable] $ModuleMapping = Get-Content $ModuleMappingConfigPath | ConvertFrom-Json -AsHashTable $ModulesToGenerate = $ModuleMapping.Keys } +if (-not [string]::IsNullOrWhiteSpace($ModuleFilter)) { + $ModulesToGenerate = @($ModulesToGenerate | Where-Object { $_ -eq $ModuleFilter }) +} Remove-InvalidFullStops -ModulesToGenerate $ModulesToGenerate diff --git a/scripts/RepairExamplesDescriptionsAndTitle.ps1 b/scripts/RepairExamplesDescriptionsAndTitle.ps1 index c8e3c74074799..e1fd1d5a8f172 100644 --- a/scripts/RepairExamplesDescriptionsAndTitle.ps1 +++ b/scripts/RepairExamplesDescriptionsAndTitle.ps1 @@ -4,7 +4,10 @@ Param( $ModulesToGenerate = @(), [string] $SDKDocsPath = (Join-Path $PSScriptRoot "../msgraph-sdk-powershell/src"), [string] $WorkLoadDocsPath = (Join-Path $PSScriptRoot "../microsoftgraph"), - [string] $CommandMetadataPath = (Join-Path $PSScriptRoot "../msgraph-sdk-powershell/src/Authentication/Authentication/custom/common/MgCommandMetadata.json") + [string] $CommandMetadataPath = (Join-Path $PSScriptRoot "../msgraph-sdk-powershell/src/Authentication/Authentication/custom/common/MgCommandMetadata.json"), + [ValidateSet("both", "v1.0", "beta")] + [string] $GraphProfileFilter = "both", + [string] $ModuleFilter = "" ) function Start-Copy { @@ -22,6 +25,8 @@ function Start-Copy { $ModulePrefix = "Microsoft.Graph.Beta" $ModuleName = $ModuleName.Replace("Beta.", "") } + if ($GraphProfileFilter -ne "both" -and $GraphProfile -ne $GraphProfileFilter) { return } + if (-not [string]::IsNullOrWhiteSpace($ModuleFilter) -and $ModuleName -ne $ModuleFilter) { return } $DocPath = Join-Path $SDKDocsPath $ModuleName $GraphProfile "examples" "$Command.md" try { @@ -38,7 +43,12 @@ function Start-Copy { git config --global user.email "GraphTooling@service.microsoft.com" git config --global user.name "Microsoft Graph DevX Tooling" git add . - git commit -m "Repaired examples and descriptions" + $pending = git status --porcelain + if (-not [string]::IsNullOrWhiteSpace($pending)) { + git commit -m "Repaired examples and descriptions" + } else { + $global:LASTEXITCODE = 0 + } } diff --git a/scripts/UpdateLinks.ps1 b/scripts/UpdateLinks.ps1 index f7edf3e93bcd6..1ba011281aa6a 100644 --- a/scripts/UpdateLinks.ps1 +++ b/scripts/UpdateLinks.ps1 @@ -4,7 +4,10 @@ Param( $ModulesToGenerate = @(), [string] $ModuleMappingConfigPath = (Join-Path $PSScriptRoot "../microsoftgraph/config/ModulesMapping.jsonc"), [string] $SDKDocsPath = (Join-Path $PSScriptRoot "../msgraph-sdk-powershell/src"), - [string] $WorkLoadDocsPath = (Join-Path $PSScriptRoot "../microsoftgraph") + [string] $WorkLoadDocsPath = (Join-Path $PSScriptRoot "../microsoftgraph"), + [ValidateSet("both", "v1.0", "beta")] + [string] $GraphProfileFilter = "both", + [string] $ModuleFilter = "" ) function Get-GraphMapping { $graphMapping = @{} @@ -22,6 +25,7 @@ function Start-Update { $GraphMapping = Get-GraphMapping $GraphMapping.Keys | ForEach-Object { $GraphProfile = $_ + if ($GraphProfileFilter -ne "both" -and $GraphProfile -ne $GraphProfileFilter) { return } $profilePath = "graph-powershell-1.0" if ($GraphProfile -eq "beta") { $ProfilePath = "graph-powershell-beta" @@ -175,7 +179,11 @@ function Add-Link { $Folder = $View.Split("=")[1] $ConfirmFile = Join-Path $WorkLoadDocsPath "$Folder" "$ModuleName" "$CommandRename.md" $ConfirmCommandAvailability = Find-MgGraphCommand -Command $CommandRename - if ($ConfirmCommandAvailability -and (Test-Path $ConfirmFile)) { + # Only insert the note if it isn't already present, otherwise every run + # prepends another copy of the same '[!NOTE]' block before '## SYNTAX'. + $NoteMarker = "$LinkTitle [$CommandRename]($BaseUrl/$FullModuleName$View)" + $AlreadyLinked = (Get-Content -Raw -Path $File) -match [regex]::Escape($NoteMarker) + if ($ConfirmCommandAvailability -and (Test-Path $ConfirmFile) -and -not $AlreadyLinked) { (Get-Content $File) | Foreach-Object { $_ -replace '## SYNTAX', $Link } | Out-File $File @@ -201,5 +209,8 @@ if ($ModulesToGenerate.Count -eq 0) { Write-Host -ForegroundColor Green "-------------finished checking out to today's branch-------------" +if (-not [string]::IsNullOrWhiteSpace($ModuleFilter)) { + $ModulesToGenerate = @($ModulesToGenerate | Where-Object { $_ -eq $ModuleFilter }) +} Start-Update -ModulesToGenerate $ModulesToGenerate Write-Host -ForegroundColor Green "-------------Done-------------" \ No newline at end of file