Partager via


Tutoriel : Exécuter l’analyse « What-If » sur le fichier de rapport de stockage de version

Dans ce tutoriel, nous expliquons comment tirer parti des scripts fournis et des exemples Excel pour comprendre l’impact de l’application de limites automatiques ou manuelles sur le stockage de versions ou les utilisateurs concernés. Vous y découvrirez les procédures suivantes :

  • Exécutez l’analyse d’impact de la définition des limites automatiques.
  • Exécutez l’analyse d’impact des versions arrivant à expiration antérieures à des jours spécifiés.
  • Exécutez l’analyse d’impact du stockage de la version dans les limites de nombre spécifiées.

Avant de commencer

Dans le tutoriel précédent, vous aviez généré un rapport d’utilisation du stockage de version. Ce didacticiel part du principe que le travail de génération de rapport s’est terminé avec succès et que le rapport est entièrement rempli.
Commencez par télécharger le fichier de rapport sur votre ordinateur local. Utilisez les scripts fournis ci-dessous pour appliquer le paramètre souhaité au fichier et analyser l’impact.

Exécuter l’analyse d’impact de la définition des limites automatiques de l’historique des versions

Voici un exemple de script PowerShell que vous pouvez appliquer pour générer un fichier de rapport What-If qui applique la stratégie d’expiration automatique sur le fichier C:\Report.csvde rapport . 

# 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

Remarque

Utilisez PowerShell 7 pour exécuter les commandes. Vous pouvez installer PowerShell 7 en suivant ces instructions : Installation de PowerShell sur Windows - PowerShell | Microsoft Learn.

Capture d’écran de l’automatisation de l’expiration.

Exécuter l’analyse d’impact de la définition de limites d’expiration manuelles

Voici un exemple de script PowerShell pour générer un fichier de rapport What-If. Elle applique l’expiration manuelle avec l’expiration des jours définis sur 30 sur le fichier C:\Report.csvde rapport . 

# 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

Remarque

Utilisez PowerShell 7 pour exécuter les commandes. Vous pouvez installer PowerShell 7 en suivant ces instructions : Installation de PowerShell sur Windows - PowerShell | Microsoft Learn.

Capture d’écran de l’expiration manuelle.

Exécuter l’analyse d’impact de la définition de limites de nombre manuel

Voici un exemple de script PowerShell pour générer un fichier de rapport What-If. Il applique une stratégie Manual with Count Limits avec la limite de version principale définie sur 50 sur le fichier C:\Report.csvde rapport .

# 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

Remarque

Utilisez PowerShell 7 pour exécuter les commandes. Vous pouvez installer PowerShell 7 en suivant ces instructions : Installation de PowerShell sur Windows - PowerShell | Microsoft Learn.

Capture d’écran du manuel avec count limits-b.