Utiliser Internet Explorer avec Powershell
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.
Supprimer les photos en portrait
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 } } |
Vérifier la présence d’un dossier avant de le créer
Une petite ligne rapide pour tester la présence d’un dossier et le créer si absent.
If (-not (Test-Path "dossier_test")) { New-Item -ItemType Directory -Name "dossier_test" } |
Renommer vos photos avec la date de prise de vue
Mon problème, j’utilise plusieurs appareils photos et mon smartphone pour immortaliser ma petite famille. De ce fait, je me retrouve avec des photos DSC… partout. Je souhaite les classer chronologiquement avec Powershell.
De nombreux programme sous Windows le font en se basant sur EXIF.
Mais quoi de mieux que le faire soit même en Powershell.
Grâces aux Métadonnées EXIF voici ce qu’il est possible de faire.
[reflection.assembly]::loadfile( "C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll") > $null if ((Test-Path -path "Result") -ne $True) { New-Item -Name "Result" -type directory } $Files = Get-ChildItem -filter *.jpg foreach ($file in $Files) { $foo=New-Object -TypeName system.drawing.bitmap -ArgumentList $File.fullname $date = $foo.GetPropertyItem(36867).value[0..20] $arYear = [Char]$date[0],[Char]$date[1],[Char]$date[2],[Char]$date[3] $arMonth = [Char]$date[5],[Char]$date[6] $arDay = [Char]$date[8],[Char]$date[9] $strYear = [String]::Join("",$arYear) $strMonth = [String]::Join("",$arMonth) $strDay = [String]::Join("",$arDay) $DateTaken = $strYear + "-" + $strMonth + "-" + $strDay $time = [Char]$date[11],[Char]$date[12],[Char]$date[14],[Char]$date[15],[Char]$date[17],[Char]$date[18] $strtime = [String]::Join("",$time) $taken = $DateTaken + "-" + $strtime + ".jpg" $TargetPath = ".\result\" + $taken Copy-Item -PassThru $File.fullname -Destination $TargetPath } |
Google Analytics en temps réel
Après avoir attendu quelques jours, Google Analytics et temps réel est enfin actif sur mon compte. Pour en faire la demande: https://services.google.com/fb/forms/realtimeanalytics/
Je vous ai à l’oeil!
Supprimer le sIDHistory d’un compte
Après une migration AD entre deux domaine avec des outils comme ADMT, il est important de supprimer les sIDHistory sur les comptes du domaine cible.
Cette opération va permettre également de réduire la taille du Token Kerberos.
Get-QADUser "Chuck Norris" | %{Set-QADUser $_ -ObjectAttributes @{sIDHistory=@{delete=$_['sIDHistory']}}} |
Problème d’accès à l’ECP sur OWA 2010
En cas de problème pour certains utilisateurs pour accéder à aux options de leur boite aux lettres dans OWA 2010.
Outlook Web App vous demande de configurer les options langage et de fuseau horaire mais plante à la validation.

Le problème peut venir les paramètres de langue et de fuseau horaire de l’utilisateur.
Vous pouvez les contrôler avec la commande:
Get-MailboxRegionalConfiguration -Identity "Durand Pierre" | fl |
et les configurer avec la commande:
Set-MailboxRegionalConfiguration -Identity "Durand Pierre" -Language fr-FR -TimeZone "Romance Standard Time" |
Lister les répertoires et les sous-répertoires
Cette commande vous permet de lister uniquement les répertoires et sous-répertoires du dossier courant.
Sans le filtre, Get-ChildItem vous affiche les dossiers et les fichiers.
Get-ChildItem -Recurse | Where-Object { $_.PSIsContainer } | Select-Object Name,Fullname |
