首页 > 系统相关 >(20)Powershell中的特殊运算符

(20)Powershell中的特殊运算符

时间:2024-01-28 16:33:05浏览次数:29  
标签:PS 20 WindowsPowerShell Windows System32 运算符 v1.0 Powershell

(20)Powershell中的特殊运算符

Powershell 中除了常见的算术运算符,赋值运算符,比较运算符,位运算符,逻辑运算符,字符串的拆分和合并运算符,转义字符,还有一些特殊的运算符,这些特殊的运算符往往可以解决一些特殊的问题,比如执行运行命令,更改值的数据类型等。


1. & (调用运算符)

使用 & (调用运算符)可以运行命令、脚本或脚本块。因为调用运算符不进行分析,所以它不能解释命令参数。此调用运算符用于指示它后面的值为命令(而不是字符串)。使用此运算符可以运行存储在变量中并由字符串表示的命令。例如:

PS C:\Windows\System32\WindowsPowerShell\v1.0> $command = "Get-Service"

PS C:\Windows\System32\WindowsPowerShell\v1.0> $command
Get-Service

PS C:\Windows\System32\WindowsPowerShell\v1.0> & $command

Status   Name               DisplayName                           
------   ----               -----------                           
Stopped  AarSvc_1ba9ab      Agent Activation Runtime_1ba9ab       
Running  ACN_HFB_Complia... ACN_HFB_Compliance_Check              
Stopped  AJRouter           AllJoyn Router Service                
Stopped  ALG                Application Layer Gateway Service     
Stopped  AppIDSvc           Application Identity                  
Running  Appinfo            Application Information               
Stopped  AppMgmt            Application Management                
Stopped  AppReadiness       App Readiness                         
Stopped  AppVClient         Microsoft App-V Client                
Running  AppXSvc            AppX Deployment Service (AppXSVC)     
Stopped  AssignedAccessM... AssignedAccessManager 服务              
Running  AudioEndpointBu... Windows Audio Endpoint Builder        
Running  Audiosrv           Windows Audio                         
Stopped  autotimesvc        手机网络时间                                
Running  Avecto Defendpo... Avecto Defendpoint Service     

从上面的例子中可以看出,将 Get-Service 命令赋值给变量 $command , 所以当输入 $command 输出的是字符串值 "Get-Service",如果要执行该命令,则需要在变量前添加调用运算符。

这个命令在实际的应用中非常有用,比如可以将cmd 命令赋值给变量,然后利用调用运算符就可以执行 cmd 命令。


2. . (属性引用运算符,或称为点运算符)

利用属性运算符就可以像高级语言语言一样,通过点运算符访问对象的属性和方法。例如:

PS C:\Windows\System32\WindowsPowerShell\v1.0> $myStr = "This is my string"

PS C:\Windows\System32\WindowsPowerShell\v1.0> $myStr.Length
17

PS C:\Windows\System32\WindowsPowerShell\v1.0> $myStr.Substring(1,4)
his 

点运算符,再加上 Powershell 的自动补全功能,可以极大地提高输入命令的准确度,例如你可以输出 $myStr.Len<Tab键> , 命令就会自动补全。 前面我们介绍了字符串的拆分和合并运算符,其实有很大一部分操作,可以通过字符串的方法来实现,比如字符串的SubString()可以截取指定的子字符串。

除了引用属性,点运算符还有一种更重要的应用。

使用点"." 获得来源运算符

意思是通过运行脚本,使脚本中的项目成为调用作用域的组成部分,通俗点将就是,可以在当前脚本中调用其他的脚本,则其他脚本中的方法及变量在当前作用域都有效。这在脚本的模块化的使用中非常有用,即可以将经常使用的方法放在一个脚本中,每次使用时加载这个脚本,就可以使用该脚本中的方法。例如:

. c:\.sample.ps1

如果在脚本中加入该语句,则可以在当前作用域使用sample.ps1 中的所有方法及变量。

除此之外,点运算符还有最常见的使用。

点 (.) 还用作父目录符号

这一点应该是大家都属性的。在 Powershell 中,双击脚本,默认是不会执行的(不像bat等脚本,双击直接运行),这主要是出于对安全的考虑。在 Powershell 执行脚本的格式如下:

PS C:\> .\sample.ps1

