PowerShell-VB - Pfad wird bei Parameterübergabe abgeschnitten
Hallo zusammen,
ich stoße momentan auf folgendes Problem:
in meinem VB.Net Programm rufe ich ein Powershell Skript auf und übergebe 2 Parameter die in VB vorher gefüllt werden:
in PowerShell wird das dann wie folgt verarbeitet:
Da der Pfad in $PfadText allerdings Leerzeichen enthält schneidet er mir den Pfad immer ab, obwohl ich ihn auch hier nochmal als String an eine Variable $Textdatei übergebe.
Der Vollständige Pfad hätte so aussehen sollen:
G:\FD_50_Bank\System\Prosoz Batch Verwaltung\Zahlliste\Archiv\2019\10-2019\2019-10-10\Gesamt.txt
Den Vorgang Debugge ich aus Visual Studio heraus, sodass ich den PS Code leider nicht direkt debuggen kann.
Meine Frage nun, wo liegt der Fehler? Ist er bei der Parameter Abfrage in PS ganz oben oder warum gibt er nicht den gesamten String rüber? In VB ist der Pfad noch in Ordnung.
Vielen Dank im Voraus.
ich stoße momentan auf folgendes Problem:
in meinem VB.Net Programm rufe ich ein Powershell Skript auf und übergebe 2 Parameter die in VB vorher gefüllt werden:
Dim Zahlliste As String = txtBoxFile.Text.ToString()
procStartInfo.Arguments = "-File " & Application.StartupPath & "\Skripts\ZahllistenErstellen.ps1 -PfadText " & Zahlliste & " -Speicherpfad " & PathToday
in PowerShell wird das dann wie folgt verarbeitet:
param(
[String]$PfadText,
[String]$Speicherpfad
)
Push-Location $(Split-Path $Script:MyInvocation.MyCommand.Path)
$DMYToday = Get-Date -Format "dd-MM-yyyy"
$TempPath = "$env:TEMP\Zahllisten\"
If (!(Test-Path $TempPath))
{
mkdir $TempPath
}
Else
{
Remove-Item -Path $TempPath -Force -Recurse
mkdir $TempPath
}
$Textdatei = "$PfadText"
$CSV = "$env:TEMP\Zahllisten\Zahlliste.csv" # in Temp Ordner generieren
$arrCols = @("Buchungnummer", "angew.", "Abwahl")
((Get-Content "$Textdatei") -replace '^\s+','' ) -replace ' *\t *',';' | `
convertfrom-csv -Delimiter ";" | `
select * -excludeproperty $arrCols | `
export-csv -path $CSV -delimiter ";" -Encoding utf8 -NoTypeInformation
Da der Pfad in $PfadText allerdings Leerzeichen enthält schneidet er mir den Pfad immer ab, obwohl ich ihn auch hier nochmal als String an eine Variable $Textdatei übergebe.
Der Vollständige Pfad hätte so aussehen sollen:
G:\FD_50_Bank\System\Prosoz Batch Verwaltung\Zahlliste\Archiv\2019\10-2019\2019-10-10\Gesamt.txt
Den Vorgang Debugge ich aus Visual Studio heraus, sodass ich den PS Code leider nicht direkt debuggen kann.
Meine Frage nun, wo liegt der Fehler? Ist er bei der Parameter Abfrage in PS ganz oben oder warum gibt er nicht den gesamten String rüber? In VB ist der Pfad noch in Ordnung.
Vielen Dank im Voraus.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 505311
Url: https://administrator.de/forum/powershell-vb-pfad-wird-bei-parameteruebergabe-abgeschnitten-505311.html
Ausgedruckt am: 28.04.2025 um 17:04 Uhr
8 Kommentare
Neuester Kommentar
Hi,
im VB.Net mit "" um den Pfad arbeiten
E.
Edit:
Für sowas empfiehlt sich dann auch String.Format
im VB.Net mit "" um den Pfad arbeiten
Dim Zahlliste As String = txtBoxFile.Text.ToString()
procStartInfo.Arguments = "-File """ & Application.StartupPath & "\Skripts\ZahllistenErstellen.ps1"" -PfadText """ & Zahlliste & """ -Speicherpfad """ & PathToday & """"
E.
Edit:
Für sowas empfiehlt sich dann auch String.Format
Dim Zahlliste As String = txtBoxFile.Text.ToString()
procStartInfo.Arguments = String.Format("-File ""{0}\Skripts\ZahllistenErstellen.ps1"" -PfadText ""{1}"" -Speicherpfad ""{2}"" ", Application.StartupPath, Zahlliste, PathToday)

Na überall Anführungszeichen vergessen
, das sollte man doch eigentlich wissen wenn man Pfade in der Konsole als Parameter übergibt die Leerzeichen enthalten!
edit too late
procStartInfo.Arguments = "-File """ & Application.StartupPath & "\Skripts\ZahllistenErstellen.ps1"" -PfadText """ & Zahlliste & """ -Speicherpfad """ & PathToday & """"
edit too late

Aber wie er das oben im Bild erzeugt ist mir schleierhaft und das nur weil der letztes Backslash über VB kommt ???
Weil der Backslash in der CMD in der du ja den PS Befehl ausführst ein Escape-Zeichen ist und du damit das Anführungszeichen als gewollten String kennzeichnest, und dieser ist nunmal in einem Pfad illegal!https://www.robvanderwoude.com/escapechars.php
Setze den Pfad in den Argumenten in 'single quotes' bzw. Hochkommas oder escape ihn mit \\ dann ist das egal.