У меня есть скрипт, который должен начать EXE-файл в фоновом режиме:Интерпретируйте переменной в Powershell {} ScriptBlock
$strPath = get-location
$block = {& $strPath"\storage\bin\storage.exe" $args}
start-job -scriptblock $block -argumentlist "-f", $strPath"\storage\conf\storage.conf"
В предыдущем Question я обнаружил, что мне нужно абсолютные пути. Однако переменная $ strPath не интерпретируется, если вы посмотрите на команду:
PS Q:\mles\etl-i_test> .\iprog.ps1 --start1
Start Storage
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
37 Job37 Running True localhost & $strPath"\storage\bi...
Как я могу это исправить?
Редактировать: Я понимаю, что мне нужно передать путь в качестве аргумента и как? Что-то вроде:
$block = {& $args[0]"\storage\bin\storage.exe" $args[1] $args[2]}
start-job -scriptblock $block -argumentlist $strPath, "-f", $strPath"\storage\conf\storage.conf"
?
В '$ block' переменная' $ strPath' пуста, поскольку скриптовый блок - это совершенно новый скрипт. Ваш скриптовый блок должен принимать аргументы. О да, [Не используйте венгерскую нотацию] (http://windowsitpro.com/blog/what-do-not-do-powershell-part-5). Не огромная сделка, но практика делает совершенным. –