[玩转系统] PowerShell 脚本块 | PowerShell 脚本块完整指南
作者:精品下载站 日期:2024-12-14 04:47:14 浏览:14 分类:玩电脑
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 }
输出:
函数和脚本块之间的区别
函数和脚本块之间的主要区别在于函数不能分配给变量,而脚本块可以作为值分配给变量。脚本块很容易移植,因此应该明智地使用。
例子 :
函数声明和调用。
代码:
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 则显示以下输出。
输出:
要调用脚本块,必须使用符号。
将参数传递给脚本块
代码:
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])..." }
输出:
示例#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"
输出:
假设在脚本块内部调用变量,变量值在脚本块外部更改,然后在脚本块内部更改。这称为通过参考设置。如果不需要更改该值,则必须使用 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()
输出:
开始流程和结束
与函数一样,Begin process 和 End 可以添加到脚本块中。 begin 块用于定义变量、路径等。process 块包含操作代码。结束块正在清理代码。
示例#1:
代码:
$test = {
begin { '[Begin ] welcome to the demo' }
process { "[age] $_" }
end { Write-Output '[End ] completed' }
}
22, 33, 44 | & $test
输出:
示例#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
输出:
在脚本块中使用延迟绑定
当参数接受作为值或属性名称的输入时,可以对该参数使用延迟绑定。可以使用变量 $_ 在脚本块内引用管道对象。这对于执行复杂的 cmdlet 很有帮助,其中允许一个对象生成其他参数。使用延迟绑定时必须显式指定参数名称。参数不应是无类型的、脚本块或对象类型。如果在没有输入管道输入的情况下使用延迟绑定,则会抛出错误。
结论 - PowerShell 脚本块
因此,在本文中,我们了解了有关脚本块、定义脚本块、向脚本块添加和传递参数的详细信息。它还通过适当的示例展示了如何定义和调用脚本块。本文还包含与脚本块相关的各种其他相关示例。我们还看到了脚本块中的延迟绑定及其使用。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag