ad1234b84a
Только чтение: печатает строки маршрута одной заявки и историю версий строк исполнения — чтобы разбираться, откуда взялся участник и кто перевёл его в «На исполнении». Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
69 lines
3.0 KiB
PowerShell
69 lines
3.0 KiB
PowerShell
<#
|
|
.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 = "<View><Query><Where><Eq><FieldRef Name='Ticket' LookupId='TRUE'/><Value Type='Lookup'>$RequestId</Value></Eq></Where>" +
|
|
"<OrderBy><FieldRef Name='StepOrder'/></OrderBy></Query></View>"
|
|
$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
|