До сих пор вы видели пару ответов и комментарии, показывающие, как сделать именно то, что вы просили. Но я должен повторить комментарий @ BillStewart: какова ваша истинная цель?
Если у вас есть возможность выполнить произвольный PowerShell, который у вас есть в строке, вы можете, конечно, вызвать powershell.exe, как вы видели в нескольких ответах и комментариях. Однако, если вы это сделаете, обязательно включите параметр -noprofile
для повышения эффективности. И для еще большей эффективности вы можете использовать Invoke-Command
без необходимости разворачивать целую отдельную среду PowerShell, например.
Invoke-Command -ScriptBlock ([Scriptblock]::Create('echo $args[0]')) -arg 123, 456
Если, с другой стороны, вы хотите, чтобы выполнить кусок PowerShell (не в строке, но только отдельно в сценарии по какой-либо причине), вы можете упростить это:
Invoke-Command -ScriptBlock {echo $args[0]} -arg 123, 456
Всякий раз, когда у вас есть выбор, избегайте манипулирования строками как исполняемый код (на любом языке)! Часто используемый способ сделать это в Powershell с Invoke-Expression
, который я упоминаю только , только, чтобы указать вам на просветительскую статью Invoke-Expression considered harmful.
Из PowerShell вы можете сделать 'powershell.exe -command {echo $ args [0]} -args 123,456' –
Что вызывает вопрос? –