Buongiorno a tutti e benvenuti
ad un altro articolo del mio blog.
Oggi, riagganciandomi all’articolo precedente di Giugno, sul
metodo di esportare una cassetta postale dal server con new-mailboxexportrequest,
voglio fornirvi uno script bello e pronto per schedulare l’archiviazione del mese
precedente alla data di esecuzione.
Ovviamente, poi, potete modificarlo per ampliare o
restringere il periodo, accettare le date di inizio e di fine dai parametri…. …e
chi più ne ha, più ne metta.
Bando alle ciance, dunque: ecco lo script, prontissimo per
essere messo in un ps1 e lanciato a piacimento, serialmente...
Param(
[parameter(Mandatory=$true, HelpMessage="indirizzo principale della mailbox da archiviare")]
[string]$address,
[parameter(Mandatory=$true, HelpMessage="indica il percorso DI RETE dove salvare il PST (verrà appesa una
sottocartella con l'anno)")]
[string]$baseP
)
import-module activeDirectory
if ( (Get-PSSnapin -Name Microsoft.Exchange.Management.PowerShell.E2010 -ErrorAction SilentlyContinue) -eq $null ){
add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010
}
# check di esistenza mailbox
if (-not ($mb=Get-mailbox $address -ErrorAction silentlycontinue)) {
write-host "la casella
specificata non esiste"
exit
}
$a=get-date
# ottengo il primo giorno del mese precedente
$b=get-date(""+($a.AddMonths(-1)).Month+"/"+$a.Year)
$nomeMese=$b.Month | %{(Get-Culture).DateTimeFormat.GetMonthName($_)}
# ottengo il primo giorno del mese corrente
$c=get-date(""+$a.Month+"/"+$a.Year)
if (-not(test-path -PathType Container ($baseP+"\"+$b.Year))){
New-Item -ItemType Directory -Force -Path ($baseP+"\"+$b.Year)
}
$path = $baseP+"\"+$b.Year+"\"+($mb.Name+"_"+$nomeMese+"-"+$b.Year)+".pst"
new-mailboxExportRequest $mb -FilePath $path -ContentFilter {(received -gt $b) -and (received -lt $c)} -Name ($mb.Name+"--"+$nomeMese+$b.Year)
Ma cosa fa questo bellissimo script?
Ecco qui in sostanza:
Param(
[parameter(Mandatory=$true, HelpMessage="indirizzo principale della mailbox da archiviare")]
[string]$address,
[parameter(Mandatory=$true, HelpMessage="indica il percorso DI RETE dove salvare il PST (verrà appesa una
sottocartella con l'anno)")]
[string]$baseP
)
Accetta i parametri necessari (indirizzo di posta della cassetta postale e percorso di base dove archiviare il PST (attenzione che l’account del SERVER deve avere accesso alla cartella di destinazione. Vedere il precedente articolo per spiegazioni).
import-module activeDirectory
if ( (Get-PSSnapin -Name Microsoft.Exchange.Management.PowerShell.E2010 -ErrorAction SilentlyContinue) -eq $null ){
add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010
}
Importano sia il modulo di amministrazione di AD che la snap-in di Exchange, qual’ora non fosse stata già importata.
# check di esistenza mailbox
if (-not ($mb=Get-mailbox $address -ErrorAction silentlycontinue)) {
write-host "la casella
specificata non esiste"
exit
}
Controlla che la mailbox esista effettivamente (e quindi anche che l’indirizzo inserito non sia di un gruppo di distribuzione o di una public folder…)
$a=get-date
# ottengo il primo giorno del mese precedente
$b=get-date(""+($a.AddMonths(-1)).Month+"/"+$a.Year)
$nomeMese=$b.Month | %{(Get-Culture).DateTimeFormat.GetMonthName($_)}
# ottengo il primo giorno del mese corrente
$c=get-date(""+$a.Month+"/"+$a.Year)
Un po’ di operazioni sulle date…
if (-not(test-path -PathType Container ($baseP+"\"+$b.Year))){
New-Item -ItemType Directory -Force -Path ($baseP+"\"+$b.Year)
}
$path = $baseP+"\"+$b.Year+"\"+($mb.Name+"_"+$nomeMese+"-"+$b.Year)+".pst"
new-mailboxExportRequest $mb -FilePath $path -ContentFilter {(received -gt $b) -and (received -lt $c)} -Name ($mb.Name+"--"+$nomeMese+$b.Year)
La parte finale ed efficace dello script:
- Se non esiste la cartella
nel percorso di destinazione, la crea. - Definisce il percorso e il nome file, concatenando:
_ - .pst - Lancia la richiesta di esportazione con il filtro sulle date, assegnando un nome leggibile al JOB (così poi nell’elenco delle request di esportazione, si riesce a capirci qualcosa (vedere sempre l’articolo precedente).
Beh, che dire: spero di aver aiutato qualche sysadmin e di
aver stuzzicato la vostra fantasia.
Vi saluto e…
Nessun commento:
Posta un commento
I commenti sono soggetti a moderazione, prima di essere pubblicati.
Qualsiasi contenuto illecito, immorale o che io ritenga (arbitrariamente) offensivo od inappropriato, verrà cancellato.