2015-10-31 23 views
8

Jestem nowy w PowerShell. Szukałem tej odpowiedzi w Internecie, ale bezskutecznie. Być może po prostu frazuję pytanie niepoprawnie.PowerShell: łączenie ciągów ze zmiennymi po cmdletie

Często znajduję się w sytuacji, w której muszę połączyć ciąg z zmienną po poleceniu cmdlet. Na przykład,

New-Item $archive_path + "logfile.txt" -type file 

Gdy próbuję uruchomić to, PowerShell wyrzuca następujący błąd:

New-Item: pozycyjną parametr nie można stwierdzić, że akceptuje argumentu '+'.

Czy nie łączę łańcucha poprawnie? Nie chcę zadeklarować innej zmiennej przed każdym poleceniem cmdlet, w którym to robię (np. $logfile = $archive_path + "logfile.txt", a następnie wykonaj New-Item $logfile -type file). Ponadto nie zawsze łączę ścieżkę pliku.

Odpowiedz

14

Otrzymujesz ten błąd, ponieważ analizator składni programu Powerhell widzi $archive_path, + i "logfile.txt" jako trzy oddzielne argumenty parametru, zamiast jako jeden ciąg znaków.

ująć konkatenacji ciągów w nawiasach () zmienić kolejność ocena:

New-Item ($archive_path + "logfile.txt") -Type file 

lub dołączyć zmienną w podwyrażenie:

New-Item "$($archive_path)logfile.txt" -Type file 

można przeczytać o trybie argumentu parsowania z Get-Help about_Parsing