Foreach-Object与Where-Object在PowerShell 3.0中的改动

PowerShell自动化运维实战:从基础命令到脚本编写 在系统管理与自动化运维领域,命令行工具是工程师的核心生产力。传统Shell基于文本流处理,而现代自动化平台则引入了对象管道概念,通过传递结构化数据对象而非纯文本,实现了更精准、强大的数据处理能力。这一技术革新显著提升了脚本的健壮性和可维护性,其价值在于能够统一处理文件、进程、服务以及网络配置等多种系统资源。在Windows、Linux及macOS的跨平台场景中,这种基于对象的自动化方式已成为运维标准实践。本文聚焦PowerShell这一代表性工具,深入解析其核心的“对象管道”设计哲学与“动词-名词”命令结构 阅读详情

在PowerShell 3.0增加了许多新语句功能同时也简化了许多语法功能,这里最为明显也的就是Foreach-Object与Where-Object了。在V3中省略了“$_”与“{}”的作用,我们通过如下几个简短的小例子说明:

 通常我们使用Where-Object或Where(别名)来筛选我们想要的数据都会通过管道传递过来的对象做筛选,如下命令,我们会用到“$_” 这个对象初始功能:

Get-Process|Where-Object{$_.name -like "notepad"}

 

但是到了PowerShell 3.0中完全不需要这样做了,语句将变的更为简单:

Get-Process|Where name -like "notepad"

 

 在Foreach中也同样如此:

"Hello", "World" | ForEach-Object PadRight  10 "-"


 对于今后的PowerShell初学者而言,命令变的更为简单了,但对于从PowerShell 1.0一路走来的人来说不免有点不习惯,好在的是以往的使用方法依然兼容。

 那么为什么要改变呢,我从一些公开文章中发现PowerShell Team是希望PowerShell Cmdlet更加接近所谓的command自然命令形态,而不是作为一种脚本语言的语法形态所存在。所以才有了现在这样的改变。
 

 

PowerShell实战指南:从环境配置到自动化脚本,解决高频问题 命令行工具是系统管理与自动化运维的核心基础,其本质在于通过脚本语言实现对计算机资源的精确控制。传统基于文本流的Shell(如CMD)在处理结构化数据时存在局限,而现代命令行环境则通过面向对象的设计理念,将命令输出转化为结构化对象,极大提升了数据处理能力与自动化效率。这种技术价值在系统管理、批量操作和跨平台运维场景中尤为突出,能够显著减少重复性工作。PowerShell作为Windows生态中的代表性工具,完美体现了这一演进,其基于.NET的对象模型和强大的管道机制,使得管理Windows服务器、Azure云 阅读详情

相关推荐

PowerShell批量修改文件日期:从原理到实战脚本

在Windows系统管理和自动化运维中,文件元数据(Metadata)的精准操控是一项基础且高频的需求。文件的时间戳属性(CreationTime、LastWriteTime、LastAccessTime)是元数据的核心组成部分,它们记录了文件的创建、修改和访问历史。理解其底层原理,即操作系统如何通过文件系统记录和更新这些属性,是进行有效管理的前提。从技术价值看,自动化修改文件日期不仅能极大提升文件整理、归档和备份的效率,更是实现运维标准化、修复系统迁移导致的数据不一致等场景的关键技术。在应用场景上,无论是

weixin_32430941的博客 319

PowerShell ForEach-Object语句中使用return优化控制流

ForEach-Object cmdlet不带-Parallel参数的情况下,它的实现是循环调用一个匿名函数,依次把管道传入的集合里的每个对象当作上下文来运行代码块。所以在代码块里使用return,退出的是当前这次调用,外层循环继续对下个传入对象调用匿名函数。下面是实验: 输出如下: 综上,在ForEach-Object cmdlet的PROCESS代码块中使用return,脚本的行为类似于在for循环语句中的continue关键字。PowerShell中不止有ForEach-Object这个c

Curious_r的博客 1166

