Powershell 提交参数以调用表达式

Powershell 提交参数以调用表达式,powershell,Powershell,我已经编写了一个名为C:\Script\Scrip1.ps1的Powershell脚本示例 下面是代码 Function Testfunction(){ Param( $Node1, $Node2 ) $SQLNodes = @($Node1, $Node2) foreach ($node in $SQLNodes) { #Some code below is dummy code "$node" | Out-File C:\File1.txt -Append } }

我已经编写了一个名为C:\Script\Scrip1.ps1的Powershell脚本示例 下面是代码

Function Testfunction(){

Param(
$Node1,
$Node2
)

$SQLNodes = @($Node1, $Node2)
foreach ($node in $SQLNodes)
{

#Some code below is dummy code
"$node" | Out-File C:\File1.txt -Append
}
}
当我尝试使用调用表达式调用此函数时,它不起作用

使用下面的方法没有运气

$string = 'C:\Script\Script1.ps1 Testfunction -Node1 "test" -Node2 "test2"'
Invoke-Expression $string
我打开了一个PS窗口,在命令下运行,运气不好

.\Script1.ps1 -Node1 Hello -Node2 Aquib

我在C:\file1下没有看到任何file1


当我打开脚本文件,然后运行函数时,它确实工作并生成文件。

在场景中不需要使用
调用表达式

如果要使
Testfunction
在当前范围内可见,则需要“点源”脚本:

PS C:\> . C:\Scripts\Script1.ps1
这将在当前作用域中执行
Script.ps1
,它将在当前作用域中定义
Testfunction
,然后您可以运行该函数:

PS C:\> Testfunction -Node1 "Test1" -Node2 "Test2"
另一种选择是跳过将
Testfunction
定义为脚本中的函数,只将其用作脚本本身:

# Script file
param(
  $Node1,
  $Node2
)

$SQLNodes = @($Node1, $Node2)
foreach ($node in $SQLNodes) {
  #Some code below is dummy code
  "$node" | Out-File C:\File1.txt -Append
}
如果将脚本命名为
Testfunction.ps1
,则可以通过键入脚本名称来运行它:

PS C:\> C:\Scripts\Testfunction.ps1 -Node1 "Test1" -Node2 "Test2"

您不需要在场景中使用
调用表达式

如果要使
Testfunction
在当前范围内可见,则需要“点源”脚本:

PS C:\> . C:\Scripts\Script1.ps1
这将在当前作用域中执行
Script.ps1
,它将在当前作用域中定义
Testfunction
,然后您可以运行该函数:

PS C:\> Testfunction -Node1 "Test1" -Node2 "Test2"
另一种选择是跳过将
Testfunction
定义为脚本中的函数,只将其用作脚本本身:

# Script file
param(
  $Node1,
  $Node2
)

$SQLNodes = @($Node1, $Node2)
foreach ($node in $SQLNodes) {
  #Some code below is dummy code
  "$node" | Out-File C:\File1.txt -Append
}
如果将脚本命名为
Testfunction.ps1
,则可以通过键入脚本名称来运行它:

PS C:\> C:\Scripts\Testfunction.ps1 -Node1 "Test1" -Node2 "Test2"

只是不要使用
调用表达式
。是的。所以我想创建一个主powershell文件,从中运行3PS1文件,并从主文件中为它们提供参数。但是调用函数似乎不起作用。只是不要使用
Invoke Expression
。是的。所以我想创建一个主powershell文件,从中运行3PS1文件,并从主文件中为它们提供参数。但是调用函数似乎不起作用。这是一个很好的替代方案。我正在创建一个主PS1,在那里我将运行3个不同的PS1,因此我调用了PS文件。谢谢:)这是一个很好的替代方案。我正在创建一个主PS1,在那里我将运行3个不同的PS1,因此我调用了PS文件。谢谢:)