Site de ressources informatiques Sainte-Marie Bastide
  • Accueil
  • Windows 10
  • Powershell
  • Chocolatey
  • Scripts
  • Office 2019
  • Téléchargement

Envoyer un mail avec powershell sous Office365

Détails
Écrit par : Eric
Publié le : 27 Mars 2018

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é'



Derniers logins powershell

Détails
Écrit par : Eric
Publié le : 25 Janvier 2018
 
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." 
 } 

L’exécution de scripts est désactivée sur ce système / désactivation de la protection

Détails
Écrit par : Eric
Publié le : 25 Janvier 2018

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 -Force
 
Pour désactiver définitivement sur un poste:
 
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force
 
Set-ExecutionPolicy créer / modifie la valeur
ExecutionPolicy dans la clé HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.Powershell du registre.
 
 
 
 

Powershell : comment lancer des commandes a distance

Détails
Écrit par : Eric
Publié le : 10 Janvier 2018

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/