diff --git a/provisioning/Inspect-Route.ps1 b/provisioning/Inspect-Route.ps1 new file mode 100644 index 0000000..b569178 --- /dev/null +++ b/provisioning/Inspect-Route.ps1 @@ -0,0 +1,68 @@ +<# +.SYNOPSIS + Диагностика: печатает строки маршрута одной заявки из списка «— согласование» + (StepOrder, статус, фаза, кем переназначено, кто создал/менял) и историю версий + строк исполнения — чтобы понять, откуда в маршруте взялся участник и кто + перевёл его в «На исполнении». Только чтение, ничего не меняет. + +.EXAMPLE + ./Inspect-Route.ps1 -SiteUrl "https://tnsukz.sharepoint.com/sites/requests" ` + -ClientId "7459c965-5ed4-4673-8140-0ab8faf9db64" -Tenant "tnsukz.onmicrosoft.com" ` + -Thumbprint "224B64C8E0CAB1E09AF373E92B3AF4AC33C1233C" ` + -ListTitle "Прием на работу 1 — согласование" -RequestId 68 +#> +param( + [Parameter(Mandatory = $true)][string]$SiteUrl, + [Parameter(Mandatory = $true)][string]$ClientId, + [Parameter(Mandatory = $true)][string]$Tenant, + [Parameter(Mandatory = $true)][string]$Thumbprint, + [Parameter(Mandatory = $true)][string]$ListTitle, + [Parameter(Mandatory = $true)][int]$RequestId +) + +$ErrorActionPreference = 'Stop' +Connect-PnPOnline -Url $SiteUrl -ClientId $ClientId -Tenant $Tenant -Thumbprint $Thumbprint + +$query = "$RequestId" + + "" +$items = Get-PnPListItem -List $ListTitle -Query $query + +function UserText($value) { + if ($null -eq $value) { return '' } + return $value.Email +} + +Write-Host "`nМаршрут заявки #$RequestId («$ListTitle»):`n" -ForegroundColor Cyan +$items | ForEach-Object { + [pscustomobject]@{ + Id = $_.Id + StepOrder = $_['StepOrder'] + Phase = $_['Phase'] + Status = $_['ApprovalStatus'] + Approver = UserText $_['TansuSiteApprover'] + DelegatedBy = UserText $_['DelegatedBy'] + Reassign = $_['AllowReassignToOtherApprovers'] + Created = $_['Created'] + CreatedBy = UserText $_['Author'] + Modified = $_['Modified'] + ModifiedBy = UserText $_['Editor'] + } +} | Format-Table -AutoSize + +# История версий — только строки исполнения: там видно, кто и когда менял статус. +$items | Where-Object { $_['Phase'] -eq 'Исполнение' } | ForEach-Object { + Write-Host "`nВерсии строки Id=$($_.Id) ($(UserText $_['TansuSiteApprover'])):" -ForegroundColor Yellow + Get-PnPProperty -ClientObject $_ -Property Versions | Out-Null + $_.Versions | ForEach-Object { + Get-PnPProperty -ClientObject $_ -Property CreatedBy | Out-Null + [pscustomobject]@{ + Version = $_.VersionLabel + Created = $_.Created + By = $_.CreatedBy.Email + Status = $_['ApprovalStatus'] + StepOrder = $_['StepOrder'] + } + } | Format-Table -AutoSize +} + +Disconnect-PnPOnline