使用 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 命令的示例帮助
如果参数括在方括号 [] 中,则它们是可选的。
即本例中需要日志本身的名称,参数的名称
如果查看 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 写在括号中。
这意味着我们可以将 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