Archive

Archives pour la catégorie ‘Powershell’

Réduire la taille de toutes les images d’un dossier.

illex

J’ai trouvé un script très utile permettant de réduire la taille de toutes les images contenu dans un dossier.
Ça marche nickel.

?View Code POWERSHELL
[reflection.assembly]::LoadWithPartialName("System.Drawing")
$toresize = "..\images"
$SizeLimit=1024          # required size of picture's long side
$logfile="resizelog.txt" # log file for errors
 
Get-ChildItem -recurse $toresize -include *.jpg  | foreach {
$parent = $_.Directory.name
$backupdir = ".\backup\" + $parent + "\"
If (-not (Test-Path $backupdir)) { New-Item -ItemType Directory -Name $backupdir }
$backup = $backupdir + "\" + $_.Name
Copy-Item -Path $_.fullname -Destination $backup
 
  $OldBitmap = new-object System.Drawing.Bitmap $_.FullName # open found jpg
  if ($error.count -ne 0) {                                 # error handling
    $error | out-file $logfile -append -encoding default
    $error[($error.count-1)].TargetObject | out-file $logfile -append -encoding default
    echo $_>>$logfile
    $error.clear()
  }
  $LongSide=$OldBitmap.Width                                # locating long side of picture
  if ($OldBitmap.Width -lt $OldBitmap.Height) { $LongSide=$OldBitmap.Height }
  if ($LongSide -gt $SizeLimit) {                           # if long side is greater than our limit, process jpg
    if ($OldBitmap.Width -lt $OldBitmap.Height) {           # calculate dimensions of picture resize to
      $newH=$SizeLimit
      $newW=[int]($OldBitmap.Width*$SizeLimit/$OldBitmap.Height)
    } else {
      $newW=$SizeLimit
      $newH=[int]($OldBitmap.Height*$newW/$OldBitmap.Width)
    }
    $NewBitmap = new-object System.Drawing.Bitmap $newW,$newH # create new bitmap
    $g=[System.Drawing.Graphics]::FromImage($NewBitmap)
    $g.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::HighQualityBicubic # use high quality resize algorythm
    $g.DrawImage($OldBitmap, 0, 0, $newW, $newH)              # resize our picture
 
    $name=$_.DirectoryName+"\"+$_.name+".new"                 # generating name for new picture
    $NewBitmap.Save($name, ([system.drawing.imaging.imageformat]::jpeg)) # save newly created resized jpg
    $NewBitmap.Dispose()                                      # cleaning up our mess
    $OldBitmap.Dispose()
    $n=get-childitem $name
    if ($n.length -ge $_.length) {                            # if resized jpg has greater size than original
      Write-host -NoNewLine "+"                               # draw "+"
      $n.delete()                                             # and delete it
    } else {                                                  # if resized jpg is smaller than original
      if ($n.Exists -and $_.Exists) {
        $name=$_.FullName
        $_.Delete()                                           # delete original
        $n.MoveTo($name)                                      # rename new file to original name (replace old file with new)
        echo ($Name + " " + $LongSide)                        # write its name for visual control
      }
    }
 
  } else {                                                    # if long side is smaller than limit, draw dot for visual
    Write-host -NoNewLine "."
    $OldBitmap.Dispose()
  }
}
Categories: Powershell Tags: ,

Faire un recherche DNS sur un liste d’adersse IP

Un script PowerShell pour faire un recherche DNS sur une liste d’adresse IP à la manière d’un NSLookup.

?View Code POWERSHELL
$list  = Get-Content -Path .\nslookuplist.txt
Foreach ($ip in $list) {
[System.Net.Dns]::GetHostByAddress("$ip") 
}
Categories: Powershell Tags: , ,

Quel temps fait-il à Nantes avec PowerShell

J’ai pas encore trouvé l’utilité mais ça peut servir.
Voici un script PowerShell qui vous permet de connaitre le temps qu’il fait en ce moment à Nantes.

?View Code POWERSHELL
$webclient = new-object net.webclient
 
