En deux lignes, voici comment contrôler l’heure et la date sur un serveur distant avec PowerShell.
$rtime = Get-WmiObject -Class Win32_OperatingSystem -ComputerName "ServerName"
Write-Host $rtime.ConvertToDateTime($rtime.LocalDateTime) |
Les travaux pratiques du jour:
Lister tous les fichiers qui sont archivés sur un serveur sans les désarchiver.
Les fichiers archivés on l’attribut « Offline ».
La commande suivant a eu pour effet de désarchiver tous les fichiers listés, donc il faut y aller avec des pincettes pour ne pas désarchiver tout le serveur d’un coup.
Voici les commande qui permet de lister les fichiers avec le chemin sans les agresser.
Get-ChildItem -Recurse | Where-Object { $_.Attributes -match "Offline" } | Select-Object Name,Attributes,Fullname | Export-Csv -Path .\Exports\arhived_files.csv -Encoding unicode |
Demain, nous verrons bien comment on va faire pour les désarchiver en douceur.
Voici la méthode pour sélectionner les dernier fichier qui a été créé dans un dossier.
Cela me permet de récupérer le dernier fichier de logs ou de traiter le dernier rapport.
$file = Get-ChildItem -Path .\Logs -recurse -include *.log | Sort-Object -Property CreationTime | Select-Object -Last 1
$file |
Permet de configurer le service SNMP d’un serveur distant.
Ce script configure la communauté et les hosts autorisés.
$server = Read-Host "Please enter the server name"
$MachineName = $server
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $MachineName)
$regconf = $reg.OpenSubKey("SYSTEM\\CurrentControlSet\\Services\\SNMP\\Parameters",$true)
$regconf.SetValue('EnableAuthenticationTraps','0','DWord')
$regconf = $reg.OpenSubKey("SYSTEM\\CurrentControlSet\\Services\\SNMP\\Parameters\\PermittedManagers",$true)
$regconf.SetValue('1','localhost','string')
$regconf.SetValue('2','SV002859','string')
Write-Host "Server: "$MachineName -ForegroundColor Green
$regconf.GetValue('1')
$regconf.GetValue('2')
Write-Host "-------------------------------------" -ForegroundColor Green
$regconft = $reg.OpenSubKey("SYSTEM\\CurrentControlSet\\Services\\SNMP\\Parameters\\ValidCommunities",$true)
$regconft.SetValue('casimir','4','DWord') |
Ce script supprime les fichiers de logs de plus de 30 jours.
$Now = Get-Date
$LastWrite = $Now.AddDays(-30)
$Files = get-childitem -Path ".\logs" -include *.log -recurse |Where {$_.LastWriteTime -le "$LastWrite"}
foreach ($File in $Files){
if ($File) {
write-host "Deleting File '$File'"
Remove-Item $File | out-null
}
} |
CurrPorts est un petit utilitaire très pratique pour visualiser les ports utilisés par votre ordinateur.
Il permet surtout de savoir qu’elle application utilise quels ports TCP ou UDP.
Et plein d’autres informations et actions.

Téléchargeable ici.
Voici comment modifier la base de registre d’un serveur à distance.
$servername = "SRV001"
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $servername)
$regconf = $reg.OpenSubKey("SYSTEM\\CurrentControlSet\\Services\\SNMP\\Parameters",$true)
#Ecriture de la valeur.
$regconf.SetValue('EnableAuthenticationTraps','0','DWord')
#Verification de la valeur.
$regconf.GetValue('EnableAuthenticationTraps') |
Voici les différents types de valeurs.
Unknown
String
ExpandString
Binary
DWord
MultiString
QWord
Permet de récupérer à distance la version de Windows.
Get-WmiObject Win32_OperatingSystem -ComputerName "server001" | Select-Object CSName,Caption,OtherTypeDescription,CSDVersion,Version |
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 |
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 |