2016-10-13 3 views
2

Я пытаюсь сохранить путь к папке в качестве переменной в PowerShell, так что я могу повторно использовать этот путь для различных задач на протяжении всего моего сценария:Использование переменной в пути выполнения

# Local storage location  
$env:localTempFolder="TEMP" 

# Download some executable and store it in the local temp folder 
$env:downloadURL="http://somepage.com/foo.exe" 
Invoke-WebRequest $env:downloadURL -OutFile $env:localTempFolder/foo.exe 

# Execute the executable using the $localTempFolder variable 
./$env:localTempFolder/foo.exe 

Последнее утверждение дает следующее сообщение об ошибке :

.\$env:localTempFolder\.exe : The term '.\$env:pci_TEMP\foo.exe' is not 
recognized as the name of a cmdlet, function, script file, or operable 
program. Check the spelling of the name, or if a path was included, verify 
that the path is correct and try again. 

At line:1 char:1 
+ .\$env:pci_TEMP\foo.exe 
+ ~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : ObjectNotFound: (.\$env:localTempFolder\foo.exe:String) [], CommandNotFoundException 
+ FullyQualifiedErrorId : CommandNotFoundException 

Я попытался добавить различные комбинации скобок, кавычек и т.д. до последнего заявления, но не похоже, чтобы получить это право. Что я делаю не так, и куда я иду отсюда?

+4

'& ./$ ENV: localTempFolder/foo.exe' – PetSerAl

+0

@PetSerAl, ну, это было достаточно легко! Спасибо! Не могли бы вы опубликовать это как ответ? –

+1

Я бы сказал, что это [дубликат] (http://stackoverflow.com/q/33415302), вместо того, чтобы публиковать такой же ответ здесь. Вам нужно вызвать оператор для расширения переменных в команде, иначе он будет интерпретироваться как константная (не расширяемая) строка. – PetSerAl

ответ

1

PetSerAl pointed it out, Вы являетесь пользователем Отсутствует оператор сотовой связи&. Я также хотел бы предложить вам использовать Join-Path командлет, чтобы объединить путь:

& (Join-Path $env:localTempFolder 'foo.exe') 
+0

Благодарим вас за ответ! Однако почему я должен использовать командлет Join-Path только для просто конкатенации их напрямую? –

+1

Его просто подсказка. В этом примере вы можете не использовать его, но в целом я использую его, поэтому мне не нужно беспокоиться о концевых слэшах. –

+0

Okey, приятно знать! Спасибо за уточнение. –

Смежные вопросы