<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>SysKB - IT Knowledge Base &#187; SysKB - IT Knowledge Base</title>
	<atom:link href="http://syskb.com/category/scripting/feed/" rel="self" type="application/rss+xml" />
	<link>http://syskb.com</link>
	<description>System Administrator Knowledge Base</description>
	<pubDate>Sun, 21 Sep 2008 12:56:20 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>Le Logon Script s&#8217;adapte aux utilisateurs nomades</title>
		<link>http://syskb.com/le-logon-script-sadapte-aux-utilisateurs-nomades/</link>
		<comments>http://syskb.com/le-logon-script-sadapte-aux-utilisateurs-nomades/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 11:40:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Scripting]]></category>

		<category><![CDATA[Création de script]]></category>

		<category><![CDATA[Découvrir]]></category>

		<category><![CDATA[Script]]></category>

		<guid isPermaLink="false">http://syskb.com/?p=563</guid>
		<description><![CDATA[Que diriez vous d&#8217;un fichier Logon Script qui tient compte de la localisation géographique de l&#8217;utilisateur afin d&#8217;exécuter des commandes adaptées au site sur lequel il est situé?

Description
Nous avons vu dans un article précédent qu&#8217;il était possible d&#8217;adopter une stratégie de Logon Script selon l&#8217;appartenance d&#8217;un utilisateur à un groupe d&#8217;accès. Cette méthode est tout [...]]]></description>
			<content:encoded><![CDATA[<p>Que diriez vous d&#8217;un fichier Logon Script qui tient compte de la localisation géographique de l&#8217;utilisateur afin d&#8217;exécuter des commandes adaptées au site sur lequel il est situé?</p>
<p><span id="more-563"></span></p>
<h3>Description</h3>
<p>Nous avons vu dans un article précédent qu&#8217;il était possible d&#8217;adopter <a title="Un Logon script qui s'adapte au groupe auquel appartient un user" href="http://syskb.com/un-fichier-logon-script-qui-sadapte-aux-groupes-utilisateurs/">une stratégie de Logon Script selon l&#8217;appartenance d&#8217;un utilisateur à un groupe d&#8217;accès</a>. Cette méthode est tout a fait adaptée à la gestion des accès aux partages par exemple.</p>
<p>Ainsi Patrick, comptable et nomade, aura toujours accès à son lecteur réseau dédié à la compatibilité car il est bien membre de son groupe &#8220;Comptable&#8221;.</p>
<p>Mais quand est il s&#8217;il souhaite imprimer ou encore accéder à Internet ? Ne serait il pas judicieux de lui <strong>mapper automatiquement une imprimante</strong> et de lui <strong>spécifier un serveur proxy</strong> correspondant à son site de connexion ?</p>
<h3>La solution</h3>
<p>C&#8217;est pour résoudre cette problématique liée à la localisation d&#8217;un utilisateur nomade que je vous propose <strong>une technique qui se base sur le réseau IP du site </strong>depuis lequel l&#8217;utilisateur se connecte.</p>
<p>Imaginons 2 agences d&#8217;une même société, même si elles sont dans un même réseau, elles auront certainement un sous réseau différent, par exemple <strong>192.168.14.x</strong> et <strong>192.168.15.x</strong></p>
<p>Et bien il est possible en VBScript d&#8217;établir des conditions qui vont se baser sur ces adresses !</p>
<p>Ainsi à l&#8217;exécution du script l&#8217;adresse IP de Patrick, <strong>192.168.15.25</strong>, va être <strong>splittée en 4 dans un tableau</strong>, le séparateur étant le &#8220;<strong>.</strong>&#8221;</p>
<p>Vous avez compris que c&#8217;est le troisième champ de l&#8217;adresse (ici 14 ou 15) qui va différencier les 2 agences, c&#8217;est donc la dessus que tout va se jouer ;-).</p>
<p>Un exemple !</p>
<p>Dans la code suivant imaginons que Patrick s&#8217;est vu affecté l&#8217;adresse IP <strong>192.168.15.25</strong>. Tout d&#8217;abord cela signifie qu&#8217;il est localisé sur le site  ayant <strong>192.168.15.x</strong> comme sous-réseau. Patrick va donc répondre à la condition correspondant  au <strong>&#8220;case = 15&#8243;</strong> du code suivant. L&#8217;imprimante <strong>PRINTSHARE2 </strong>va être mapper sur sa machine et le<strong> proxy 192.168.15.200 </strong>va lui être attribuer.</p>
<h3>Le code</h3>
<pre>On Error Resume Next
Dim ArrayIP
strComputer = "."
Set objNetwork = WScript.CreateObject("Wscript.Network")
Set objWMIService = GetObject( _
    "winmgmts:\\" &amp; strComputer &amp; "\root\cimv2")
Set IPConfigSet = objWMIService.ExecQuery _
    ("Select IPAddress from Win32_NetworkAdapterConfiguration Where IPEnabled = True")

For Each IPConfig In IPConfigSet
  ArrayIP = Split (IPConfig.IPAddress(0), ".")
Next

If ArrayIP(0)=192 Then

	If ArrayIP(1)=168 Then

		Select Case ArrayIP(2)

Case "14"

        objNetwork.AddWindowsPrinterConnection("\\SERVEUR1\PRINTERSHARE1")
        objNetwork.SetDefaultPrinter("\\SERVEUR1\PRINTERSHARE1")
	WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\AutoConfigURL", "http://192.168.14.200/web1.pac"
        WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable", "00000000"
        WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyOverride", ""

Case "15"
	objNetwork.AddWindowsPrinterConnection("\\SERVEUR2\PRINTERSHARE2")
        objNetwork.SetDefaultPrinter("\\SERVEUR2\PRINTERSHARE2")
	WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\AutoConfigURL", "http://192.168.15.200/web2.pac"
        WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable", "00000000"
        WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyOverride", ""
		End Select

  End If

End If</pre>
]]></content:encoded>
			<wfw:commentRss>http://syskb.com/le-logon-script-sadapte-aux-utilisateurs-nomades/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Un fichier Logon Script qui s&#8217;adapte aux groupes utilisateurs</title>
		<link>http://syskb.com/un-fichier-logon-script-qui-sadapte-aux-groupes-utilisateurs/</link>
		<comments>http://syskb.com/un-fichier-logon-script-qui-sadapte-aux-groupes-utilisateurs/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 10:01:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Scripting]]></category>

		<category><![CDATA[Création de script]]></category>

		<category><![CDATA[Découvrir]]></category>

		<category><![CDATA[Script]]></category>

		<guid isPermaLink="false">http://syskb.com/?p=562</guid>
		<description><![CDATA[L&#8217;utilisation d&#8217;un fichier Logon Script peu permettre de réaliser des choses très intéressantes. Nous allons voir dans cet article comment exécuter certaines actions selon l&#8217;appartenance d&#8217;un utilisateur à un groupe Active Directory !

Que fait ce script?
Dans cet exemple si l&#8217;utilisateur qui exécute le script appartient à un groupe nommé Groupe-Compatibilité-Siège un lecteur réseau U va [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;utilisation d&#8217;un fichier Logon Script peu permettre de réaliser des choses très intéressantes. Nous allons voir dans cet article comment exécuter certaines actions selon <strong>l&#8217;appartenance d&#8217;un utilisateur à un groupe</strong> Active Directory !</p>
<p><span id="more-562"></span></p>
<h3>Que fait ce script?</h3>
<p>Dans cet exemple si l&#8217;utilisateur qui exécute le script appartient à un groupe nommé <strong>Groupe-Compatibilité-Siège</strong> un lecteur réseau <strong>U</strong> va être mapper sur la ressource <strong>\\SERVEUR\PartageCompta </strong>et un script <strong>AuditCompta.vbs</strong> va être exécuter parallèlement au Logon Script. <strong><br />
</strong></p>
<p>Si l&#8217;utilisateur en revanche appartient au Groupe <strong>Groupe-Paye-Siège</strong>, 2 lecteurs <strong>U</strong> et <strong>V</strong> correspondants respectivement aux ressources <strong>\\SERVEUR\PartagePaye</strong> et <strong>\\SERVEUR\PartagePointages </strong>vont être mapper sur sa machine.</p>
<h3>Voici le code &#8230;</h3>
<pre>On Error Resume Next
'Déclaration des variables'
Dim objGroupList, objADObject, strGroup, objUser

Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshVarEnv = WshShell.Environment("PROCESS")
strNetBiosDomain = WshVarEnv.Item ("USERDOMAIN")
strLogonServer = WshShell.ExpandEnvironmentStrings("%Logonserver%")
strUserName = WshShell.ExpandEnvironmentStrings("%USERNAME%")

Set objUser = GetObject("WinNT://" &amp; strNetBiosDomain &amp; "/" _
  &amp; strUserName &amp; ",user")

'Condition 1 : Si l'utilisateur appartient à "Groupe-Comptabilité-Siège"
If IsMember("Groupe-Comptabilité-Siège") Then
objNetwork.RemoveNetworkDrive "U:"
objNetwork.MapNetworkDrive "U:" , "\\SERVEUR\PartageCompta"
WshShell.run strLogonServer &amp; "netlogon\AuditCompta.vbs"
End If

'Condition 2 : Si l'utilisateur appartient à "Groupe-Paye-Siège"
If IsMember("Groupe-Paye-Siège") Then
objNetwork.RemoveNetworkDrive "U:"
objNetwork.MapNetworkDrive "U:" , "\\SERVEUR\PartagePaye"
objNetwork.RemoveNetworkDrive "V:"
objNetwork.MapNetworkDrive "V:" , "\\SERVEUR\PartagePointages"

End If

'Fin du script'
WScript.quit

'Les 2 Fonctions de test d'appartenance aux groupes'
Function IsMember(strGroup)
  If IsEmpty(objGroupList) Then
    Call ReadGroups
  End If
  IsMember = objGroupList.Exists(strGroup)
End Function

Sub ReadGroups
  Dim objGroup
  Set objGroupList = CreateObject("Scripting.Dictionary")
  objGroupList.CompareMode = vbTextCompare
  For Each objGroup In objUser.Groups
    objGroupList(objGroup.name) = True
  Next
  Set objGroup = Nothing
End Sub</pre>
<h3>Et après ?</h3>
<p>Cette technique est très performante et devient vite indispensable. Vous pouvez imaginez une multitude d&#8217;utilisation avec ce type de condition par groupe d&#8217;appartenance.</p>
<p>Cette technique est particulièrement adaptée à la <strong>gestion des partages utilisateurs</strong>, puisque elle va faciliter vos migrations de fichiers. En effet si vous décider de changer l&#8217;emplacement d&#8217;un partage il suffira de changer le chemin indiqué dans le Logon Script et de demander aux utilisateurs du groupe de fermer et réouvrir leur session pour que leur nouveau partage soit effectif.</p>
]]></content:encoded>
			<wfw:commentRss>http://syskb.com/un-fichier-logon-script-qui-sadapte-aux-groupes-utilisateurs/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Empêcher l&#8217;exécution d&#8217;un fichier Logon Script sur un serveur</title>
		<link>http://syskb.com/empecher-lexecution-dun-fichier-logon-script-sur-un-serveur/</link>
		<comments>http://syskb.com/empecher-lexecution-dun-fichier-logon-script-sur-un-serveur/#comments</comments>
		<pubDate>Thu, 29 May 2008 13:35:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Scripting]]></category>

		<category><![CDATA[Création de script]]></category>

		<category><![CDATA[Découvrir]]></category>

		<category><![CDATA[Script]]></category>

		<guid isPermaLink="false">http://syskb.com/?p=550</guid>
		<description><![CDATA[Généralement l&#8217;ensemble les comptes Active Directory d&#8217;un domaine sont paramétrés pour utiliser un fichier Logon Script. Les administrateurs n&#8217;échappent pas à cette règle mais ils sont amenés à se connecter aux serveurs &#8230; et dans ce cas l&#8217;exécution d&#8217;un fichier Logon Script est à bannir.

Pour cela un petit bout de code en VBScript suffit ! [...]]]></description>
			<content:encoded><![CDATA[<p>Généralement l&#8217;ensemble les comptes Active Directory d&#8217;un domaine sont paramétrés pour <a title="Comment créer un fichier logon script " href="http://syskb.com/creer-un-fichier-logon-script-dans-un-domaine-active-directory/">utiliser un fichier Logon Script</a>. Les administrateurs n&#8217;échappent pas à cette règle mais ils sont amenés à se connecter aux serveurs &#8230; et dans ce cas <strong>l&#8217;exécution d&#8217;un fichier Logon Script est à bannir</strong>.</p>
<p><span id="more-550"></span></p>
<p>Pour cela un petit bout de code en VBScript suffit ! Nous allons vérifier dans la<strong> base de registre</strong> du système qui exécute le script, <strong>la version du système</strong>. Si le système est un serveur, on sort du script grâce à la commande <strong>WScript.quit</strong></p>
<pre>Dim varShell
Set varShell = WScript.CreateObject("WScript.Shell")
If varShell.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions\" _
&amp; "ProductType") &lt;&gt; "WinNT" Then
WScript.quit
Else
End If</pre>
<p>Les 2 premières lignes servent à déclarer un objet <strong>&#8220;WScript.Shell&#8221;</strong>. Vérifier que vous ne l&#8217;avez pas déja fait dans votre script, auquel cas n&#8217;hésitez pas à remplacer la variable <strong>varShell </strong>de la 3ème ligne par celle que vous avez déclarée. Le script deviendrait:</p>
<pre>If votrevariable.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions\" _
&amp; "ProductType") &lt;&gt; "WinNT" Then
WScript.quit
Else
End If</pre>
]]></content:encoded>
			<wfw:commentRss>http://syskb.com/empecher-lexecution-dun-fichier-logon-script-sur-un-serveur/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Modifier la page par défaut d&#8217;Internet Explorer avec un Logon Script</title>
		<link>http://syskb.com/modifier-la-page-par-defaut-dinternet-explorer-avec-un-logon-script/</link>
		<comments>http://syskb.com/modifier-la-page-par-defaut-dinternet-explorer-avec-un-logon-script/#comments</comments>
		<pubDate>Wed, 28 May 2008 14:03:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Scripting]]></category>

		<category><![CDATA[Configuration]]></category>

		<category><![CDATA[Déploiement]]></category>

		<category><![CDATA[Script]]></category>

		<guid isPermaLink="false">http://syskb.com/?p=549</guid>
		<description><![CDATA[Comment modifier la page par défaut Internet Explorer de vos utilisateurs via un fichier Logon Script ?

Dans un article précédent nous avons vu comment mettre en place un fichier Logon Script dans un domaine Active Directory. Nous allons cette fois ajouter un nouvelle fonctionnalité au script VBS qui consiste à modifier la page d&#8217;accueil du [...]]]></description>
			<content:encoded><![CDATA[<p>Comment modifier la page par défaut <strong>Internet Explorer</strong> de vos utilisateurs via un fichier <strong>Logon Script</strong> ?</p>
<p><span id="more-549"></span></p>
<p>Dans un article précédent nous avons vu <a title="Install Logon Script Login Script AD domaine users" href="http://syskb.com/creer-un-fichier-logon-script-dans-un-domaine-active-directory/">comment mettre en place un fichier Logon Script dans un domaine Active Directory</a>. Nous allons cette fois ajouter un nouvelle fonctionnalité au script <strong>VBS </strong>qui consiste à modifier la page d&#8217;accueil du navigateur Internet Explorer des utilisateurs de votre domaine.</p>
<p>Nous allons utiliser la fonction <strong>Regwrite </strong>qui permet d&#8217;écrire dans la base de registre afin de modifier la clé <strong>HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Start Page<br />
</strong></p>
<p>Modifiez votre fichier Logon Script et insérez le code suivant en remplaçant <strong>http://votreintranet.com</strong> par  le site de votre choix</p>
<pre>Dim varShell
Set varShell = WScript.CreateObject("WScript.Shell")
varShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Start Page", "http://votreintranet.com"</pre>
]]></content:encoded>
			<wfw:commentRss>http://syskb.com/modifier-la-page-par-defaut-dinternet-explorer-avec-un-logon-script/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Exporter une boite aux lettres vers un PST avec Powershell</title>
		<link>http://syskb.com/exporter-une-boite-aux-lettres-vers-un-pst-avec-powershell/</link>
		<comments>http://syskb.com/exporter-une-boite-aux-lettres-vers-un-pst-avec-powershell/#comments</comments>
		<pubDate>Tue, 27 May 2008 15:19:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Scripting]]></category>

		<category><![CDATA[Exchange Server]]></category>

		<category><![CDATA[Exporter]]></category>

		<category><![CDATA[Script]]></category>

		<guid isPermaLink="false">http://syskb.com/?p=544</guid>
		<description><![CDATA[Exchange 2007 intègre le nouvel environnement de script Powershell. La gestion des boites aux lettres en est grandement facilitée. Je vous propose de découvrir dans cet article comment exporter des BAL à l&#8217;aide de Exchange Management Shell. Vous allez voir c&#8217;est plus simple et plus robuste que ExMerge


Avant toute chose connectez vous sur l&#8217;un de [...]]]></description>
			<content:encoded><![CDATA[<p><strong><a href="http://syskb.com/wp-content/uploads/2008/05/expmbx1.png" class="lightview" rel="gallery[544]"></a><a href="http://syskb.com/wp-content/uploads/2008/05/expmbx2.png" class="lightview" rel="gallery[544]"></a><a href="http://syskb.com/wp-content/uploads/2008/05/expmbx3.png" class="lightview" rel="gallery[544]"></a>Exchange 2007</strong> intègre le nouvel environnement de script <strong>Powershell</strong>. La gestion des boites aux lettres en est grandement facilitée. Je vous propose de découvrir dans cet article <strong>comment exporter des BAL à l&#8217;aide de </strong><strong>Exchange Management Shell</strong>. Vous allez voir c&#8217;est plus simple et plus robuste que <strong>ExMerge<br />
</strong></p>
<p><span id="more-544"></span></p>
<p>Avant toute chose <strong>connectez vous</strong> sur l&#8217;un de vos serveurs <strong>Exchange 2007</strong> et ouvrez <strong>Exchange Management Shell</strong>.</p>
<p><a href="http://syskb.com/wp-content/uploads/2008/05/expmbx1.png" class="lightview" rel="gallery[544]"><img class="alignnone size-medium wp-image-545" title="expmbx1" src="http://syskb.com/wp-content/uploads/2008/05/expmbx1-245x300.png" alt="Démarrer Exchange Management Shell sur server 2008 pour executer des scripts Powershell Exchange" width="245" height="300" /></a></p>
<p><a href="http://syskb.com/wp-content/uploads/2008/05/expmbx2.png" class="lightview" rel="gallery[544]"><img class="alignnone size-medium wp-image-546" title="expmbx2" src="http://syskb.com/wp-content/uploads/2008/05/expmbx2-300x146.png" alt="Interpréteur Powershell pour Exchange afin de lancer des cmdlets dédiées Exchange 2007" width="300" height="146" /></a></p>
<h3>Lister les boites aux lettres</h3>
<p>Positionnez vous dans la fenêtre <strong>Exchange Management Shell </strong>et executer la <strong>CmdLet</strong> suivante pour lister l&#8217;ensemble des boites aux lettres de votre organisation Exchange:</p>
<blockquote><p>Get-Mailbox</p></blockquote>
<p>Vous obtenez un résultat de la forme suivante:</p>
<p><a href="http://syskb.com/wp-content/uploads/2008/05/expmbx1.png" class="lightview" rel="gallery[544]"></a><a href="http://syskb.com/wp-content/uploads/2008/05/expmbx2.png" class="lightview" rel="gallery[544]"></a><a href="http://syskb.com/wp-content/uploads/2008/05/expmbx3.png" class="lightview" rel="gallery[544]"><img class="alignnone size-medium wp-image-547" title="expmbx3" src="http://syskb.com/wp-content/uploads/2008/05/expmbx3-300x88.png" alt="Le resultat d'un Get-Mailbox afin de lister les mailbox du serveur Exchange" width="300" height="88" /></a> </p>
<h3>Exporter une boite aux lettres</h3>
<p>Dans cet exemple je vais exporter la boite aux lettres de l&#8217;utilisateur <strong>Yvon GAGNER </strong>vers le répertoire local <strong>c:\PST</strong></p>
<p>Pour cela exécuter la commande suivante depuis l&#8217;interpréteur Powershell:</p>
<blockquote><p>Export-Mailbox -Identity &#8220;Yvon GAGNER&#8221; -PSTFolderPath c:\PST</p></blockquote>
<p>Tapez <strong>O</strong> pour valider</p>
<p><a href="http://syskb.com/wp-content/uploads/2008/05/expmbx4.png" class="lightview" rel="gallery[544]"><img class="alignnone size-medium wp-image-548" title="expmbx4" src="http://syskb.com/wp-content/uploads/2008/05/expmbx4-300x68.png" alt="" width="300" height="68" /></a></p>
<p>Vous pouvez suivre le déroulement de l&#8217;export depuis la fenêtre Powershell </p>
<h3>Exporter toutes les boites aux lettres d&#8217;une banque d&#8217;information</h3>
<p>Pour exporter toutes les BAL d&#8217;une BI avec Powershell nous allons cette fois utiliser 2 CmdLets imbriquées grâce au &#8220;pipe&#8221;, le fameux <strong>| </strong>utilisé sous Unix ;-):</p>
<ul>
<li>Get-Mailbox</li>
<li>Export-Mailbox</li>
</ul>
<p>Ainsi la commande suivante va lister les boites aux lettre de la base appelée Mailbox Database, nom de la base par défaut, puis successivement exporter leurs contenus vers des PST localisés dans c:\PST</p>
<blockquote><p>Get-Mailbox -Database &#8220;Mailbox Database&#8221; | Export-Mailbox -PSTFolderPath c:\PST</p></blockquote>
<p>Tapez cette fois <strong>T</strong> pour exporter l&#8217;ensemble des boites ! </p>
<h3>Exporter toutes les boites aux lettres d&#8217;une Organisation</h3>
<p>Nous montons encore d&#8217;un cran, puisque nous souhaitons cette fois exporter tous les utilisateurs d&#8217;une organisation Exchange.</p>
<p>Dans le même esprit que précédement nous utilisons 2 commandes simultannément à l&#8217;aide d&#8217;un <strong>|</strong></p>
<blockquote><p>Get-Mailbox -OrganizationalUnit ELUsers | Export-Mailbox -PSTFolderPath c:\PST</p></blockquote>
<p>Tapez <strong>T</strong> pour exporter l&#8217;ensemble des boites.</p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://syskb.com/exporter-une-boite-aux-lettres-vers-un-pst-avec-powershell/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Lister les hotfixes d&#8217;un ordinateur distant en Powershell</title>
		<link>http://syskb.com/lister-les-hotfixes-dun-ordinateur-distant-en-powershell/</link>
		<comments>http://syskb.com/lister-les-hotfixes-dun-ordinateur-distant-en-powershell/#comments</comments>
		<pubDate>Tue, 06 May 2008 12:49:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Scripting]]></category>

		<category><![CDATA[Audit]]></category>

		<category><![CDATA[Script]]></category>

		<guid isPermaLink="false">http://syskb.com/?p=447</guid>
		<description><![CDATA[Il n'est pas toujours évident de savoir quels Hotfixes sont installés sur une machine. Je vous propose ici de les lister à l'aide d'un script Powershell et de la classe WMI "Win32_QuickFixEngineering".]]></description>
			<content:encoded><![CDATA[<p>Ce script <strong>Powershell </strong>permet de lister les <strong>Hotfixes </strong>qui ont été installés sur une machine locale ou distante. Il utilise WMI via la classe <strong>Win32_QuickFixEngineering</strong>.</p>
<p><span id="more-447"></span></p>
<p>Tout d&#8217;abord il faut créer un fichier de script Powershell <strong>monscript.ps1</strong>contenant le script suivant:</p>
<pre>$strComputer = "COMPUTER02"
$colItems = get-wmiobject -class "Win32_QuickFixEngineering" -namespace "root\CIMV2" `
-computername $strComputer
foreach ($objItem in $colItems) {
      write-host "Caption: " $objItem.Caption
      write-host "CS Name: " $objItem.CSName
      write-host "Description: " $objItem.Description
      write-host "Fix Comments: " $objItem.FixComments
      write-host "HotFix ID: " $objItem.HotFixID
      write-host "InstallationDate: " $objItem.InstallDate
      write-host "Installed By: " $objItem.InstalledBy
      write-host "Installed On: " $objItem.InstalledOn
      write-host "Name: " $objItem.Name
      write-host "Service Pack In Effect: " $objItem.ServicePackInEffect
      write-host "Status: " $objItem.Status
      write-host
}</pre>
<p>Nous pouvons ensuite exécuter le script directement depuis l&#8217;interpréteur Powershell :</p>
<blockquote><p>PS C:\&gt;.\monscript.ps1</p></blockquote>
<p>Je vous invite à consulter les articles suivants si vous n&#8217;avez pas encore installé Powershell et si vous souhaitez découvrir les différentes manières d&#8217;exécuter du code en Powershell.</p>
<p style="padding-left: 60px;"><a href="http://syskb.com/comment-installer-powershell-10/">Installer PowerShell 1.0</a></p>
<p style="padding-left: 60px;"><a href="http://syskb.com/comment-executer-un-script-en-powershell/">Exécuter un script en PowerShell</a></p>
]]></content:encoded>
			<wfw:commentRss>http://syskb.com/lister-les-hotfixes-dun-ordinateur-distant-en-powershell/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Afficher le compte utilisateur connecté sur une machine distante en Powershell</title>
		<link>http://syskb.com/afficher-le-compte-utilisateur-connecte-sur-une-machine-distante-en-powershell/</link>
		<comments>http://syskb.com/afficher-le-compte-utilisateur-connecte-sur-une-machine-distante-en-powershell/#comments</comments>
		<pubDate>Mon, 05 May 2008 12:25:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Scripting]]></category>

		<category><![CDATA[Audit]]></category>

		<category><![CDATA[Script]]></category>

		<guid isPermaLink="false">http://syskb.com/?p=443</guid>
		<description><![CDATA[Nous allons voir dans cet article comment savoir qui est connecté sur une machine distante en affichant son login.

Avant de commencer et si vous n&#8217;êtes pas encore à l&#8217;aise en Powershell je vous invite à consulter les articles suivants:
Installer PowerShell 1.0
Exécuter un script en PowerShell
Tout d&#8217;abord nous créons un fichier de script Powershell monscript.ps1contenant le [...]]]></description>
			<content:encoded><![CDATA[<p>Nous allons voir dans cet article comment savoir qui est connecté sur <strong>une machine distante</strong> en affichant son login.<br />
<span id="more-443"></span><br />
Avant de commencer et si vous n&#8217;êtes pas encore à l&#8217;aise en Powershell je vous invite à consulter les articles suivants:</p>
<p style="padding-left: 60px;"><a href="http://syskb.com/comment-installer-powershell-10/">Installer PowerShell 1.0</a></p>
<p style="padding-left: 60px;"><a href="http://syskb.com/comment-executer-un-script-en-powershell/">Exécuter un script en PowerShell</a></p>
<p>Tout d&#8217;abord nous créons un fichier de script Powershell <strong>monscript.ps1</strong>contenant le script suivant:</p>
<pre>$strComputer = "."
$Var =GWMI -Comp $strComputer -CL Win32_ComputerSystem
"Machine Name: " + $Var.Name + " User Name: " + $Var.UserName</pre>
<p>Le <strong>&#8220;.&#8221;</strong> désigne la machine sur laquelle est exécutée le script. Cette syntaxe se retrouve d&#8217;ailleurs en <strong>VBScript</strong>.</p>
<p>Si l&#8217;on souhaite savoir qui est connecté sur la station nommée STATION02 il suffit de remplacer le <strong>&#8220;.&#8221;</strong> par <strong>&#8220;STATION02&#8243;</strong>. Le code devient alors:</p>
<pre>$strComputer = "STATION02"
$Var =GWMI -Comp $strComputer -CL Win32_ComputerSystem
"Machine Name: " + $Var.Name + " User Name: " + $Var.UserName</pre>
<p>Nous exécutons le script directement depuis l&#8217;interpréteur Powershell :</p>
<blockquote><p>PS C:\&gt;.\monscript.ps1</p></blockquote>
<p>On obtient un résultat de la forme suivante :</p>
<blockquote><p>PS C:\&gt; .\monscript.ps1<br />
Machine Name: STATION01 User Name: DOMLAB\hatmos<br />
PS C:\&gt;</p></blockquote>
<p>Nous pouvons exécuter le script depuis <strong>une invite de commande</strong> (cmd) classique en tapant:</p>
<blockquote><p>PowerShell C:\monscript.ps1</p></blockquote>
<p>Mais malheureusement l&#8217;<strong>affichage est renvoyé dans l&#8217;interpréteur</strong> &#8230; qui se ferme aussitôt. Nous allons donc ajouter un <strong>MSGBOX </strong>à la manière des VBScript, afin d&#8217;avoir le temps de visualiser le résultat.</p>
<p>Le code devient alors:</p>
<pre>$strComputer = "STATION02"
$Var =GWMI -Comp $strComputer -CL Win32_ComputerSystem
"Machine Name: " + $Var.Name + " User Name: " + $Var.UserName
$a = new-object -comobject wscript.shell
$b = $a.popup($Var.UserName,0,"MSGBOX en Powershell",1)</pre>
<p>Et le résultat sera retourné dans un <strong>MSGBOX </strong> <img src='http://syskb.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Il est possible d&#8217;effectuer la <strong>même opération en VBScript</strong>. Je vous invite pour cela à consulter l&#8217;article suivant:</p>
<p style="padding-left: 60px;"><a title="Comment afficher le nom de l'utilisateur connecté sur un ordinateur distant" href="http://syskb.com/afficher-le-compte-utilisateur-connecte-sur-une-machine-distante-en-vbscript/">Afficher le compte utilisateur connecté sur une machine distante en VBScript</a></p>
]]></content:encoded>
			<wfw:commentRss>http://syskb.com/afficher-le-compte-utilisateur-connecte-sur-une-machine-distante-en-powershell/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Supprimer les doublons dans un fichier texte puis le trier en Powershell</title>
		<link>http://syskb.com/supprimer-les-doublons-dans-un-fichier-texte-puis-le-trier-en-powershell/</link>
		<comments>http://syskb.com/supprimer-les-doublons-dans-un-fichier-texte-puis-le-trier-en-powershell/#comments</comments>
		<pubDate>Wed, 30 Apr 2008 13:15:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Scripting]]></category>

		<category><![CDATA[Script]]></category>

		<category><![CDATA[Texte]]></category>

		<guid isPermaLink="false">http://syskb.com/?p=442</guid>
		<description><![CDATA[Nous allons voir comment trier puis supprimer les doublons dans un fichier texte avec un script Powershell.

Avant de commencer et si vous n&#8217;êtes pas encore à l&#8217;aise en Powershell je vous invite à consulter les articles suivants:
Installer PowerShell 1.0
Exécuter un script en PowerShell
Considérons un fichier texte nommé AllDomainComputers.txt contenant la liste de machines suivantes:
Station14
Station04
Station01
Station24
Station01
Nous souhaitons [...]]]></description>
			<content:encoded><![CDATA[<p>Nous allons voir comment trier puis supprimer les doublons dans un fichier texte avec un script Powershell.<br />
<span id="more-442"></span></p>
<p>Avant de commencer et si vous n&#8217;êtes pas encore à l&#8217;aise en Powershell je vous invite à consulter les articles suivants:</p>
<p style="padding-left: 60px;"><a title="Comment installer Powershell" href="http://syskb.com/comment-installer-powershell-10/">Installer PowerShell 1.0</a></p>
<p style="padding-left: 60px;"><a title="Comment exécuter un script Powershell" href="http://syskb.com/comment-executer-un-script-en-powershell/">Exécuter un script en PowerShell</a></p>
<p>Considérons un fichier texte nommé <strong>AllDomainComputers.txt</strong> contenant la liste de machines suivantes:</p>
<blockquote><p>Station14<br />
Station04<br />
Station01<br />
Station24<br />
Station01</p></blockquote>
<p>Nous souhaitons supprimer les doublons puis trier la liste par ordre alphabétique tout en conservant la liste original.</p>
<p>Pour cela nous créons un fichier de script Powershell <strong>MonScript.PS1</strong>contenant le script suivant:</p>
<pre>$OriginalFile = "C:\AllDomainComputers.txt"
$DestinationFile = "C:\AllDomainComputers_NEW.txt"
Get-Content $OriginalFile | Sort-Object | Get-Unique &gt; $DestinationFile</pre>
<p>Puis nous l&#8217;exécutons depuis une ligne de commande:</p>
<pre>PowerShell c:\Monscript.PS1</pre>
<p>On peut constater que le nouveau fichier <strong>AllDomainComputers_NEW.txt </strong>contient bien un liste triée et sans aucun doublons:</p>
<blockquote><p>Station01<br />
Station04<br />
Station14<br />
Station24</p></blockquote>
<p>Nous aurions pu utiliser les <strong>Alias </strong>afin de <strong>simplifier le code</strong>, ce qui aurait donné :</p>
<pre>$OriginalFile = "C:\AllDomainComputers.txt"
$DestinationFile = "C:\AllDomainComputers_NEW.txt"
GC $OriginalFile | Sort | GU &gt; $DestinationFile</pre>
<p>Pour trier la liste dans l&#8217;ordre inverse il suffit d&#8217;utiliser la propriété <strong>descending </strong>:</p>
<pre>$OriginalFile = "C:\AllDomainComputers.txt"
$DestinationFile = "C:\AllDomainComputers_NEW.txt"
GC $OriginalFile | Sort -descending | GU &gt; $DestinationFile</pre>
<p>On obtient ainsi la liste suivante :</p>
<blockquote><p>Station24<br />
Station14<br />
Station04<br />
Station01</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://syskb.com/supprimer-les-doublons-dans-un-fichier-texte-puis-le-trier-en-powershell/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Lister les alias Powershell</title>
		<link>http://syskb.com/lister-les-alias-powershell/</link>
		<comments>http://syskb.com/lister-les-alias-powershell/#comments</comments>
		<pubDate>Wed, 30 Apr 2008 12:07:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Scripting]]></category>

		<category><![CDATA[Découvrir]]></category>

		<category><![CDATA[Fonctionnalités]]></category>

		<category><![CDATA[Script]]></category>

		<guid isPermaLink="false">http://syskb.com/?p=441</guid>
		<description><![CDATA[Il est possible d&#8217;utiliser des Alias pour appeler les CmdLets de Powershell. Autrement dit il est possible d&#8217;utiliser un raccourcis plutôt qu&#8217;une commande parfois fastidieuse à taper ou à se souvenir. Voici comment obtenir la liste des Alias proposés nativement dans Powershell.

Pour lister les Alias depuis l&#8217;interpréteur Powershell entrez la commande suivante:
PS C:\&#62; get-alias
Il est [...]]]></description>
			<content:encoded><![CDATA[<p>Il est possible d&#8217;utiliser des <strong>Alias </strong>pour appeler les <strong>CmdLets </strong>de Powershell. Autrement dit il est possible d&#8217;utiliser un <strong>raccourcis </strong>plutôt qu&#8217;une commande parfois fastidieuse à taper ou à se souvenir. Voici comment obtenir la <strong>liste des Alias</strong> proposés nativement dans <strong>Powershell</strong>.</p>
<p><span id="more-441"></span></p>
<p>Pour lister les Alias depuis l&#8217;<strong>interpréteur Powershell</strong> entrez la commande suivante:</p>
<blockquote><p>PS C:\&gt; get-alias</p></blockquote>
<p>Il est d&#8217;ailleurs possible d&#8217;utiliser <strong>l&#8217;Alias de cette commande</strong> <img src='http://syskb.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> !</p>
<blockquote><p>PS C:\&gt; gal</p></blockquote>
<p>Si vous souhaitez lister les alias dans <strong>un fichier .TXT</strong> plutôt que dans l&#8217;interpréteur:</p>
<blockquote><p>PS C:\&gt; gal &gt;gal.txt</p></blockquote>
<p>Voici la liste de <strong>tous les alias disponibles</strong> nativement:</p>
<pre>PS C:\&gt; get-alias

CommandType     Name                            Definition
-----------     ----                            ----------
Alias           ac                              Add-Content
Alias           asnp                            Add-PSSnapin
Alias           clc                             Clear-Content
Alias           cli                             Clear-Item
Alias           clp                             Clear-ItemPropert
Alias           clv                             Clear-Variable
Alias           cpi                             Copy-Item
Alias           cpp                             Copy-ItemProperty
Alias           cvpa                            Convert-Path
Alias           diff                            Compare-Object
Alias           epal                            Export-Alias
Alias           epcsv                           Export-Csv
Alias           fc                              Format-Custom
Alias           fl                              Format-List
Alias           foreach                         ForEach-Object
Alias           %                               ForEach-Object
Alias           ft                              Format-Table
Alias           fw                              Format-Wide
Alias           gal                             Get-Alias
Alias           gc                              Get-Content
Alias           gci                             Get-ChildItem
Alias           gcm                             Get-Command
Alias           gdr                             Get-PSDrive
Alias           ghy                             Get-History
Alias           gi                              Get-Item
Alias           gl                              Get-Location
Alias           gm                              Get-Member
Alias           gp                              Get-ItemProperty
Alias           gps                             Get-Process
Alias           group                           Group-Object
Alias           gsv                             Get-Service
Alias           gsnp                            Get-PSSnapin
Alias           gu                              Get-Unique
Alias           gv                              Get-Variable
Alias           gwmi                            Get-WmiObject
Alias           iex                             Invoke-Expression
Alias           ihy                             Invoke-History
Alias           ii                              Invoke-Item
Alias           ipal                            Import-Alias
Alias           ipcsv                           Import-Csv
Alias           mi                              Move-Item
Alias           mp                              Move-ItemProperty
Alias           nal                             New-Alias
Alias           ndr                             New-PSDrive
Alias           ni                              New-Item
Alias           nv                              New-Variable
Alias           oh                              Out-Host
Alias           rdr                             Remove-PSDrive
Alias           ri                              Remove-Item
Alias           rni                             Rename-Item
Alias           rnp                             Rename-ItemProper
Alias           rp                              Remove-ItemProper
Alias           rsnp                            Remove-PSSnapin
Alias           rv                              Remove-Variable
Alias           rvpa                            Resolve-Path
Alias           sal                             Set-Alias
Alias           sasv                            Start-Service
Alias           sc                              Set-Content
Alias           select                          Select-Object
Alias           si                              Set-Item
Alias           sl                              Set-Location
Alias           sleep                           Start-Sleep
Alias           sort                            Sort-Object
Alias           sp                              Set-ItemProperty
Alias           spps                            Stop-Process
Alias           spsv                            Stop-Service
Alias           sv                              Set-Variable
Alias           tee                             Tee-Object
Alias           where                           Where-Object
Alias           ?                               Where-Object
Alias           write                           Write-Output
Alias           cat                             Get-Content
Alias           cd                              Set-Location
Alias           clear                           Clear-Host
Alias           cp                              Copy-Item
Alias           h                               Get-History
Alias           history                         Get-History
Alias           kill                            Stop-Process
Alias           lp                              Out-Printer
Alias           ls                              Get-ChildItem
Alias           mount                           New-PSDrive
Alias           mv                              Move-Item
Alias           popd                            Pop-Location
Alias           ps                              Get-Process
Alias           pushd                           Push-Location
Alias           pwd                             Get-Location
Alias           r                               Invoke-History
Alias           rm                              Remove-Item
Alias           rmdir                           Remove-Item
Alias           echo                            Write-Output
Alias           cls                             Clear-Host
Alias           chdir                           Set-Location
Alias           copy                            Copy-Item
Alias           del                             Remove-Item
Alias           dir                             Get-ChildItem
Alias           erase                           Remove-Item
Alias           move                            Move-Item
Alias           rd                              Remove-Item
Alias           ren                             Rename-Item
Alias           set                             Set-Variable
Alias           type                            Get-Content</pre>
]]></content:encoded>
			<wfw:commentRss>http://syskb.com/lister-les-alias-powershell/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Exporter dans Excel les numéros de série d&#8217;une liste de machines avec VBScript</title>
		<link>http://syskb.com/exporter-dans-excel-les-numeros-de-serie-dune-liste-de-machines-avec-vbscript/</link>
		<comments>http://syskb.com/exporter-dans-excel-les-numeros-de-serie-dune-liste-de-machines-avec-vbscript/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 14:10:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Scripting]]></category>

		<category><![CDATA[Exporter]]></category>

		<category><![CDATA[Script]]></category>

		<guid isPermaLink="false">http://syskb.com/?p=436</guid>
		<description><![CDATA[Ce script va récupérer le nom des ordinateurs contenus dans un fichier Ordinateurs.txt puis écrire dans une feuille Excel le nom de la machine ainsi que son numéro de série.

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
intRow = 2
objExcel.Cells(1, 1).Value = "Nom Machine"
objExcel.Cells(1, 2).Value = "Numéro de série"
Set Fso = CreateObject("Scripting.FileSystemObject")
Set InputFile = fso.OpenTextFile("MachineList.Txt")
Do While Not (InputFile.atEndOfStream)
strComputer [...]]]></description>
			<content:encoded><![CDATA[<p>Ce script va récupérer le nom des ordinateurs contenus dans un fichier <strong>Ordinateurs.txt</strong> puis écrire dans une feuille <strong>Excel</strong> le nom de la machine ainsi que son <strong>numéro de série</strong>.</p>
<p><span id="more-436"></span></p>
<pre>Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
intRow = 2
objExcel.Cells(1, 1).Value = "Nom Machine"
objExcel.Cells(1, 2).Value = "Numéro de série"
Set Fso = CreateObject("Scripting.FileSystemObject")
Set InputFile = fso.OpenTextFile("MachineList.Txt")
Do While Not (InputFile.atEndOfStream)
strComputer = InputFile.ReadLine
On Error Resume Next
Set objWMIService = GetObject("winmgmts:\\" &amp; strComputer &amp; "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS",,48)
If Err.Number &lt;&gt; 0 Then
objExcel.Cells(intRow, 1).Value = UCase(strComputer)
objExcel.Cells(intRow, 2).Value = "Introuvable"
Err.Clear
Else
For Each objItem in colItems
objExcel.Cells(intRow, 1).Value = UCase(objItem.Name)
objExcel.Cells(intRow, 2).Value = UCase(objItem.SerialNumber)
Next
End If
intRow = intRow + 1
Loop
objExcel.Range("A1:B1").Select
objExcel.Selection.Interior.ColorIndex = 19
objExcel.Selection.Font.ColorIndex = 9
objExcel.Selection.Font.Bold = True
objExcel.Cells.EntireColumn.AutoFit
wscript.echo "Terminé"</pre>
<address style="text-align: center;"><strong>Ce code est correctement formaté.</strong></address>
<address style="text-align: center;"><strong>Vous pouvez directement le COPIER / COLLER dans un fichier VBS.</strong></address>
]]></content:encoded>
			<wfw:commentRss>http://syskb.com/exporter-dans-excel-les-numeros-de-serie-dune-liste-de-machines-avec-vbscript/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