3. :: (静态成员运算符)

静态成员运算符经常用来调用 .NET Framework 类的静态属性运算符和方法。要查找对象的静态属性和方法,可以把命令的输出通过管道(|)输入给 Get-Member cmdlet 命令。例如:

PS C:\Windows\System32\WindowsPowerShell\v1.0> [datetime]::now

2024年1月28日 16:09:13



PS C:\Windows\System32\WindowsPowerShell\v1.0> [datetime]::now | Get-Member


   TypeName: System.DateTime

Name                 MemberType     Definition                                                                                                       
----                 ----------     ----------                                                                                                       
Add                  Method         datetime Add(timespan value)                                                                                     
AddDays              Method         datetime AddDays(double value)                                                                                   
AddHours             Method         datetime AddHours(double value)                                                                                  
AddMilliseconds      Method         datetime AddMilliseconds(double value)                                                                           
AddMinutes           Method         datetime AddMinutes(double value)                                                                                
AddMonths            Method         datetime AddMonths(int months)                                                                                   
AddSeconds           Method         datetime AddSeconds(double value)                                                                                
AddTicks             Method         datetime AddTicks(long value)                                                                                    
AddYears             Method         datetime AddYears(int value)  

4. ..(范围运算符)

范围运算符表示给定上下限的整数数组中的序列整数,注意该运算符只针对整数有效。利用该运算可以快速创建指定范围的整数数组。例如:

PS C:\Windows\System32\WindowsPowerShell\v1.0> 1..4
1
2
3
4

PS C:\Windows\System32\WindowsPowerShell\v1.0> 4..1
4
3
2
1

PS C:\Windows\System32\WindowsPowerShell\v1.0> $max = 5

PS C:\Windows\System32\WindowsPowerShell\v1.0> foreach ( $a in 1..$max )
{
     Write-Host $a
 }
1
2
3
4
5

从上面的例子中可以看出,使用范围运算符可以使语法更简洁和直观。


5. -f (格式运算符)

使用字符串对象的格式化方法对字符串进行格式化。在运算符左侧输入格式字符串,在运算符右侧输入要格式化的对象。例如:

PS C:\Windows\System32\WindowsPowerShell\v1.0> "{0} {1} {2:N}" -f 1,"Hello",[math]::pi
1 Hello 3.14

以上语句中-f 之前的{0} {1} {2} 都是占位符,-f 之后是要替换占位的值,对于第三个值,格式化使其只输出两位小数。

格式运算符常用在对时间,日期,以及对输出结果(保留几位小数等)的格式化。


6. $( ) 子表达式运算符

返回一条或多条语句的结果。对于单个结果将返回标量。对于多个结果将返回数组。例如:

PS C:\Windows\System32\WindowsPowerShell\v1.0> "{0} {1} {2:N}" -f 1,"Hello",[math]::pi
1 Hello 3.14

PS C:\Windows\System32\WindowsPowerShell\v1.0> $x = 2

PS C:\Windows\System32\WindowsPowerShell\v1.0> $( $x * 5)
10

7. @( ) 数组子表达式运算符

通过数组返回一条或多条语句的结果。如果只有一项,则数组只有一个成员。例如:

PS C:\Windows\System32\WindowsPowerShell\v1.0> @( Get-WmiObject win32_logicalDisk)


DeviceID     : C:
DriveType    : 3
ProviderName : 
FreeSpace    : 52780847104
Size         : 252841029632
VolumeName   : Windows

8. ,(逗号运算符)

用作二元运算符时,逗号用于创建数组。用作一元运算符时,逗号用于创建只含一个成员的数组。逗号放在成员之前。例如对比一下命令的执行结果:


PS C:\Windows\System32\WindowsPowerShell\v1.0> $myArray = 1,2,3

PS C:\Windows\System32\WindowsPowerShell\v1.0> $singleArray = ,1

PS C:\Windows\System32\WindowsPowerShell\v1.0> $singleInt = 1

第一条命令和第二条命令创建都是整数数组,第二条命令创建的数组只有一个元素。第三条命令创建的是一个数型变量。


总结

Powershell 中的特殊运算符可以实现一些其他运算无法实现的一些功能。尤其是调用运算符和点运算,以及静态成员运算符,可以实现其他运算望尘莫及的功能,掌握好这些特殊运算符,可以实现 Powershell 中许多奇巧。

