gpt4 book ai didi

powershell - Start-Job 脚本 block 传递变量

转载 作者:行者123 更新时间:2023-12-04 01:21:34 25 4
gpt4 key购买 nike

我有一个 PowerShell 脚本启动另一个脚本并将参数传递给它。我使用 Start-Job 执行此操作,因为我不想等到第二个脚本完成:

脚本A:

start-job -name EnableAutoUnlock -scriptblock {Invoke-Command -script { C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "\\Path\To\Script\EnableAutoUnlock.ps1" $VolumeDriveLetter }}

脚本B:

    [CmdletBinding()]
Param (
[Parameter(Position=0)]
[string]$drive
)
<do stuff with $drive here>

$VolumeDriveLetter 只是一个被处理的盘符,即“C:”

不幸的是,尽管 $VolumeDriveLetter 具有预期的值,但通过变量传递参数不起作用,但键入它确实可以正常工作。

作品:

start-job -name EnableAutoUnlock -scriptblock {Invoke-Command -script { C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "\\Path\To\Script\EnableAutoUnlock.ps1" C: }}

不起作用

$VolumeDriveLetter = "C:"

start-job -name EnableAutoUnlock -scriptblock {Invoke-Command -script { C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "\\Path\To\Script\EnableAutoUnlock.ps1" $VolumeDriveLetter }}

编辑:ScriptB 将传递的变量输出为空

要传递变量,我缺少什么?

最佳答案

您可以使用 using 前缀来访问脚本 block 中的值:

$VolumeDriveLetter = "C:"

start-job -name EnableAutoUnlock -scriptblock {Invoke-Command -script { C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "\\Path\To\Script\EnableAutoUnlock.ps1" $using:VolumeDriveLetter }}

或者您使用-ArgumentList 参数并将参数传递给脚本 block :

start-job -name EnableAutoUnlock -scriptblock { 
Param($VolumeDriveLetter)
Write-Host $VolumeDriveLetter
} -ArgumentList $VolumeDriveLetter

关于powershell - Start-Job 脚本 block 传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40484676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com