Flickr Photo

User not found

Calendario

ottobre: 2012
L M M G V S D
« set    
1234567
891011121314
15161718192021
22232425262728
293031  

About me

Un sito per condividere quello che imparo e confrontarmi con chi ne ha voglia!

powershell

Exchange 2010: Cancellare il primo Mailbox Database

Exchange 2010: delete first exchange database

Di default quando si installa Exchange il processo di setup crea un database per le mailbox e uno per le public folder.
Dato che nella versione standard di Exchange è possibile creare un massimo di cinque database, potrebbe essere necessario eliminare il database primario e per vari motivi.
Il problema nasce quando una volta spostate le mailbox di tutti gli utenti si prova a rimuovere il database, si riceve il seguente errore:


--------------------------------------------------------
Microsoft Exchange Error
--------------------------------------------------------
The mailbox database 'Mailbox Database 1318580683' cannot be deleted.

Mailbox Database 1318580683
Failed
Error:
This mailbox database contains one or more mailboxes, mailbox plans, archive mailboxes, or arbitration mailboxes.
To get a list of all mailboxes in this database, run the command 
Get-Mailbox -Database <Database ID>. 
To get a list of all mailbox plans in this database, run the command 
Get-MailboxPlan. 
To get a list of archive mailboxes in this database, run the command 
Get-Mailbox -Database <Database ID> -Archive.
To get a list of all arbitration mailboxes in this database, run the command 
Get-Mailbox -Database <Database ID> -Arbitration. 
To disable a non-arbitration mailbox so that you can delete the mailbox database, run the command 
Disable-Mailbox <Mailbox ID>. 
To disable an archive mailbox so you can delete the mailbox database, run the command 
Disable-Mailbox <Mailbox ID> -Archive.
Arbitration mailboxes should be moved to another server; to do this, run the command 
New-MoveRequest <parameters>.
If this is the last server in the organization, run the command 
Disable-Mailbox <Mailbox ID> -Arbitration -DisableLastArbitrationMailboxAllowed to disable the arbitration mailbox.
Mailbox plans should be moved to another server; to do this, run the command 
Set-MailboxPlan <MailboxPlan ID> -Database <Database ID>.

Continua a leggere

Active Directory Recycle Bin

Windows 2008 R2 porta con se un’interessante novità per gli amministratori di rete, il Recycle Bin di Active Directory.
Questa funzionalità permette di ripristinare oggetti di AD cancellati evitando però di dover eseguire il ripristino del system state di un DC da un precedente backup.
Questo significa quindi che possiamo eseguire un restore più rapido e più trasparente agli utenti
L’attivazione del Recycle Bin di Active Directory richiede che il functions level di AD sia 2008 R2, quindi non possiamo avere DC vecchi in linea.
Ultima cosa IMPORTANTE da sapere è che una volta attivata la funzionalità la modifica è IRREVERSIBILE.

Detto questo, possiamo iniziare ad attivarla.
Aprite quindi la powershell e importate il modulo activedirectory con il seguente comando

import-module activedirectory

Quindi digitate il seguente comando:

Enable-ADOptionalFeature –Identity ‘CN=Recycle Bin Feature,CN=Optional Features,CN=Directory Service,CN=WindowsNT,CN=Services,CN=Configuration,DC=dominio,DC=loc’ –Scope ForestOrConfigurationSet –Target ‘dominio.loc’
WARNING: Enabling 'Recycle Bin Feature' on 'CN=Partitions,CN=Configuration,DC=dominio,DC=loc' is an irreversible action!
You will not be able to disable 'Recycle Bin Feature' on 'CN=Partitions,CN=Configuration,DC=dominio,DC=loc' if you proceed. Confirm
Are you sure you want to perform this action?
Performing operation "Enable" on Target "Recycle Bin Feature".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):

Confermate ed il gioco è fatto!

Nel caso vi apparisse il seguente messaggio d’errore verificate di eseguire il comando sul server che detiene il ruolo FSMO Domain naming master

WARNING: Enabling 'Recycle Bin Feature' on 'CN=Partitions,CN=Configuration,DC=dominio,DC=loc' is an irreversible action!
 You will not be able to disable 'Recycle Bin Feature' on 'CN=Partitions,CN=Configuration,DC=dominio,DC=loc' if you proceed. Enable-ADOptionalFeature : A referral was returned from the server
 At line:1 char:25
 + Enable-ADOptionalFeature <<<< -Identity 'CN=Recycle Bin Feature,CN=Optional Features,CN=Directory Service,CN=Windows
 NT,CN=Services,CN=Configuration,DC=dominio,DC=loc' -Scope ForestOrConfigurationSet -Target 'dominio.loc'
 + CategoryInfo : NotSpecified: (CN=Recycle Bin ...DC=dominio,DC=loc:ADOptionalFeature) [Enable-ADOptionalFeature], ADException
 + FullyQualifiedErrorId : A referral was returned from the server,Microsoft.ActiveDirectory.Management.Commands.EnableADOptionalFeature

 

Per recuperare un oggetto cancellato potete usare il seguente comando

Get-ADObject -Filter {displayName -eq "test_user"} -IncludeDeletedObjects | Restore-ADObject

Exchange 2010: errore durante la creazione di una nuova GAL

Durante il processo di creazione di una nuova GAL in Exchange 2010 potrebbe presentarsi il seguente errore:

