Tutorial: Ausführen der Was-wäre-wenn-Analyse für die Versionsspeicherberichtsdatei
In diesem Tutorial wird erläutert, wie Sie bereitgestellte Skripts und Excel-Beispiele nutzen, um die Auswirkungen der Anwendung von automatischen oder manuellen Grenzwerten auf den Versionsspeicher oder die betroffenen Benutzer zu verstehen. Sie erfahren Folgendes:
- Führen Sie eine Auswirkungsanalyse durch, um automatische Grenzwerte festzulegen.
- Führen Sie eine Auswirkungsanalyse für ablaufende Versionen aus, die älter als die angegebenen Tage sind.
- Führen Sie eine Auswirkungsanalyse für die Speicherung der Version innerhalb der angegebenen Anzahl von Grenzwerten durch.
Bevor Sie beginnen
Im vorherigen Tutorial haben Sie einen Bericht zur Speicherauslastung der Version generiert. In diesem Tutorial wird davon ausgegangen, dass der Berichterstellungsauftrag erfolgreich abgeschlossen wurde und der Bericht vollständig ausgefüllt ist.
Laden Sie zunächst die Berichtsdatei auf Ihren lokalen Computer herunter. Verwenden Sie die unten angegebenen Skripts, um die gewünschte Einstellung auf die Datei anzuwenden und die Auswirkungen zu analysieren.
Ausführen der Auswirkungsanalyse zum Festlegen automatischer Versionsverlaufsgrenzwerte
Hier ist ein Beispiel für ein PowerShell-Skript, das Sie anwenden können, um eine What-If Berichtsdatei zu generieren, die die Richtlinie für den automatischen Ablauf auf die Berichtsdatei C:\Report.csv
anwendet.
# 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
Hinweis
Verwenden Sie PowerShell 7, um die Befehle auszuführen. Sie können PowerShell 7 wie folgt installieren: Installieren von PowerShell unter Windows – PowerShell | Microsoft Learn.
Ausführen einer Auswirkungsanalyse zum Festlegen manueller Ablauflimits
Hier sehen Sie ein Beispiel für ein PowerShell-Skript zum Generieren einer What-If Berichtsdatei. Er wendet den manuellen Ablauf an, wobei für die Berichtsdatei C:\Report.csv
der Wert 30 für die Ablauftage nach festgelegt ist.
# 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
Hinweis
Verwenden Sie PowerShell 7, um die Befehle auszuführen. Sie können PowerShell 7 wie folgt installieren: Installieren von PowerShell unter Windows – PowerShell | Microsoft Learn.
Ausführen der Auswirkungsanalyse zum Festlegen manueller Zählgrenzwerte
Hier sehen Sie ein Beispiel für ein PowerShell-Skript zum Generieren einer What-If Berichtsdatei. Sie wendet eine Richtlinie Manuell mit Count Limits an, deren Hauptversionslimit auf 50 für die Berichtsdatei C:\Report.csv
festgelegt ist.
# 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
Hinweis
Verwenden Sie PowerShell 7, um die Befehle auszuführen. Sie können PowerShell 7 wie folgt installieren: Installieren von PowerShell unter Windows – PowerShell | Microsoft Learn.