Powershell 将变量传递给启动作业

2023-12-11

在 powershell 中,我想学习调用变量来启动作业的最佳方法,这样我就不必编辑每个服务器的脚本,因为它将根据我放置脚本的客户端而具体化。

$Servername = 'Server1'
    $pingblock = {
      pathping $servername | Out-File C:\client\PS\ServerPing.TXT
    }
    start-job $pingblock

当我运行上面的代码时,我只是得到一个带有帮助的文件,就好像我忘记了指定 $servername 一样。


来补充基思·希尔的有用回答 with a PSv3+ 替代方案:

The $using:范围修饰符可用于引用传递给的脚本块内调用者范围内的变量值Start-Job,作为传递参数的替代方法(默认情况下,作为后台作业执行的脚本块不会not查看调用者的任何变量或其他定义):

$Servername = 'Server1'
Start-Job { "Target: " + $using:ServerName } | Receive-Job -Wait -AutoRemoveJob

上面的结果是:

Target: Server1

Note:

  • 相同的技术可用于:

    • Invoke-Command for remote执行-参见这个问题.

    • Start-ThreadJob,默认情况下在 PowerShell (Core) v6+ 中可用,可在 Windows PowerShell 中按需安装。

    • ForEach-Object -Parallel,仅在 PowerShell (Core) v7+ 中可用。

  • Note that, as with -ArgumentList (-Args), it is only variable values that are being passed, not the variables themselves; that is, you cannot modify the caller's variables.[1]


[1] However, the thread-based concurrency features - Start-ThreadJob and ForEach-Object Parallel - permit indirect modification, namely if the variable value at hand happens to be an instance of a (mutable) .NET reference type, such as a hashtable, in which case the object that that the variable "points to" can be modified (if it is mutable). Note that taking advantage of that requires additional, nontrivial effort to make the concurrent modifications thread-safe, such as by use of concurrent (synchronized) collections - see this answer - and/or explicit locking of individual objects - see this answer.

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

Powershell 将变量传递给启动作业 的相关文章

