2016-11-29 3 views
0

Wenn Sie an einem einfachen Skript arbeiten, um Arbeitsstationsnamen aus einer Datei .csv abzurufen, öffnen Sie einen Ordner auf dieser Arbeitsstation. Ich habe immer wieder Probleme damit, wie man PowerShell dazu bringt, den Dateipfad nicht zu teilen. Bisher habe ich versucht:Leerzeichen im Dateipfad

Einfache Anführungszeichen: '\\$results\c$\direc\Desktop\Start Menu\Programs\Startup'

Regular Zitat: "\\$results\c$\direc\Desktop\Start Menu\Programs\Startup"

doppelte Anführungszeichen: ""\\$results\c$\direc\Desktop\Start Menu\Programs\Startup""

Graviszeichen vor dem Raum: "\\$results\c$\direc\Desktop\Start` Menu\Programs\Startup"

8.3 Name: "\\$results\c$\direc\Deskto~1\StartM~1\Progra~1\Startu~1"

Hier ist mein Code:

$inputFile = "C:\Users\$env:username\Desktop\workstations.csv" 
$results = @() 
Import-CSV -Path $inputFile -Header Workstations | % { 
    Invoke-Item -Path "\\$results\c$\JHMCIS\Desktop\Start Menu\Programs\Startup" 
} 

Alles funktioniert perfekt, bis es den Dateipfad liest. Dann tritt ein Fehler zurück, der besagt, dass der Pfad nicht existiert.

Antwort

2

Ihre String-Formatierung ist in Ordnung, das Problem ist, dass Sie gerade ein leeres Array mit dem Namen $results erstellt haben und dann fügen Sie das an die Zeichenfolge, wenn Sie Ihren Aufruf ausführen. ändern Ihre letzte Zeile zu

% {Invoke-Item -Path "\\$($_.Workstations)\c$\JHMCIS\Desktop\Start Menu\Programs\Startup"}

Beachten Sie, dass die oben geht davon aus, dass die Datei keine Überschriften hat und nur eine einzige Spalte, die Sie den Namen definieren die Verwendung des -header param auf Ihrem Import-CSV

+0

Gott, i bemerkte nicht einmal, dass er leere Variable dort verwendete xD – 4c74356b41

+0

Perfekt, vielen Dank. Ich dachte, das Array wurde benötigt, um die Workstation-Namen aus der Datei zu ziehen. – Ozar