Condividi tramite


Esercitazione: Eseguire l'analisi "simulazione" nel file di report di archiviazione delle versioni

In questa esercitazione viene illustrato come sfruttare gli script forniti ed esempi di Excel per comprendere l'impatto dell'applicazione di limiti automatici o manuali sull'archiviazione delle versioni o sugli utenti interessati. Si apprenderà come:

  • Eseguire l'analisi dell'impatto dell'impostazione Limiti automatici.
  • Eseguire l'analisi dell'impatto delle versioni in scadenza precedenti ai giorni specificati.
  • Eseguire l'analisi dell'impatto dell'archiviazione della versione entro i limiti di conteggio specificati.

Prima di iniziare

Nell'esercitazione precedente è stato generato un report sull'utilizzo dell'archiviazione delle versioni. Questa esercitazione presuppone che il processo di generazione del report sia stato completato correttamente e che il report sia completamente popolato.
Per iniziare, scaricare il file di report nel computer locale. Usare gli script forniti di seguito per applicare l'impostazione desiderata nel file e analizzare l'impatto.

Eseguire l'analisi dell'impatto dell'impostazione dei limiti della cronologia delle versioni automatica

Di seguito è riportato un esempio di script di PowerShell che è possibile applicare per generare un file di report What-If che applica i criteri di scadenza automatica nel file C:\Report.csvdi report . 

# save this file as ScheduleUpdate_Auto.ps1 

param (
  [Parameter(Mandatory=$true)][string]$ImportPath,
  [Parameter(Mandatory=$true)][string]$ExportPath
)

$Schedule = Import-Csv -Path $ImportPath 
$Schedule | 
  ForEach-Object { 
    $_.TargetExpirationDate = $_.AutomaticPolicyExpirationDate
  } 
$Schedule | 
  Export-Csv -Path $ExportPath -UseQuotes AsNeeded -NoTypeInformation

Nota

Usare PowerShell 7 per eseguire i comandi. È possibile installare PowerShell 7 seguendo queste istruzioni: Installazione di PowerShell in Windows - PowerShell | Microsoft Learn.

Screenshot dell'automazione della scadenza.

Eseguire l'analisi dell'impatto dell'impostazione dei limiti di scadenza manuale

Ecco un esempio di script di PowerShell per generare un file di report What-If. Applica La scadenza manuale con i giorni di scadenza impostati su 30 nel file C:\Report.csvdi report. 

# save this file as ScheduleUpdate_ExpireAfter.ps1

param (
  [Parameter(Mandatory=$false)][string]$ImportPath,
  [Parameter(Mandatory=$false)][string]$ExportPath,
  [Parameter(Mandatory=$false)][double]$ExpireAfter
)

function StringToDateTime($Value) { return [string]::IsNullOrEmpty($Value) ? $null : [DateTime]::ParseExact($Value, "yyyy-MM-ddTHH:mm:ssK", $null) }
function DateTimeToString($Value) { return $null -eq $Value ? "" : $Value.ToString("yyyy-MM-ddTHH:mm:ssK") }  

$Schedule = Import-Csv -Path $ImportPath 
$Schedule | 
  ForEach-Object { 
    $SnapshotDate = StringToDateTime -Value $_.SnapshotDate
    $TargetExpirationDate = $SnapshotDate.AddDays($ExpireAfter)
    $_.TargetExpirationDate = DateTimeToString -Value $TargetExpirationDate
  } 
$Schedule | 
  Export-Csv -Path $ExportPath -UseQuotes AsNeeded -NoTypeInformation

Nota

Usare PowerShell 7 per eseguire i comandi. È possibile installare PowerShell 7 seguendo queste istruzioni: Installazione di PowerShell in Windows - PowerShell | Microsoft Learn.

Screenshot della scadenza manuale.

Eseguire l'analisi dell'impatto dell'impostazione dei limiti di conteggio manuale

Ecco un esempio di script di PowerShell per generare un file di report What-If. Applica un criterio Manuale con limiti di conteggio con limite di versione principale impostato su 50 nel file C:\Report.csvdi report .

# save this file as ScheduleUpdate_Count.ps1

