
Voici deux méthodes pour exploiter le journal des événements d’un serveur.
J’utilise la première solution pour consulter directement les logs sur le serveur.
La commande suivante me permet de consulter les 20 dernières erreurs du journal d’événements Lync Server.
Get-EventLog -LogName "Lync Server" -Newest 20 -EntryType error | fl EntryType,Category,CategoryNumber,Source,Message |
La deuxième va exporter les 20 dernières erreurs dans un fichier texte pour être consulté plus tard ou être transmit.
Get-EventLog -LogName "Lync Server" -Newest 20 -EntryType error | Export-csv -Path Lync-Error.csv |
Vous pouvez adapter les filtres en fonction de vos besoins.
Pour connaitre le nom du journal, je consulte les propriétés de celui qui m’intéresse pour récupérer le nom du fichier evtx.


Cette commande va permettre de lister uniquement les cartes réseaux ayant le statut connecté.
get-wmiobject win32_networkadapter -filter "netconnectionstatus = 2" |

Même si sa réputation est parfois sulfureuse, une ligne privée peut être configurée sur les utilisateurs de Lync.
Quelques détails à savoir sur ce second numéro de téléphone:
– Il ne sera pas visible des autres utilisateurs.
– Il permet de joindre l’utilisateur directement en outrepassant les renvois et le statut « Ne pas déranger. ».
– Il n’est pas affecté par la sonnerie simultanée.
– Il peut avoir une sonnerie spécifique.
– Il ne peut n’y avoir qu’une ligne privée par compte.
– Les messages et notifications sont envoyés dans la boite aux lettres de l’utilisateur.
Il est généralement nécessaire dans la mise en place de filtrages patron/secrétaire.
L’ajout de ce numéro à un utilisateur s’effectue uniquement par la commande PowerShell:
Set-CsUser -Identity "sip:bigboss@maboite.com" -PrivateLine "Tel:+33123456789" |
Avec une extension:
Set-CsUser -Identity "sip:bigboss@maboite.com" -PrivateLine "Tel:+33123456789;Ext=6789" |
Evidemment, comme le numéro de portable de José Garcia ou Antoine De Caunes, pour ce numéro privé garde son utilité, il vaut mieux ne pas trop le diffuser.
Je ne m’y était pas encore trop intéressé mais Symantec Backup Exec 2012 permet d’administrer votre solution de sauvegarde avec PowerShell.
Symantec propose cette nouvelle interface de commande appelé Backup Exec 2012 Management Command Line Interface (BEMCLI).
La commande suivante permet par exemple d’avoir un état de tous les travaux exécutés lors des 24 dernières heures.
Get-BEJobHistory -FromStartTime (get-date).AddHours(-24) |
Encore une nouvelle façon de gagner du temps.
Cette ligne de commande PowerShell affiche tous les partages d’un serveur.
Get-WmiObject -Class "Win32_Share" -NameSpace "root\CIMV2" -ComputerName "MonServeur" |
La taille des bases de données Exchange évoluent. Sans une défragmentation offline la taille des celles-ci ne réduiront jamais.
Vous pouvez néanmoins vérifier si vos bases de données possèdent un espace vide issu de la défragmentation online effectuée par défaut toutes les nuits.
Pour afficher la taille des vos bases de données et de l’espace libre, exécutez la commande PowerShell suivante:
Get-MailboxDatabase -Status | ft Name,DatabaseSize,AvailableNewMailboxSpace |
Selon les résultats vous pouvez estimer la tailles que feront vos bases de données après une défragmentation offline.
Pour rappel, vous devez posséder 110% de la taille actuelle de la bases de données d’espace disponible.
Vous souhaitez administrer vos serveurs Exchange 2010 à distance depuis un ordinateur ou un serveur sur lequel ne sont pas installés les outils d’administration Exchange 2010.
Voici la méthode pour le faire avec Windows Management Framework.
Créez un session avec New-PSSession:
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://exch-server01/PowerShell/ -Authentication Kerberos |
Pour créer une session avec New-PSSession en utilisant un autre compte, utilisez:
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://exch-server01/PowerShell/ -Authentication Kerberos -Credential (Get-Credential) |
Importez la session.
Import-PSSession $session |
Vous pouvez maintenant lancer les commandes PowerShell Exchange 2010 sur votre système.
Pensez à quitter proprement la session avec :
Remove-PSSession $session |
Pour les systèmes plus anciens que Windows Seven et Windows Server 2008 R2, il est tout de même nécessaire d’avoir installé PowerShell 2.0 et WinRM 2.0.
Les sources se trouvent ici.
Dans l’idée de faire un peu de ménage sur un lecteur, je cherche à identifier les fichiers multimédia avec le chemin et la taille.
Ce script va créer un fichier texte pour chaque extension.
Get-ChildItem -Recurse -Path "E:\" -Include *.mp3,*.mp4,*.avi -ErrorAction silentlycontinue | ForEach {
Write-Progress -activity "Fichiers Multimédia" -Status $_.FullName
$extension = $_.name.split(".")[-1]
$size = “{0:N2}” -f ($_.Length/1mb)
$logfile = ".\logs\" + $extension + ".txt"
$present = Test-Path -Path $logfile
if ( $present -ne "true") {
Write-host "Création de $logfile"
$resfile = New-Item -ItemType file -Path $logfile -Force
Add-Content -Path $logfile -Value "Nom;Chemin;Taille"
Add-Content -Path $logfile -Value "$($_.name );$($_.DirectoryName);$($size)"
}
Else {
Add-Content -Path $logfile -Value "$($_.name );$($_.DirectoryName);$($size)"
}
} |
Vous souhaitez créer une arborescence d’unités d’organisations pour chacun des vos 53 sites géographiques. Cette arborescence d’OU sera identique pour chaque sites.
La quantité d’OU à créer vous impressionne. Voici comment gagner quelques heures.

