当前位置: 首页 > article >正文

powershell定义文本,用户交互,正则表达式

定义文本

PS C:\Users\Administrator> $site="yuan"
PS C:\Users\Administrator> $text="$site $(get-date) $env:windir"
PS C:\Users\Administrator> $text
yuan 09/16/2022 14:12:26 C:\Windows

在这里插入图片描述

#使用单引号闭合字符串输出双引号
'The site of my blog is"www.mossfly.com"'
#使用转义字符输出双引号
“My blog site is`"www.mossfly.com`""
#在字符串中输出换行符
“The site of my blog is `"www.mossfly.com`",`n飞苔博客"

在这里插入图片描述

定义多行文本

@"
这首诗用来评价陶渊明的诗歌再好不过了

一语天然万古新,豪华落尽见真淳。
南窗白日羲皇上,未害渊明是晋人。
"@

用户交互

如果要提示用户输入可以使用read-host

$name=Read-Host "请输入您的用户名"
请输入您的用户名: Mosser Lee

Read-Host存储的字符串使用的单引号闭合,也就是说不会自动解析变量,不过可以通过ExpandString方法解析,例如:

PS E:> $inputPath=Read-Host "请输入文件路径"
请输入文件路径: $env:windir
PS E:> $inputPath
$env:windir
PS E:> $ExecutionContext.InvokeCommand.ExpandString($inputPath)
C:windows

但是如果想通过Read-Host接受敏感数据,比如密码,可以使用**-asSecureString选项**,不过这样读取到的数据为SecureString,及为加过密后的数据,当然你可以将密码转换成普通文本.

PS E:> $pwd=Read-Host -AsSecureString "请输入密码"
请输入密码: ******
PS E:> $pwd
System.Security.SecureString
PS E:> [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($pwd))
abc123

询问用户名和密码Get-credential

如果你想授权一个用户需要提供用户凭据,可以使用Get-Credential命令,该命令会弹出一个安全对话框,一旦用户输入完毕,就会返回一个Credential对象包含用户名和密码

PS E:> $cre=Get-Credential yuan
PS E:> $cre
UserName                        Password
--------                        --------
yuan System.Security.SecureString

正则💥

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 匹配IP地址
$parttern="\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b"
               #"\b \d{1,3} \. \d{1,3} \. \d{1,3} \. \d{1,3} \b"
"192.168.10.3" -match $parttern
"a.168.10.3" -match $parttern
"1000.168.10.3" -match $parttern
<#
 #输出
 #True
 #False
 #False
#>
  1. 验证Email格式
    如果你想验证用户提供的E-Mail地址是不是一个合法电子邮件格式,可以使用下面的正则表达式:
#$parttern = "\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b"
#"\b[A-Z0-9 ._%+-]+  @[A-Z0-9.-]+  \. [A-Z]{2,4}\b"
$parttern = "^[A-Z0-9 ._%+-]+ @[A-Z0-9.-]+ \. [A-Z]{2,4}$"
"mosser@pstips.net" -match $parttern
".@ ." -match $parttern
<#
 #输出:
 #True
 #False
#>
  1. 模糊匹配 u?

具体到上面的例子,“u?”就确保了字符“u”在模式中不是必需的。常用的其它限定符,还有“*”(出现0次后者多次)和“+”(至少出现一次)。

"color" -match "colo u? r"
True
"colour" -match "colou?r"
True

匹配多个字符()

"Nov" -match "\b Nov (ember)? \b"
True
"November" -match "\bNov(ember)?\b"
True

如果你想使用多个可选的搜索词语,可以使用“或”操作符“|”:

"Bob and Ted" -match "Alice|Bob"
True

搜索一段话

# 搜索 "and Bob":
"Peter and Bob" -match "and (Bob|Willy)"
True
# 没有搜索到 "and Bob":
"Bob and Peter" -match "and (Bob|Willy)"
False

大小写敏感

# -match 大小写不敏感:
"hello" -match "heLLO"
True
# -cmatch 大小写敏感:
"hello" -cmatch "heLLO"
False

在文本中搜索信息

# 源文本中有两个电子邮件地址,-match只能匹配到一个
$rawtext = "test@pstips.net sent an e-mail that was forwarded to admin@pstips.net."
$rawtext -match "\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b"
True
$matches
Name                           Value
----                           -----
0                              test@pstips.net

深入使用子表达式💥

"<body background=1>www.pstips.net</body>" -match "<body\b [^>]* >  (.*?) </body>"
$matches[1]
#True
#www.pstips.net

http://www.kler.cn/news/17815.html

相关文章:

  • 宝塔面板搭建自己的网站,并发布公网远程访问
  • 企业服务管理(ESM)工具
  • MySQL中的Join 的算法(NLJ、BNL、BKA)
  • XXLJOB
  • 知识变现海哥|这3种课程定价最容易爆单
  • asp.net+sqlserver企业财务管理系统
  • 【Mybatis】增删改查
  • 北斗导航 | 基于差分法的周跳探测(matlab 代码)
  • android pdf框架
  • unity航点寻径
  • js中对象和数组的都是如何解构的
  • 二挡起步——pythonweb开发Django框架,前端原生+Django后端框架+python网络抓包(代替数据库数据)(附带小案例)
  • Java学习之Swing图形界面
  • 关于面试官问Qt Connect的链接方式和类型问题
  • jQuery -- 常用API(下)
  • 《Netty》从零开始学netty源码(五十二)之PoolThreadCache
  • SpringBoot整合FreeMarker
  • 使用zabbix监控Windows指定服务| zabbix Windows service filter
  • 【网络】4万字细品TCP协议
  • yolov8 OpenCV DNN 部署 推理报错
  • 科大版中国版ChatGPT来啦!抢先体验
  • 还能这么玩?清华给 ChatGPT 做逆向,发现了 ChatGPT 的进化轨迹!
  • 记一次产线打印json导致的redis连接超时
  • 【算法】Check If Word Is Valid After Substitutions 检查替换后的词是否有效
  • MySQL高频面试题
  • 多通道振弦传感器无线采集仪通过短信和FTP文件修改参数
  • 设计原则之【接口隔离原则】
  • 22.Java多线程
  • SpreadJS 16.1 EN + SpreadJS 16.1 CN Crack
  • 【Linux】linux进程间通信netlink socket(用户与内核通信)