Tutorial: Ejecución del análisis "What-If" en el archivo de informe de almacenamiento de versiones
En este tutorial, se describe cómo aprovechar los scripts y ejemplos de Excel proporcionados para comprender el impacto de aplicar límites automáticos o manuales en el almacenamiento de versiones o en los usuarios afectados. Aprenderá lo siguiente:
- Ejecute el análisis de impacto de la configuración de límites automáticos.
- Ejecute el análisis de impacto de las versiones de expiración anteriores a los días especificados.
- Ejecute el análisis de impacto del almacenamiento de la versión dentro de los límites de recuento especificados.
Antes de empezar
En el tutorial anterior, había generado un informe de uso del almacenamiento de versiones. En este tutorial se supone que el trabajo de generación de informes se ha completado correctamente y que el informe está completamente rellenado.
Para empezar, descargue el archivo de informe en el equipo local. Use los scripts proporcionados a continuación para aplicar la configuración deseada en el archivo y analizar el impacto.
Ejecución del análisis de impacto de la configuración de límites automáticos del historial de versiones
Este es un ejemplo de script de PowerShell que podría aplicar para generar un archivo de informe de What-If que aplique la directiva de expiración automática en el archivo C:\Report.csv
de informe .
# 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:
Use PowerShell 7 para ejecutar los comandos. Puede instalar PowerShell 7 siguiendo estas instrucciones: Instalación de PowerShell en Windows: PowerShell | Microsoft Learn.
Ejecución del análisis de impacto de la configuración de límites de expiración manual
Este es un ejemplo de script de PowerShell para generar un archivo de informe de What-If. Aplica la expiración manual con expire-after days establecido en 30 en el archivo C:\Report.csv
de informe .
# 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:
Use PowerShell 7 para ejecutar los comandos. Puede instalar PowerShell 7 siguiendo estas instrucciones: Instalación de PowerShell en Windows: PowerShell | Microsoft Learn.
Análisis de impacto de ejecución de la configuración de límites de recuento manual
Este es un ejemplo de script de PowerShell para generar un archivo de informe What-If. Aplica una directiva Manual con límites de recuento con el límite de versión principal establecido en 50 en el archivo de informe C:\Report.csv
.
# 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:
Use PowerShell 7 para ejecutar los comandos. Puede instalar PowerShell 7 siguiendo estas instrucciones: Instalación de PowerShell en Windows: PowerShell | Microsoft Learn.