$OUFilName = Read-Host "Entrez l'OU parent"
$OUSiteName = Read-Host "Entrez le nom de la nouvelle OU"
$Domain = [ADSI]"LDAP://AD-DC-01/dc=domain,dc=local"
#Creation de l'OU de site.
$OUSite = $Domain.Create("OrganizationalUnit", "ou=" + $OUSiteName + ",ou=" + $OUFilName)
$OUSite.SetInfo()
Write-Host "L'OU $OUSiteName a été créée."
#Creation du premier niveau d'OU.
$OUFirst = "Ordinateurs","Groupes","Utilisateurs"
Foreach ( $ou in $OUFirst) {
$SetOU = $Domain.Create("OrganizationalUnit", "ou=" + $ou + ",ou=" + $OUSiteName + ",ou=" + $OUFilName)
$SetOU.SetInfo()
Write-Host "L'OU $OU a été créée."
}
#Creation des OU d'ordinateurs
$OUComp = "Portables","Fixes"
Foreach ( $ou in $OUComp) {
$SetOU = $Domain.Create("OrganizationalUnit", "ou=" + $ou + ",ou=Ordinateurs,ou=" + $OUSiteName + ",ou=" + $OUFilName)
$setOU.SetInfo()
Write-Host "L'OU $OU a été créée."
}
#Creation des OU d'utilisateurs.
$OUUsr = "Standards","Citrix","Administrateurs"
Foreach ( $ou in $OUUsr) {
$SetOU = $Domain.Create("OrganizationalUnit", "ou=" + $ou + ",ou=Utilisateurs,ou=" + $OUSiteName + ",ou=" + $OUFilName)
$setOU.SetInfo()
Write-Host "L'OU $OU a été créée."
} |
« Gagner du temps », c’est souvent l’objectif qui nous pousse à utiliser PowerShell. Voici donc comment importer des modifications dans un DNS avec PowerShell.
Ce script contient les commandes pour supprimer des enregistrements et en ajouter. Pour les mises à jour vous devrez passer par la suppression et l’ajout.
Il est possible de modifier le type d’enregistrement pour traiter par exemple des Alias.
$DNSServer = "AD-DC-01"
$DNSZone = "domain.local"
$InputFile = "./import-file.txt"
$records = Import-CSV $InputFile
ForEach ($record in $records) {
$recordName = $record.name
$recordType = "A"
$recordAddress = $record.ip
$action = $record.action
if ( $action -eq "DELETE") {
$cmdDelete = "dnscmd $DNSServer /RecordDelete $DNSZone $recordName $recordType /f"
Write-Host "Running the following command: $cmdDelete"
Invoke-Expression $cmdDelete
}
ElseIf ( $action -eq "ADD") {
$cmdAdd = "dnscmd $DNSServer /RecordAdd $DNSZone $recordName $recordType $recordAddress"
Write-Host "Running the following command: $cmdAdd"
Invoke-Expression $cmdAdd
}
} |
Ce script va vous permettre de faire l’importation en masse d’enregistrements mais aussi de planifier des modifications dans le DNS.
Commentaires récents