Loguer facilement avec PowerShell

Lorsque vous écrivez un script PowerShell, vous voulez garder une trace de son exécution. Les raisons peuvent être multiples : étudier les éventuelles erreurs, savoir comment s’est déroulée une exécution planifiée, comprendre ce qu’il se passe sur un environnement sur lequel vous n’avez pas la main, etc.

Nativement PowerShell met à votre disposition un couple de commande : Start-Transcript et Stop-Transcript. Cela permet de dupliquer les lignes de l’invite de commande dans un fichier en rajoutant un entête et un pied de page horodatés.

"avant le transcript"
Start-Transcript "c:Transcript.txt"
dir
Stop-transcript
"après le transcript"</pre>

Le fichier de log ne contient que les lignes comprises entre les *-Transcript.

<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-plain" data-lang="plain">**********************
Windows PowerShell Transcript Start
Start time: 20141029191656
Username  : sps2010ghislain
Machine      : sps2010 (Microsoft Windows NT 6.1.7601 Service Pack 1)
**********************
Transcript started, output file is c:Transcript.txt

    Directory: C:Users&amp;#092;&amp;#048;0svcSPFarmDevDesktop

Mode                LastWriteTime     Length Name                                                                   
----                -------------     ------ ----                                                                   
d----        19/08/2014     17:46            Governance                                                             
d----        03/06/2013     17:18            ILSpy_Master_2.1.0.1603_RTW_Binaries                                   
d----        05/06/2014     14:14            Permission Reporting                                                  
d----        04/02/2014     14:32            SharePoint Manager 2010                                                
-a---        22/05/2013     10:02      90624 AutoSPInstaller.zip           
-a---        29/04/2014     14:31   12649871 PowerGUI.3.8.0.129.zip                                                 
-a---        11/12/2013     10:52     290816 SharePointLogViewer.exe                                                
-----        11/08/2011     21:38     557056 smtp4dev.exe                                                           
-a---        29/10/2014     18:16         67 transcript.ps1                                                                 
**********************
Windows PowerShell Transcript End
End time: 20141029191656
**********************&lt;/pre&gt;

Une autre méthode plus _artisanale_ mais qui vous offre un meilleur découpage du temps :

&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;$logFileName = &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;c:log.txt&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#66d9ef&#34;&gt;Function&lt;/span&gt; Log($text) {
    Write-Host $text
    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;[&amp;#34;&lt;/span&gt; + $(Get-Date &lt;span style=&#34;color:#f92672&#34;&gt;-f&lt;/span&gt; o) + &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;] [Info] : &amp;#34;&lt;/span&gt; + $text &amp;amp;gt;&amp;amp;gt; $logFileName
}

&lt;span style=&#34;color:#66d9ef&#34;&gt;Function&lt;/span&gt; LogSuccess($text) {
    Write-Host $text -foregroundcolor Green
    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;[&amp;#34;&lt;/span&gt; + $(Get-Date &lt;span style=&#34;color:#f92672&#34;&gt;-f&lt;/span&gt; o) + &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;] [Success] : &amp;#34;&lt;/span&gt; + $text &amp;amp;gt;&amp;amp;gt; $logFileName
}

&lt;span style=&#34;color:#66d9ef&#34;&gt;Function&lt;/span&gt; LogError($text) {
    Write-Host $text -foregroundcolor Red
    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;[&amp;#34;&lt;/span&gt; + $(Get-Date &lt;span style=&#34;color:#f92672&#34;&gt;-f&lt;/span&gt; o) + &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;] [Error] : &amp;#34;&lt;/span&gt; + $text &amp;amp;gt;&amp;amp;gt; $logFileName
}&amp;lt;/pre&amp;gt;

Avec ça, vous êtes paré.

**Références &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt;**

[Start-Transcript][1]

[Stop-Transcript][2]

 [1]&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt; http&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt;//technet.microsoft.com/fr-fr/library/hh849687.aspx
 [2]&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt; http&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt;//technet.microsoft.com/fr-fr/library/hh849688.aspx&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</code></pre></div>