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

[玩转系统] 了解 PowerShell 7 三元运算符

作者:精品下载站 日期:2024-12-14 07:55:36 浏览:11 分类:玩电脑

了解 PowerShell 7 三元运算符


我从一开始就一直在撰写和教授 PowerShell。我一直致力于让 IT 专业人员在日常工作中更轻松地使用 PowerShell,从而让生活更轻松并促进他们的职业发展。随着语言多年来的发展,这种关注无疑具有挑战性。在 PowerShell 7 中,这种情况将继续下去。 Microsoft 正在向下一版本的 PowerShell 添加许多新功能。在我看来,其中很多功能都是为了满足微软的需求而设计的。随着每个新版本的发布,我越来越清楚的一件事是,PowerShell 现在对很多人来说意味着很多事情。这就像一群盲人描述的大象一样;根据您触摸的内容,它的含义有所不同。

认识三元运算符

最新 PowerShell 7 预览版的新增功能之一是三元运算符。如果你的背景和我一样,你会说,“那是什么?”根据维基百科,这是一个成熟的计算机科学术语。该运算符允许创建简洁的条件语句。

<if some condition is true> ? <this>:<else this>

在 PowerShell 7 中使用此运算符意味着您可以编写如下 PowerShell 表达式:

$IsWindows ? "ok":"not ok"

[玩转系统] 了解 PowerShell 7 三元运算符

传统的 If 语句替代方案是:

if ($IsWindows) {
    "ok"
}
else {
    "not ok"
}

在某些方面,三元运算符并不复杂。尽管有一个主要区别。使用 If 语句时,Else 子句是完全可选的。使用三元运算符时,需要条件 Else 组件。

这是一个传统的 If/Else 语句。

if ($IsWindows) {
    Get-CimInstance -ClassName win32_service -filter "name='bits'"
}
else {
    Write-Warning "This command requires Windows"
}

使用新的三元运算符,您可以这样写:

$IsWindows ? (Get-CimInstance -ClassName win32_service -filter "name='bits'") : (Write-Warning "This command requires Windows")

[玩转系统] 了解 PowerShell 7 三元运算符

三元运算符对于简单的条件语句似乎很方便。考虑一下这个传统的代码。

if ($IsWindows) {
    Get-CimInstance -ClassName win32_service -filter "name='bits'"
    Get-CimInstance -ClassName win32_service -filter "name='wsearch'"
}
else {
    Clear-Host
    Get-Date
    Write-Warning "This command requires Windows"
}

与三元运算符版本相比。

$IsWindows ? (Get-CimInstance -ClassName win32_service -filter "name='bits'"), (Get-CimInstance -ClassName win32_service -filter "name='wsearch'") : (Clear-Host),(Get-Date),(Write-Warning "This command requires Windows")

它有效,但对我来说有点笨拙。

[玩转系统] 了解 PowerShell 7 三元运算符

我承认这是一个有点做作的例子。如果您想知道,据我所知,使用 If/Else 或三元运算符之间没有性能优势。

如果目标是简洁,PowerShell 不关心格式。这两个语句具有相同的结果。

if ($IsLinux) { ls -al } else { Write-Warning "This command requires Linux" }
$isLinux ? (ls -al) : (Write-Warning "This command requires Linux")

你喜欢哪个?

这对您意味着什么?

我不希望 Microsoft 将此运算符向后移植到以前版本的 PowerShell。这意味着如果您想使用 PowerShell 7,则必须依赖它。对于控制台上的简单条件语句,我想我可以看到吸引力。

[玩转系统] 了解 PowerShell 7 三元运算符

但如果你正在编写脚本文件,我还没有看到任何优势。这是一个新功能,很多人一开始并不理解。就个人而言,这样的事情更清楚。

if ((get-date).DayOfWeek -eq "Friday") {
 $var = "tgif"
 } 
 else {
 $var = "blah"         
}

即使您是 PowerShell 新手,对于正在发生的事情也没有太多神秘之处。

所有这些并不意味着我告诉您避免使用此运算符。我没有开发人员背景,所以我并没有错过这个运算符,而且传统的 If 语句对我来说效果很好。

因为我没有开发人员背景,如果这个操作符有令人信服的用例,我很想听听它们,因为我打赌它会涉及我还没有学到的新东西。对于安装了 PowerShell 7 预览版 4 或更高版本的其他人,请尝试新的运算符,看看它对您有何意义。

更新

显然,亚当·伯特伦和我这些天意见一致。以下是他今天在 Petri.com 上发表的观点 https://www.petri.com/using-the-ternary-conditional-operator-in-powershell-7

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

取消回复欢迎 发表评论:

关灯