Tutorial: Executar a análise "What-If" no ficheiro de relatório de armazenamento de versões
Neste tutorial, vamos falar sobre como tirar partido dos scripts fornecidos e dos exemplos do Excel para compreender o impacto da aplicação de limites automáticos ou manuais no armazenamento de versões ou nos utilizadores afetados. Você aprenderá como:
- Execute a análise de impacto da definição de Limites automáticos.
- Execute a análise de impacto das versões a expirar mais antigas do que os dias especificados.
- Execute a análise de impacto do armazenamento da versão dentro dos limites de contagem especificados.
Antes de começar
No tutorial anterior, tinha gerado um relatório de utilização do armazenamento de versões. Este tutorial pressupõe que a tarefa de geração de relatórios foi concluída com êxito e que o relatório está totalmente preenchido.
Comece por transferir o ficheiro de relatório para o seu computador local. Utilize os scripts fornecidos abaixo para aplicar a definição pretendida no ficheiro e analisar o impacto.
Executar a análise de impacto da definição de limites automáticos do histórico de versões
Eis um exemplo do script do PowerShell que pode aplicar para gerar um ficheiro de Relatório What-If que aplica a política de Expiração Automática no ficheiro C:\Report.csv
de relatório .
# 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
Observação
Utilize o PowerShell 7 para executar os comandos. Pode instalar o PowerShell 7 ao seguir estas instruções: Instalar o PowerShell no Windows - PowerShell | Microsoft Learn.
Executar a análise de impacto da definição de limites de expiração manual
Eis um exemplo do script do PowerShell para gerar um ficheiro de Relatório de What-If. Aplica a Expiração Manual com expiração após dias definida como 30 no ficheiro C:\Report.csv
de relatório .
# 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
Observação
Utilize o PowerShell 7 para executar os comandos. Pode instalar o PowerShell 7 ao seguir estas instruções: Instalar o PowerShell no Windows - PowerShell | Microsoft Learn.
Executar a análise de impacto da definição de limites de contagem manual
Eis um exemplo de script do PowerShell para gerar um ficheiro de relatório What-If. Aplica uma política Manual com Limites de Contagem com o limite de versões principal definido como 50 no ficheiro C:\Report.csv
de relatório .
# 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
Observação
Utilize o PowerShell 7 para executar os comandos. Pode instalar o PowerShell 7 ao seguir estas instruções: Instalar o PowerShell no Windows - PowerShell | Microsoft Learn.