Jeśli chcesz połączyć dwa ciągi do ścieżki pliku, używam join-path
tak:Jak używać łączenia ścieżek, aby połączyć więcej niż dwa ciągi w ścieżkę pliku?
$path = join-path C: "Program Files"
write-host $path
która drukuje C:\Program Files"
. Jeśli chcę to zrobić dla więcej niż dwóch ciągów jednak:
$path = join-path C: "Program Files" "Microsoft Office"
write-host $path
PowerShell zgłasza błąd:
Join-Path : A positional parameter cannot be found that accepts argument 'Micro
soft Office'.
At D:\users\ma\my_script.ps1:1 char:18
+ $path = join-path <<<< C: "Program Files" "Microsoft Office"
+ CategoryInfo : InvalidArgument: (:) [Join-Path], ParameterBindi
ngException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell
.Commands.JoinPathCommand
Próbowałem za pomocą tablicy ciągów:
[string[]] $pieces = "C:", "Program Files", "Microsoft Office"
$path = join-path $pieces
write-host $path
ale PowerShell skłania mnie aby wprowadzić ścieżkę potomną (ponieważ nie podałem argumentu -childpath
), np. "somepath", a następnie tworzy trzy ścieżki plików, które również nie są poprawne.
Z pewnością jest to najbardziej zwięzła forma i obsługuje separatory ścieżek i końcowe/końcowe ukośniki na fragmentach ścieżek, których nie akceptuje aktualnie zaakceptowana odpowiedź (podstawowa konkatenacja łańcuchów). –
Za wykonanie powyższego polecenia w moim pakiecie uprawnień otrzymuję ten błąd - nie można znaleźć przeciążenia dla "Połącz" i liczby argumentów: "3". W linii: 1 znak: 19 + [io.path] :: połącz <<<< ('c: \', 'foo', 'bar') + CategoryInfo: NotSpecified: (:) [], MethodException + FullyQualifiedErrorId: MethodCountCouldNotFindBest – Aamol
@Aamol Jakiej wersji CLR używasz ('$ PSVersionTable')? Czy '[oktath] :: combine ([string []] ('c: \', 'foo', 'bar'))' działa? – mtman