适合初学者的 PowerShell

使用 PowerShell 时,我们首先遇到的是命令 (Cmdlet)。
命令调用如下所示:

Verb-Noun -Parameter1 ValueType1 -Parameter2 ValueType2[]

政策和帮助

使用 Get-Help 命令访问 PowerShell 中的帮助。 可以指定其中一个参数:example、detailed、full、online、showWindow。

Get-Help Get-Service -full 将返回 Get-Service 命令操作的完整描述
Get-Help Get-S* 将显示所有以 Get-S* 开头的可用命令和函数

微软官方网站上也有详细的文档。

这是 Get-Evenlog 命令的示例帮助

适合初学者的 PowerShell

如果参数括在方括号 [] 中,则它们是可选的。
即本例中需要日志本身的名称,参数的名称 不。 如果参数类型和它的名字一起用括号括起来,那么这个参数是可选的。

如果查看 EntryType 参数,您可以看到用大括号括起来的值 \uXNUMXb\uXNUMXb。 对于这个参数,我们只能使用花括号中预定义的值。

有关该参数是否必需的信息可以在下面的 Required 字段中的描述中看到。 在上面的示例中,After 属性是可选的,因为 Required 设置为 false。 接下来,我们看到对面的 Position 字段,上面写着 Named。 这意味着您只能通过名称引用参数,即:

Get-EventLog -LogName Application -After 2020.04.26

由于 LogName 参数的编号为 0 而不是 Named,这意味着我们可以在没有名称的情况下引用该参数,但可以按所需顺序指定它:

Get-EventLog Application -After 2020.04.26

让我们假设这个顺序:

Get-EventLog -Newest 5 Application

别名

为了让我们可以在 PowerShell 中从控制台使用常用的命令,有别名(Alias)。

Set-Location 命令的一个示例别名是 cd。

也就是说,而不是调用命令

Set-Location “D:”

我们可以用

cd “D:”

发展历程

要查看命令调用的历史记录,可以使用 Get-History

从历史执行命令 Invoke-History 1; 调用历史 2

清除历史记录

管道

powershell 中的管道是第一个函数的结果传递给第二个函数的时候。 这是使用管道的示例:

Get-Verb | Measure-Object

但为了更好地理解管道,让我们举一个更简单的例子。 有一个团队

Get-Verb "get"

如果调用 Get-Help Get-Verb -Full 帮助,那么我们将看到 Verb 参数接受管道输入,并且 ByValue 写在括号中。

适合初学者的 PowerShell

这意味着我们可以将 Get-Verb "get" 重写为 "get" | 获取动词。
也就是说,第一个表达式的结果是一个字符串,它通过按值输入的管道传递给 Get-Verb 命令的 Verb 参数。
管道输入也可以是 ByPropertyName。 在这种情况下,我们将传递一个对象,该对象具有一个名称与 Verb 相似的属性。

变量

变量不是强类型的,并且在前面用 $ 指定

$example = 4

符号>表示将数据放入
例如,$example > File.txt
使用此表达式,我们会将 $example 变量中的数据放入文件中
与 Set-Content -Value $example -Path File.txt 相同

阵列

数组初始化:

$ArrayExample = @(“First”, “Second”)

空数组初始化:

$ArrayExample = @()

通过索引获取价值:

$ArrayExample[0]

获取整个数组:

$ArrayExample

添加一个元素:

$ArrayExample += “Third”

$ArrayExample += @(“Fourth”, “Fifth”)

排序方式:

$ArrayExample | Sort

$ArrayExample | Sort -Descending

但是数组本身在这种排序中保持不变。 如果我们希望数组有排序的数据,那么我们需要分配排序后的值:

$ArrayExample = $ArrayExample | Sort

在 PowerShell 中无法从数组中删除元素,但您可以这样做:

$ArrayExample = $ArrayExample | where { $_ -ne “First” }

$ArrayExample = $ArrayExample | where { $_ -ne $ArrayExample[0] }

删除数组:

$ArrayExample = $null

循环语法:

for($i = 0; $i -lt 5; $i++){}

$i = 0
while($i -lt 5){}

$i = 0
do{} while($i -lt 5)

$i = 0
do{} until($i -lt 5)

ForEach($item in $items){}

退出中断循环。

跳过继续元素。

条件陈述

if () {} elseif () {} else

switch($someIntValue){
  1 { “Option 1” }
  2 { “Option 2” }
  default { “Not set” }
}

功能

函数定义:

function Example () {
  echo &args
}

功能推出:

Example “First argument” “Second argument”

在函数中定义参数:

function Example () {
  param($first, $second)
}

function Example ($first, $second) {}

功能推出:

Example -first “First argument” -second “Second argument”

特殊课程

try{
} catch [System.Net.WebException],[System.IO.IOException]{
} catch {
} finally{
}

来源: habr.com

添加评论