该power of PowerShell: Essential tips Windows admins will love

充分利用微软的命令行通过掌握PowerShell的语言的细微差别

RyanMcGuire通过Pixabay

鲍威rShell can be a daunting tool to master for Windows admins used to working with the GUI. But as I discussed in our hands-on PowerShell intros for在Windows Serverand交换admins, adding even a little PowerShell into your daily mix can save a ton of effort.

在这里,我要集中精力一些PowerShell的基本面作为一门语言,以帮助你把你的PowerShell技能到一个新的水平。我将不包括技术特定的主题,例如如何管理Active Directory,Exchange或IIS,我也不会涉及具体的PowerShell命令。相反,我会钻到语言的语义,说明你今天可以把你的脚本中的一些关键技术。请跟随,让我们使你的PowerShell脚本,他们可以做到最好。

泼溅

PowerShell代码是使用诸如小命令或功能的命令执行。为了提高他们的再利用价值,命令通常使用的参数。而不是要求你overspecify像一个自定义函数GET-ContentFromFileXYZ.TXTandGET-ContentFromFileABC.TXT,PowerShell中提供了一个路径参数的获取内容小命令。参数,如路径,通常是传递给函数和cmdlet有一个破折号,后面跟着参数名称,空间和参数变量或值:

获取内容–Path C:\FileABC.txt

But cmdlets and functions like获取内容often support several parameters, and before long, you may be typing commands like this:

获取内容-Path C:\MyText.txt -ReadCount 1 -TotalCount 3 -Force -Delimiter "," -Filter '*' -Include * -Exclude 'a'

Here, eight parameters are being passed to获取内容,而且它显然越来越难读,到了那里混乱可以雪亮从你传递的参数的值的参数出现的点。使用多个参数的任何时间,这是明智的选择将参数传递到命令与泼洒的滑稽名字的另一种方法。

泼溅,在PowerShell中第2版推出,允许你定义在一个更容易阅读的格式,所有参数前面的。

让我们那么久,参数复杂的设置,看看他们都可以传递到获取内容采用泼溅。

$ getContentParameters = @ {
'Path' = 'C:\MyText.txt'
'ReadCount'= 1
'TOTALCOUNT'= 3
“力” = $真
'分隔符'= ''
'过滤器'= '*'
'包含'= '*'
'Exclude' = 'a'
}
获取内容@getContentParameters

Though I was forced to use more lines it's plain to see this method is much more readable than jamming them all on a single line. I also chose to line up the“=”通过使用标签语句都一字排开参数参数。

$getContentParameters在第一行中定义的变量是一个哈希表。您可以通过在看到这@{}。在内部,每个键表示参数,并且每个值表示参数变量或值。一个项目要注意在这个例子中是参数。你会注意到,当在一行中使用它在技术上并不等于什么。这是因为它是一个类型的开关。开关参数没有值,并且简单地用作一个标记。由于哈希表需要为每个键的值,你必须使用等于布尔任何开关参数$true值。

Once you've defined the hashtable you then pass the entire variable to the command using the ampersand to represent a splatting variable.获取内容然后将处理的命令完全一样,如果你想通过他们与破折号的传统方式。

这是一个非常干净的方式传递参数给命令,我鼓励使用时多个参数都在发挥作用。

计算特性。

对使用PowerShell中的最大的优点就是一切都是对象。对象有属性,但有时你可能不希望得到的只是一个对象上的默认属性名称。也许你想添加另一个属性,添加文本到现有的字符串属性,或者在整数属性进行运算。你可以说属性发送给一个变量,使你必要的修改,但是这需要另一条线,并根据不同的复杂性,可以成为不可读真正的快。

例如,假设我想测试计算机的网络连接,并得到一些公共属性。要做到这一点,我将使用测试的NetConnection小命令。

测试连接-ComputerName本地主机-Count 1 |
选择-对象IPv4Address,RESPONSETIME,传输TimeToLive

测试连接-ComputerName本地主机-Count 1 |选择-对象IPv4Address,RESPONSETIME,TimeToLiv

This is great, but maybe I want to put this into a CSV report. As part of the CSV report, I'm reading server names from a text file. I'd like to include the server name as well as the properties I've shown above. I start out by reading the text file, but I don't have the server names that were in the text file.

CSV报告

我需要另一个属性添加到这个与服务器名称的IP相关。这对于计算性能的工作。因为这需要额外的代码,我现在将进入一个脚本,而不是直接从控制台告诉你的例子。

添加服务器名

该output will now include our new custom property calledServerName

ServerName Output

我不得不改变代码颇有几分所以让我打破它。首先,我注意到如何移动的原始特性传递给选择-对象IPV4Address,RESPONSETIME,传输TimeToLive) above, then passed$ selectProperties选择-对象那样。这是简单地减少线路的长度。它的行为完全一样,如果我只是通过他们直接向选择-对象正如我在控制台没有以前。

