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.csv
de 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.
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.csv
de 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.
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.csv
de 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.