设为首页 收藏本站
查看: 1168|回复: 0

Powershell_Script<1>

[复制链接]

尚未签到

发表于 2018-9-3 07:10:55 | 显示全部楼层 |阅读模式
  Windows Powershell中的函数参数
  PowerShell中的最大特点之一是函数使用上的可扩展性强。在这篇文章中,我们将仔细看一下专业类型的函数:产品质量函数。
  AD:
  在先前关于用户自定义的Windows PowerShell的的文章中,我已经说过PowerShell中的最大特点之一是函数使用上的可扩展性强。在这篇文章中,我们将仔细看一下专业类型的函数:产品质量函数。
  你问有什么区别?产品质量函数花力气来测试输入并在提供信息输出的情况下为算是错误进行稳固工作。通常当在为产品运用函数时,你想知道它是否中断-- 同时你也一定很想知道为什么。其它的语言需要你自己来设计参数和处理错误。我们是幸运的,Windows PowerShell有许多类似的内置函数。
  PowerShell的参数
  当我们谈论Windows PowerShell函数的时候,我们需要考虑三件事情:输入、输出和错误。这篇文章将重点说明输入,也被称为参数。PowerShell有许多参数选项,并且可以通过以下三种方式之一来进行运用:
  位置参数
  PowerShell可以创建一个数值数组传递给函数的$args变量。传递给函数的每一个值从0开始被添加到这个数组中。例如:
  function foo
  {
  Write-Host $args[0] $args[1]
  }
  foo &quot;This is parameter 1&quot; &quot;This is parameter 2&quot;名字参数
  PowerShell输入的参数也可以命名,这就意味着它们可以通过名字传递,并且值被放置在相应的变量里。例如(注意当这个函数被调用的时候,参数颠倒,但是数值能正确的返回):
  Example (notice the parameters are reversed when the function is called,
  but the values are returned correctly):
  function foo
  {
  Param($param1,$param2)
  Write-Host $param1 $param2
  }
  foo -param2 &quot;This is parameter 2&quot; -param1 &quot;This is
  parameter 1&quot;Splatting参数
  在PowerShell的参数传递中,这个或许是最常用的方法。它包含创建一个数组或哈希表作为传递给函数的参数组。这个让你可以动态地创建整个脚本的参数,然后当你准备好后即可调用函数。例如:
  function foo
  {
  Param($param1,$param2)
  Write-Host $param1 $param2
  }
  Create Hash table
  $blah = @{&quot;Param1&quot;=&quot;This is parameter 1&quot;;
  &quot;Param2&quot;=&quot;This is parameter 2&quot;}
  # Pass hash table to function
  foo @BlahPowerShell 参数的属性
  Mandatory – 这个属性在PowerShell参数选项里是默认的,但是如果你知道你所需要的参数类型,你可以使用这个属性来强制用户传递这种类型的参数。如果它们没有这样做,PowerShell将报错给它们,并且强迫的它们提供这种类型的值,以便函数能够正常的运行。例如:
  function foo
  {
  Param(
  [Parameter(Mandatory=$True)]
  $param1
  )
  Write-Host $param1
  }ParameterSetName --我们常常需要一起传递一组参数(通常因为一些意外所中断)。例如,你有一个函数要获得一个活动目录对象,如果它是一个用户或是一个计算机,你就需要知道帐户:
  function Get-ADObject
  {
  Param(
  [Parameter(Mandatory=$True,
  ParameterSetName=&quot;User&quot;)]
  $User,
  [Parameter(Mandatory=$True,
  ParameterSetName=&quot;Computer&quot;)]
  $Computer
  )
  $PScmdlet.ParameterSetName
  }
  Get-ADObject --# This will throw an error because no
  parameters passed
  Get-ADObject –user &quot;joe&quot; # Will return 'User'
  Get-ADObject –Computer &quot;joe&quot; # Will return 'Computer'
  Get-ADObject –User &quot;joe&quot; –Computer &quot;joe&quot; # Will return
  an errorValueFromPipeline -- 这个属性告诉函数某个特定的参数值可以通过管道来传递参数。例如:
  function Get-ADUserObject
  {
  Param(
  [Parameter(ValueFromPipeline=$true)]
  $User,
  )
  Process
  {
  $User
  }
  }
  }
  $ListofUsers | Get-ADUserObjectValueFromPipelineByPropertyName -- 这个属性似乎与ValueFromPipeline有点相似,但是并不是使用“类型”,它使用的是传入对象的属性名称。例如,如果你有一个叫做UserName的用户对象的属性。
  function Get-ADUserObject
  {
  Param(
  [Parameter(ValueFromPipeline
  ByPropertyName=$true)]
  $Username,
  )
  Process
  {
  $UserName
  }
  }
  $ListofUserObjects | Get-ADUserObjectHelpMessage -- 这允许你给用户添加一个帮助信息。如果他们没有指定mandatory属性来调用你的函数,这可以给他们解释需要输入用户名:
  function Get-ADComputerObject
  {
  Param(
  [Parameter(Mandatory=$True,HelpMessage=
  &quot;Enter computer name.&quot;)]
  $ComputerName,
  )
  $ComputerName
  }
  以上这些信息应该能够帮助你开始写一些产品质量函数.


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-561760-1-1.html 上篇帖子: powershell-path-format 下篇帖子: Powershell_Script<2>
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表