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
Get-History 32 -count 32
     comm de 1 à 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)