Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >PowerShell无法同时使用两个-Like比较运算符

PowerShell无法同时使用两个-Like比较运算符
EN

Stack Overflow用户
提问于 2022-07-25 06:16:15
回答 1查看 53关注 0票数 1

我正在学习PowerShell,我所做的任务之一就是过滤一个Csv文件记录。

基于这个链接:https://4sysops.com/archives/create-sort-and-filter-csv-files-in-powershell/,我尝试了类似于:Import-Csv -Path '.\sample.csv' | Select-Object EmailAddress,UniqueName,LastLoginDate | ? EmailAddress -like *gmail.com -Or ? EmailAddress -like *outlook.com | Export-Csv -Path $fileOut -NoTypeInformation的东西

但是上面的内容给了我标题中提到的错误。基于这个链接:https://www.computerperformance.co.uk/powershell/match/,我在Select行之后使用Where来解决错误,如下所示:Where-Object {$_.EmailAddress -Like "*gmail.com" -Or $_.EmailAddress -Like "*outlook.com"}

为什么第一个示例给出了错误,而没有给出第二个示例?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-25 08:15:20

tl;博士

  • 这两个命令都使用Where-Object cmdlet;?只是它的内置别名。
  • 然而,您的命令使用不同的语法形式:第一个命令使用更简单、更简洁、但基于特性限制的基于参数的简化语法,而第二个命令使用详细但功能齐全的脚本块语法,参见下一节。
  • 因为您需要组合多个-like操作,所以必须使用脚本块语法简化语法,将您限制为单个操作。

规则, 脚本阻止-based语法

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# You're free to add additional expressions inside { ... }
Where-Object { $_.EmailAddress -like '*gmail.com' }

使用单个参数,即https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_Script_Blocks ({ ... }),在该参数中,要测试的条件是基于表示当前输入对象的变量而制定的。

这个语法:

  • 不受约束设置在表达式的复杂性上--整个PowerShell语言都可以在脚本块中使用。
  • 但是,它有点像详细的

简化的 语法:

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Equivalent of the above.
# Note the absence of { ... }, $_, and "..." 
Where-Object EmailAddress -like *gmail.com

https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_Simplified_Syntax是一种可与Where-ObjectForEach-Object一起使用的替代语法,ForEach-Object

  • 顾名思义,是否更简单、更少.
  • 但是仅限于基于单属性单条件/操作,或者,如果使用ForEach-Object调用方法,则仅限于输入对象本身。

