Utilisation des guillemets.



L’utilisation des guillemets simple ou double a son importance avec PowerShell.
Elles permettent de résoudre ou non des opérations arithmétiques.

$resultat  = 'Le resultat est : $(5+3)'
$resultat
Le resultat est : $(5+3)
$resultat  = "Le resultat est : $(5+3)"
$resultat
Le resultat est : 8

Elles permettent de résoudre où non les variables.

$res = $(5+3)
$resultat  = 'Le resultat est : $res'
$resultat
Le resultat est : $res
$resultat  = "Le resultat est : $res"
$resultat
Le resultat est : 8

Elles autorisent l’insertion des caractères spéciaux grâces aux caractères d’échappement.

"Inserer une tabulation entre A et B: A`tB"
Inserer une tabulation entre A et B: A  B

Liste des caractères d’échappement.

Caratères d'échappementRésultat
`nNouvelle ligne
`rRetour chariot
`tTabulation
`aAlarm
`bBackspace
`'Guillemet simple
`"Guillemet double
`0Null
``Backtick



Supprimer les anciens fichiers de logs.



Ce script supprime les fichiers de logs de plus de 30 jours.

$Now = Get-Date
$LastWrite = $Now.AddDays(-30)
$Files = get-childitem -Path ".\logs" -include *.log -recurse |Where {$_.LastWriteTime -le "$LastWrite"} 
foreach ($File in $Files){
if ($File) {
write-host "Deleting File '$File'"
Remove-Item $File | out-null
}
}



Exporter les statistiques de Enterprise Vault



Enterprise Vault
Voici comment j’exporte les statistiques d’archivage dans Symantec Enterprise Vault.

$Server = "server30"
$Database = "EVaultStoreArchive1"
$AttachmentPath = ".Export_EVEV_1_Stats.csv"
$SqlQuery = "SELECT [ArchiveName], ArchivedItems, CAST(ArchivedItemsSize AS decimal(20, 0)) AS ArchivedItemsSize From view_ListVaults INNER JOIN [EnterpriseVaultDirectory].[dbo].[ArchiveView] ON view_ListVaults.ArchivePointId = [EnterpriseVaultDirectory].[dbo].[ArchiveView].[VaultEntryId]"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Data Source=$Server;Initial Catalog=$Database;Integrated Security = True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$nRecs = $SqlAdapter.Fill($DataSet)
$nRecs | Out-Null
$objTable = $DataSet.Tables[0]
$objTable | Export-CSV $AttachmentPath
Write-Host "Export terminé."
$resfile = New-Item -ItemType file -Path ".Export_EVEV_1_Stats_Result.csv" -Force
Add-Content -Path $resfile -Value "FirstOU,Name,ArchivedItems,ArchivedItemsSize,VaultCache,OrganizationalUnit"
$evnom = "CN=EV_NOMADES,CN=Users,DC=domain,DC=local"
$InputFile = import-csv -Path $AttachmentPath
foreach ($Mailbox in $InputFile)
{
$user = Get-QADUser -Identity $Mailbox.ArchiveName
$user.Name
if ($user.NestedMemberOf -contains $evnom )
{$vaultchache = "True"}
Else
{$vaultchache = $null}
$FirstOU = $User.ParentContainer -split("/")
$FirstOU = $FirstOU[1]
Add-Content -Path $resfile -Value "$($FirstOU),$($Mailbox.ArchiveName),$($Mailbox.ArchivedItems),$($Mailbox.ArchivedItemsSize),$($vaultchache),$($user.ParentContainer)"



Déployer l’Agent EPO 4 McAfee par GPO.




Voici la procédure pour déployer l’Agent EPO 4.x par GPO.
Ça marche très bien, le seul soucis que j’ai est de reconfigurer les référentiel sur les poste où la version 4 est déjà installé.
Pour ce cas de figure, je continu à passer par ePolicy Orchestrator pour déployer l’agent.

Le lien: How to enable Group Policy deployment of McAfee Agent 4.x



Extraire l’espace d’adressage d’un connecteur.



Voici comment extraire rapidement l’espace d’adressage d’un connecteur d’envoi SMTP Exchange 2007.

$conn = Get-SendConnector -Identity "ToExtRouters"
$conn.AddressSpaces | Select-Object Domain



Gestion des ports TCP/UDP.



CurrPorts est un petit utilitaire très pratique pour visualiser les ports utilisés par votre ordinateur.
Il permet surtout de savoir qu’elle application utilise quels ports TCP ou UDP.
Et plein d’autres informations et actions.

Monitoring Ports TCP/UDP

Téléchargeable ici.



Lister les utilisateurs absents de groupes



Si vérifier qu’un utilisateur n’est pas membre d’un groupe est rapide

Get-QADUser -Identity "louis.defunes" -NotMemberOf "Gendarmerie"

ou si lister les utilisateurs d’un OU qui ne sont pas membres d’un groupe est facile,

Get-QADUser -SearchRoot "domain.local/StTropez" -SizeLimit 0 -NotMemberOf "Gendarmerie"

faire la même chose pour tous les utilisateurs d’une OU pour plusieurs groupes est plus compliquée.
Voici donc comment lister les utilisateurs d’un OU absents de deux groupes.

$ou = Read-Host "Enter the OU name"
$fullou = "domain.local/" + $ou
$group1 = "Gendarmerie"
$group2 = "Port"
Get-Mailbox -ResultSize Unlimited -OrganizationalUnit $ou | where {Get-QADUser $_.alias -NotMemberOf $group1 } | where {Get-QADUser $_.alias -NotMemberOf $group2 }



Take the power !





Compter le nombre de membres dans un groupe



Pour compter rapidement le nombre de membres dans un groupe.

$gp  = Read-Host "Enter group name"
$member = $null
Get-QADGroupMember -SizeLimit 0 -Identity $gp | foreach {
$member++
}
Write-Host $member " in " $gp



Vérifier et activer la politique d’adresses e-mail.



Utiliser cette méthode pour vérifier qui n’applique la politique d’adresses e-mail.

Get-Mailbox -ResultSize unlimited -OrganizationalUnit "domain.local/Paris" | Where-Object { $_.EmailAddressPolicyEnabled -eq $false } | ft displayname,alias,PrimarySmtpAddress

Dans mon cas, j’applique ce script pour savoir si la politique peut être appliquée sans qu’elle modifie l’adresse SMTP principale.
Si c’est le cas, je l’applique.

Get-Mailbox -ResultSize unlimited -OrganizationalUnit "domain.local/Paris" | Where-Object { $_.EmailAddressPolicyEnabled -eq $false } | foreach {
$normalsmtp = $_.alias + "@domain.com"
$prismtp = $_.PrimarySmtpAddress
if ( $normalsmtp -ne $prismtp) {
$_.displayname
}
Else{
Set-Mailbox -Identity $_.alias -EmailAddressPolicyEnabled $true
}
}