Powershell 使用启动作业调用脚本时使用参数 我正在编写一个脚本,该脚本必须在运行期间更改用户才能访问网络文件夹。我已经知道了如何使凭据工作,但现在无法理解如何将参数传递给正在调用的第二个脚本。我目前拥有的代码: $myJob = Start-Job -ScriptBlock {& "\\my\folder\path\script.ps1" -serverName $serverName -serverInstance $serverInstance} -Credential $cred $myJob | Wait-Job $myJob | Receive-Job -Keep

Powershell 使用启动作业调用脚本时使用参数 我正在编写一个脚本,该脚本必须在运行期间更改用户才能访问网络文件夹。我已经知道了如何使凭据工作,但现在无法理解如何将参数传递给正在调用的第二个脚本。我目前拥有的代码: $myJob = Start-Job -ScriptBlock {& "\\my\folder\path\script.ps1" -serverName $serverName -serverInstance $serverInstance} -Credential $cred $myJob | Wait-Job $myJob | Receive-Job -Keep,powershell,Powershell,我需要将serverName和serverInstance变量传递给Start Job正在运行的脚本,同时仍然能够使用凭据。有办法做到这一点吗 我已经调查了Invoke命令和Invoke表达式,但它们都不适合这种情况。Invoke命令不适用于远程计算机/驱动器,Invoke表达式不适用于凭据。我尝试了提供的答案,但也无法正确地传递参数 任何帮助都是非常感谢的,因为我已经在这个问题上工作了几个小时了。我确信我遗漏了一些明显的内容。如果您使用的是PowerShell版本3或更高版本,则可以使用范围修

我需要将
serverName
serverInstance
变量传递给
Start Job
正在运行的脚本,同时仍然能够使用凭据。有办法做到这一点吗

我已经调查了
Invoke命令
Invoke表达式
,但它们都不适合这种情况。Invoke命令不适用于远程计算机/驱动器,Invoke表达式不适用于凭据。我尝试了提供的答案,但也无法正确地传递参数


任何帮助都是非常感谢的,因为我已经在这个问题上工作了几个小时了。我确信我遗漏了一些明显的内容。

如果您使用的是PowerShell版本3或更高版本,则可以使用范围修饰符使用

$myJob = Start-Job -ScriptBlock {& "\\my\folder\path\script.ps1" -serverName $using:serverName -serverInstance $using:serverInstance}
也可以在远程命令中使用局部变量,但必须指明该变量是在本地会话中定义的。从Windows PowerShell 3.0开始,可以使用“使用范围”修改器在远程命令中标识局部变量。使用的语法如下所示:
$Using:

如果您使用的是PowerShell版本2,则需要使用
-ArgumentList
参数,然后修改scriptblock以接受传递的参数。关于一种方法的评论


有关更多信息,请参见。

您可以在此处使用
using
关键字:
-serverName$using:serverName-serverInstance$using:serverInstance
。或者
启动作业-ArgumentList$var1,$var2-ScriptBlock{$args[0],$args[1]}
@adminings谢谢!这非常有效。我从来没有遇到过使用
$,所以我有一些新的东西需要研究和学习。