Archive

Articles taggués ‘PowerShell’

Consulter le journal des événements avec Powershell

Ambulance

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.

?View Code POWERSHELL
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.

?View Code POWERSHELL
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.

Lync_Server_Events

Categories: Windows Tags: , ,

Lister les cartes réseaux connectés avec PowerShell

ethernet

Cette commande va permettre de lister uniquement les cartes réseaux ayant le statut connecté.

?View Code POWERSHELL
get-wmiobject win32_networkadapter -filter "netconnectionstatus = 2"
Categories: Windows Tags: , ,

Ajouter une ligne téléphonique privée

Téléphone_Rouge
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:

?View Code POWERSHELL
Set-CsUser -Identity "sip:bigboss@maboite.com" -PrivateLine "Tel:+33123456789"

Avec une extension:

?View Code POWERSHELL
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.

Contrôler les travaux Backup Exec 2012 des 24 dernières heures

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.

?View Code POWERSHELL
Get-BEJobHistory -FromStartTime (get-date).AddHours(-24)

Encore une nouvelle façon de gagner du temps.

Categories: Symantec Tags: , ,

Afficher tous les partages d’un serveur avec Powershell

Cette ligne de commande PowerShell affiche tous les partages d’un serveur.

?View Code POWERSHELL
Get-WmiObject -Class "Win32_Share" -NameSpace "root\CIMV2" -ComputerName "MonServeur"
Categories: Windows Tags: ,

Afficher la taille et l’espace libre des bases de données Exchange

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:

?View Code POWERSHELL
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.

Gérer à distance un serveur Exchange 2010 avec PowerShell

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:

?View Code POWERSHELL
$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:

?View Code POWERSHELL
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://exch-server01/PowerShell/ -Authentication Kerberos  -Credential (Get-Credential)

Importez la session.

?View Code POWERSHELL
Import-PSSession $session

Vous pouvez maintenant lancer les commandes PowerShell Exchange 2010 sur votre système.

Pensez à quitter proprement la session avec :

?View Code POWERSHELL
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.

Categories: Exchange 2010 Tags: ,

Exporter la liste des fichiers d’un lecteur par extension.

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.

?View Code POWERSHELL
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)"
    }
}

Créer une arborescente d’unités d’organisation (OU)

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.

OU

?View Code POWERSHELL
 
$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."
}

Importation DNS avec PowerShell

« 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.

?View Code POWERSHELL
$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.