- Détails
- Écrit par : Eric
Tout est dans le titre ;-)
# initialisation des variables
$SMTPServer = "smtp.office365.com"
$SMTPPort = "587"
$Username = "adresse mail expéditeur"
$Password = "mot de passe mail expéditeur"
$to = "mail du destinataire"
$subject = "Test de messagerie envoyé par powershell"
$body = "Test messagerie." # On peut écrire au format html. il est activé plus bas
# mise en forme du message
$message = New-Object System.Net.Mail.MailMessage
$message.subject = $subject
$message.IsBodyHTML = $true # Activer le mode HTML
$message.body = $body
$message.to.add($to)
$message.from = $username
# Envoi du message
$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort);
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $password);
$smtp.send($message)
write-host "Le message a bien été envoyé'
- Détails
- Écrit par : Eric
cls
$ErrorActionPreference = "SilentlyContinue"
Write-Host "L'extraction des logs peut être longue...."
$ELogs = Get-EventLog System -Source Microsoft-Windows-WinLogon
If ($ELogs)
{ Write-Host "Je Calcule ;-)"
ForEach ($Log in $ELogs)
{ If ($Log.InstanceId -eq 7001)
{ $ET = "ouverture de séssion"
}
ElseIf ($Log.InstanceId -eq 7002)
{ $ET = "fermeture de séssion"
}
Else
{ Continue }
$Result += New-Object PSObject -Property @{
'Date et Heure' = $Log.TimeWritten
'Evènement' = $ET
Utilisateur = (New-Object System.Security.Principal.SecurityIdentifier $Log.ReplacementStrings[1]).Translate([System.Security.Principal.NTAccount])
SSID = (New-Object System.Security.Principal.SecurityIdentifier $Log.ReplacementStrings[1])
}
}
$Result | Select "Date et Heure","Evènement",Utilisateur,SSID | Sort Time -Descending | Out-GridView
Write-Host "j'ai fini."
}
- Détails
- Écrit par : Eric
Sous Powershell le comportement par défaut est de refuser l’exécution des scripts.
Comment faire pour désactiver cette protection ?
Pour modifier la stratégie d’exécution de Windows Powershell on utilise la commande Set-ExecutionPolicy.
Pour désactiver la protection pour l’utilisateur en cours (conseillé):
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser -ForceSet-ExecutionPolicy -ExecutionPolicy Unrestricted -ForceHKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.Powershell du registre.- Détails
- Écrit par : Eric
Il est possible d'effectuer une commande powershell sur un pc distant. Pour cela il faut juste faire quelques manipulations sur le pc distant pour l’autoriser a recevoir les commandes provenant d’un autre ordinateur.
Sur le pc distant :
- Pour activer les commandes à distance, exécuter la commande suivante dans une invite de commande powershell ( lancer le en tant qu’ administrateur) :
Enable-PSRemoting -Force
- Ensuite on déclare les machines qui ont le droits d’exécuter les script sur cette machine :
Set-Item wsman:\localhost\client\trustedhosts *
Vous pouvez aussi autoriser tout un réseau avec la commande set-item wsman:\localhost\Client\TrustedHosts -value 172.16.0.0 ou avec les noms des machines avec la commande
set-item wsman:\localhost\Client\TrustedHosts -value ORDINATEUR1,ORDINATEURS2
- Puis on redémarre le service WinRM :
Restart-Service WinRM
Sur le pc qui va lancer les commandes
- Tester la connexion a la machine distante avec la commande
Test-WSMan (NON DE LA MACHINE)
Si la connecxion fonctionne vous aurez des informations sur le service (wsmid, procotolversion,productvendor et productversion)
- Envoyer la commande voulu (ici hostname) en précisant le nom de l’ordinateur distant puis le login de l’utilisateur
Invoke-Command -ComputerName (NON DE LA MACHINE) -ScriptBlock { ipconfig }
La commande devrait vous répondre le nom du pc interrogé.
Vous pouvez avoir l’envie de lancer plusieurs commandes sans exécuter la commande d’interrogation. Il est donc possible de lancer une session powershell a distance à l’aide de la commande suivant :
Enter-PSSession -ComputerName (NON DE LA MACHINE) -Credential utilisateur
Pour fermer la session taper: Exit-PSHostProcess
Sources http://www.barzek.com/2015/08/powershell-comment-lancer-des-commandes-a-distance/
