【发布时间】:2017-03-13 13:30:31
【问题描述】:
由于不应该影响当前问题的原因,我需要运行一个脚本,在命令之外,在不同的 PowerShell 实例中使用定义和参数,而不使用 PSSession、后台作业或文件(我有 PSSession 的工作示例,后台作业和 .ps1 文件,我知道它们可以替换我正在尝试做的事情,但我还需要一个带有 powershell.exe -Command 的工作示例。
我查看了help for powershell.exe,它应该支持我正在尝试做的事情,但我无法让它与我需要的所有东西一起工作(脚本定义和命令之外的参数)。
作为一个工作示例,我有:
$abc = powershell.exe -WindowStyle Hidden -NonInteractive -Command {Invoke-Command -ScriptBlock {
param($a1,$a2)
$a1*6
$a2*5} -Argumentlist @(8,'abc')}
我至少需要能够将-ArgumentList 移动到命令之外,例如:
$abc = powershell.exe -WindowStyle Hidden -NonInteractive -Command {Invoke-Command -ScriptBlock {
param($a1,$a2)
$a1*6
$a2*5} -Argumentlist @($args[0],$args[1])} -args @(8,'abc')
最好有:
$script={
param($a1,$a2)
$a1*6
$a2*5}
$args=@(8,'abc')
$abc = powershell.exe -WindowStyle Hidden -NonInteractive -Command $script -args $args
我已经看过以下类似的问题,但找不到我需要的:
【问题讨论】:
-
你的用例是什么?
-
删除
-WindowStyle Hidden。 -
在我看来您是在 PowerShell 中运行它,那么为什么您认为您需要
powershell.exe -Command而不是简单地使用Invoke-Command? -
@Bill_Stewart 我正在测试一个 API,我需要多次执行一个命令,但是由于一些开发人员不想接触的遗留代码,我每个实例只能执行一次命令,因此需要在新实例中执行命令/脚本。
-
@Ansgar Wiechers 感谢您使问题更具可读性。是的,我从 PowerShell 运行它,但是 Invoke-Command 在同一个实例中执行,并且如前所述,由于我无法控制的原因,我需要多次执行一些命令。
标签: powershell parameter-passing