Freigeben über


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.csvanwendet. 

# 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.

Screenshot der Ablaufautomatisierung.

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.csvder 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.

Screenshot des manuellen Ablaufs.

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.csvfestgelegt 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.

Screenshot des Handbuchs mit count limits-b.