当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 脚本块 | PowerShell 脚本块完整指南

作者:精品下载站 日期:2024-12-14 04:47:14 浏览:14 分类:玩电脑

PowerShell 脚本块 | PowerShell 脚本块完整指南


[玩转系统] PowerShell 脚本块 | PowerShell 脚本块完整指南

PowerShell 脚本块简介

以下文章提供了 PowerShell 脚本块的概述。包含在 {} 中的代码或语句的集合称为脚本块。也可以将其视为一种表达。这使得开发人员更容易将代码分割成不同的部分,并且可以轻松地在不同的地方使用相同的代码。它就像一个函数,但 scriptblock 没有名称。我们可以将 scriptblock 视为一个匿名函数。脚本块的主要优点是它易于移植。脚本块像函数一样可以接受输入参数和返回值。

PowerShell 脚本块的语法

脚本块定义如下:

{
//statement1
//statement2
//statement3
// statement 4
// statement 5
}

脚本块内 cmdlet 的输出作为单个对象或数组返回。

param 关键字用于表示脚本块的输入参数,return 关键字表示返回值。一旦到达返回行,控件就会从脚本块退出

{
Param([type]$Parameter1 [,[type]$Parameter2])
//statement1
//statement2
//statement3
//statement 4
//statement 5
Return
}

脚本块是 .net 框架类型 System.Management.Automation.ScriptBlock 的对象。某些 cmdlet 将脚本块作为参数。

示例:

代码:

Invoke-Command -ScriptBlock { Get-Command }

输出:

[玩转系统] PowerShell 脚本块 | PowerShell 脚本块完整指南

函数和脚本块之间的区别

函数和脚本块之间的主要区别在于函数不能分配给变量,而脚本块可以作为值分配给变量。脚本块很容易移植,因此应该明智地使用。

例子 :

函数声明和调用。

代码:

Function test
{
Write-host “test function”
Write-host “No parameters to the function”
}

调用该函数。

代码:

Test
Now lets see how to define and call a script block
$var={write-host “Example of script block” }
$var
& $var

如果调用 $var 则显示以下输出。

输出:

[玩转系统] PowerShell 脚本块 | PowerShell 脚本块完整指南

要调用脚本块,必须使用符号。

将参数传递给脚本块

代码:

Write-Host "example of passing parameters to scrpit block"
$ip= { Write-Host "my name is:$name" }
$name= 'vignesh'
$username = { Write-Host "my name is $($args[0])..." }

输出:

[玩转系统] PowerShell 脚本块 | PowerShell 脚本块完整指南

示例#1:

代码:

Invoke-Command -ScriptBlock {
param(
$age = "12")
Write-Host "Age is $age" -ForegroundColor Green
}
Invoke-Command -ScriptBlock {
param(
$empid = "123")
Write-Host "emp id is $empid" -ForegroundColor Yellow
} -ArgumentList "Bad"

输出:

[玩转系统] PowerShell 脚本块 | PowerShell 脚本块完整指南

假设在脚本块内部调用变量,变量值在脚本块外部更改,然后在脚本块内部更改。这称为通过参考设置。如果不需要更改该值,则必须使用 GetNewClosure() 方法。

示例#2:

代码:

write-Host " example of reference"
>$a=1
$b=2
$c=3
$d=$a+$b+$c
$sb= {"sum is $d"}
Write-Host "Using closure"
write-Host " example of reference"
$a1=1
$b2=2
$c3=3
$e=$a1+$b2+$c3
$sb1= {"sum is $e"}.GetNewClosure()

输出:

[玩转系统] PowerShell 脚本块 | PowerShell 脚本块完整指南

开始流程和结束

与函数一样,Begin process 和 End 可以添加到脚本块中。 begin 块用于定义变量、路径等。process 块包含操作代码。结束块正在清理代码。

示例#1:

代码:

$test = {
begin { '[Begin  ] welcome to the demo' }
process { "[age] $_" }
end { Write-Output '[End    ] completed' }
}
22, 33, 44 | & $test

输出:

[玩转系统] PowerShell 脚本块 | PowerShell 脚本块完整指南

示例#2:

代码:

Write-Host "Example of simple script block with invoke command"
Invoke-Command -ScriptBlock { Get-Date }
Write-Host "Example of creating and calling a simple script block"
$test={write-host “Example of defining and calling script  block” }
& $test
Write-Host "Script block is called above"
Write-Host "example of passing parameters to scrpit block"
$ip= { Write-Host "my name is:$name" }
$name= "suriya"
Write-Host "&$ip"
$username = { Write-Host "my name is $($args[0])..." }
& $username 'nandhini'
Write-Host "Script block with param is executed"
Write-Host "example of script block with param keyword"
Invoke-Command -ScriptBlock {
param(
$height = "5.2")
Write-Host "height is $height" -ForegroundColor Green
}
Invoke-Command -ScriptBlock {
param(
$design = "manager")
Write-Host "designation id is $design" -ForegroundColor Yellow
} -ArgumentList "manager"
write-Host " example of calling by reference"
$age=10
$boy=24
$csa=36
$dsa=$age+$boy+$csa
$sb= {"sum is $dsa"}
Write-Host "total &$dsa"
Write-Host "Using closure method"
write-Host " example of reference"
$a1=1
$b2=2
$c3=3
$e=$a1+$b2+$c3
$sb1= {"sum is $e"}.GetNewClosure()
$inputs = {
begin { '[Begin  ] welcome to the demo of script block' }
process { "[dob] $_" }
end { Write-Output '[End    ] finished' }
}
2020, 2033, 2044 | & $inputs

输出:

[玩转系统] PowerShell 脚本块 | PowerShell 脚本块完整指南

在脚本块中使用延迟绑定

当参数接受作为值或属性名称的输入时,可以对该参数使用延迟绑定。可以使用变量 $_ 在脚本块内引用管道对象。这对于执行复杂的 cmdlet 很有帮助,其中允许一个对象生成其他参数。使用延迟绑定时必须显式指定参数名称。参数不应是无类型的、脚本块或对象类型。如果在没有输入管道输入的情况下使用延迟绑定,则会抛出错误。

结论 - PowerShell 脚本块

因此,在本文中,我们了解了有关脚本块、定义脚本块、向脚本块添加和传递参数的详细信息。它还通过适当的示例展示了如何定义和调用脚本块。本文还包含与脚本块相关的各种其他相关示例。我们还看到了脚本块中的延迟绑定及其使用。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