<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog de Sys Admin &#187; powershell</title>
	<atom:link href="https://blog.developpez.com/sysadmin/pcategory/powershell/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/sysadmin</link>
	<description></description>
	<lastBuildDate>Wed, 22 Jun 2011 20:07:22 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Mini Boite à outils Powershell</title>
		<link>https://blog.developpez.com/sysadmin/p10089/powershell/mini_boite_a_outils_powershell</link>
		<comments>https://blog.developpez.com/sysadmin/p10089/powershell/mini_boite_a_outils_powershell#comments</comments>
		<pubDate>Wed, 22 Jun 2011 20:07:22 +0000</pubDate>
		<dc:creator><![CDATA[sensei.dje]]></dc:creator>
				<category><![CDATA[Active-Directory]]></category>
		<category><![CDATA[powershell]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[C&#8217;est au fur et à mesure,en jouant avec powershell que j&#8217;ai noté et gardé ces bricoles&#8230; Si ça crame, ces p&#8217;tits scripts, scriptlets ou commandlet seront au moins sauvés ici &#8230; Accès à une clé de Registre &#160;$key= get-item &#34;HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\&#34; A noter : en Powershell, le registre est considéré comme un lecteur &#171;&#160;logique&#160;&#187; (type C:\) d&#8217;où la syntaxe HKLM:\ &#8230; Accès à une propriété d&#8217;une clé de Registre $key= get-item &#34;HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ $val= get-itemProperty [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>C&rsquo;est au fur et à mesure,en jouant avec powershell que j&rsquo;ai noté et gardé ces bricoles&#8230;<br />
Si ça crame, ces p&rsquo;tits scripts, scriptlets ou commandlet seront au moins sauvés ici &#8230;<br />
<span id="more-6"></span></p>
<h2>Accès à une clé de Registre</h2>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;$key= get-item &quot;HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\&quot;</div></div>
<p>A noter : en Powershell, le registre est considéré comme un lecteur &laquo;&nbsp;logique&nbsp;&raquo; (type C:\) d&rsquo;où la syntaxe <strong>HKLM:\</strong> &#8230; </p>
<h2>Accès à une propriété d&rsquo;une clé de Registre</h2>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$key= get-item &quot;HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ <br />
$val= get-itemProperty $key.PSPath |select ProductName</div></div>
<p>A noter : la propriété .pspath est indispensable pour bypass le chemin &laquo;&nbsp;physique&nbsp;&raquo; (exemple <em>c:\documents and settings</em>&#8230;) par défaut.<br />
La partie &laquo;&nbsp;|select&#8230;&nbsp;&raquo; est optionnelle, elle permet de ne récuperer que certaines propriétés ( select étant un alias de select-object) </p>
<h2>Liste des pilotes d&rsquo;impression installés</h2>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$liste=@() #important : pour creer un tableau <br />
$collection =Get-WmiObject win32_Printerdriver | select name,version, supportedplatform <br />
foreach ($drivers in $collection) <br />
{ $liste+=($drivers.name -split &quot;,&quot;)[0]} <br />
$liste</div></div>
<h2>Création unitaire d&rsquo;une file d&rsquo;impression</h2>
<p><em>Ce script n&rsquo;installe aucun pilote, il se contente de créer, partager et publier dans l&rsquo;AD une file correspondant aux variables renseignées&#8230;</em><br />
<em>Gros pré-requis : connaitre le libellé </em><strong>exact</strong><em> du pilote que l&rsquo;on va utiliser ! cf script précédent&#8230;</em></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$Name=&quot;IMP-machintruc&quot; <br />
$Comment=&quot;Patati...&quot; <br />
$Emplacement=&quot;Bureau XXX&quot; <br />
$DriverName = &quot;Lexmark Universal XL&quot; #&lt;== Tres important !! <br />
$IPAddress = &quot;192.168.XXX.XXX&quot; <br />
$PortName = &quot;Port-IPXXX&quot; <br />
&nbsp;<br />
# creation du port <br />
$ClassIPPrnPort= [wmiclass]'Win32_TCPIPPrinterPort' <br />
$NewPort= $ClassIPPrnPort.CreateInstance() &nbsp; &nbsp; <br />
$NewPort.HostAddress = $IPAddress <br />
$NewPort.Name = $PortName <br />
&nbsp;$NewPort.Protocol = 1 # &nbsp;1 = Raw, 2 = LPR <br />
$NewPort.SNMPEnabled = $false <br />
$ResultPort=$NewPort.Put() <br />
&nbsp;<br />
# ajout de la file <br />
$ClassPrinter= [wmiclass]'Win32_Printer' <br />
$NewPrinter= $ClassPrinter.CreateInstance() <br />
$NewPrinter.DriverName = $DriverName <br />
$NewPrinter.DeviceID = $Name <br />
$NewPrinter.PortName = $PortName <br />
$newprinter.Shared = $true <br />
$newprinter.Published = $true <br />
$newprinter.Sharename = $Name <br />
$newprinter.Location = $Emplacement <br />
$newprinter.Comment = $Comment <br />
&nbsp;<br />
$ResultPrinter=$NewPrinter.Put()</div></div>
<h2>Liste des services arrêtés d&rsquo;une machine distante</h2>
<p><em>Aussi connu sous le nom : le &laquo;&nbsp;ça ressemble à un &lsquo;ps pipe grep'&nbsp;&raquo;</em></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">get-service -computername &quot;ordXXXX&quot; | where {$_.status -eq &quot;stopped&quot; }</div></div>
<h2>Parcours d&rsquo;un tableau, concaténation et transtypage</h2>
<p><em>Parcours du tableau $var contenant les valeurs 0 1 2 3 4</em></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$var=0..4;$result=&quot;&quot;;$result=@() ; foreach ($val in $var) {$result+=[int]([string]$val + &quot;01&quot;);}</div></div>
<p>Bien initialiser la variable $result en tant que tableau.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ping des controleurs de domaine en powershell</title>
		<link>https://blog.developpez.com/sysadmin/p10062/powershell/ping_des_controleurs_de_domaine_en_power</link>
		<comments>https://blog.developpez.com/sysadmin/p10062/powershell/ping_des_controleurs_de_domaine_en_power#comments</comments>
		<pubDate>Thu, 16 Jun 2011 18:03:20 +0000</pubDate>
		<dc:creator><![CDATA[sensei.dje]]></dc:creator>
				<category><![CDATA[Active-Directory]]></category>
		<category><![CDATA[powershell]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[La supervision des contrôleurs de domaine est facilitée par des outils tels que le vénérable sonar ou son descendant ultrasound (google -> microsoft &#8230;) . On peut aussi être intéressé par une information quasi instantanée de premier niveau, à savoir, repondent-ils au ping&#8230; Dans cet esprit, j&#8217;ai ce vieux bout de code, interrogeant le domaine, montant la liste des DC et affichant en vert quand c&#8217;est bon, rouge quand ça répond pas. Le gros du [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>La supervision des contrôleurs de domaine est facilitée par des outils tels que le vénérable <em>sonar</em> ou son descendant <em>ultrasound</em> (google -> microsoft &#8230;) .<br />
On peut aussi être intéressé par une information quasi instantanée de premier niveau, à savoir, repondent-ils au ping&#8230;<span id="more-4"></span></p>
<p>Dans cet esprit, j&rsquo;ai ce vieux bout de code, interrogeant le domaine, montant la liste des DC et affichant en vert quand c&rsquo;est bon, rouge quand ça répond pas. </p>
<p>Le gros du code tourne autour d&rsquo;une récupération d&rsquo;info WMI, comme souvent..</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ping = new-object System.Net.Networkinformation.Ping <br />
$objDomain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain() &nbsp;<br />
$dc=$objDomain.FindAllDomainControllers() | Select-Object Name,IpAddress |sort name <br />
for ($i=0; $i -le $dc.count-1 ;$i++) { <br />
&nbsp; &nbsp;Write-Host -ForegroundColor &quot;white&quot; $dc[$i].name -NoNewLine &quot; - IP-&gt; &quot; &nbsp; &nbsp;<br />
&nbsp; &nbsp;if ($ping.send($dc[$i].name).status -eq &quot;success&quot; ) &nbsp;<br />
&nbsp; &nbsp;{ Write-Host -ForegroundColor &quot;green&quot; -NoNewLine $dc[$i].ipaddress} &nbsp;<br />
&nbsp; &nbsp;else &nbsp;<br />
&nbsp; &nbsp;{ Write-Host -ForegroundColor &quot;red&quot; -NoNewLine $dc[$i].ipaddress} &nbsp;<br />
&nbsp; &nbsp;Write-Host -ForegroundColor &quot;white&quot; -NoNewLine &quot; - R-&gt; &quot; <br />
&nbsp; &nbsp;if ($dc[$i].name.substring(0,2) -eq &quot;cm&quot;) <br />
&nbsp; &nbsp;{$ip=$dc[$i].Ipaddress.substring(0,$dc[$i].Ipaddress.length -3) + &quot;XXX&quot;; &nbsp; &nbsp;#&lt;- à modifier pour votre pattern à vous <br />
&nbsp; &nbsp; &nbsp; if ($ping.send($ip).status -eq &quot;success&quot; ) &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ Write-Host -ForegroundColor &quot;green&quot; $ip} &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ Write-Host -ForegroundColor &quot;red&quot; $ip} <br />
&nbsp; &nbsp;} <br />
&nbsp; &nbsp;else <br />
&nbsp; &nbsp;{ <br />
&nbsp; &nbsp;$Config = Get-Wmiobject win32_NetworkAdapterConfiguration -comp $dc[$i].name <br />
&nbsp; &nbsp;for ($j=0; $j -le $config.count -1;$j++) { <br />
&nbsp; &nbsp; &nbsp; if ($config[$j].IPAddress -ne $null ){ &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ($ping.send($config[$j].DefaultIPGateway).status -eq &quot;success&quot; ) &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ Write-Host -ForegroundColor &quot;green&quot; $config[$j].DefaultIPGateway} &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ Write-Host -ForegroundColor &quot;red&quot; $config[$j].DefaultIPGateway} <br />
&nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp;} <br />
} <br />
}</div></div>
<p>Il sera possible de profiter de la boucle principale pour rajouter des tests variés, tels que la présence ou non de services tournant sur les serveurs (DFS, antivirus, spooler)&#8230; j&rsquo;y reviendrai&#8230;</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DHCP et IP en powershell</title>
		<link>https://blog.developpez.com/sysadmin/p10063/powershell/dhcp_et_ip_en_powershell</link>
		<comments>https://blog.developpez.com/sysadmin/p10063/powershell/dhcp_et_ip_en_powershell#comments</comments>
		<pubDate>Sat, 18 Jun 2011 17:37:43 +0000</pubDate>
		<dc:creator><![CDATA[sensei.dje]]></dc:creator>
				<category><![CDATA[powershell]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[N&#8217;ayant pas vu (ou pas cherché bien fort) le sympathique wrapper DHCP du ScriptGuy, voici quelques scripts maison et/ou scriplets pour jouer avec des pings, manager des étendues DHCP, ou plus généralement les serveurs DHCP et l&#8217;indispensable netsh&#8230; Ping $ping = new-object System.Net.Networkinformation.Ping $ping.send(&#34;[nom du serveur]&#34;) Remarque : il est possible d&#8217;obtenir uniquement le résultat en exécutant : $ping.send(&#171;&#160;[nm du serveur]&#160;&#187;).status Ping d&#8217;une plage d&#8217;adresses IP $ping = new-object system.net.networkinformation.ping ; 10..20 &#124; foreach { [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>N&rsquo;ayant pas vu (ou pas cherché bien fort) le sympathique <a href="http://blogs.technet.com/b/heyscriptingguy/archive/2011/02/14/use-the-powershell-dhcp-module-to-simplify-dhcp-management.aspx">wrapper DHCP du ScriptGuy</a>, voici quelques scripts maison et/ou scriplets pour jouer avec des pings, manager des étendues DHCP, ou plus généralement les serveurs DHCP et l&rsquo;indispensable <em>netsh</em>&#8230;<span id="more-5"></span></p>
<h3>Ping</h3>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ping = new-object System.Net.Networkinformation.Ping <br />
$ping.send(&quot;[nom du serveur]&quot;)</div></div>
<p>Remarque : il est possible d&rsquo;obtenir uniquement le résultat en exécutant : <em>$ping.send(&laquo;&nbsp;[nm du serveur]&nbsp;&raquo;).status</em></p>
<h3>Ping d&rsquo;une plage d&rsquo;adresses IP</h3>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ping = new-object system.net.networkinformation.ping ; 10..20 | foreach { $ip = &quot;XXX.XXX.$_.XXX&quot; ; $ping.send($ip) } |select Address, Status</div></div>
<h3>Nslookup d&rsquo;une plage IP</h3>
<p>Le <em>nmap</em> du pauvre, les vérifications de ports ouverts en moins &#8230;</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;1..255 | % { [System.Net.Dns]::GetHostByAddress(&quot;XXX.XXX.XXX.$_&quot;) } 2&gt; Out-Null | ft</div></div>
<p><img src="http://www.virtua-peanuts.net/depot/private/blog-dje/icons/lightbulb.png"/> Bien veiller à remplacer les <em>XXX</em> &#8230;</p>
<h3>Rajout d&rsquo;une plage d&rsquo;exclusion DHCP pour chaque scope DHCP </h3>
<p>Approche itérative, dans lequel le second octet est issu d&rsquo;un tableau&#8230; Le reste du script ne fait que préparer des lignes de commandes à rediriger vers un fichier <em>.bat</em> .<br />
Il serait aussi possible d&rsquo;exécuter chaque commande directement dans la boucle <em>foreach</em> avec <em>invoke-expression</em> (pas testé ici car powershell n&rsquo;est pas installé sur le serveur dhcp, &#8230;)</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$scopes=@(101,103,104,111,112,113,114,121,122,123,124,131,132,133,134,141,142,143,144,151,152,153,154) <br />
foreach ($scope in $scopes){1..2 | % {&quot;netsh dhcp server \\[ServeurDHCP]$_ scope XXX.$scope.0.0 add excluderange XXX.$scope.2.0 XXX.$scope.2.0&quot;}}</div></div>
<p>Remarque : script adapté pour 2 serveurs dhcp d&rsquo;où le premier <em>foreach</em>&#8230;</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mini challenge bash/awk vs powershell</title>
		<link>https://blog.developpez.com/sysadmin/p10064/powershell/mini_challenge_bash_awk_vs_powershell</link>
		<comments>https://blog.developpez.com/sysadmin/p10064/powershell/mini_challenge_bash_awk_vs_powershell#comments</comments>
		<pubDate>Sun, 19 Jun 2011 10:22:35 +0000</pubDate>
		<dc:creator><![CDATA[sensei.dje]]></dc:creator>
				<category><![CDATA[bash]]></category>
		<category><![CDATA[powershell]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Mis au défi de faire mieux en powershell qu&#8217;en bash (et une louche d&#8217;awk) par un collègue, j&#8217;ai pondu le mini script suivant : Défi : Soit un fichier texte contenant des noms de serveurs, on le nommera &#171;&#160;serveurs.txt&#160;&#187; Le plus simplement et efficacement possible, coder un script qui exécutera un script annexe autant de fois que de lignes dans le fichier &#171;&#160;serveurs.txt&#160;&#187; Évidement, présenté comme cela, ça ne présente que peu d’intérêt, cela dit, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Mis au défi de faire mieux en powershell qu&rsquo;en bash (et une louche d&rsquo;awk) par un collègue, j&rsquo;ai pondu le mini script suivant :</p>
<h3>Défi : </h3>
<p>Soit un fichier texte contenant des noms de serveurs, on le nommera &laquo;&nbsp;serveurs.txt&nbsp;&raquo;<br />
Le plus simplement et efficacement possible, coder un script qui exécutera un script annexe autant de fois que de lignes dans le fichier &laquo;&nbsp;serveurs.txt&nbsp;&raquo;</p>
<p><em>Évidement, présenté comme cela, ça ne présente que peu d’intérêt, cela dit, cette méthode nous est utile pour ne pas multiplier les taches cron&#8230;</em><br />
<span id="more-7"></span></p>
<h3>bash &amp; awk</h3>
<p><strong>mon_script.sh :</strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">echo $0</div></div>
<p><strong>One-liner qui va bien :</strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">awk '{print (&quot;sh mon_script.sh &quot; $0)}' serveurs.txt | sh</div></div>
<h3>powershell</h3>
<p><strong>mon_script.ps1 :</strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">write-host $arg[0]</div></div>
<p><strong>One-liner qui va bien :</strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;Get-Content -path serveurs.txt |%{invoke-expression &quot;./mon_script.ps1 $_&quot;}</div></div>
<h3>Vainqueur</h3>
<p>Pour moi c&rsquo;est <strong>match nul</strong>, à moins de commencer mesquinement à compter le nombre de caractères&#8230;<br />
Plus sérieusement, les 2 approches me semblent partager la même logique. Je doute de ne jamais pouvoir faire une comparaison de performance &laquo;&nbsp;brute&nbsp;&raquo; de traitement de chaines de caractères compte tenu des <em>OS</em> et serveurs physiques trop différents&#8230;<br />
<br />
Un avis éclairé sur la question sera toujours bienvenu !!</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lister les ordinateurs d&#8217;un domaine AD en powershell</title>
		<link>https://blog.developpez.com/sysadmin/p10038/powershell/lister_les_ordinateurs_d_un_domaine_ad_e</link>
		<comments>https://blog.developpez.com/sysadmin/p10038/powershell/lister_les_ordinateurs_d_un_domaine_ad_e#comments</comments>
		<pubDate>Tue, 07 Jun 2011 17:21:14 +0000</pubDate>
		<dc:creator><![CDATA[sensei.dje]]></dc:creator>
				<category><![CDATA[Active-Directory]]></category>
		<category><![CDATA[powershell]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Petit script très basique, pour jouer avec une requête AD très simple &#8230; $filtre = &#34;(objectCategory=Computer)&#34; $domaine = New-Object System.DirectoryServices.DirectoryEntry $chercheur = New-Object System.DirectoryServices.DirectorySearcher $chercheur.SearchRoot = $domaine $chercheur.PageSize = 1000 $chercheur.Filter = $filtre # Ajout de la propriété que l'on recherche... $prop = &#34;name&#34; foreach ($i in $prop){$chercheur.PropertiesToLoad.Add($i)} $colResults = $chercheur.FindAll() foreach ($objResult in $colResults) { $objItem = $objResult.Properties # Sortie vers l'écran write-host $objItem.name } L&#8217;intérêt de ce mini script réside dans la simplicité [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Petit script très basique, pour jouer avec une requête AD très simple &#8230;</p>
<div style="border: 1px solid black;background-color:lightgray;">
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$filtre = &quot;(objectCategory=Computer)&quot;<br />
$domaine = New-Object System.DirectoryServices.DirectoryEntry<br />
$chercheur = New-Object System.DirectoryServices.DirectorySearcher<br />
$chercheur.SearchRoot = $domaine<br />
$chercheur.PageSize = 1000<br />
$chercheur.Filter = $filtre<br />
<br />
# Ajout de la propriété que l'on recherche...<br />
$prop = &quot;name&quot;<br />
foreach ($i in $prop){$chercheur.PropertiesToLoad.Add($i)}<br />
<br />
$colResults = $chercheur.FindAll()<br />
<br />
foreach ($objResult in $colResults) {<br />
$objItem = $objResult.Properties <br />
# Sortie vers l'écran<br />
write-host $objItem.name<br />
}</div></div>
</div>
<p>L&rsquo;intérêt de ce mini script réside dans la simplicité de requêtage, <em>$filtre = &laquo;&nbsp;(objectCategory=Computer)&nbsp;&raquo;</em>, qui, associé à la connexion simplifiée à l&rsquo;AD (remember vbs&#8230;) de powershell, donne accès très rapidement aux infos des objets AD.</p>
<p>On pourrait afficher bien plus d&rsquo;informations en considérant <em>$prop</em> comme une collection de texte, et y rajouter d&rsquo;autres noms de propriétés.</p>
<p>Je renvoie vers <em>adsiedit</em> pour la litanie des propriétés des objets AD&#8230;</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