随机推荐

  • 如何从asynctask返回一个对象到android中的主类

    我想将文档返回到我的主类 但即使使用全局变量也不起作用 这是因为 asynctask 没有完成工作我认为有没有解决方案可以从 asynctask 获取对象 我已经尝试过 onPostExecute 中的矫揉造作 但如果我在 asynctas
  • 如何在 Angular 2 中取消 HTTPRequest?

    如何在 Angular 2 中取消 HTTPRequest 我只知道如何拒绝请求承诺 return new Promise resolve reject gt this currentLoading set url resolve reje
  • C++ std::map 保存任何类型的值

    基本上我想要 MyClass 拥有一个将字段名称 字符串 映射到任何类型的哈希图 值 为此 我编写了一个单独的 MyField 类来保存类型和值信息 这是我到目前为止所拥有的 template
  • python虚拟环境中的标准库在哪里?

    我使用的是Ubuntu系统 默认安装了python 3 5 当我使用venv模块来创建虚拟环境 我在虚拟环境中找不到标准库 只能找到 python 解释器的二进制文件 但是 当我切换到使用此虚拟环境时 我可以在 python 脚本中导入标准
  • 使用“dplyr::group_by()”获取多个组的“chisq.test()$p.value”

    我正在尝试对几个组进行卡方检验在 dplyr 框架内 问题是 group by gt summarise 似乎没有做任何伎俩 模拟数据 与有问题的数据结构相同 但随机 因此 p values 应该很高 set seed 1 data fra
  • ios - appium 无法从下往上滑动

    我想在 ios 上设置 wifi 状态 为此 我需要从控制中心底部向上滑动 dimension driverWrapper getIosDriver manage window getSize int middleX dimension g
  • 获取 ASP.NET 开发服务器端口号

    我需要用C 方法获取asp net开发服务器端口号 你能帮助我吗 您可以从请求中获取它 Request Url Port 严格来说 这并不是开发 Web 服务器的端口 这是当前使用的 Web 服务器的端口
  • 在javafx中为图像添加计时器

    例如 我想首先在 javafx 中为我的图像添加计时器 大约 3 秒我的第一个图像显示 然后大约 5 秒我的第二个图像显示 之后什么也没有显示 对此有什么想法吗 Use a Timeline更新imageProperty of an Ima
  • 如何设置堆积条形图中背景所有部分的颜色

    以下是英格兰和苏格兰之间拉锯战当前状态的代码 public TugOfWar String s super s data set DefaultKeyedValues2DDataset dataset new DefaultKeyedVal
  • 在 TypeScript React 中导入图像 - “找不到模块”

    我正在尝试导入图像以在带有 TypeScript 的 React 组件中使用 我使用的打包器是 Parcel 不是 Webpack 我创建了一个 d ts文件内的图像文件扩展名 并将其包含在里面tsconfig json 然而 当我尝试导入
  • K&R 练习 1-20 编程语言第二版

    我应该在这个程序中做什么 我无法理解 问题是 编写一个程序 detab 用正确的数字替换输入中的制表符 空格到下一个制表位的空间 假设有一组固定的制表位 例如每 n 列 n 应该是变量还是符号参数 我首先将制表符 t 替换为空格 但我想这是
  • 通过spring boot读取JSON映射结构

    如果我的 REST 服务返回以下 JSON 结构 foo id baz qux id toto 对我来说 它看起来像一个地图结构 我不知道如何使用 Spring Boot 通过 Jackson 阅读此内容 我已经定义了我的 JSON 绑定类
  • 使用 opencv2 保存视频中的图像序列

    新手问题 是的 我花了很多时间筛选类似的问题和答案 但没有运气 我想做的是按顺序保存视频文件中的帧 我已经设法使用 c 保存一张图像 但之后似乎无法保存图像 我已经开始在 opencv 中使用 c 而不是 c 我所能做的就是查看视频而不是从
  • 在 Bootstrap 模式打开时调用函数

    我曾经使用 jQuery UI 的对话框 它有open选项 您可以在其中指定一些在对话框打开后执行的 Javascript 代码 我会使用该选项来使用我拥有的功能来选择对话框中的文本 现在我想使用引导程序的模式来做到这一点 下面是 HTML
  • JBoss 的 EJB Jar 中忽略了 Jackson 2 注释(6.2.0 GA)

    我正在将一个 Web 应用程序从 Websphere 7 JEE5 迁移到 JBoss EAP 6 2 0 JEE6 目前它在 Glassfish 3 和 WAS 中运行良好 Web 界面使用 生成 JSON 所以我将 Jackson2 与
  • ios 4.0 上的 NSXMLParser 内存泄漏 - **不是** NSCFString

    在完成并从内存中释放后 我的 NSXMLParser 中出现了奇怪的泄漏 它出现了 NSMapTable 分配泄漏 这是我的堆栈 0 libSystem B dylib calloc 1 libobjc A dylib internal c
  • MySQL 相当于 Oracle 中的 DECODE 函数

    我正在尝试在 MySQL 中找到 DECODE 函数的等效项 它的工作原理如下 Select Name DECODE Age 13 Thirteen 14 Fourteen 15 Fifteen 16 Sixteen 17 Seventee
  • 多边形内的点到多边形边的距离

    我正在使用 NLCD 数据研究大片区域 7 个森林和非森林州 在一些森林地区有一个地块 这是我正在研究的硕士论文 我用这个庞大的数据集难倒了我问过的每个人 但我们确信有一个解决方案 森林 非森林区域是有符号的离散栅格 我能够通过对森林区域进
  • SDL_FreeSurface 出现奇怪的段错误

    我有以下简单的 SDL 代码 include
  • Powershell 将变量传递给启动作业

    在 powershell 中 我想学习调用变量来启动作业的最佳方法 这样我就不必编辑每个服务器的脚本 因为它将根据我放置脚本的客户端而具体化 Servername Server1 pingblock pathping servername