martedì 16 luglio 2019

Uno script per esportare l'ultimo mese della cassetta postale in archivio .PST, con Powershell - direttamente dal server Exchange con Management Shell


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)


martedì 9 luglio 2019

Exchange Powershell (EMS) - aggiungere più utenti ad un gruppo di distribuzione con una riga sola di comando.

Buongiorno a tutti,
 oggi dovevo aggiungere più utenti e rimuoverne altri da un distribution group di Exchange.
Come sapete cerco di fare tutto dalla shell powershell di management (Exchange Management Shell), ma stavolta è stato "tricky".

Ho trovato una soluzione elegante e quindi scrivo questo mini-post....

Pronti? via.

Per aggiungere più membri contemporaneamente ad un gruppo di distribuzione con PowerShell

"utente1", "utente2", "utente3" | Add-DistributionGroupMember nomeDG@dominio.it -BypassSecurityGroupManagerCheck

con questo trick one-liner (come si dice "nel gergo di noi scriptomani") possiamo evitare la sintassi con il ciclo foreach, le graffe etc...
Elegante, no?




Per rimuovere più membri contemporaneamente da un gruppo di distribuzione con PowerShell

"utente1", "utente2", "utente3" | Remove-DistributionGroupMember nomeDG@dominio.it -BypassSecurityGroupManagerCheck

... in sostanza la stessa cosa.


Beh, che dire: vi ho promesso un articolo "mini", no?
Spero di aver facilitato la vita a qualche sysadmin e stuzzicato la vostra fantasia.

Happy Scripting a tutti!