Cours PowerShell 3 : premiers pas - exécution des scripts et historique
Source: p 10 à 12 www.dsfc.net/wp-content/uploads/supports/support-powershell-3-0.pdf
Execution des scripts
powershell d:\scripts\monscript.ps1
appel d'un autre script
Invoke-Expression d:\scripts\monscript.ps1
& d:\scripts\monscript.ps1
d:\scripts\monscript.ps1
Invoke-Expression "d:\ scripts\monscript.ps1"
Récupération du contenu de l'exécution d'une commande système
affiche ip
clear
$res=&hostname
$res.Trim
#$res=&{. 'c:\windows\system32\ipconfig.exe'}
$res=&'c:\windows\system32\ipconfig.exe'
clear
If($res|Where {$_ -match 'IPv4[ \.]+:[ ]+(\d+\.\d+\.\d+\.\d+)'})
{
$Matches[1]
}
Mac adress
clear
$cmd=&c:\windows\system32\ipconfig.exe /all
#$cmd[10]
$cmd|Foreach{
if($_ -match '([0-9a-f\-]{17})')
{
$matches[1]
break
}
}
Variable d'environnement
Foreach($item in (Get-ChildItem env:\))
{
"$($item.Key) : $($item.value)"
}
$env:COMPUTERNAME
En PJ, voir le script recup-comsys.ps12 et la sortie varenv.txt
Appel d'un programme (avec Invoke-Item)
Invoke-Item c:\windows\system32\calc.exe
Mesurer le temps d'exécution : Measure-Command
Clear
Write-Output "Ceci est un test"
$temps=Measure-Command { sleep -Seconds 1}
Write-Output "Mesure n°1: $temps"
$temps=Measure-Command {Write-Output "La commande est exécuté. Le message n'est pas affiché." }
Write-Output "Mesure n°2: $temps"
$temps=Measure-Command {Write-host "La commande est exécuté. Et, cette fois, vous pouvez le voir." }
Write-Output "Mesure n°3: $temps"
Measure-Command {d:\scripts\monscript.ps1}
Tempo
Start-Sleep -s 10
Start-Sleep -m 10000
Trigger
$DailyTrigger = New-JobTrigger -At 17:25 –Daily
Register-ScheduledJob -Name RestartFaultyService -ScriptBlock {Restart-Service FaultyService }-Trigger $DailyTrigger
Get-ScheduledJob
Get-ScheduledJob -Name RestartFaultyService
Disable-ScheduledJob –Name RestartFaultyService
Enable-ScheduledJob –Name RestartFaultyService
Unregister-ScheduledJob –Name RestartFaultyService
Envoi d'email
avec la Méthode Send-MailMessage
$motdepasse = ConvertTo-SecureString "denis" -AsPlainText -Force
$authentification = New-Object System.Management.Automation.PSCredential ("denis@dutout.net", $motdepasse)
#Get-Credential -UserName 'denis@dutout.net' -Message Denis
Send-MailMessage -To 'denis@dutout.net' -Subject 'test PS' -From 'denis@dutout.net' -Body 'test PS' -SmtpServer 'smtp.dutout.net' -Credential $authentification
avec la Méthode .Net
$CredUser = "dszalkowski"
$CredPassword = "areuhhh"
$EmailFrom = "dszalkowski@gmail.com"
$EmailTo = "dszalkowski@gmail.com"
$Subject = "Test PS2"
$Body = "Test PS2"
$SMTPServer = "smtp.gmail.com"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($CredUser, $CredPassword);
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
Historique
Voir Get-History
comm de 1 à 32
Get-History 32 -count 32$MaximumHistoryCount = 150
Executer historique ligne id=3 Invoke-History 3
Récupérer l'historique (export et import .xml)
Get-History | Export-Clixml "d:\scripts\my_history.xml"
Import-Clixml "d:\scripts\my_history.xml" | Add-History
Voir aussi
about_history
Invoke-History
Add-History
Clear-History reste id 26 avec clear-history
Information de langue
Get-Culture et Get-UICulture affichent la meme info: LCID 1036 Name fr-FR Francais (France)