标签:PS,20,WindowsPowerShell,Windows,System32,运算符,v1.0,Powershell
From: https://www.cnblogs.com/zhang-snail/p/17992985

相关文章

  • 2024年第一天
    时间稍纵即逝,不知不觉已经来到2024,ageaddoneagain。2023年是煎熬与困难的一年,也是幸运的一年。2023年经历了好多人生的第一次,那些场景不会随着岁月的洗礼而模糊,将会是脑海中最深刻的回忆。2024年,好好对待自己遇到的人,做好一个大男孩该做的事,2023年小结:1.了解了微......
  • 2024最新苹果iOS17.3微信分身详解分享
    微信是目前最流行的社交软件之一,拥有庞大的用户群体。然而,对于一些需要同时使用多个微信账号的用户来说,使用官方版微信就显得有些不方便。iOS分身微信软件可以解决这个问题,它可以让用户在同一台设备上同时登录多个微信账号,从而实现工作生活两不误。iOS分身微信软件的优势iOS......
  • [office] excel2007如何备注
    在我们使用excel录入数据的时候,经常会对一些字或词进行注明,要如何才能添加备注呢。下面让小编为你带来excel2007备注的方法。excel2007备注设置步骤如下:1:我们以“2015年5月酒水进出表”为例,在桌面找到这个表格,用鼠标双击打开这个表,如下图2:打开这个表之后,我们随便举......
  • [鹤城杯 2021]EasyP
    我来到博客园的第一篇记录题目复现链接:https://www.nssctf.cn/problem/463题目源码:<?phpinclude'utils.php';if(isset($_POST['guess'])){$guess=(string)$_POST['guess'];if($guess===$secret){$message='Congratula......
  • THUWC 2024 游记
    Day0报道日。上午在重庆随机游走,感觉需要一个三维的导航。上午1789在群里说要来重庆参加第五人格大赛,我认为他在魔怔(埋下伏笔)。下午报道,在门口遇到了超超和yzy,但是他们报的都是pkuwc,~~所以是来NTR吗~~。进去报道,面到了空跌,然后空跌去试机了,我又遇到了超超和yzy。我们发......
  • 2024最新分享iZotope RX 10 Audio Editor Advanced for Mac 直装版
    iZotopeRX10AudioEditorAdvanced是一款先进的音频编辑软件,由iZotope公司推出。以其卓越的音频修复和恢复功能而著称,可消除录音中的噪音、杂音和其他缺陷。RX10集成了先进的算法和直观的用户界面,提供精准而高效的音频修复工具,适用于音乐制作、后期制作和广播领域。软件支持......
  • 2024最新分享FabFilter Total bundle 2023 for Mac 直装版
    FabFilter音频插件工具集,共包含14款音频插件。这14款插件分别是均衡器、混响、压缩器、多频段动态、限幅器、扩展器、创意多频带失真、延迟、滤波器和合成器。通过这些插件,用户可以满足制作混音和母带的需求。FabFilterTotalbundle2023forMac直装版FabFilterTotalBundl......
  • 2024最新Melodyne Studio 5.3.1 Windows版&Mac版
    MelodyneStudio是一款专业音频编辑软件,由Celemony公司开发。它以其先进的音高编辑功能而闻名,能够以无损方式调整音频中的音高和节奏。MelodyneStudio具备多轨编辑能力,支持对复杂音乐项目进行精细调整,是音乐制作和音频编辑领域中的重要工具。 MelodyneStudio5.3.1forWind......
  • 2024年獬豸杯
    说实话比赛的时候真有点小脑萎缩赛后请教了一下toto发现自己是真的蠢(解压密码:都考100分)○手机备份包手机基本信息1、IOS手机备份包是什么时候开始备份的。(标准格式:2024-01-20.12:12:12)2024-01-15.14:19:442、请分析,该手机共下载了几款即时通讯工具。(标准格式:阿拉伯数......
  • 寒假训练2024/1/29
    2024/1/28ABC337(A-E)A-Scoreboard思路:水题,统计加和,最后比较。#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongvoidsolve(){ intn; cin>>n; intA=0,B=0,a,b; for(inti=0;i<n;i++){ cin>>a>>......