哪些功能没有变化是增加的另一个属性$ selectProperties至pass to选择-对象。请注意,这不是其他人一样的字符串,但里面两个元素的哈希表:名称andExpression。这就是所谓的计算性能。这是怎么使用选择-对象你基本上可以动态创建属性。你想添加的每个属性必须是与哈希表名称Expression作为键名称。该名称key's value is the name you'd like to call the object property. TheExpressionkey's value always has to be a script block. Notice$ SERVERNAME括在大括号内。这是怎么$ SERVERNAME因为每个服务器在文本文件中测试的可扩展到实际的服务器名称。

这可以用来不仅要创造新的特性,但也可以修改现有的属性。也许我想追加一个ms标签所有传输TimeToLive属性,以表示数为以毫秒为单位。除了指定的名称传输TimeToLiveproperty I would instead create a hashtable and concatenate theforeach管道值传输TimeToLive表示为$_.TimeToLivems创建一个字符串。

传输TimeToLivescript
传输TimeToLiveoutput

使用与计算性能选择-对象很方便,但要注意:它们都配有性能损失。我不建议使用,如果你与大型数据集计算的性能,因为它可以在你的脚本大大减慢。但如果你有非常小的数据集,100个或更少的元件的性能影响将是最小的。

自定义对象的创建

Objects abound in PowerShell, and it only makes sense for us to be able to create our own objects from scratch. Fortunately, PowerShell provides us with a few different ways to do that. In this tip, I'll cover three methods to create custom objects.

In PowerShell, an object is of a specific type. When creating custom objects, the most common type of object type isSystem.Management.Automation.PSCustomObject。这是怎样的对象,我们将在本文中创建。此外,对象具有各种类型中的一种或多种性能。在这篇文章中,我们将重点放在NoteProperty类型。

One of the oldest ways to create a custom object that works on all versions of PowerShell is via theNew-Object小命令。To create a blank custom object of typeSystem.Management.Automation.PSCustomObject同no properties usingNew-Objectyou'd simply callNew-Objectand specify the类型名parameter ofPSObject

$对象=新物体-TypeName PSObject

$对象=新物体-TypeName PSObject

这并不是我们有什么好处,但是,因为它不包含任何属性。要添加的属性,我们可以使用加入会员小命令。This cmdlet essentially binds a new member (or property) to an existing object similar to the one we created.

$object | Add-Member –MemberType NoteProperty –Name MyProperty –Value SomeValue

$object | Add-Member –MemberType NoteProperty –Name MyProperty –Value SomeValue

你可以看到,加入会员has aMemberType参数。正如我前面提到的,创建自己的对象时,你通常会使用NotePropertytype here. At this point, you simply need to specify the name of the property and the value that the property will hold.

从这里,你可以重复,只要你愿意使用添加尽可能多的性能加入会员

Next, rather than using加入会员您可以指定所有的属性了在哈希表前,这些属性传递给New-Object

$属性= @ { 'MyProperty1'= '值1';'MyProperty2'= '值2'}
$对象=新物体-TypeName PSObject,物业$性能

$对象=新物体-TypeName PSObject,物业$性能

最后,PowerShell的V3的,我们可以使用[pscustomobject]式加速器。偶尔,PowerShell团队将会创造什么叫类型的加速器。这些都是方便的快捷方式创建特定类型的对象。由于创建自定义类型在PowerShell中很常见,他们决定建立一个用于创建它们。如今,这是创建自定义对象的最常见的方式。

要创建一个自定义对象[pscustomobject]式加速器您首先需要创建一个属性名称作为键名称和它们的值作为哈希表值的哈希表。我们重新使用我们之前创建的哈希表。

$属性= @ { 'MyProperty1'= '值1';'MyProperty2'= '值2'}

现在,而不是使用New-Objectcmdlet并简单地通过“声明”散列表作为自定义对象类型指定我们可以简单地投直接散列表的自定义对象的类型和属性。

[pscustomobject]$properties

[pscustomobject]$properties

你会看到它的创建自定义对象更快的方法。使用PowerShell v3的或更高版本的工作时,我推荐这种方法。这是,到目前为止,最容易记住,是最可读的。

In this tips and tricks article, we were able to cover a few language-specific concepts in PowerShell. Replicate what I've done, tinker around, use the获得会员cmdlet进一步探索定制对象。鲍威rShell has so much more to offer from a language perspective. If you're new to PowerShell I recommend checking out the book "PowerShell的在午餐一个月”这解决了我们在这里讨论的主题,而是涵盖很多的PowerShell的更多,并采取了全面的方法来学习语言。

相关文章

This story, "The power of PowerShell: Essential tips Windows admins will love" was originally published byInfoWorld的

加入对网络世界的社足球竞猜app软件区FacebookandLinkedIn对那些顶级心态的话题发表评论。
有关:

版权所有©2015年足球竞彩网下载

IT薪资调查:结果是