Description : Vous êtes en charge de l’administration d’un parc informatique composé de serveurs Windows et vous souhaitez automatiser certaines tâches à l’aide de scripts PowerShell ? Alors cet article est fait pour vous. Ce tutoriel vous expliquera en détail comment créer un script PowerShell en quelques lignes de codes, pour exécuter une action à distance sur un serveur Windows. L’action peut être de toute nature, que ce soit l’exécution d’une commande, d’une tâche ou d’un programme.
Pré-requis :
– Posséder une machine exécutant le système d’exploitation Windows Server 2008 R2 minimum
– PowerShell 3.0 minimum
– Posséder des droits d’administration sur la machine distante
Pour nous mettre en situation, prenons quelques exemple…
- Un serveur de synchronisation d’annuaire pour une messagerie Office 365 nommé DirSync-01 sur lequel est configuré une tâche planifiée dédié à l’exécution de l’outil de synchronisation AAD SYNC (Azure Active Directory Sync). La tâche planifiée nommé par défaut « Azure AD Sync Scheduler » doit pouvoir être démarré à distance via une commande PowerShell. Pour réaliser un script d’automatisation de cette tâche, il suffit de créer la fonction suivante :
### Récupérer les identifiants d’administration de l’ordinateur distant
$upn = ($env:USERNAME + « @ » + $env:USERDNSDOMAIN).ToLower()
$cred = Get-Credential -Credential $upn
### Création de la fonction StartAADSync
Function StartAADSync(){
### Démarrage d’une session interactive
$sessionAADSync = New-PSSession -computerName DirSync-01 -credential $cred
Invoke-Command -Session $sessionAADSync -Scriptblock {
### Démarrage de la tâche planifiée « Azure AD Sync Scheduler »
schtasks /run /tn « Azure AD Sync Scheduler »
}
Remove-PSSession $sessionAADSync
}
### Exécution de la fonction StartAADSync
StartAADSync
- La fonction StartAADSync a fonctionné pour l’exécution d’une tâche planifiée et ce type de script pourrait également être modifié afin de démarrer d’autres processus sur une machine distante, voir d’exécuter un bout de script à distance. Par exemple, l’exemple qui suit permet de vérifier le statu d’un service sur une machine distante et le démarrer si ce dernier est arrêté :
### Récupérer les identifiants d’administration de l’ordinateur distant
$upn = ($env:USERNAME + « @ » + $env:USERDNSDOMAIN).ToLower()
$cred = Get-Credential -Credential $upn
### Création de la fonction StartAudiosrv
Function StartAudiosrv(){
### Démarrage d’une session interactive
$sessionAudiosrv = New-PSSession -computerName DirSync-01 -credential $cred
Invoke-Command -Session $sessionAudiosrv -Scriptblock {
### Démarrage du script de vérification du service Windows « Audiosrv »
$services = Get-Service
$Audio = $services | Where-Object {$_.Name -eq « Audiosrv »}
if ($Audio.Status -eq « Stopped »)
{
Write-Host `r`n « Le service Audiosrv est arrêté » -ForegroundColor Red
Start-Service Audiosrv
Write-Host `r`n « Le service Audiosrv vient d’être démarré » -ForegroundColor Green
}
Else
{
Write-Host `r`n « Le service Audiosrv est démarré » -ForegroundColor Green
}
}
Remove-PSSession $sessionAudiosrv
}
### Exécution de la fonction StartAudiosrv
StartAudiosrv