从零开始学PowerShell(10) PowerShell中的子表达式

powershell 中的字符串混淆 例子1 (VarIaBLE '*MDr*').naMe[3,11,2]-JoiN'' 执行结果是 iex 解析: PS > VarIaBLE '*MDr*' #执行命令 variable '*MDr' Name Value 阅读详情

在PowerShell中你或许看到过类似@(......), $(......),(......)这类使用圆括号将一系列语句包裹在一起的写法形式出现在脚本中。今天我们要说的就是这几种表达式,它们被称作子表达式,子表达式。

三种表达式分别如下:

组表达式

(......) 我们称这类由圆括号括起来的表达式为组表达式。

组表达式主要用于对语句块的优先级检测,可以看到圆括号内的语句块是优先级最高执行的。

PS /> (100+8) * 7
756

除了设置优先级以外,还可以作为动态调用属性的一种方式,圆括号内为要处理的语句块。

PS /> (Get-Process -ProcessName "WeChat").CPU
1284115.295873
子表达式

我们称$(......) 这类由美元$符号与圆括号组合的表达式为子表达式。

在子表达式中,我们可以把任何想要执行的语句块,单个或者多个语句放在一起,当语句块内的表达式执行后返回的值如果是单个值的话它最终返回的其实是一个标量值。

PS /> $str1 = "123"
PS /> $($str1)
123
PS /> $($str1)[0]
1

反之如果是多个值,那么它返回的是一个数组类型值,下面的示例中我们定义了一个$str2数组变量,取它的下标[0]值,取的是首位标量的值。

PS /> $str2 = "123","456","789"
PS /> $($str2)
123
456
789
PS /> $($str2)[0]
123
数组子表达式

我们称@(......)这类由@符号与圆括号组合的表达式为数组子表达式。

数组子表达式与子表达式类似,但主要的区别是无论表达式最后执行后返回的值是单个值还是多个值都是以数组形式返回的,从下面的实例中可以看到我们只给str1赋值了一个字符串123,但取它的首位下标,返回了整个数值。

PS /> $str1 = "123"
PS /> @($str1)
123
PS /> @($str1)[0]
123

另外,数组表达式即便返回的是一个空值,它也属于是数组类型。

PowerShell强制转数组:数组子表达式@()与[array]实战指南 脚本开发中,数据类型的一致性往往决定代码的稳定性,尤其是在动态语言环境下。PowerShell作为一种对象管道式Shell,其输出模型与传统编程语言的返回值机制截然不同:命令可能返回空值、单个对象或对象数组,这种不确定性常导致遍历和计数逻辑出现隐性错误。理解输出的三态模型、数组子表达式@()与类型转换符[array]的差异,是规避风险的关键。@()能将任意输出统一包装为数组,适合绝大多数场景;而[array]在处理$null时行为不同,需谨慎使用。同时,函数输出流泄漏与管道逐元素处理机制也是常见陷阱。掌握这 阅读详情

相关推荐

Powershell语言的正则表达式

在计算机编程与脚本语言中,正则表达式(Regular Expressions)是一种强大的工具,用于处理字符串和文本。特别是在系统管理和自动化脚本方面,PowerShell作为Windows环境中的主要脚本语言,广泛支持正则表达式,使得用户能够高效地查找、替换和匹配字符串。本文将详细探讨PowerShell中的正则表达式,涵盖正则表达式的基础知识、PowerShell中正则表达式的使用方法及其在实际场景中的一些应用示例。

2501_90416851的博客 541

powershell@使用指南与入门命令

这里man可以替换help(两者都是Get-Help)的别名。某些情况下,您可能会收到错误,那么可以考虑改为运行如下指令。可以安全地忽略这些错误。它们不会影响PS功能或使用。比如获取Stop-Process 命令的相关帮助。来查询可以操作对应类型的cmdlet。类型的对象可以执行那些操作。以Get-Date 为例。获取对象的类型,然后利用。为节约篇幅,只展示前5行。cmdlet的帮助选项。

