解释 Powershell { } 脚本块中的变量

2024-01-13

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

$strPath = get-location
$block = {& $strPath"\storage\bin\storage.exe" $args}
start-job -scriptblock $block -argumentlist "-f", $strPath"\storage\conf\storage.conf"

在前面的Question https://stackoverflow.com/questions/15767657/start-a-exe-in-the-background-with-parameters-in-a-powershell-script我发现我需要绝对路径。但是,如果您查看以下命令,则不会解释 $strPath 变量:

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...

我怎样才能解决这个问题?

编辑:我知道我需要将路径作为参数传递,如何传递?就像是:

$block = {& $args[0]"\storage\bin\storage.exe" $args[1] $args[2]}
start-job -scriptblock $block -argumentlist $strPath, "-f", $strPath"\storage\conf\storage.conf"

?


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

$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"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解释 Powershell { } 脚本块中的变量 的相关文章

  • 将组成员身份从 AD 中的一个用户复制到另一用户

    我正在尝试构建一个脚本 它将组成员身份从 AD 中的一个用户复制到另一个用户 我正在尝试使用 powershell 来自动执行此任务 然而 我在为用户创建支票时陷入困境 换句话说 当我将组成员身份从一个用户复制到另一个用户时 我希望能够在添
  • 获取 SecureString 作为纯文本参数

    我正在尝试将 SecureString 作为纯文本参数获取到命令行 PowerShell 我知道安全字符串的形式是什么 例如 字符串 abc 将是安全字符串 71289371289 然后 我想将 71289371289 作为参数传递给脚本
  • 为什么powershell会收集未捕获的值并将其作为数组返回

    尽管我认为以下代码应该返回单个值 但它返回一个数组 function Do Something 123 return 456 Do Something GetType will say Object 我了解到 如果我想避免这种情况 我必须将
  • PowerShell函数不会返回对象

    我有一个简单的函数来创建一个通用列表 function test genericType Type System Collections Generic List 1 type typedParameters System String c
  • Powershell Get-ChildItem 输出延迟? [复制]

    这个问题在这里已经有答案了 Powershell 版本信息如下 Name Value PSVersion 5 0 10586 494 PSCompatibleVersions 1 0 2 0 3 0 4 0 BuildVersion 10
  • 保留 PowerShell 函数返回类型

    在我的 PowerShell 脚本中 我需要使用以下签名调用 NET 方法 class CustomList System Collections Generic List
  • Conda 无法在 Powershell 中激活

    我已经在我的 Windows 10 笔记本电脑上安装了 anaconda 我正在尝试激活名为的Python环境pyenv 首先 我检查conda env list在我的笔记本电脑中 这是 powershell 上的输出 PS C Users
  • 在Powershell中,如何设置$?不将该值发送到管道?

    PS gt gci C lt
  • 在结果中只显示一列?

    这是一个简单的问题 但如何在下面的代码中选择特定的列 我只想显示 时间 列 而不显示其他任何内容 我尝试输入 FORMAT TABLE TIME 但它只是多次填充 TIME 而没有实际显示时间 server event Get Conten
  • 使用 PowerShell 检查 AD 中是否存在组

    我想为该组创建代码来检查该组是否存在 但是 我无法开始工作 因为它成功地将用户和组的部分成员仅添加到一个组中 而不是其他组 因为我设法在活动目录中创建一个组并从 csv 中读取 这是我的代码和结果 似乎在成功添加用户并添加组成员后我总是收到
  • powershell 优雅/干净地关闭 Internet Explorer

    我想干净 优雅地关闭互联网浏览器 taskkill 会关闭它 但是当重新打开它时 它会询问您是否要重新打开上一个会话 尝试 CloseMainWindow 方法 通过向其主窗口发送关闭消息来关闭具有用户界面的进程 Get Process i
  • Powershell 设置盖子关闭操作

    我想自动设置 Windows 7 在我的工作笔记本电脑上合上盖子时所执行的操作 因为每次登录时都会通过 GPO 重置该操作 我知道我可以在批处理脚本中使用 powercfg 命令来实现此目的 powercfg setacvalueindex
  • Powershell:启动进程不将参数传递给 cmd.exe

    这些是在 powershell 控制台 Windows 10 中运行的命令 username Username password Password securePassword ConvertTo SecureString password
  • Powershell Core 6 中的 HtmlWebResponseObject.ParsedHtml 替换

    我的目标是解析检索到的 html 文件Invoke WebRequest 如果可能的话 我想避免任何外部库 我面临的问题是Invoke WebRequest返回一个BasicHtmlWebResponseObject代替HtmlWebRes
  • 如何在一行中输出多个变量

    我试图确定 CSV 中的用户是否处于活动状态 此外 我想知道它们是否是服务帐户 用户帐户或基于 OU 的计算机帐户 一切都在膨胀 直到我尝试输出它 输出分为几行 每个变量一行 我希望输出在一行上 中间有逗号 这样我完成后就会有一个 CSV
  • 将 stdout 和 stderr 重定向到单独的文件时抑制 NativeCommandError 输出

    我有以下文件 test ps1 e test bat gt stdout txt 2 gt stderr txt test bat echo off echo write to stdout echo write to stderr gt
  • 自动递增 EC2 实例名称

    我在 Stackoverflow 上看到很多问题 询问是否有办法自动递增实例名称 例如 foo1 foo2 fooN 我想看看是否有办法在 Powershell 中执行此操作 我正在使用 AutoLaunchConfiguration AS
  • Azure 函数核心工具安装卡在 Visual Studio Code 中

    我创建了 Azure 函数应用程序来执行 powershell 脚本 想先在我的本地运行它来测试它 当我运行它时 无论有没有调试选项 都会出现一个弹出窗口 其中显示 您必须安装 Azure Functions 核心工具才能调试本地函数 当我
  • 从 C# 调用时无法识别 Powershell 命令

    这是这个的延续Question https stackoverflow com questions 66280000 powershell object returns null 66280138 noredirect 1 comment1
  • 将 Metro 应用程序固定到任务栏 Windows 10 Powershell

    以下代码将固定 Metro 应用程序以在给定 AUMID 的情况下启动 如果你改变 match Pin To Start 不幸的是 将匹配更改为 固定到任务栏 不起作用 这里发生了什么 function Pin Taskbar param

随机推荐