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