<p>Remarque : La commande dans la question utilise <code>Start-Process</code>, ce qui empêche la capture directe de la sortie du programme cible. En général, <a href="https://stackoverflow.com/a/51334633/45375"><strong>n’utilisez pas <code>Start-Process</code> pour exécuter des applications console de manière synchrone - invoquez-les simplement <em>directement</em></strong></a>, comme dans n’importe quel shell. Cela maintient les flux de sortie de l’application connectés aux flux de PowerShell, permettant de capturer leur sortie par simple affectation <code>$output = netdom ...</code> (et avec <code>2></code> pour la sortie <em>stderr</em>), comme détaillé ci-dessous.</p>
<p><strong><em>Fondamentalement</em>, la capture de la sortie des programmes <em>externes</em> fonctionne de la même manière qu’avec les commandes natives de PowerShell</strong> (vous voudrez peut-être un rappel sur <a href="http://ss64.com/ps/call.html">comment exécuter des programmes externes</a> ; <code><command></code> est un <em>espace réservé</em> pour toute commande valide ci-dessous) :</p>
<p># IMPORTANT:</p>
<h1><a name="p-39066-command-is-a-placeholder-for-any-valid-command-eg-1" class="anchor" href="#p-39066-command-is-a-placeholder-for-any-valid-command-eg-1" aria-label="Heading link"></a> is a <em>placeholder</em> for any valid command; e.g.:</h1>
<h1><a name="p-39066-cmdoutput-get-date-2" class="anchor" href="#p-39066-cmdoutput-get-date-2" aria-label="Heading link"></a>$cmdOutput = Get-Date</h1>
<h1><a name="p-39066-cmdoutput-attribexe-r-readonlytxt-3" class="anchor" href="#p-39066-cmdoutput-attribexe-r-readonlytxt-3" aria-label="Heading link"></a>$cmdOutput = attrib.exe +R readonly.txt</h1>
<p>$cmdOutput = # captures the command’s success stream / stdout output</p>
<pre><code class="lang-auto">
Notez que$cmdOutput**reçoit un *tableau* d'objets si<command>` produit plus d'un objet de sortie**, ce qui dans le cas d'un programme externe signifie un tableau de chaînes[1] contenant les lignes de sortie du programme.
Si vous voulez vous assurer que le résultat est toujours un tableau - même si un seul objet est produit, contraignez le type de la variable en tableau ([object[]]), ou encadrez la commande dans @(...), l'opérateur de sous-expression de tableau :[2]
`[array] $cmdOutput = <command>
$cmdOutput = @(<command>) # alternative
</code></pre>
<p>En revanche, si vous voulez que <code>$cmdOutput</code> reçoive toujours une <strong><em>seule</em> chaîne - potentiellement multi-ligne -</strong>, utilisez <a href="https://learn.microsoft.com/powershell/module/microsoft.powershell.utility/out-string"><code>Out-String</code></a>, bien que notez qu’<strong>un <em>saut de ligne final</em> est invariablement ajouté</strong> ([GitHub issue</p>
<p><em>(Réponse tronquée)</em></p>