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. 1-[并发编程]-操作系统OS

    1.为什么要有操作系统 现代的计算机系统主要是由一个或者多个处理器,主存,硬盘,键盘,鼠标,显示器,打印机,网络接口及其他输入输出设备组成. 一般而言,现代计算机系统是一个复杂的系统. 其一:如果每位 ...

  2. 【HNOI2014】画框

    题面 题解 这又是一种套路啊233 将\(\sum a_i\)和\(\sum b_i\)分别看做\(x\)和\(y\),投射到平面直角坐标系中,于是就是找\(xy\)最小的点 于是可以先找出\(x\) ...

  3. springboot之jpa多数据源

    1.随着业务复杂程度的增加,我们在单一数据源上面的使用越来越不满足具体的业务逻辑以及实现了. 2.那么多数据源,比如多库多数据库等,我们在使用一个工程的时候多数据源的连接还是很有必要的,这里做一下记录 ...

  4. 【fake题解】[NOI2013]向量内积

    [fake题解][NOI2013]向量内积 做法1 大暴力.哪里不会T哪里. 做法2 所有数都%=k不影响结果.(废话 k的取值只有2和3,所以肯定是要分类讨论的.k=2肯定简单些啦. k=2 出现的 ...

  5. 服务器路由配置--Route

    第1章 命令配置 虚拟服务器 网卡配置信息 虚拟网卡名称 虚拟网卡模式 服务器01 eth1 10.0.0.10/24 nat模式 服务器02 eth2 10.0.0.11/24 nat模式 eth3 ...

  6. linux下的静态库与动态库

    目录 静态库 定义: 生成及使用方法: 静态库的优缺点 动态库 定义: 生成及使用方法: 动态库优缺点: 静态库 先说说我们为什么需要库? 当有些代码我们大量会在程序中使用比如(scanf,print ...

  7. 使用c语言计算分期贷款折算年化收益率(内部收益率IRR*12)

    众所周知,现在银行的分期贷款利率是很有诱惑性人.表面看利率是很低的,例如招行的闪电贷有时给我的利率是4.3% 但是,由于贷款是分期还本的,我手上的本金每月都在减少,到最后一个月时手上只有少量本金,但是 ...

  8. WebGL------osg框架学习二

    今天我们继续来学习osg.js框架.上一篇我们介绍了DrawActor对象绘制操作类和Drawable可绘制对象类,我们大致知道了osg对Drawable可绘制对象的绘制流程管理.今天我们要继续介绍S ...

  9. Unity萌新日记—开发小技巧与冷知识(脚本篇)

    在学习unity的过程中,总会遇到很多零碎的知识点和小技巧,在此把它们记录下来,方便日后查看. 第一篇是关于脚本的一些你可能不知道的小知识. 还是个正在学习的萌新,如果写的不好,请谅解. Unity版 ...

  10. JDBC Mysql 驱动连接异常

    在做JDBC连接Mysql的时候遇到了三个异常: 第一个是:mysql8.0 caching_sha2_password 这个异常是由于是因为在mysql8.0之前的密码规则是mysql_native ...