param (
  [Parameter(Mandatory=$true)][string]$ImportPath,
  [Parameter(Mandatory=$true)][string]$ExportPath,
  [Parameter(Mandatory=$true)][int]$MajorVersionLimit
)

$Report = Import-Csv -Path $ImportPath 

$PreviousWebId = [Guid]::Empty
$PreviousDocId = [Guid]::Empty
$PreviousWebUrl = [string]::Empty
$PreviousFileUrl = [string]::Empty
$PreviousModifiedByUserId = [string]::Empty
$PreviousModifiedByDisplayName = [string]::Empty

$FileToVersions = @{}

foreach ($Version in $Report)
{  
  $WebId = [string]::IsNullOrEmpty($Version."WebId.Compact") ? $PreviousWebId : [Guid]::Parse($Version."WebId.Compact")
  $DocId = [string]::IsNullOrEmpty($Version."DocId.Compact") ? $PreviousDocId : [Guid]::Parse($Version."DocId.Compact")
  $WebUrl = [string]::IsNullOrEmpty($Version."WebUrl.Compact") ? $PreviousWebUrl : $Version."WebUrl.Compact"
  $FileUrl = [string]::IsNullOrEmpty($Version."FileUrl.Compact") ? $PreviousFileUrl : $Version."FileUrl.Compact"
  $ModifiedByUserId = [string]::IsNullOrEmpty($Version."ModifiedBy_UserId.Compact") ? $PreviousModifiedByUserId : $Version."ModifiedBy_UserId.Compact"
  $ModifiedByDisplayName = [string]::IsNullOrEmpty($Version."ModifiedBy_DisplayName.Compact") ? $PreviousModifiedByDisplayName : $Version."ModifiedBy_DisplayName.Compact"

  $PreviousWebId = $WebId
  $PreviousDocId = $DocId
  $PreviousWebUrl = $WebUrl
  $PreviousFileUrl = $FileUrl
  $PreviousModifiedByUserId = $ModifiedByUserId
  $PreviousModifiedByDisplayName = $ModifiedByDisplayName

  if (($PreviousWebId -eq [Guid]::Empty) -or ($WebId -eq [Guid]::Empty) -or 
    ($PreviousDocId -eq [Guid]::Empty) -or ($DocId -eq [Guid]::Empty))
  {
    throw "Compact column error."
  }

  $Version."WebId.Compact" = $WebId
  $Version."DocId.Compact" = $DocId
  $Version."WebUrl.Compact" = $WebUrl
  $Version."FileUrl.Compact" = $FileUrl
  $Version."ModifiedBy_UserId.Compact" = $ModifiedByUserId
  $Version."ModifiedBy_DisplayName.Compact" = $ModifiedByDisplayName
   
  if ($null -eq $FileToVersions[$DocId]) 
  {
    $FileToVersions[$DocId] = [System.Collections.Generic.PriorityQueue[Object, Int32]]::new()
  }

  $VersionsQueue = $FileToVersions[$DocId]

  $VersionNumber = [Int32]::Parse($Version.MajorVersion) * 512 + [Int32]::Parse($Version.MinorVersion)
  $VersionsQueue.Enqueue($Version, -$VersionNumber)
}

$Schedule = [System.Collections.Generic.List[Object]]::new()

foreach ($FilesAndVersions in $FileToVersions.GetEnumerator())
{
  $VersionsQueue = $FilesAndVersions.Value
  $NumMajorVersionsSeen = 0
  while ($VersionsQueue.Count -gt 0)
  {
    $Version = $VersionsQueue.Dequeue()
    if ($NumMajorVersionsSeen -ge $MajorVersionLimit) {
      $Version.TargetExpirationDate = [DateTime]::new(2000, 1, 1).ToString("yyyy-MM-ddTHH:mm:ssK")
    }
     
    if ([int]::Parse($Version.MinorVersion) -eq 0) { $NumMajorVersionsSeen++ }

    $Schedule.Add($Version)
  }
}

$Schedule | 
  Export-Csv -Path $ExportPath -UseQuotes AsNeeded -NoTypeInformation

Nota

Usare PowerShell 7 per eseguire i comandi. È possibile installare PowerShell 7 seguendo queste istruzioni: Installazione di PowerShell in Windows - PowerShell | Microsoft Learn.

Screenshot del manuale con limiti di conteggio-b.