11、PowerShell 中的对象操作指南

本博客详细介绍了 PowerShell 中的对象操作技巧,包括方法调用、对象创建与修改、以及集合的枚举和过滤。通过实例演示了如何使用 [PSCustomObject]、New-Object 和 Add-Member 创建自定义对象,以及如何利用 ForEach-Object 和 Where-Object 处理和过滤对象集合。适用于不同技能水平的 PowerShell 用户,帮助提升脚本编写和对象处理能力。

3a9bq4r8t2y的博客 61

Foreach与Foreach-Object的性能区别

在PowerShell中有两个从字面上看非常相似的语句就是Foreach与Foreach-Object了,那么多这两个语句之间除了写法不同,性能上哪个更快呢下面写同时让这两个语句处理10万个对象,在去计算它们所消耗的时间。 function Foreach_test {  foreach($i in 1..100000)  {   $i  } } function Foreach_

Anders's Blog 5956

18、PowerShell脚本中的流程控制详解

本文详细介绍了PowerShell脚本中的多种流程控制方法,包括使用语言级语句(如foreach、switch)和流程控制Cmdlet(如Foreach-Object、Where-Object)的差异与应用场景。通过实际示例展示了日志统计、选项解析、大文件处理、服务状态管理等功能,并对比了不同方式在内存使用和性能上的表现。文章还探讨了语句作为值表达式的用法、自动变量的影响以及嵌套控制等高级技巧,最后提供了选择合适流程控制方式的决策建议,帮助用户编写更高效、可维护的PowerShell脚本。

sea99的博客 67

AI 算力基础设施深度系列(一):从容器到 Kubernetes——算力底座的诞生

1. 容器 = Namespace(视图隔离) + Cgroup(资源限制) + Union FS(镜像分层)└── 不是虚拟机!共享内核,接近零开销2. K8S 三大设计哲学:└── 声明式 API + 控制循环 + 可扩展架构3. K8S 架构:└── 控制面 (API Server / etcd / Scheduler / Controller Manager)

warm3snow的博客 534

PowerShell管道入门,看看你都会不(管道例子大全)

PowerShell的一个重中之重的功能就是管道(pipeline),本文从浅入深,一步一步详解管道的使用方法和例子,来看看有没有你所不知道的吧,如果全知道,恭喜你已经很厉害啦——适用于所有PowerShell应用小白与技术老鸟。另外欢迎各位技术大牛来补充讨论学习~ 1. 管道(pipeline)是什么 在Shell中一个重要的基本概念就是管道(pipeline),即在一组命令中...

weixin_30699235的博客 526

Unity AR开发实战:从Vuforia图片识别到实体识别全流程解析

增强现实(AR)技术通过计算机视觉算法将虚拟信息叠加到现实世界,其核心原理在于对现实环境的感知与理解。在移动端AR开发中,图像识别与物体识别是实现虚实融合的关键技术,它们决定了虚拟内容能否准确、稳定地与现实对象对齐。Vuforia作为成熟的商业AR SDK,为开发者提供了从平面图像识别(Image Target)到三维实体识别(Model Target)的完整解决方案,极大降低了计算机视觉技术的应用门槛。在工程实践中,Vuforia通过封装复杂的特征提取与匹配算法,使开发者能够专注于交互设计与内容制作,广泛

weixin_30972263的博客 301

where-object--转载

在 Windows PowerShell 中,与所需的对象数量相比,通常生成的对象数量以及要传递给管道的对象数量要多得多。可以使用 Format cmdlet 来指定要显示的特定对象的属性,但这并不能帮您解决从显示中删除整个对象的问题。您可能希望在管道结束之前筛选对象,因此只能在最初生成的对象子集上执行操作。 利用 Windows PowerShell 中的 Where-Object cmdle...

weixin_30474613的博客 583

切比雪夫(最小区域法)直线拟合算法

切比雪夫,最小区域法直线拟合

闪电彬彬的博客 3962

点云配准SIFT+SI+RANSAC+ICP

Spin Image(SI)是一种用于点云数据描述的特征描述子,广泛应用于三维点云配准、识别和重建等领域。它能够捕捉点云中的局部几何信息,具有旋转不变性和部分平移不变性等优点,是一种非常强大的特征描述子。Spin Image是一种强大的点云特征描述子,具有旋转不变性、局部几何信息捕捉等优点,适用于点云配准、目标识别和三维重建等多个领域。通过合理选择局部区域、建立参考框架和计算描述子,可以充分利用Spin Image描述点云的特征,从而实现各种三维场景分析和处理任务。

点云兔子的博客 558

循环while、foreach-object

${D:\ii.txt}等同于: gc d:\ii.txt ${D:\ii.txt}|`ForEach-Object {$_ + "mm"}   while (get-process -name notepad | select -Property Responding) {}Get-Datewrite-host "notepad is not responded." do {代码} w...

weixin_33691817的博客 149

组合预测 | Python实现LSTM-XGBoost长短期记忆网络组合极限梯度提升树股票价格预测

组合预测 | Python实现LSTM-XGBoost长短期记忆网络和极限梯度提升树股票价格预测

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 2353

PowerShell 对象详解:属性、方法、Get-Member、Select-Object、Sort-Object 与对象管道实战

PowerShell通过对象的方式处理数据,使得我们能够更加灵活和高效地操作系统中的各种资源。通过学习对象的属性、方法以及如何通过管道处理对象,您将能更好地管理和自动化任务。掌握PowerShell中的对象操作,将大大提高您在Windows环境中的管理效率。希望本章内容帮助您深入理解PowerShell对象的概念,并能够熟练应用这些技能。

分享 Windows 系统部署、镜像封装、终端管理、故障排查与运维自动化实践,涵盖 Sysinternals、PowerShell 和 AI 工具应用。记录真实问题、探索过程与解决方法,也分享 AI 时代的学习心得和实践经验,让技术更易理解 2万+

mapbox 从入门到精通 - 目录

欢迎大家来到gis分享者的《mapbox 从入门到精通》专栏。博主列出学习大纲,如果有什么问题,欢迎留言。

我哎GIS博客 5847

PICO640红外探测器配置模块verilog

Ulis pico 640红外探测器配置模块

Go Forward Forever! 2032

PowerShell 第16章:同时处理多个对象,一文吃透批处理 Cmdlet、CIM/WMI 方法与 ForEach-Object

PowerShell 批量对象处理指南 提供3种方案处理批量对象: 1️⃣ 批处理Cmdlet(首选):直接管道传递对象集合并操作(如Get-Service | Set-Service) 2️⃣ CIM/WMI方法:通过Invoke-CimMethod调用类方法(如修改网卡配置) 3️⃣ ForEach-Object枚举:万金油方案,逐个调用对象方法 核心原则:优先使用原生批处理命令,复杂场景用CIM方法,最后考虑ForEach循环。注意WMI过滤语法与PowerShell不同,危险操作务必加-WhatIf

分享 Windows 系统部署、镜像封装、终端管理、故障排查与运维自动化实践,涵盖 Sysinternals、PowerShell 和 AI 工具应用。记录真实问题、探索过程与解决方法,也分享 AI 时代的学习心得和实践经验,让技术更易理解 2万+

【异常】CNB提示The bill authorization scope cannot access the current request.

摘要:CNB API返回403错误,表明当前token的授权范围无法访问目标仓库。主要原因是:1) REPO_SLUG填写错误,导致资源地址不匹配;2) CNB_TOKEN未授权目标仓库;3) 账号账单状态异常。解决步骤:先检查REPO_SLUG是否与CNB平台仓库地址完全一致;再确认CNB_TOKEN是否绑定目标仓库且有读取权限;最后检查账号账单是否正常且覆盖目标资源。完成排查后更新配置即可解决此授权问题。

奶爸的编程之路,也就一周冷个三天 663

PowerShell 入门 4:动手实验与高频技能速记,Out-File、Alias、对象处理与数组实战

功能命令查看 Out-File 参数设置输出文件宽度Out-File -Width <宽度>防止覆盖文件查看所有别名Get-Alias使用最短命令查看进程查找处理对象的命令查看数组帮助💡本学习笔记适合初学者反复回顾练习,并逐步掌握 Cmdlet 的命令构成、帮助文档查阅技巧,以及参数缩写与别名的高效使用。如需进一步了解 Cmdlet 的构造逻辑与脚本技巧,可继续深入《PowerShell 实战指南》第 4 章。是否需要我将本笔记导出为 PDF 或 Markdown 格式?

分享 Windows 系统部署、镜像封装、终端管理、故障排查与运维自动化实践,涵盖 Sysinternals、PowerShell 和 AI 工具应用。记录真实问题、探索过程与解决方法,也分享 AI 时代的学习心得和实践经验,让技术更易理解 2万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

PowerShell数组方法之Foreach()与Where()

1 <# 2 1.PowerShell Array.Foreach(...)的签名是: 3 Array Foreach(expression[, arguments...]) 4 第一个参数通常是ScriptBlock类型或者类型符号(表示类型转换) 5 第二个以后的参数可以有很多个,都将作为$args自动变量的元素,传递给第一个参数 6 7 2.PowerS...

weixin_30567471的博客 669

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

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

PowerShell数组

Powershell支持数组这种数据结构,但这种数组并不要求数据类型的一致性,更类似于其他语言中的列表。其创建过程非常简单,直接通过逗号分割元素即可,也可以通过【@()】将数组元素括起来。

微小冷的学习笔记 1102

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

PowerShell 函数、管道命令整理

管道命令 where-Object:过滤列表项或命令输出结果 ForEach-Object:处理列表或者命令输出的每一个项目 Select-Object:选择列表项或者输出结果只输出要得结果 Sort-Object:对列表项或者输出结果进行排序 Tee-Object:保存并输出列表项或者输出结果 Group-Object:对列表项或者输出结果进行分组 Measure-Object:对列表项或者输出结果进行计算 compare-Object:对两组对象进行比较 ConvertTo-Html:

CZLwlaq的博客 651

powershell的几个技巧

1. 在java中调用powershell脚本?      visit http://blogs.oracle.com/vaibhav/entry/not_as_easy_as_we, see 3rd reply.      例子代码: String cmdLine = "powershell -file \""+this.scriptPath+"\" get-perfor

张玥的专栏 2694

PowerShell: 管道对象

PowerShell的管道不同于传统的基于文本的管道,而是基于对象的管道。 PowerShell中有类流水线操作,它要求任何命令cmdlet以一个满足要求且标准接口的.NET对象出现。建立在.NET之上的特性允许Shell传递.NET对象,而不是文本。这样不再需要生成文本,不必从其他程序中传递文本。管道不再是文本流,而是各种对象的集合,这些对象可以很容易地向外界展现其包含的任何属性、方...

a2218641的博客 324

powershell使用笔记、.ps1是什么文件

powershell使用笔记、.ps1是什么文件

enthan809882的博客 6925

Windows PowerShell 2.0语言开发之管道对象

本文介绍了通过创建对象管道作用于集合的基础工具,可以把数据转换为用户需要的形式。有了这些操作,可以作用于来自不同来源的对象。每个PowerShell命令均作用于对象集合并返回另外的集合,并且可以在需要情况下将任何单个对象显式地转换为集合。 传统基于文本的管道 链式命令中的每个命令读取文本作为输入,然后生成文本作为输出,因此便于执行并提供传递参数的基本方法。然而用文本来传递数据的缺点主要的是没...

weixin_34357267的博客 99
上一篇: What's new in PowerShell ISE
下一篇: What difference between ConvertFrom-CSV and ConvertFrom-StringData?
itanders
博客等级 码龄19年 178粉丝 177原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值