ByValue

以Get-Service命令为例,它的帮助文件中关于-Name参数是这样解释的:

1. "WinRM" | Get-Service

2. "TrustedInstaller","BITS","WinRM" | Get-Service

3. Get-Content services.txt | Get-Service

以上的命令比 Get-Content services.txt | ForEach-Object { Get-Service -Name $_ } 简单明了很多.

那么你要问了,管道符号前面只有一个值,Get-Service命令后面却有很多参数,它怎么知道把前面的值传给后面的哪个参数呢?决定因素就在于位置参数Position:0,这表示-Name参数的优先级最高,管道传过来的值就给这个参数。

ByPropertyName (ByProperty'sName)

还是以Get-Service为例,我们先创建一个自定义对象:

$list = [PSCustomObject]@{ 'computername' = 'server1'}, [PSCustomObject]@{'computername' = 'server2' }  #这里一共2个对象;效果和Import-CSV一样

$list | Get-Service  #报错。因为-Name是位置参数,你不指定参数时系统就默认为你想将变量list的内容传递给-Name,但却因为不存在叫做类似“server1”这样的服务名而导致传递失败,于是就报错了。但是我们用一个小技巧即可解决这个问题

$list | Get-Service -Name *  #先显式指定-Name参数的值,不让它接收管道传来的值,于是系统转而将值传递给-ComputerName

接下来以New-ADUser为例,假如你从HR拿到了一份新员工列表:

你需要为他们创建域账号,显而易见,你不能直接导入这份表格,因为AD中的User可没有这些中文的属性名,怎么办?让Powershell的哈希表来转换:

$userlist | Select -Property @{name="displayName";expression={$_.姓名}}, @{name="SamAccountName";expression={$_.登录名}} | New-ADUser  #该命令不完整,重点是中间那段Property Name的转换

这样做的目的就是为了让列表中的值以ByPropertyName的方式传递给New-ADUser命令,只有属性名(displayName,SamAccountName)一样才能传递。

再用Get-Content举一个例子,Get-Content一共有6个支持且只支持ByPropertyName的参数,我选择其中两个-Path和-Tail,然后用下面的命令将内容通过管道进行传递:

[PSCustomObject]@{'Path'='C:\Windows\WindowsUpdate.log'; 'Tail'=10} | Get-Content

这个例子很好的说明了ByPropertyName这种方式“会将管道左边每个匹配的属性名称与管道右边的命令所允许接受的参数进行关联”。

系统会优先使用byValue方法,仅当byValue方法无法执行时才会尝试使用byPropertyName方法。

http://windowsitpro.com/blog/pipeline-parameter-binding-byvalue

http://windowsitpro.com/blog/pipeline-parameter-binding-bypropertyname

ByValue和ByPropertyName的区别的更多相关文章

  1. iOS开发UI篇—核心动画(基础动画)

    转自:http://www.cnblogs.com/wendingding/p/3801157.html 文顶顶 最怕你一生碌碌无为 还安慰自己平凡可贵 iOS开发UI篇—核心动画(基础动画) iOS ...

  2. CABasicAnimation精讲

    前言 本教程写了这个效果图的demo,同时总结CABasicAnimation的使用方法. 看完gif动画完,看到了什么?平移.旋转.缩放.闪烁.路径动画. 实现平移动画 实现平移动画,我们可以通过t ...

  3. ios核心动画(基础动画)

    一.简单介绍 CAPropertyAnimation的子类 属性解析: fromValue:keyPath相应属性的初始值 toValue:keyPath相应属性的结束值 随着动画的进行,在长度为du ...

  4. IOS Animation-CABasicAnimation、CAKeyframeAnimation详解&区别&联系

    1.先看看网上流传的他们的继承图: 从上面可以看出CABasicAnimation与CAKeyframeAnimation都继承于CAPropertyAnimation.而CAPropertyAnim ...

  5. c#与java的区别

    经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...

  6. jquery和Js的区别和基础操作

    jqery的语法和js的语法一样,算是把js升级了一下,这两种语法可以一起使用,只不过是用jqery更加方便 一个页面想要使用jqery的话,先要引入一下jqery包,jqery包从网上下一个就可以, ...

  7. 【原】nodejs全局安装和本地安装的区别

    来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...

  8. 探究@property申明对象属性时copy与strong的区别

    一.问题来源 一直没有搞清楚NSString.NSArray.NSDictionary--属性描述关键字copy和strong的区别,看别人的项目中属性定义有的用copy,有的用strong.自己在开 ...

  9. X86和X86_64和X64有什么区别?

    x86是指intel的开发的一种32位指令集,从386开始时代开始的,一直沿用至今,是一种cisc指令集,所有intel早期的cpu,amd早期的cpu都支持这种指令集,ntel官方文档里面称为&qu ...

随机推荐

  1. [Qt扒手] PyQt5 基础绘画例子

    [说明] 好吧,坦白从宽,我是Qt扒手(不要鄙视我).这是我根据qt官网提供的C++版本的例子(http://doc.qt.io/qt-5/qtwidgets-painting-basicdrawin ...

  2. 02-web框架

    1 while True: print('server is waiting...') conn, addr = server.accept() data = conn.recv(1024) prin ...

  3. 【HAOI2010】软件安装

    题面 题解 缩点之后一个裸的树型背包 代码 #include<cstdio> #include<cstring> #include<algorithm> #defi ...

  4. .Net Core和.Net Standard直观理解

    .NET framework和.NET Core里面有一些部分,内容是相同的. 这部分相同的内容,就被称为标准库...即NET Standard Library. 而那些不同的部分,则分别叫做.NET ...

  5. c# 缓存详解

    如果说要对一个站点或者应用程序经常优化,可以说缓存的使用是最快也是效果最明显的方式.一般而言,我们会把一些常用的,或者需要花费大量的资源或时间而产生的数据缓存起来,使得后续的使用更加快速. 如果真要细 ...

  6. Google 日历短信通知没有了

    关于 Google 日历短信通知的重要通知 从 2015 年 6 月 27 日起,Google 日历将不再发送短信通知.短信通知是我们在智能手机问世之前推出的功能.如今,智能手机和通知随处可见,即使处 ...

  7. 怎样注册Docker Hub账号

    Docker Hub是Docker的远程镜像仓库,类似于GitHub;如果没有搭建本地私有仓库,Docker会默认去Docker Hub拉镜像. 访问Docker Hub官网https://hub.d ...

  8. Java编辑PPT的柱状图,与内嵌的Excel联动

    /** * 条形图:柱形图 的数据写入方法 * @param slide 图表 * @param index 柱状图的下标 * @param data 要填充的数据 * @param titles 内 ...

  9. 【Unity Shader】(十) ------ UV动画原理及简易实现

    笔者使用的是 Unity 2018.2.0f2 + VS2017,建议读者使用与 Unity 2018 相近的版本,避免一些因为版本不一致而出现的问题. [Unity Shader](三) ----- ...

  10. 【LeetCode算法题库】Day2:Median of Two Sorted Arrays & Longest Palindromic Substring & ZigZag Conversion

    [Q4] There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of th ...