xuchaoxin1375的博客 1750

使用.NET 免费开源包ViewFaceCore做一个人脸识别并注册的功能,没有比我更全的

本文介绍了一个基于WinForm的免费人脸识别系统实现方案。系统使用AForge和ViewFaceCore库,支持从USB或电脑自带摄像头采集图像,具备人脸注册和快速识别功能。硬件方面仅需普通摄像头,软件依赖多个NuGet包(如AForge.Video、ViewFaceCore等)。界面包含视频显示、图像预览和功能按钮控件,后台采用SQLServer存储用户面部特征数据。核心代码展示了人脸检测、特征提取和多线程处理逻辑,通过ViewFaceCore实现高效识别。系统具有识别速度快、准确率高的特点,适合Win

一个靠“吃代码”长大的程序猿,专治各种“Bug 饥饿症”。 817

windows上命令行@文件内容查看方案@行号显示@nlps@cat -n

类似,但是提供了groupby的操作。这种方法是推荐的,有利于后期的处理。可以借助于excel查看数据。

xuchaoxin1375的博客 1504

Synopsys PCIe IP 实战笔记:手把手教你配置本地数字回环(PIPE/RMMI)

本文详细介绍了Synopsys PCIe IP本地数字回环(PIPE/RMMI)的配置与调试全流程,涵盖硬件连接、寄存器操作及实战技巧。通过数字回环模式,开发者可在无真实对端设备的情况下验证PCIe接口功能,适用于芯片验证和FPGA原型开发。文章还提供了常见问题排查和性能优化建议,助力高效完成协议解析与调试。

weixin_30394669的博客 323

汽车软件工程师必看:ASPICE流程实战指南(附完整产物清单)

本文为汽车软件工程师提供ASPICE流程实战指南,详细解析如何搭建合规开发环境、各阶段文档产出清单及工具链整合策略。通过实战案例和模板资源,帮助团队高效实施ASPICE标准,提升软件开发质量与效率。

weixin_29230805的博客 470

powershell@别名@命令异常排查@对象属性查询

powershell 的cmdlet名字大多比较长,如果使用别名的话可以提高效率。由于powershell 不区分大小写,所以默认在搜索相关命令的时候不区分大小写。默认情况下,该命令根据别名来查找命令(函数)的原名(Definition)好,现在我们利用已经获得的知识去查询经常使用的命令的别名配置情况。这里可以提一下获取对象(真实(完整)属性)的若干方法。现用查询到的别名,来做一个信息(列)筛选。所以之后我们直到可以用gal来代替。还可以进行排序或过滤或分组。

xuchaoxin1375的博客 805

MOBsf联动雷电模拟器(在docker国内库撤销后)

MobSF (全称:Mobile Security Framework,中文名:移动安全框架) 是一个自动化的移动应用程序(Android / iOS / Windows)开源测试工具,该工具采用Python开发,能够执行静态,动态和恶意软件分析。MobSF提供了很多自动化分析功能,尤其适用于Android应用。安装必备(默认已准备好)docker(kali) 现在的国内镜像源都已经下架了只能开代理下载桌面版然后给pull到本地。

qq_48149564的博客 1600

powershell@字符串修改/替换字符串@抽取markdown中的各级标题大纲