$feed = [xml]($webclient.DownloadString("http://www.google.com/ig/api?weather=nantes, france&hl=fr"))
$feed.xml_api_reply.weather.current_conditions.condition.GetAttribute("data")

Autre intérêt que de connaitre le temps qu’il fait grâce à une API Google, ce script montre comment télécharger un contenu XML sur internet et en extraire un information avec PowerShell.

Pour info, aujourd’hui, c’est « Nuageux dans l’ensemble ».

Categories: Powershell Tags: , , ,

Module PowerShell pour gérer le DHCP

Voici un module PowerShell a ajouter pour obtenir les commandes supplémentaires pour gérer vos serveurs DHCP.

PowerShell Module for DHCP

Vous aurez alors accès à 24 cmdlets supplémentaires.

Add-DHCPExclusionRange
Add-DHCPIPRange
Disable-DHCPScope
Enable-DHCPScope
Get-DHCPOption
Get-DHCPOptionDefinitions
Get-DHCPReservation
Get-DHCPScope
Get-DHCPServer
Get-DHCPStatistics
New-DHCPOptionDefinition
New-DHCPReservation
New-DHCPScope
Remove-DHCPExclusionRange
Remove-DHCPIPRange
Remove-DHCPOption
Remove-DHCPOptionDefinition
Remove-DHCPReservation
Remove-DHCPScope
Set-DHCPConflictDetectionAttempts
Set-DHCPOption
Set-DHCPScopeDescription
Set-DHCPScopeLease
Set-DHCPScopeName

Ces commandes utilisent netsh, pour simplifier les taches d’administration sur les serveur DCHP.

Categories: Powershell Tags: , ,

Lister les étendues DHCP d’un serveur

Netsh est un utilitaire en ligne de comande qui va vous permettre de gérer le DHCP Client et Serveur.
Par exemple sur un serveur, la commande suivant permet d’afficher toutes les étendues.

netsh dhcp server \\SERVERNAME show scope

Ces commandes s’intègre très bien dans vos scripts PowerShell.
Vue d’ensemble des commandes Netsh

Categories: Powershell Tags: ,

Faire un ping avec PowerShell

Faire un ping avec PowerShell.

?View Code POWERSHELL
$ping = new-object System.Net.Networkinformation.Ping 
$ping.send("servername")

Utile pour vérifier que la machine est en ligne avant de lancer un tache distante.

Categories: Powershell Tags: ,

NsLookup avec Powershell

Voici comment faire un NsLookup d’une plage IP avec PowerShell.

?View Code POWERSHELL
1..255 | % { [System.Net.Dns]::GetHostByAddress("192.168.1.$_") } 2> Out-Null | ft

Cela vous permet de récupérer le HostName, les Aliases pour chaque IP de la plage d’adresses.

Categories: Powershell Tags: , ,

Choisir pour qui voter avec PowerShell

Voici une ligne de commande PowerShell très utile aux indécis pour choisir pour qui voter au second tour de l’élection présidentielle.

?View Code POWERSHELL
Get-Random "François Hollande","Nicolas Sarkozy"

Combien de temps avant les vacances?

Un petit script qui décompte les temps qui reste avant les vacances en PowerShell.

?View Code POWERSHELL
$Timespan = New-TimeSpan -Start (get-date) -End (Get-Date -Day 27 -Month 7 -Year 2012 -Hour 18 -Minute 30)
$MsgBox = New-Object -ComObject wscript.shell
$MsgBox.Popup("Il reste $($timespan.days) jours, $($timespan.hours) heures, et $($timespan.minutes) minutes avant les vacances!")
Categories: Powershell Tags: , ,

Remplacer une chaîne dans un fichier texte

Ce script permet de rechercher et remplacer une chaîne de caractère par une autre dans l’ensemble d’un fichier texte.

?View Code POWERSHELL
$content = Get-Content ".\file.txt" | foreach { $_ -replace "hello","bonjour" } 
Set-Content -Path ".\file.txt" -Value $content
Categories: Powershell Tags: , , ,