很多年前,关于如何设计Windows PowerShell的函数/指令,我和同事进行过讨论。作为一名专业的开发人员,他更支持拥有少量通过多种方法输出对象的指令。我当然了解,对开发人员而言,这种方法所拥有的好处。 但是对IT管理员来说,这实在是让人感到厌烦。
管理员对调用命令输出上的类函数一定很陌生。我们通常习惯于运行一条指令并获取我们想要的数据。我倾向于的想法是拥有一些任务型指令,它们执行简单操作并为该任务提供相关反馈。运用这个方法对命令行大有益处,也让管道成为一个很有力的工具。
因此,我想要举个在设计PowerShell命令时运用任务型指令代替类函数的例子。虽然很多供应商(随便说两个出……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
很多年前,关于如何设计Windows PowerShell的函数/指令,我和同事进行过讨论。作为一名专业的开发人员,他更支持拥有少量通过多种方法输出对象的指令。我当然了解,对开发人员而言,这种方法所拥有的好处。
但是对IT管理员来说,这实在是让人感到厌烦。管理员对调用命令输出上的类函数一定很陌生。我们通常习惯于运行一条指令并获取我们想要的数据。我倾向于的想法是拥有一些任务型指令,它们执行简单操作并为该任务提供相关反馈。运用这个方法对命令行大有益处,也让管道成为一个很有力的工具。
因此,我想要举个在设计PowerShell命令时运用任务型指令代替类函数的例子。虽然很多供应商(随便说两个出名的,Citri和IBM)在创建PowerShell指令方面做得很好,特别是VMware团队,我觉得他们在这个专有领域里做得很棒。
以下是根本目标:
Get-Something | Filter | Change-Something | Save-Something
从根本上说,我不想依赖对象的类函数来执行我的任务:
Get-Something | %{$_.DoSomething()} | %{$_.save()}
再说具体点,我们可以说我们拥有一个Car Object类别。这个类别具有的属性包括构造、模式、颜色、疲劳计数、大小和类型。它也有它能做的事情,如启动、关闭、停止、转变、负载和上载。
用这个开发方法,我们可以通过用这套属性和类函数创建一个Car类别来完成目标。这看上去似乎很简单,但对于一般管理员来说,它不是直观的,他们并不想做以下事情:
Get-Car | ?{$_.Type -eq "MiniVan"} | %{$_.LoadPeople()}| %{$_.Start()}| %{$_.Turn("Right")} | %{$_.Stop()}| %{$_.UnLoadPeople()}
从Windows管理员的角度来看,一堆任务型指令都可以是你的最佳选择。现在让我们假设是以类函数来代替,你会得到以下指令:
Get-Car
New-Car
Remove-Car
Start-Car
Stop-Car
Invoke-TurnCar
Invoke-LoadCar
Invoke-UnLoadCar
Set-Car
下面你可以这么做:
Get-Car -Type "MiniVan" | Invoke-LoadCar | Start-Car | Invoke-TurnCar -Right | Stop-Car | Invoke-UnloadCar
它有多简单呢?就像你能看到的,它读起来更像句子而不像脚本语言。
我明白PowerShell功能强大且包括有类函数的对象,它似乎喜欢更多的工作来为每个任务提供自己的指令。我认为这是值得的。不管你是管理员还是开发者,当你为其它消耗扩展你的PowerShell技能组并编写代码时,记得花时间来让它尽可能直观。
相关推荐
-
应用PowerShell进行SharePoint Online管理
在应用PowerShell在线管理SharePoint之前,管理员需要进行一系列准备工作,例如下载SharePoint Online Management Shell等。
-
两种方式将Windows容器部署到微软Azure中
想要创建并管理Windows Server容器吗?本文将会介绍如何利用本地Docker命令和PowerShell模块来实现以上目标。
-
PowerShell脚本示例及管理员参考指南
精明的Windows专业人士和管理员甚至也会做出比卷子袖子干事更加愚笨的事情,为了实现自动化任务,他们需要了解脚本语言以及所有PowerShell工具。
-
如何使用PowerShell管理Windows服务
管理员如何在本地或者远程计算机上操控服务,面对变几十台甚至几百台机器时,PowerShell就派上用场了。