动态创建PowerShell脚本块 2


脚本块是一段可以被执行的PowerShell代码,我们通常是把脚本块放在闭合的大括弧中。若想在PowerShell中动态地创建脚本块,我们首先得知道如何将一段字符串转换成脚本块对象。

$scriptblock = [ScriptBlock]::Create('notepad')

先是字符串,然后转换成脚本块对象,再然后就可以将脚本块交给任何可以接受以脚本块为参数的PowerShell命令了,比如Invoke-Command:

Invoke-Command -ScriptBlock ([ScriptBlock]::Create('notepad'))

你可能会问,那我为什么不直接传递一个字符串呢?可不可以,搞一下不就知道啦:

PS> Invoke-Command -ScriptBlock 'notepad'
Invoke-Command : 无法绑定参数“ScriptBlock”。无法将“System.String”类型的“notepad”值转换为“System.Management.Autom
ation.ScriptBlock”类型。

如果你的脚本块本身就是静态的,直接这样即可:

$block = { Get-Date }
Invoke-Command -ScriptBlock $block

如果你的脚本是动态的,比如来自用户输入,或着来自某个文件,再或者来自网络上一段字符串,那么[ScriptBlock]::Create() 首当其冲。

本文引用自:Create Dynamic Script Blocks

本文链接: https://www.pstips.net/create-dynamic-script-blocks.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

2 条评论 “动态创建PowerShell脚本块