文章目录powershell_ modify String_ 字符串修改/替换字符串referencespowershell 处理字符串的方法相关语法(-replace & regex)实例:替换掉第一个dallar($)符号实例:调整数字序列字符串学习过程 powershell_ modify String_ 字符串修改/替换字符串 references How to Use PowerShell Replace to Replace Text [Examples] (adamtheautoma

xuchaoxin1375的博客 1998

基于Simulink的直流电机双闭环调速系统抗扰动仿真与参数优化

本文详细介绍了基于Simulink的直流电机双闭环调速系统仿真与参数优化方法。通过构建转速外环与电流内环的仿真模型,阐述了利用工程设计法整定PI参数的核心步骤,并重点探讨了如何优化系统参数以增强其抗负载突变等扰动的能力,实现快速、平稳的调速性能。

weixin_29061997的博客 192

UE5网络模块实战:属性复制、RPC与联机开发踩坑指南

多人联机开发中,网络同步是核心难题。UE5网络模块以服务器权威为基础,通过Actor复制、RPC和所有权机制实现多端状态一致。理解属性复制与OnRep回调、区分Server/Client/Multicast RPC的适用场景,是构建稳定联机架构的关键。本文结合数字孪生与多端协作场景,探讨如何将渲染与逻辑分离,并针对打包后网络失效、端口防火墙、崩溃排查等工程实践问题给出解决方案。通过蓝图接口解耦表现层,利用C++创建StaticMesh组件实现服务器逻辑与客户端表现分离,同时注意专用服务器不加载渲染依赖(如D

weixin_29010003的博客 272

powershell@函数结构@输入处理方式@Begin Process End@支持管道符的函数结构组织

powershell@函数结构@输入处理方式Begin Process End@支持管道符的函数结构组织通过合理使用beginprocessend和clean块,PowerShell 函数能够有效管理输入数据流和资源。理解这些块的功能和最佳实践可以帮助您编写更加健壮和灵活的脚本。

xuchaoxin1375的博客 1304

【学习系列】SAP RAP 4:通过注解来完成一些常规需求

本文介绍了RAP应用中常用注解的实现方式,包括搜索帮助、文本描述绑定、联动搜索、字段控制等功能。通过@Consumption、@UI等注解可以实现搜索帮助定义、多字段联动、必输校验、默认排序和默认值设置。管理字段可通过@Semantics注解自动记录创建/修改信息,长文本使用@UI.multiLineText实现多行显示。这些注解可优化界面交互和数据管理,为后续行为定义功能开发奠定基础。文章结构清晰,针对不同需求提供了具体的实现方案和代码示例。

DeveloperMrMeng的博客 697

从零开始学PowerShell(10)PowerShell中的子表达式

在PowerShell中你或许看到过类似@(......),$(......),(......)这类使用圆括号将一系列语句包裹在一起的写法形式出现在脚本中。今天我们要说的就是这几种表达式,它们被称作子表达式,子表达式。 三种表达式分别如下: 组表达式 (......)我们称这类由圆括号括起来的表达式为组表达式。 组表达式主要用于对语句块的优先级检测,可以看到圆括号内的语句块是优先级最高执行的。 PS /> (100+8) * 7 756 除了设置优先级以外,还可以作为动态调用属性的一..

墨痕诉清风的博客 768

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

如何排查 PowerShell Here-String 插值报错:注释、花括号与多行子表达式的完整诊断指南

写配置生成、邮件模板或 XML 导出的脚本时,PowerShell Here-String 是最顺手的多行字符串写法。但只要模板里同时出现 `#` 注释、花括号和 `$(...)` 插值,解析错误就容易出现,而且报错信息往往不指向真正的病灶。本文面向熟悉基本语法、却在多行字符串上反复踩坑的工程师,从一段真实的报错入手,讲清解析器的处理顺序,并给出按场景选择的修复手法,最后附一套可直接执行的自检步骤

gitblog_00029的博客 973

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

PowerShell 第18章:变量,把数据装进“盒子”的正确方式

本文介绍了PowerShell中变量的核心概念与使用技巧。主要内容包括:变量的本质是命名内存空间,可存储字符串、数字等对象;创建与读取变量、命名规范;单双引号的区别及转义符使用;数组与集合的操作方法;强类型变量的优势及常见类型;相关最佳实践与易错点提示。还提供了练习题和常用代码片段,帮助读者掌握变量在脚本中的实际应用。

分享 Windows 系统部署、镜像封装、终端管理、故障排查与运维自动化实践,涵盖 Sysinternals、PowerShell 和 AI 工具应用。以真实案例梳理排查思路与解决步骤,让运维经验清晰、可复用。 2万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

如何在 PowerShell 中连接字符串和变量?

我希望这个片段显示:42 - Slim Shady - 阿姆但相反,它显示:42 + - + Slim Shady + - + 阿姆这让我认为 + 运算符不适合连接字符串和变量。你应该如何使用 PowerShell 来解决这个问题?

HuntsBot的博客 1527

powershell文章汇总

3分钟带你了解PowerShell发展历程 从零开始——PowerShell应用入门(全例子入门讲解) Powershell变量的类型和强类型 – PowerShell 中文博客 Powershell变量的作用域 – PowerShell 中文博客 PowerShell单行注释、多行注释、块注释的方法_PowerShell_脚本之家 Powershell访问数组 – PowerShell...

冰封的落叶的博客 311

PowerShell的双引号

 作者: Edengundam(马涛)今天看病速度真快, 趁着空隙, 我就继续上次没有完成工作, 介绍双引号. 双引号用的地方太多了, 今天我依然会在Bash, Perl和PowerShell之间进行对比, 对比的三个方面没有变化: 变量展开(也被称为: 变量代换, 变量篡改. ), 转义字符, 引号自身.

Windows PowerShell 5341

如何在PowerShell中连接字符串和变量?

Suppose I have the following snippet: 假设我有以下代码段: $assoc = New-Object psobject -Property @{ Id

p15097962069的博客 7769

Powershell 备忘

如何修改环境变量 1 [environment]::SetEnvironmentvariable(“path”,"xxx","user") 2 [environment]::GetEnvironmentvariable(“path”,"user") 特殊的变量:子表达式 由 $+圆括号+表达式 构成的变量属于子表达式变量,这样的变量会先计算表达式,然后把表达式的值返回。例如 变量...

weixin_30911451的博客 79

为什么歌曲总是提前截断?MiniMax-Music3-bf16常见问题排查清单与7大解决方案

MiniMax-Music3-bf16 是一款运行在 Apple Silicon 上的 MLX BF16 本地音乐生成模型,能根据你的**歌词 + 风格描述**生成 44.1 kHz 立体声歌曲。不少新手遇到同一个困惑:"我明明写了 `--duration 60`,为什么歌只有 40 秒就停了?" 别急,这大概率不是 bug。本文是一份面向新手的排查清单,先讲清截断的底层机制,再给出 7 个立即可

gitblog_00712的博客 1031

PowerShell Here-String 解析报错终极排错指南:3 个高频坑的定位与根治方法

PowerShell 的 Here-String(here-string,用 `@"` 和 `"@` 包裹的多行字符串)是生成 SQL、JSON、模板文本的常用工具,但它的解析规则比单行字符串更严格,稍有不慎就报解析错误。本文带你 5 分钟吃透 3 个最高频的 here-string 解析坑:报错现象、根因、正确写法全部给出,并附官方 Parser API 验证方法,可规避绝大多数 here-st

gitblog_00458的博客 922

PowerShell Here-String 插值解析报错,为什么代码看着没问题?如何快速定位与改写

在 PowerShell 中用 Here-String 拼多行文本时,`$()` 插值与注释、花括号、行尾反引号混在一起,经常触发 Here-String 解析报错:错误行号指向模板中间,但肉眼逐行检查却挑不出毛病。本文给出一个三步自查流程,帮你快速完成 Here-String 插值排错,并用 `Test-Parser` 在运行前拦截这类问题。 ## 报错到底长什么样:先看一个典型场景 最常见

gitblog_01064的博客 933

PowerShell-变量

目录标题交互变量使用变量赋值变量查询脚本变量使用 交互变量使用 变量赋值 特殊变量名 ${"I"like $}="mossfly" 同时给多个变量赋相同的值 $a = $b = $c =123 交换两个变量的值 $value1, $value2 = $value2, $value1 变量查询 查看变量 ls variable: # Name ...

willclark的博客 870
上一篇: 从零开始学PowerShell(9) 创建PowerShell对象
下一篇: Python读取数据编码排错
itanders
博客等级 码龄19年 178粉丝 177原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值