Pour importer les module Active Directory sur un serveur Windows 2008 R2.
Par exemple sur votre serveur Exchange, vous voulez avoir accès aux cmdlets Active Directory 2008.
Il suffit de lancer dans Exchange Management Shell la commande:
Import-Module ActiveDirectory |
Par défaut, l’éditeur PowerShell ISE sur Windows 2008 R2 ou Seven qui possèdent nativement PowerShell V2 n’est pas accessible.
Il faut l’installer. Rien à télécharger, tout est déja disponible en local. Il suffit juste de lancer la commande.
Import-Module ServerManager;Add-WindowsFeature PowerShell-ISE |
Et comme par magie Powershell ISE apparait dans le menu démarrer.

Il vous permettra de faire en local vos petites modifications de script.

Pour les autres versions de Windows il faudra passer par l’installation de PowerShell V2.
En deux lignes, voici comment contrôler l’heure et la date sur un serveur distant avec PowerShell.
$rtime = Get-WmiObject -Class Win32_OperatingSystem -ComputerName "ServerName"
Write-Host $rtime.ConvertToDateTime($rtime.LocalDateTime) |
Voici comment utiliser les variables d’environnement avec PowerShell.
Afficher les variables d’environnement:
Afficher une variable d’environnement:
Utiliser les variables d’environnement:
Set-Location $env:USERPROFILE |
Voici un guide de référence PowerCli pour VMware vSphere 4.1.
Il vous donne les bases pour gérer vShere avec Powershell.

Le poster des commandes Powershell pour Active Directory.
Ces CmdLets Active Directory sont disponibles sur Windows Server 2008 R2 mais nécessite Active Directory Management Gateway Service pour les autres versions.

Voici comment extraire les 8 derniers caractères d’une chaine.
$log = "sys000456.log"
$log.Substring($log.Length-8,8) |
Chacun ces petites habitudes sous Powershell.
Voici comment créer son profile et charger la configuration que l’on souhaite à l’ouverture de Powershell.
Identifiez le chemin de votre profile.
Sous Windows Seven, le résultat devrait ressembler à ‘C:\Users\Christophe\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1′
Vérifiez la présence du profile.
Si la réponse et « True », lancez:
Si la réponse est « False », il faut au préalable créer le fichier.
New-Item -Path $profile -Type file -Force
notepad $profile |
Une fois dans le fichier, vous pouvez ajouter toutes les commandes que vous souhaitez exécuter à l’ouverture de Powershell.
Exemple:

Relancez Powershell pour admirer le résultat.

Pour scripter des taches sur des sites web avec Internet Explorer.
Voici quelques astuces.
Tout d’abord lancer une page.
$ie = New-Object -COMObject InternetExplorer.Application
$ie.visible = $true
$ie.Navigate('http://aidexchange.fr')
While ($ie.Busy) { Start-Sleep -Milliseconds 400 } |
Afficher la liste des images
$ie.document.getElementsByTagName('img') | Select-Object -ExpandProperty src |
Afficher la liste des liens
$ie.document.getElementsByTagName('a') | Select-Object -ExpandProperty href |
Cliquer sur un lien.
$link = $ie.Document.getElementsByTagName('a') | where-object {$_.title -eq 'Linkedin'}
$link.click() |
Si vous souhaitez télécharger un document, une image ou un tout autre type de fichier, il faut charger le module « BitsTransfer » qui vous donnera accès a toute une série de cmdlets.
Import-Module BitsTransfer
Get-Command -Module BitsTransfer
CommandType Name Definition
----------- ---- ----------
Cmdlet Add-BitsFile Add-BitsFile [-BitsJob] [-Source] [-V...
Cmdlet Get-BitsTransfer Get-BitsTransfer [[-Name] ] [-AllUsers...
Cmdlet Remove-BitsTransfer Remove-BitsTransfer [-BitsJob] [-Ver...
Cmdlet Resume-BitsTransfer Resume-BitsTransfer [-BitsJob] [-Asy...
Cmdlet Set-BitsTransfer Set-BitsTransfer [-BitsJob] [-Displa...
Cmdlet Start-BitsTransfer Start-BitsTransfer [-Source] [[-Desti...
Cmdlet Suspend-BitsTransfer Suspend-BitsTransfer [-BitsJob] [-Ve... |
Et donc pour télécharger un document.
Start-BitsTransfer -Source 'http://aidexchange.fr/plus.png' -Destination 'c:\images\' |
Avec tous ces éléments il est possible de scripter le téléchargement quotidien d’un fichier sur un site web, le téléchargement rapide toutes les images d’une page ou toute autres idées tordues.
D’autres infos.
Je n’aime pas le photos prise en portrait. A chacun ces goûts.
Voici le moyen que j’ai trouver pour toutes les supprimer d’un coup.
$image = New-Object -ComObject Wia.ImageFile
Get-ChildItem -Recurse -Include *.jpg -Path "..\images" | foreach {
$file = $_.fullname
$image.LoadFile($file)
if ( $image.Width -gt $image.Height) {
Remove-Item -Path $file -Force
}
} |