[玩转系统] 构建 PowerShell 异步函数的快速指南
作者:精品下载站 日期:2024-12-14 12:40:02 浏览:16 分类:玩电脑
构建 PowerShell 异步函数的快速指南
最常见的 PowerShell 函数是执行代码并在完成后将控制权返回到控制台的函数。这称为同步代码或 PowerShell 异步函数。这意味着在该函数执行完成之前,不会继续执行进一步的代码。
有时,函数内部的代码可能需要一段时间,并且您不想等待它完成。在这种情况下,您需要构建立即返回控制权但继续在后台运行线程的函数。
例如,我使用异步函数来清理 Azure VM。该过程最多需要 5 分钟,因为它必须关闭虚拟机、删除虚拟机并清理所有连接的磁盘。让我的自定义函数返回后台作业对象并在我有时间时对其进行监视要容易得多。
PowerShell 异步函数可以用几种不同的方式编写;工作流程、并行运行空间和作业等等。每个都有其优点和缺点。但是,我通常使用作业来运行异步代码。我这样做是因为它们通常易于管理并且对我来说很直观。
假设我需要一个删除 Azure 虚拟机的函数。在此函数中,我需要删除虚拟机,这需要几分钟时间并执行一些其他清理任务。
我想构建一个函数,它允许我返回后台作业对象,但也让用户可以选择等待该函数(如果需要)。
始终提供等待选项,以防万一您开发的脚本可能需要该功能。
正常构建代码
使用 Azure PowerShell cmdlet Remove-AzVM
删除 Azure 中的 VM 非常简单,该命令需要一些参数; 名称
和ResourceGroupName
。
这将删除我的 Azure VM:Remove-AzVM -Name MYVM -ResourceGroupName MYRG
。
完毕。我现在有了删除 Azure VM 的“典型”代码。
构建函数参数
要围绕此构建一个在后台运行的函数,我需要构建它以支持 Remove-AzVm
所需的参数,以便 Name
和 ResourceGroupName
。
function Remove-MyAzureRmVM
{
param (
[Parameter(Mandatory)]
[string]$Name,
[Parameter(Mandatory)]
[string]$ResourceGroupName
)
Remove-AzureRmVm -Name $Name -ResourceGroupName $ResourceGroupName
}
我现在有一个简单的代理函数,它将两个参数传递给 Remove-AzVm
cmdlet。这可行,但效果不是很好,因为它是同步运行的。我们需要将其变成 PowerShell 异步函数并实现 PowerShell 作业支持,但也为用户提供同步运行它的选项(如果他们愿意)。
实施 PowerShell 异步作业支持
为此,我们需要将代码放入脚本块中。这使我们不仅可以将其传递给 Start-Job,而且还可以在用户想要等待操作完成时执行它。由于 Remove-AzVm
需要函数中的一些参数,因此我们还必须将这些参数添加到脚本块中。
$scriptBlock = {
param ($Name,$ResourceGroupName)
Remove-AzureRmVm -Name $Name -ResourceGroupName $ResourceGroupName
## Other stuff here
}
将代码放入脚本块后,您只需将其传递给 Start-Job
,然后就可以开始比赛了!请务必根据需要传递参数。
Start-Job -ScriptBlock $scriptBlock -ArgumentList @($VMName,$ResourceGroupName)
提供同步操作支持
由于代码位于脚本块中,因此我们现在还可以通过使用&符号并再次传入参数来自行执行此代码。
& $scriptBlock -VMName $VMName -ResourceGroupName $ResourceGroupName
现在我们有了两种执行代码的方法。我们现在需要做的就是为函数提供一种方法来指定我们想要的函数。
默认情况下,我希望代码在后台作业中执行,但我希望可以选择在需要时同步执行它。实现此功能的一个好方法是使用 Wait
参数作为开关类型。这使我能够在需要时快速“打开”同步行为。
Remove-MyAzVM -VMName MYVM -ResourceGroupName MYRG -Wait
猜你还喜欢
- 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