2016-04-13 4 views
1

Рассмотрим следующийCopy Переменная Значение в блоке Script

$y = 'foo' 
$x = { 
    write-host $y 
} 

powershell -NoProfile -ExecutionPolicy Bypass -Command "$x" 

Это не будет печатать Foo, но я хотел бы, чтобы это. Есть ли способ заставить powershell встроить эти переменные?

+0

Это выглядит как проблема X-Y для меня. Что вы пытаетесь достичь с этим? Вам нужно запустить скриптблока как отдельный процесс? Зачем? –

+0

Поскольку ресурсы сценариев DSC сломаны как ад и не работают правильно, если вы не запускаете их в отдельных процессах. – Jeff

ответ

0

Один из вариантов:

$y = 'foo' 
$x = [scriptblock]::Create("Write-Host $y") 

powershell -NoProfile -ExecutionPolicy Bypass -Command "$x" 
+0

, поэтому я в основном должен обрабатывать весь блок как строку ... – Jeff

+0

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

+0

ИМХО, дело не столько в том, чтобы рассматривать его как строку, сколько распознавание, потому что это исполняемый аргумент cmd, это строка. – mjolinor