使用简化的语法,构成条件/方法调用的部分作为单独的参数传递,因此绑定到专为使用此语法而设计的不同参数:

  • 由于使用了单独的参数,因此不存在{ ... }附件(没有使用脚本块)。
  • 不需要引用$_,因为它的使用是隐含的;例如,在脚本块语法中,EmailAddress相当于$_.EmailAddress
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- A notable limitation as of PowerShell 7.2.x is that with `Where-Object` you cannot operate on the input object _itself_ - you _must_ specify a property. [GitHub issue #8357](https://github.com/PowerShell/PowerShell/issues/8357) discusses overcoming this limitation in the future, but there hasn't been any activity in a long time.
  • 解析中,引用字符串值是可选的,假设它们不包含元字符(如空格);例如,没有"..."'...'*.gmail.com使用简化的语法,而等效脚本块内的表达式模式解析需要引用,例如'*gmail.com'
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73110762

复制
相关文章
VBA专题04:Like运算符详解
1.<字符串>为文本字符串或者对包含文本字符串的单元格的引用,是要与<模式>相比较的字符串,数据类型为String型。
fanjy
2019/09/09
2.5K0
VBA专题04:Like运算符详解
这两个比较运算符运算速度有差别么
我最近正在读一本书,里边说道 if (a < 901) 比 if (a <= 901) 执行地要快。这是真的么?
ClearSeve
2022/02/11
1480
mongoDB 比较运算符
比较运算符是我们学习任何语言或系统中最为常见的运算符之一。mongoDB的比较运算符,跟Linux的差不多,只不过每一个比较运算符前面会带有符号,他们分别是$eq、$gt、$gte、$lt、$lte、$ne、$in、符号,他们分别是\$eq、\$gt、\$gte、\$lt、\$lte、\$ne、\$in、nin等,下面将对这几个运算符进行描述。 一、比较运算符 $eq = "=" $gt (greater than ) > $gte
Leshami
2018/08/13
1.2K0
【mysql】比较运算符
比较运算符 = <=> <> != < <= > >= 比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果为假则返回0,其他情况则返回NULL。 比较运算符经常被用来作为SELECT查询语句的条件来使用,返回符合条件的结果记录。 [请添加图片描述] [请添加图片描述]1. 等号运算符(=) 等号运算符(=)判断等号两边的值、字符串或表达式是否相等,如果相等则返回1,不相等则返回0。 在使用等号运算符时,遵循如下规则: 如果等号两边的值、字符串或表达式都
兮动人
2022/03/02
2.5K0
Python比较运算符
#!/usr/bin/python # -*- coding: UTF-8 -*- a = 21 b = 10 c = 0 if a == b : print "1 - a 等于 b" else: print "1 - a 不等于 b" if a != b : print "2 - a 不等于 b" else: print "2 - a 等于 b" if a <> b : print "3 - a 不等于 b" else: print "3 - a 等于 b" if a < b : print "4 - a 小于 b" else: print "4 - a 大于等于 b" if a > b : print "5 - a 大于 b" else: print "5 - a 小于等于 b" # 修改变量 a 和 b 的值 a = 5 b = 20 if a <= b : print "6 - a 小于等于 b" else: print "6 - a 大于 b" if b >= a : print "7 - b 大于等于 a" else: print "7 - b 小于 a"
用户8442333
2021/05/26
5080
Python比较运算符
Python比较运算符 以下假设变量a为10,变量b为20: 运算符 描述 实例 == 等于 - 比较对象是否相等 (a == b) 返回 False。 != 不等于 - 比较两个对象是否不相等 (a != b) 返回 True. > 大于 - 返回x是否大于y (a > b) 返回 False。 < 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 (a < b) 返回 True。 >= 大于等于 - 返回x是否大于
用户1077021
2019/11/02
6230
java比较运算符
Java中的比较运算符(也称为关系运算符)用于比较两个值的大小或是否相等,返回一个布尔值(true或false)。本文将介绍Java中的比较运算符的使用方法、注意事项以及一些示例。
堕落飞鸟
2023/04/03
7750
[Linux] 使用awk比较两个文件的内容
当需要比较A , B两个文件 , A文件中存在 , 并且把也在B文件中存在的行去除掉 , 可以使用这个awk的用法来
唯一Chat
2019/12/26
2.9K0
Python编程运算符 比较运算符
 比较运算符就是咱们常见的< ,>, =, <=,>=。通常结合if条件判断语句。
网络豆
2022/11/20
9490
Python编程运算符 比较运算符
PHP- 运算符-比较运算符(一)
比较运算符是编程语言中最基本的运算符之一,用于比较两个值之间的大小、相等性和不等性。在PHP中,比较运算符包括等于、不等于、大于、小于、大于等于和小于等于六个运算符。
堕落飞鸟
2023/04/26
9840
awk中比较运算符
awk 中的比较运算符用于比较数字或字符串的值,它们包括以下内容: > - 大于 < - 小于 >= – 大于或等于 <= – 小于或等于 == - 等于 != - 不等于 some_value ~ / pattern/ – 如果 some_value 匹配模式,则为真 some_value !~ / pattern/ – 如果 some_value 与模式不匹配,则为真 现在我们已经了解了 awk 中的各种比较运算符,让我们通过一个例子更好地理解它们。 在这个例子中,我们有一个名为的文件 rumen
入门笔记
2022/06/02
1.2K0
Python基础 - 比较运算符
似小陈吖
2023/10/17
1270
PHP- 运算符-比较运算符(二)
大于运算符用于比较两个值的大小关系,如果左操作数大于右操作数,返回true,否则返回false。
堕落飞鸟
2023/04/26
8610
shell文件比较运算符
+ - * / % 表示加减乘除和取余运算 += -= *= /= 同 C 语言中的含义
yaohong
2019/09/11
1.2K0
linux同时启动两个Tomcat[通俗易懂]
export CATALINA_BASE CATALINA_HOME TOMCAT_HOME
全栈程序员站长
2022/07/04
5.4K0
linux同时启动两个Tomcat[通俗易懂]
windows同时安装两个jdk
JAVA_HOME   :  C:\Program Files\Java\jdk1.7.0_51
week
2018/08/24
9900
七、IN和LIKE的使用
在 WHERE 子句中优势我们需要查询包含某个字符串的所有记录,这是就需要用到运算符 LIKE 。语法如下:
喵叔
2021/06/25
8370
『debug心路』powershell 中无法激活 conda 环境
工作需求原因,拿到一台新电脑,首先需要安装 python 。一般地,我用 conda 管理自己的 python 环境。
Piper蛋窝
2021/02/12
4.8K0
『debug心路』powershell 中无法激活 conda 环境
JavaScript中的比较运算符
第二种是===比较,它不会自动转换数据类型,如果数据类型不一致,返回false,如果一致,再比较。
acoolgiser
2019/01/17
1.4K0
JavaScript中的比较运算符
最后一个null >= 0的结果为true。 刚看到这个代码的时候,下意识地会认为结果应该也是false,毕竟上边标明了三种情况都为false。 然而这个就露出了相等运算符和关系运算符两者执行的差异。
贾顺名
2019/12/05
1.2K0

相似问题

使用VBA Like运算符比较两个变量中的值

117

LIKE与IN运算符的比较

20

PowerShell比较运算符

115

用“-like”比较运算符将Powershell排序数组转换为多维数组

10

如何同时使用多个比较运算符

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文