Note IT
October 27th, 2009

Batch: Envoie de Mail avec Blat

L’executable Blat.exe (www.blat.net) permet d’envoyer des mails dans un batch.

Très simple à utiliser, il peut s’avérer très utile:

Un exemple:

blat.exe -serverSMTP server.fr -to mail@server.fr -subject “Sujet” -body “Corps du message” -f “emetteur@server.fr” -attacht “Piece jointe”
December 13th, 2007

WMI: Creer un filtre pour l’application de GPO

Filtre WMI:

Afin de mieux cibler l’application d’un GPO dans un domaine, il est intéressant de créer un filtre WMI.

Le filtre se compose d’une requête semblable à celle SQL.
Le résultat de la renvoie les éléments pour lequel la GPO sera appliqué.

Par exemple:

Une GPO doit être déployé sur tous les PC sauf sur celui du PDG, PC_PDG est le nom de son poste.

SELECT * FROM Win32_ComputerSystem WHERE Name <> ‘PC_PDG’

La requête vérifie le nom du PC (l’entrée WMI Win32_ComputerSystem)

et renvoie le nom en sortie si celui ci est différent de ‘PC_PDG’

Si la sortie est non nulle, la GPO s’appliquera à l’objet, dans notre exemple, le PC.

Il ne reste plus qu’a créé une requête adaptée à vos besoins.

Classe et Entrées WMI:

Microsoft fourni un outils permettant de simplifier la recherche des entrées WMI qui pourrait être intéréssante à filtré

WMI Code Creator v1.0

WMI Code Creator permet de fouiller dans les Classes et de faire des recherches dans les entrées WMI.

Dans notre exemple,

l’entrée “Domain” de la Classe “Win32_ComputerSystem” est extraite et retourne en sortie “fr.gedas-grp”.

Il est facile de voir que le nombre de possibilité de filtre est quasi infinie

(appartenance à un domaine, date de dernière connexion …)

L’ensemble des entrées est listé sur le MSDN: http://msdn2.microsoft.com/en-us/library/aa394572.aspx

November 30th, 2007

PS: Calculer une date au format “Lastlogon”

Le “Lastlogon” représente la date de la dernière connexion d’un utilisateur sur le domaine AD.
Mais cette valeur n’est pas codé comme un simple date.

Elle correspond aux dizaines de milliers de millisecondes (100ene de microseconde) écoulées entre le 1er janvier 1601 et la date de la dernière connexion.

Pour convertir le lastlogon en date, un petit script en PowerShell et le tout est joué.

PowerShell:

$lastlogon={lastlogon a convertir}
$lastlogon /= 10000
(get-date -year 1601 -month 1 -day 1).addmilliseconds($lastlogon)

Et l’inverse, pour convertir une date au format “lastlogon”

PowerShell :

New-TimeSpan -Start (Get-Date -year 1601)
-End (Get-Date -year 2007 -month 12 -day 22)
|Format-List TotalMilliseconds

Retourne l’écart entre le 1 janvier 1601 et la date fournie en ms.

Pour retomber sur le format “Lastlogon”, convertir en 100ene de ns, soit multiplier le résultat par 10000.

November 26th, 2007

WMI: Lister les mises a  jour installees sur un PC sans installer d’outils

Il arrive régulièrement de devoir vérifier la présence d’une Update Microsoft, et le problème est qu’il est souvent pénible de devoir installer un outils pour devoir le faire.

A l’aide d’une requête WMI, il est possible d’extraire ses infos et de les restituer sous un format HTML très facilement lisible.

wmic /node:computername qfe list full /format:htable >C:\update.html

Explicaton du code:

  • wmic : wmic est la console permettant d’exécuter des requêtes WMI
  • ode : Ordinateur Cible
  • qfe : Alias de l’entrée WMI Win32_QuickFixEngineering
  • list full : regroupe de façon plus lisible les éléments
  • /format:htable : convertie la sortie en HTML
  • >C:\update.html :  Enregistre la sortie dans le fichier C:\update.html

Aperçu de la sortie de la requête:


Pour rechercher rapidement la présence d’une mise à jour tout en connaissant son KB, il suffit d’exécuter le script WMI suivant qui retournera


wmic qfe | find “KBxxxxxx”


November 22nd, 2007

Batch : Effacer le contenu d’un repertoire

Effacer le contenu d’un répertoire, tant les sous-répertoire que les fichiers, peut paraitre simple.
Mais après quelques tests, il s’avère que l’opération est plus complexe que prévu.

Un script batch DOS peut le faire pour vous:

Supprimer le contenu d’un repertoire :

      @echo off
      pushd %1
      del /q "*.*"
      for /f "tokens=*" %%a in ('dir /b /ad') do rd /s /q "%%a"
      popd

L’exécution du script se fait sous la forme “nom_du_fichier.bat [cible]” (par exemple del_folder.bat d:\temp\)

Analyse du script:

pushd permet de stocker le répertoire en cours pour une utilisation futur par la commande POPD, ensuite passe au répertoire spécifié dans l’argument.
%1 correspond à l’argument qui a été soumis lors de l’exécution du script.
pushd %1 stock le répertoire courant et passe au répertoire soumis lors de l’exécution du script.

del /q “*.*” supprime tout le contenu du répertoire en cours.
l’argument /q permet de supprimer sans confirmation.

for /f “tokens=*”:
la boucle for avec l’argument /f et le “token=”*” parse (segmente) le contenu de la cible, ici, le résultat de “dir /b /ad”
Ici, le token=* permet de faire une lecture ligne à ligne.

“token=*” %%a in (‘dir /b /ad’):
la variable de jeton “%%a” de la boucle “for” prend la valeur du pointeur dans la liste de répertoire obtenue  par la commande dir /b /ad
dir /b /ad : liste les répertoire en format abrégé

A chaque itération de la commande for, le répertoire courant stocké dans la variable “%%a” est supprimé ainsi que tous les sous-répertoire.
Cette opération est effectuée par la commande “rd /s /q”

rd /s /q %%a:
Supprime le répertoire courant ainsi que tous les sous-répertoires et fichiers présents, l’argument /q permet d’executer la commande en mode silencieux.

popd: repasse le répertoire courant en celui précédemment stocké par la commande PUSHD

This work is licensed under GPL - 2009 | Powered by Wordpress using the theme aav1