Archive

Articles taggués ‘PowerShell’

Afficher l’état d’un service sur les serveurs d’une OU

Je souhaite contrôler rapidement l’état d’un service Citrix sur tous les serveurs présents dans une OU. S’agissant d’une quinzaine de serveurs, j’ai besoin d’une commande qui me retourne l’information en quelques secondes.
La commande PowerShell que j’utilise est la suivante:

Sur un serveur Windows 2008 R2.

?View Code POWERSHELL
Import-Module ActiveDirectory ; Get-ADComputer -SearchBase "OU=Serveurs Citrix,OU=Serveurs,DC=domain,DC=local" -Filter *| Foreach { $status = Get-Service -Name IMAService -ComputerName $_.name ; Write-host $_.name"`t"$service.name"`t"$service.status }

Pour Windows Seven, Windows 2003 et Windows 2008.

?View Code POWERSHELL
$ou = [ADSI]"LDAP://OU=Serveurs Citrix,OU=Serveurs,DC=domain,DC=local" ; foreach ($srv in $ou.psbase.Children ) { if ($srv.ObjectCategory -like '*computer*'){$service= Get-Service -Name IMAService -ComputerName $srv.name ; Write-host $srv.name"`t"$service.name"`t"$service.status}}
Categories: Windows Tags: , ,

Lister les liens de sites Active Directory avec Powershell

Voici comment lister les liens de sites Active Directory et les sites qu’ils lient avec PowerShell.

?View Code POWERSHELL
$site_links = get-adobject -filter 'objectclass -eq "sitelink"' -SearchBase 'cn=configuration,dc=domain,dc=local' -properties sitelist
$site_links | fl Name,sitelist

Lister les sites Active Directory avec PowerShell

Dans un domaine Active Directory important avec beaucoup de sites Active Directory, de contrôleurs de domaine et de sous-réseaux, il peut être fastidieux de passer par la MMC « Sites et Services Active Directory » pour contrôler la configuration.
Voici comment afficher avec PowerShell la liste des sites avec leurs contrôleurs de domaine et les sous-réseaux associés.

?View Code POWERSHELL
$forest = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()
$sites = $forest.Sites
$sites | ft Name,Servers,Subnets –AutoSize

Vous pourrez visualiser rapidement si des sites sont sans contrôleurs ou sans sous-réseaux.

Connaitre la durée du Tombstone Lifetime

Voici la commande PowerShell pour connaitre la valeur du Tombstone Lifetime de votre domaine Active Directory.
Cette valeur correspond à la durée de vie des objets supprimés dans le domaine.
Si un contrôleur de domaine ne réplique pas depuis le nombre de jours du Tombstone LifeTime, il ne sera plus possible pour lui de répliquer avec les autres contrôleurs.

?View Code POWERSHELL
Get-ADObject -Identity "CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=domain,D
C=local" -properties tombstonelifetime

Désactiver le contrôle de compte d’utilisateur UAC avec PowerShell

Voici comment désactiver le contrôle de compte d’utilisateur (UAC) avec PowerShell.
UAC (User Account Control) permet de restreindre l’exécution des programmes pour contrôler les modifications du système.
 

L’apparition régulière de ce message peut à la longue devenir lassante.
Voici comment rapidement y mettre fin:

– Exécuter PowerShell en tant d’administrateur
– Lancer la commande:

?View Code POWERSHELL
New-ItemProperty -Path HKLM:Software\Microsoft\Windows\CurrentVersion\policies\system -Name EnableLUA -PropertyType DWord -Value 0 -Force

– Rebooter l’ordinateur.

Configurer FGPP avec Powershell

Pourquoi ce compliquer la vie.

En référence à l’article Implémenter différentes stratégies de mot de passe dans un domaine, il est possible de configurer un « Password Settings Object » (PSO) avec PowerShell.

?View Code POWERSHELL
New-ADFineGrainedPasswordPolicy -Name "AdminsPasswordPolicy" -Precedence 10 -ComplexityEnabled $true -Description "The Domain Administrators Password Policy"-DisplayName "Domain Admins PSO" -LockoutDuration "0.00:30:00" -LockoutObservationWindow "0.00:30:00" -LockoutThreshold 5 -MaxPasswordAge "60.00:00:00" -MinPasswordAge "1.00:00:00" -MinPasswordLength 8 -PasswordHistoryCount 5 -ReversibleEncryptionEnabled $false

Le résultat avec la commande

?View Code POWERSHELL
New-ADFineGrainedPasswordPolicy -Name "AdminsPasswordPolicy"

Manage Fine-Grained Password Policy (Technet)

Importer la création de comptes Active Directory 2008 R2

Voici comment importer dans Active Directory 2008 R2 des comptes depuis un fichier texte.
Le login est formaté par rapport au nom et prénom de l’utilisateur. Dans cette exemple, on utilise les 6 premières lettres du nom et les 2 premières lettres du prénom.