[PS] C:\>New-GlobalAddressList -Name "dominio.it - GAL" -RecipientContainer dom1.dom2.loc
 WARNING: One or more global address lists were missing from the Active Directory attribute.
 This is likely caused by using legacy Exchange management tools to create global address lists.
 Active Directory operation failed on srvdc.dom1.dom2.loc. This error is not retriable.
 Additional information: The name reference is invalid.
 This may be caused by replication latency between Active Directory domain controllers.
 Active directory response: 000020B5: AtrErr: DSID-03152804, #1:
 0: 000020B5: DSID-03152804, problem 1005 (CONSTRAINT_ATT_TYPE), data 0, Att 907ff (globalAddressList2)
 + CategoryInfo : NotSpecified: (0:Int32) [New-GlobalAddressList], ADConstraintViolationException
 + FullyQualifiedErrorId : AD0A7836,Microsoft.Exchange.Management.SystemConfigurationTasks.NewGlobalAddressList

Per risolvere il problema si è reso necessario utilizzare il tool ADSI Edit su un domain controller (Start -> esegui -> ADSIedit.msc) scorrere l’albero fino all’oggetto dell’ organizzazione Exchange, visualizzarne le proprietà e verificare che negli attributi globaladdresslist e globaladdresslist2 non ci fossero dei DN non validi.

Una volta rimosse le voci non corrette il comando non ha più dato errori.

Exchange 2010: Outlook Web App didn’t initialize. If the problem continues, please contact your helpdesk. Couldn’t find a base theme (folder name=base)

Di recente mi sono scontrato nell’errore in oggetto.
Il tutto è iniziato dopo l’installazione del Service Pack di Exchange 2010.

Dopo qualche verifica ho risolto con la semplice esecuzione del seguente comando lanciato da console powershell di exchange:

C:\Program Files\Microsoft\Exchange Server\V14\Bin\UpdateCas.ps1

Script Powershell per generazione report certificati in scadenza

Dopo aver realizzato un’infrastruttura PKI in ambiente Microsoft, particolarmente nelle grandi realtà il numero dei certificati emessi può crescere velocemente e non sempre ricordarsi se e quando rinnovare i certificati diventa cosa semplice.
Se non è possibile utilizzare il rinnovo automatico, si può utilizzare uno script come questo per generare una notifica schedulata dei certificati in scadenza nei prossimi 15 giorni.


Add-PSSnapin Microsoft.Exchange.Management.Powershell.Admin -erroraction silentlyContinue
certutil -view -out "RequestID,RequesterName,NotAfter" csv > C:\Script\elenco_certificati.csv
$csv = Import-Csv C:\Script\elenco_certificati.csv
$end_date = ((get-date).AddDays(15)).ToShortDateString()
foreach ($cert in $csv)
{
   $d1 = ($cert.'Certificate Expiration Date').SubString(0,10)
   $d2 = [datetime]::ParseExact($d1, "dd/MM/yyyy", $null)
   $d3 = $d2.ToShortDateString()
   if ($d3 -gt $end_date)
   { 
      Add-Content C:\Script\elenco_certificati_in_scadenza.csv $cert
   }
}
$file = "C:\Script\elenco_certificati_in_scadenza.csv"
$smtpServer = "mail.server.srv"
$att = new-object Net.Mail.Attachment($file)
$msg = new-object Net.Mail.MailMessage
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Credentials = New-Object System.Net.NetworkCredential("user", "password");
$msg.From = "mittente@dominio.it"
$msg.To.Add("destinatario@dominio.it")
$msg.Subject = "Elenco certificati in scadenza nei prossimi 15 giorni"
$msg.Body = "Vedi allegato"
$msg.Attachments.Add($att)
$smtp.Send($msg)
$att.Dispose()

DHCP: script PS1 per aggiungere scope DHCP da un file CSV

Una della più grandi novità delle release di windows server dalla 2008 in poi è la powershell che, sebbene all’inizio possa sembrare poco amichevole, dopo qualche tempo diventa indispensabile per alcune operazioni.

Supponete infatti di dover eseguire delle operazioni ripetitive come ad esempio l’aggiunta di oltre cento scope DHCP con tutti i parametri, dovendo farlo utilizzando la GUI di certo avrete bisogno di parecchio tempo.

Grazie alla powershell ed ad uno script PS1, invece, questa operazione la potrete eseguire in pochi secondi.

Per prima cosa dovrete creavi un file CSV al cui interno vi siano i valori degli scope che volete creare:

Scope_Name,Scope_Mask,Scope_Description,Scope_Start,Scope_End,Scope_Router
192.168.189.64,255.255.255.192,"Sede1",192.168.189.116,192.168.189.118,192.168.189.126
192.168.190.64,255.255.255.192,"Sede2",192.168.190.116,192.168.190.118,192.168.190.126

Fatto questo usate il seguente script:

Param($csvpath)
$networks = import-csv $csvpath

$DHCP_Server="172.16.3.201"

foreach($network in $networks)
{

   $Scope_Name=$network.Scope_Name
   $Scope_Mask=$network.Scope_Mask
   $Scope_Description=$network.Scope_Description
   $Scope_Start=$network.Scope_Start
   $Scope_End=$network.Scope_End
   $Scope_Router=$network.Scope_Router
   netsh dhcp server $DHCP_Server add scope $Scope_Name $Scope_Mask $Scope_Description
   netsh dhcp server $DHCP_Server scope $Scope_Name add iprange $Scope_Start $Scope_End
   netsh dhcp server $DHCP_Server scope $Scope_Name set optionvalue 003 IPADDRESS $Scope_Router
   netsh dhcp server $DHCP_Server scope $Scope_Name set optionvalue 51 DWORD 28800
   netsh dhcp server $DHCP_Server scope $Scope_Name set state 1
}

Salvato questo script come add-dhcp_scopes.ps1 lo potete lanciare passando come parametro il file CSV

add-dhcp_scopes.ps1 dhcp.csv