Arrêter et démarrer un service sur un serveur à distance.
Dans l’exemple, je traite le service « Microsoft Exchange Replication Service ».
Stop:
$Svc = Get-WmiObject -Computer SRV001 win32_service -Filter "name='MSExchangeRepl'"
$Result = $Svc.StopService()
$Result.ReturnValue |
Start:
$Svc = Get-WmiObject -Computer SRV001 win32_service -Filter "name='MSExchangeRepl'"
$Result = $Svc.StartService()
$Result.ReturnValue |

Ce script permet de rapidement configurer la sécurité sur un fichier.
$list = "jacques.martin","Groupe-Ecole_des_Fans"
foreach ($user in $list){
$folder = "\SRV001i$chansons.txt"
$acl = Get-Acl -Path $folder
$ar = New-Object system.security.accesscontrol.filesystemaccessrule($user,"FullControl","Allow")
$acl.SetAccessRule($ar)
Set-Acl -Path $folder $acl
} |
Permet de créer un compte administrateur local sur un serveur distant.
$hostname = Read-Host "Enter the server name"
$username = Read-Host "Enter the user name"
$password = Read-Host "Enter the user password"
$domain = ([ADSI]"").name
$computer = [adsi] "WinNT://$domain/$hostname"
$user = "WinNT://$domain/$hostname/$username,user"
$newuser = $computer.Create("user", "$username")
$newuser.SetPassword("$password")
$newuser.SetInfo()
$newuser.UserFlags.value = $newuser.UserFlags.value -bor 0x10000
$newuser.CommitChanges()
$addadm = [adsi] "WinNT://$hostname/Administrators,group"
$addadm.Add("WinNT://$hostname/$username,user")
$newuser.SetInfo()
Write-Host "User $username create as local administrator of $hostname." -ForegroundColor Green |
Ce script permet de savoir qui est logué sur un ordinateur distant.
Le script retourne les login de l’utilisateur.
$computer = Read-Host "Enter the computer Name"
$loginfo = Get-WmiObject -Computer $Computer -Class Win32_ComputerSystem
"Machine Name: " + $loginfo.Name
"User Name: " + $loginfo.UserName |
Enlever à distance d’un compte du domaine du groupe « Administrators » d’un ordinateur ou serveur.
$computer = Read-Host "Enter computer name"
$user = Read-Host "Enter user name"
$domain = ([ADSI]"").name
([ADSI]"WinNT://$computer/Administrators,group").Remove("WinNT://$domain/$user") |
Ajouter à distance d’un compte du domaine dans le groupe « Administrators » d’un ordinateur ou serveur.
$computer = Read-Host "Enter computer name"
$user = Read-Host "Enter user name"
$domain = ([ADSI]"").name
([ADSI]"WinNT://$computer/Administrators,group").Add("WinNT://$domain/$user") |
Permet d’afficher à les membres du groupe « Administrators » local d’un serveur distant.
$strComputer = Read-Host "Please enter the computer name"
$computer = [ADSI]("WinNT://" + $strComputer + ",computer")
$group = $computer.psbase.children.find("administrators")
Write-host ""
Write-host "Computer Name : "$computer.name
Write-Host "_____________________________________"
Write-host ""
Write-host "Group Name : "$Group.name
Write-Host "_____________________________________"
$domain = $group.path.split("/")[2]
$string1 = "WinNT://" + $domain + "/" + $strComputer + "/"
$string2 = $strComputer + "/"
$string3 = "WinNT://"
$members = ($group.psbase.invoke(”Members”) | Foreach-Object {$_.GetType().InvokeMember(”Adspath”, ‘GetProperty’, $null, $_, $null)}) -replace ($string1,$string2) -replace ($string3,"")
Write-host ""
Write-host "Members : "
Write-host ""
$members |
Si vos serveurs sont en français, il faut remplacer « Administrators » par « Administrateurs » dans le script.
Permet de faire l’équivalent d’un « c:\>dir /s *.iso » avec Powershell.
Get-ChildItem -Recurse -Path "C:\" -Name "*.iso" |
Voici la méthode que j’utilise pour mettre à jour un serveur Windows depuis WSUS.
Il s’agit de configurer et de forcer le téléchargement des mises à jour depuis le serveur WSUS.
Configuration de la stratégie locale du serveur:
- Exécuter « gpedit.msc ».

– Configurer les options suivantes:


Relancer les services:
– Executer « net stop « Automatic Updates »
– Exécuter « net start « Automatic Updates »
Relancer la détection des mises à jour:
– Exécuter « wuauclt /detectnow »
Lancer les mise à jour:
Après quelques minutes suivant la liaison entre les serveurs et le nombre de mises à jour, un popup de mise à jour va apparaitre sur le serveur à mettre à jour.

Faire un ping d’un ordinateur.
Permet vérifier que l’ordinateur est en ligne avant de lancer une action sur lui via un script.
$computername = Read-Host "Please enter the computer name"
$ping = new-object System.Net.NetworkInformation.Ping
$reply = $ping.send($computerName)
if ($reply.status –eq “Success”)
{
write-host "$ComputerName is online."
} |