mardi 18 décembre 2012
Powershell - Form
[void][System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")
$form = new-object Windows.Forms.form
$form.Size = new-object System.Drawing.Size @(480,400)
$form.text = "essai graphique 12/04/2007"
$boutton = new-object System.Windows.Forms.Button
$boutton.Text = 'Valider'
$boutton.Location = new-object System.Drawing.Size(300,155)
$boutton.size = new-object System.Drawing.Size(120,30)
$boutton.add_Click({$nom=$listbox.get_selecteditem();$label2.text = "Reponse : " + $nom})
$label = New-Object System.Windows.Forms.Label
$label.text = "Qui est le meilleur en powershell ?"
$label.set_ForeColor("Green")
$label.Location = new-object System.Drawing.Size(55,30)
$label.size = new-object System.Drawing.Size(200,20)
$label2 = New-Object System.Windows.Forms.Label
$label2.Location = new-object System.Drawing.Size(310,220)
$label2.size = new-object System.Drawing.Size(180,20)
$listbox = new-object System.Windows.Forms.ListBox
[void]$listbox.Items.Add("Arnaud")
[void]$listbox.Items.Add("Robin")
[void]$listbox.Items.Add("Un autre")
[void]$listbox.Items.Add("Un autre2")
[void]$listbox.Items.Add("Un autre2")
[void]$listbox.Items.Add("Un autre2")
$listbox.Location = new-object System.Drawing.Size(50,75)
$listbox.size = new-object System.Drawing.Size(200,200)
$form.Controls.Add($boutton)
$form.Controls.Add($listbox)
$form.Controls.Add($label)
$form.Controls.Add($label2)
$Form.Add_Shown({$form.Activate()})
[void]$form.showdialog()
Powershell - astuces
Voici quelques astuces en vrac pour Powershell :
Ajouter du texte dans un fichier TXT
ADD-content -path C:\temp\test.txt -value "Bonjour"
Lister tout les alias
get-alias
trouver une commande d'un alias
get-alias gal
trouver un alias d'une commande
get-alias -definition format-table
Trouver le DistinguishedName
Avec import-module activedirectory
$dn=(Get-ADUser "e-ricmx012").DistinguishedName
Afficher les partages
Get-WmiObject Win32_Share
Passage d'arguments
echo $args[0]
PopUp
$message = "BonJOUR"
$shell = new-object -com wscript.shell
$shell.popup("$message toi")
Prompt
$UserName = Read-Host "Please enter user name"
Get-Aduser $Username
Demarrer service sur machine distante
Invoke-Command {Start-Service "NSClientpp" -passthru} -ComputerName "srv-windows"
importer le module active directory
import-module activedirectory
#pointer sur l' ad
cd ad:
Version Powershell
$Host.Version
ou
$PSVersionTable
ou
$PSVersionTable.psversion
ou + précis
$PSVersionTable.psversion.Major
powershell - pause
La pause n'existant pas sous powershell, voici un équivalent pour Powershell
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
Powershell - Garantie Dell
#ajout des informations du fichier "serial.txt"
Import-CSV "./serial.txt" | % {
#URL de la garantie DELL avec le serial du fichier serial.txt
$url = "http://www.dell.com/support/troubleshooting/us/en/04/Servicetag/"+$_.serial
#téléchargement de l'URL
$content = (new-object System.Net.WebClient).DownloadString($url)
#extract de l'information necessaire
$content -match 'with an end date of (?
$datefin = $matches['coontent']
#affichage des informations
#$datefin
#$_.serial
#ajout des informations dans un fichier txt
ADD-content -path "_serial_et_date_fin_garantie.txt" -value "$_.serial $datefin"
}
Utilité du script:
Crée un tableau avec le numero de serie d'un machine Dell ainsi que sa date de fin de garantie
Besoin :
--------
1°) Connexion Internet
2°) Le script PowerShell necessite un fichier serial.txt avec inscrit sur la premiere ligne "serial" puis 1 serial Dell par ligne.
Utilisation :
-------------
En lancant le script "fin_garantie_dell.ps1", par un clic droit "executer avec powershell"
Résultat :
----------
On obtient un fichier "_serial_et_date_fin_garantie.txt" dans le même répertoire avec en 1ere colonne le serial, et en 2nd colonne, la date de fin de garantie au format US.
Batch pour lancer Powershell avec droits
Si vous cherchez comme moi la possibilité de lancer un batch (.bat) afin d'executer un script Powershell (.ps1) tout en sachant et en gardant que la configuration powershell de base empêche l'execution des scripts, voici la solution pour l'execution d'un unique script.
::autoriser l execution des scripts
powershell -executionpolicy bypass -noexit -file ".\add_domain.ps1"
pause
Ceci peut se traduire de la manière suivante:
execute PowerShell avec la polique d'execution Bypass( Ok pour cette fois) noexit(ne pas sortir de la commande) -file (lance le fichier suivant add_domain.ps1
Inscription à :
Articles (Atom)