2017-12-19 4 views
0

ich eine Textdatei mit mehreren DFS-Aktien hat, die wie folgt aussieht:Test-UNC-Pfade aus einer Textliste und schreiben jede Zeile mit seinem Ergebnis

\\\computer1\dfsshare1 
\\\computer2\dfsshare2 
\\\computer3\dfsshare3 
\\\computer4\dfsshare4 
\\\computer5\dfsshare5 

ich auf jeden von ihnen zu Test-Path will eine Foreach-Object Funktion , und listet dann jede Zeile + = + ihr Ergebnis (richtig oder falsch) auf und fügt am Ende der Zeile ein @ hinzu, das alle auf dem Bildschirm angezeigt werden sollen.

Getestet habe ich die folgenden:

$DFSList = "G:\DFS-MONITOR\DFS-List.txt"  
Get-Content $DFSList | Foreach-Object {Write-host $_'=' Test-Path $_ '@'} 

Aber könnte die Test-Path arbeiten nach dem Write-Host (nur ohne sie) nicht erhalten.

Das erwartete Ergebnis soll in etwa so sein, ist die 4. DFS-Freigabe unter der Annahme nicht zur Verfügung:

\\computer1\[email protected] 
\\computer2\[email protected] 
\\computer3\[email protected] 
\\computer4\[email protected] 
\\computer5\[email protected] 
+0

Warum 'Write-Host'? –

+0

Um auf dem Bildschirm zu schreiben. Es könnte alles andere sein, was auf den Bildschirm schreibt. T-Objekt, Schreib-Ausgang ... etc. –

+0

Wrap 'Test-Path' in Parens – TheIncorrigible1

Antwort

1

In Powershell Wenn Sie die Ergebnis/Ausgabe einen Befehl/script übergeben mögen/Cmdlet zu einem anderen Befehl/Skript/Cmdlet, müssen Sie den Befehl um die Ergebnisse in Klammern:

+0

Vielen Dank. Das Seltsame ist, dass die Ausgabe von Test-Path mir immer ein Leerzeichen vor dem Ergebniswort "true" gibt. Gibt es einen besseren Weg, diesen Raum zu vermeiden? Ich wollte es direkt vor dem "=" Zeichen haben. –

+1

Sie können dies mit dem '-f'-Operator tun. 'Write-Host (" {0} = {1} @ "-f $ _, (Test-Pfad $ _)'. Ich möchte Sie dringend bitten, [SS64 PowerShell-Abschnitt] als Lesezeichen zu speichern (https://ss64.com/ps /) als schnelle PowerShell-Referenz. –

Verwandte Themen