?View Code POWERSHELL
Import-Csv -Path .\Import\import-adms.txt | foreach {
$firstname = (Get-Culture).TextInfo.Tolower($_.prenom)
$firstname = (Get-Culture).TextInfo.ToTitleCase($firstname)
$lastname = (Get-Culture).TextInfo.ToUpper($_.nom)
$name = $lastname + ' ' + $firstname
if ($_.nom.Length -le 6) {
$samaccount = $lastname + $firstname.Remove(2)
}
Else {
$samaccount = $lastname.Remove(6) + $firstname.Remove(2)
}
$descrition = $_.Societe + "-" + $_.Description
$upn = $samaccount + "@domain.fr"
$AccountPassword = (ConvertTo-SecureString "Pass2Key2" -AsPlainText -force)
 
New-ADUser -Name $name -GivenName $firstname -Surname $lastname -Path "OU=Comptes,DC=corp,DC=domain,DC=fr" -SamAccountName $samaccount -Description $descrition -UserPrincipalName $upn -AccountPassword $AccountPassword -Enabled $true -ChangePasswordAtLogon $true
}

Modifier les adresses IP distantes sur un connecteur de réception

Comment gérer les adresses IP distantes autorisées sur un connecteur de réception?
Sur un connecteur de réception sans authentification et autorisant les connexions anonymes, il est indispensable de créer une liste blanche des adresses IP qui pourront émettre des messages via ce connecteur.

Voici comment gérer cette liste avec PowerShell.

Visualiser la liste existante.

?View Code POWERSHELL
$RConn = Get-receiveConnector "HUBSERVER\IPWhiteList"
$RConn.RemoteIpRanges | ft LowerBound,CIDRLength -AutoSize

Compter le nombre d’IP.

?View Code POWERSHELL
$RConn = Get-receiveConnector "HUBSERVER\IPWhiteList"
$RConn.RemoteIpRanges.count

Comparer deux connecteurs.

?View Code POWERSHELL
$RConn1= Get-receiveConnector "HUBSERVER01\IPWhiteList"
$RConn2= Get-receiveConnector "HUBSERVER02\IPWhiteList"
Compare-Object $RConn1.RemoteIpRanges $RConn2.RemoteIpRanges

Une flèche vers la droite indique que l’adresse affichée est présente dans le connecteur « ILMHUBCAS02P\Appsmtp » et absente de l’autre.

Attention, la commande suivante, écrase la liste d’IP existante par l’IP que vous spécifiez.

?View Code POWERSHELL
Set-ReceiveConnector "HUBSERVER\IPWhiteList" -RemoteIPRanges "192.168.6.66/32"

Pour ajouter cette IP a la liste existante, il faut utiliser la combinaison des commandes suivante.

?View Code POWERSHELL
$RConn = Get-ReceiveConnector "HUBSERVER\IPWhiteList"
$RConn.RemoteIPRanges += "192.168.6.66/32"
Set-ReceiveConnector "HUBSERVER\IPWhiteList" -RemoteIPRanges $RConn.RemoteIPRanges

Pour ajouter plusieurs IP.

?View Code POWERSHELL
$RConn = Get-ReceiveConnector "HUBSERVER\IPWhiteList"
$RConn.RemoteIPRanges += "192.168.6.66/32","192.168.6.99/32"
Set-ReceiveConnector "HUBSERVER\IPWhiteList" -RemoteIPRanges $RConn.RemoteIPRanges

Pour ajouter un liste d’IP issue d’un fichier texte.

?View Code POWERSHELL
$RConn = Get-ReceiveConnector "HUBSERVER\IPWhiteList"
Get-Content .\newips.txt | foreach {$RConn.RemoteIPRanges += "$_"}
Set-ReceiveConnector "HUBSERVER\IPWhiteList" -RemoteIPRanges $RConn.RemoteIPRanges

Si la liste d’IP en place a déjà une des IP mentionnés dans le fichier, un message d’erreur va apparaître, il est sans incidence.

Ajouter le Snap-in Powershell de Exchange 2010

Ajout de ce Snap-in vous permet de lancer les commandes spécifiques à Exchange 2010 dans Powershell sans lancer Exchange Management Shell.
L’ajout de ce snap-in peu être utile dans les scripts ou profiles.

?View Code POWERSHELL
Add-PSSnapin "Microsoft.Exchange.Management.PowerShell.E2010"

Bien entendu, les outils d’administration d’Exchaneg 2010 doivent être installé sur le PC ou serveur ou vous voulez ajouter ce snap-in.

Categories: Exchange 2010 Tags: ,

Identifier les comptes plus utilisés

Permet d’identifier les comptes qui ne se sont pas connectés au domaine depuis une date précise.

?View Code POWERSHELL
$LastLogonDate = New-Object System.DateTime(2012,1,1)
Get-ADUser -Filter { lastLogon -le $LastLogonDate } | ft Name,SamAccountName