处理 Powershell 函数中的管道和参数输入

2024-02-26

我对《在一个月的午餐中学习 PowerShell》一书中看到的内容感到困惑。在第 21 章中,当作者讨论通过参数绑定或管道接受输入的函数时,他给出了两种模式。

第一个如下

function someworkerfunction {
# do some work
}
function Get-SomeWork {
   param ([string[]]$computername)
   BEGIN {
      $usedParameter = $False
      if($PSBoundParameters.ContainsKey('computername')) {
         $usedParameter = $True
      }   
   }
   PROCESS {
      if($usedParameter) {
         foreach($computer in $computername) {
            someworkerfunction -computername $comptuer
         }
      } else {
         someworkerfunction -comptuername $_
      }
   }

   END {}
}

第二个这样

function someworkerfunction {
# do stuff
}
function Get-Work {
   [CmdletBinding()]
   param(
      [Parameter(Mandatory=$True,
      ValueFromPipelineByPropertyName=$True)]
      [Alias('host')]
      [string[]]$computername
   )
   BEGIN {}
   PROCESS {
      foreach($computer in $computername) {
         someworkerfunction -comptuername $computer
      }
   }
   END {}
}

我知道第二个示例是标准的 Powershell 2.0 高级功能。我的问题是,随着 Powershell 2.0 对 cmdletbinding 指令的支持,您是否想使用第一个模式。这只是 Powershell 1.0 的遗产吗?基本上,在使用 Powershell 2.0 时,有时我会想搞乱第一个模式,而第二个模式却干净得多。

任何见解将不胜感激。

谢谢。


如果有人希望获得关于如何从管道输入读取的非常非常简单的解释,请参阅

如何编写从管道输入读取的 powershell 函数? https://stackoverflow.com/questions/11880114/how-do-you-write-a-powershell-function-that-reads-from-piped-input

有这个^当我有这个问题时,我会节省很多时间,因为这个线程非常复杂,并且实际上并没有解释如何处理函数的管道输入。

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

处理 Powershell 函数中的管道和参数输入 的相关文章

随机推荐

  • WPF Tabcontrol 获取最大选项卡的大小

    我有一个绑定到 Viewmodel 集合的 TabControl 这些 Viewmodel 被转换为适当的值以绘制到选项卡中
  • CosmosDB 存储过程 - Promise 而不是回调

    是否可以在 CosmosDB DocumentDB 存储过程 API 调用中使用 JavaScript Promise 而不是常规回调 一种用法是实现分页 例如 token getToken doSomething token functi
  • Flutter - iOS:命令 /bin/sh 失败,退出代码为 255

    下午好 我尝试在 iOS 上运行一个 Flutter 项目 之前在 Android 上成功运行过 但是 我收到一个错误 x86 64 is not an allowed value for option ios arch Run flutt
  • Delphi 获取 EXE 的句柄

    这是我现在正在做的一个例子 var Client String Handle Integer begin Client Window Name GetWindowThreadProcessId FindWindow nil PAnsiCha
  • 从node.js消息调用Windows API

    我是 Node 新手 我有这个简单的 Node js 服务器可以在 Windows 上运行 服务器代码 var ws require websocket server var server ws createServer server ad
  • 根据原始数据创建队列退出率表

    我需要帮助根据原始数据创建队列退出表 我有一个如下所示的数据集 DT lt data table id c 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
  • Chrome扩展-通过后台脚本获取Active Tab的DOM信息

    我知道有很多与这个主题相关的问题 但到目前为止 没有一个问题能让我在 V3 中解决这个问题 当我运行以下background js时 我只得到未定义的结果 我的扩展的目标 至少在这个阶段 是抓取活动选项卡的 DOM 并提取所有 div 元素
  • 如何通过https访问kubernetes服务?

    这是我的集群信息 kubectl cluster info Kubernetes master is running at https 129 146 10 66 6443 Heapster is running at https 129
  • 本地运行 web-Socket 进行调试

    我正在使用 gorilla web socket 我想在本地运行它 我的意思是使用以下 chrome 客户端 或其他推荐的工具 当我进入调试模式时出现错误 I use github com gorilla websocket var upg
  • 如何使用mysql将查询结果存储在变量中

    SET v1 SELECT COUNT FROM user rating SELECT v1 当我执行此查询时set变量显示此错误 Error Code 1064 You have an error in your SQL syntax c
  • 如何简单地扩展 docker-compose 服务并将索引和计数传递给每个服务?

    我正在寻找一种扩展 docker compose 服务的方法并看到了 scale 选项 但找不到任何方法来获取每个容器内的索引和计数 这是一个简化的撰写文件 version 2 1 services my thing restart alw
  • Java OpenCV 绑定

    我正在寻找 OpenCV java 绑定 所有引用都指向处理库 我知道处理是java 但是没有独立的java库吗 或者应该只使用处理库 我刚刚找到了这个 OpenCV 的 java 包装器 https github com bytedeco
  • Visual C++:将传统 C 和 C++ 字符串代码迁移到 Unicode 世界

    我看到 Visual Studio 2008 及更高版本现在开始使用字符集设置为 Unicode 的新解决方案 我的旧 C 代码仅处理英文 ASCII 文本 并且充满了 文字字符串如 Hello World char type char 指
  • 防止画布对象发生碰撞或交叉

    我正在画布上绘制 n 个矩形 矩形是可拖动和可缩放的 我想防止它们重叠或相交 最好的情况是 如果它们只是相互咬合 我想办法检查一下十字路口 在我的示例中 我将触摸对象的不透明度设置为 0 1 巧合的是 在我尝试解决这个问题时 我的对象在接触
  • 为什么在 cmd 中安装任何 python 模块时会收到这些错误“警告:忽略无效的分发 -yproj ”

    警告 忽略无效的分发 yproj c users space junk appdata local programs python python310 lib site packages 警告 忽略无效的分发 yproj c users s
  • 无法在 chrome google.maps api 中加载资源

    我在 chrome 控制台中出现此错误 Failed to load resource net ERR BLOCKED BY CLIENT https maps google com maps api v3 api js 22 2 intl
  • 修复 Flash 的激进缓存

    我有一个闪存应用程序 可以加载大量变化的数据偶尔 所以我设置了我的服务器来发送Last Modified标头并回复304 Not Modified当客户端的版本没有过时时 它在每个浏览器中都能正常工作 但 Flash 完全忽略这一点并积极缓
  • 在矩形的联合中找到孔?

    我在单位正方形 红色 内和周围有许多随机矩形 黑色 需要提取单位正方形内未被任何矩形覆盖的所有多边形区域 看起来这可以用 Shapely 来完成 当我得到矩形 绿色 的并集时 我已经达到了这一点 但我不知道如何从单位正方形中减去它并检索多边
  • Symfony2 路由不支持的键

    我正在学习 Symfony 2 但遇到一些问题 使用教程 我在routing yml内捆绑 acme demo homepage path hello name defaults controller AcmeDemoBundle Defa
  • 处理 Powershell 函数中的管道和参数输入

    我对 在一个月的午餐中学习 PowerShell 一书中看到的内容感到困惑 在第 21 章中 当作者讨论通过参数绑定或管道接受输入的函数时 他给出了两种模式 第一个如下 function someworkerfunction do some