首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解释Powershell {} scriptblock中的变量

解释Powershell {} scriptblock中的变量
EN

Stack Overflow用户
提问于 2013-04-03 00:18:25
回答 1查看 2K关注 0票数 2

我有一个外壳脚本,它应该在后台启动一个.exe:

代码语言:javascript
运行
复制
$strPath = get-location
$block = {& $strPath"\storage\bin\storage.exe" $args}
start-job -scriptblock $block -argumentlist "-f", $strPath"\storage\conf\storage.conf"

在前面的Question中,我发现我需要绝对路径。但是,如果您查看该命令,则不会解释$strPath变量:

代码语言:javascript
运行
复制
PS Q:\mles\etl-i_test> .\iprog.ps1 --start1
Start Storage

Id              Name            State      HasMoreData     Location             Command
--              ----            -----      -----------     --------             -------
37              Job37           Running    True            localhost            & $strPath"\storage\bi...

我该如何解决这个问题呢?

编辑:我知道我需要将路径作为参数传递,以及如何传递?类似于:

代码语言:javascript
运行
复制
$block = {& $args[0]"\storage\bin\storage.exe" $args[1] $args[2]}
start-job -scriptblock $block -argumentlist $strPath, "-f", $strPath"\storage\conf\storage.conf"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-03 00:33:20

脚本块的内容将在PowerShell.exe的另一个实例中执行(作为作业),该实例不能访问您的变量。这就是为什么你需要在Start-Job参数列表中发送它们的原因。发送作业作为参数运行所需的所有数据。到storage.exe的完整路径,例如,

代码语言:javascript
运行
复制
$path = (Get-Location).Path
$block = {& $args[0] $args[1] $args[2]}

start-job -scriptblock $block -argumentlist `
    "$path\storage\bin\storage.exe" `
    "-f", `
    "$path\storage\conf\storage.conf"
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15769126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档