ByValue和ByPropertyName的区别
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的区别的更多相关文章
- iOS开发UI篇—核心动画(基础动画)
转自:http://www.cnblogs.com/wendingding/p/3801157.html 文顶顶 最怕你一生碌碌无为 还安慰自己平凡可贵 iOS开发UI篇—核心动画(基础动画) iOS ...
- CABasicAnimation精讲
前言 本教程写了这个效果图的demo,同时总结CABasicAnimation的使用方法. 看完gif动画完,看到了什么?平移.旋转.缩放.闪烁.路径动画. 实现平移动画 实现平移动画,我们可以通过t ...
- ios核心动画(基础动画)
一.简单介绍 CAPropertyAnimation的子类 属性解析: fromValue:keyPath相应属性的初始值 toValue:keyPath相应属性的结束值 随着动画的进行,在长度为du ...
- IOS Animation-CABasicAnimation、CAKeyframeAnimation详解&区别&联系
1.先看看网上流传的他们的继承图: 从上面可以看出CABasicAnimation与CAKeyframeAnimation都继承于CAPropertyAnimation.而CAPropertyAnim ...
- c#与java的区别
经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...
- jquery和Js的区别和基础操作
jqery的语法和js的语法一样,算是把js升级了一下,这两种语法可以一起使用,只不过是用jqery更加方便 一个页面想要使用jqery的话,先要引入一下jqery包,jqery包从网上下一个就可以, ...
- 【原】nodejs全局安装和本地安装的区别
来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...
- 探究@property申明对象属性时copy与strong的区别
一.问题来源 一直没有搞清楚NSString.NSArray.NSDictionary--属性描述关键字copy和strong的区别,看别人的项目中属性定义有的用copy,有的用strong.自己在开 ...
- X86和X86_64和X64有什么区别?
x86是指intel的开发的一种32位指令集,从386开始时代开始的,一直沿用至今,是一种cisc指令集,所有intel早期的cpu,amd早期的cpu都支持这种指令集,ntel官方文档里面称为&qu ...
随机推荐
- python基础学习1-迭代器
#!/usr/bin/env python # -*- coding:utf-8 -*- #自定义迭代器 需要 重写 __iter__()和__next__() 两个魔法方法 class Fibs: ...
- Storm 第一章 核心组件及编程模型
1 流式计算 流式计算:数据实时产生.实时传输.实时计算.实时展示 代表技术:Flume实时获取数据.Kafka/metaq实时数据存储.Storm/JStorm实时数据计算.Redis实时结果缓存. ...
- 解决ScrollViewer嵌套的DataGrid、ListBox等控件的鼠标滚动事件无效
C# 中,两个ScrollViewer嵌套在一起或者ScrollViewer里面嵌套一个DataGrid.ListBox.Listview(控件本身有scrollviewer)的时候,我们本想要的效果 ...
- 如何判断Map中的key或value是什么类型
在上班写工具类时,遇到了一个问题,将xml文件的节点都放入map容器中时,map的value也是一个map,导致取map的value时,需要判断这个value的数据类型,用到了一下说的这些知识: 对于 ...
- 学习python,第二篇
注释 # 单行注释 ''' 多行注释 ''' 或者 """ 多行注释 """ # Author: Itxpl mag ...
- Maven ResourceBundle.getBundle读取Properties异常MissingResourceException: Can't find bundlei解决方法
参考:https://blog.csdn.net/thousa_ho/article/details/72817616 问题描述 ResourceBundle读取properties配置文件提示 Mi ...
- AtCoder | ARC102 | 瞎讲报告
目录 ARC102 前言 正文 传送链接~ ARC102 前言 实在是太菜了....写完第一题就弃疗..感觉T3好歹也是道可做题吧!!然后T2怎么又是进制拆分! 正文 A 题意 给你两个数字\(n,k ...
- caffe/blob.hpp:9:34: fatal error: caffe/proto/caffe.pb.h: 没有那个文件或目录
You need to generate caffe.pb.h manually using protoc as follows. # In the directory you installed C ...
- "prefs:root" or "App-Prefs:root"
iOS 苹果审核也是看心情的吗?已经上线几个版本了,新版本提交审核居然被查出来了! Guideline 2.5.1 - Performance - Software Requirements Your ...
- react + antiDesign开发中遇到的问题记录
react + antiDesign开发中遇到的问题记录 一:页面中子路由失效: antiDesign的官方实例中,会把路由重复的地方给去重,而且路由匹配模式不是严格模式.所以我们需要在util.js ...