设为首页 收藏本站
查看: 1397|回复: 0

【探索PowerShell 】【十】循环语句

[复制链接]
发表于 2018-9-3 10:08:45 | 显示全部楼层 |阅读模式
  PowerShell作为可编程性语言,拥有以下循环语句。
  注:本节所要讨论的内容的实质更多的偏向于程序设计方面,所以在此不做过多详细讲解,只针对PowerShell中的应用进行具体讲解。
  · for (初值;表达式;赋值语句) {代码}          用变量值控制执行次数
  · foreach (成员变量 in 数组) {代码}         利用迭代执行代码
  · foreach-object                                       对一组输入的每个对象执行运算
  · while(表达式) {代码}                              表达式为真时循环执行代码
  · do {代码}  while(表达式)                         类似于while,只是先执行代码,再判断表达式真假
  · do {代码}  until(表达式)                            执行代码,直至表达式为假
  循环语句在PowerShell中的应用
  利用foreach查询硬件信息
  例一:
  


  • $DiskDrive=get-wmiobject -class Win32_DiskDrive -namespace root\CIMV2

  • foreach ($item in $DiskDrive)
  • {
  • write-host "Description:" $item.Description
  • write-host "Device ID:" $item.DeviceID
  • write-host "Interface Type:" $item.InterfaceType
  • write-host "Media Type:" $item.MediaType
  • write-host "Model:" $item.Model
  • write-host "Partitions:" $item.Partitions
  • write-host "Size:" $item.Size
  • write-host "Status:" $item.Status
  • }
  

  运行结果:
DSC0000.png

  例二:
  


  • $Processor=get-wmiobject -class Win32_Processor -namespace root\CIMV2

  • foreach ($item in $Processor)
  • {
  • write-host "Caption:" $item.Caption
  • write-host "CPU Status:" $item.CpuStatus
  • write-host "Current Clock Speed:" $item.CurrentClockSpeed
  • write-host "Device ID:" $item.DeviceID
  • write-host "L2 Cache Size:" $item.L2CacheSize
  • write-host "L2 Cache Speed:" $item.L2CacheSpeed
  • write-host "Name:" $item.Name
  • }
  

  运行结果:
DSC0001.png

  使用while监视进程状态
  


  • notepad
  • While(get-process -name notepad | select -Property Responding){}
  • $time = get-date
  • Write-Host "The Notepad failed to respond on:$time"
  

  在此例下,若进程notepad出现未响应,则会产生屏幕输出。
  使用do while表达:
  


  • notepad
  • do{}
  • While(get-process -name notepad | select -Property Responding)
  • $time = get-date
  • Write-Host "The Notepad failed to respond on:$time"
  

  利用do until进行交互
  


  • do
  • {
  •     "Quit Now? (Y/N)"
  •     $input=Read-Host
  • }
  • until($input -eq "Y")
  

  运行结果:
DSC0002.png

  使用foreach-object进行格式化输出
  对下列数据进行操作,
  

D00454798106276487326471李德建829.51  
Q00136284503715856294375张春生712.65
  
H00374967692981018226574刘锡明891.31
  
R00759861215965098103878赵子龙898.21
  
J00741245626115645970139杨高远-13.21
  
K00142545764587219409172周明647.41
  
P00103851828756182786938张龙-27.51
  使之输出为以下所示格式:
  

1|454798106276487326471|李德建|829.51  
2|136284503715856294375|张春生|712.65
  
3|374967692981018226574|刘锡明|891.31
  
4|759861215965098103878|赵子龙|898.21
  
5|741245626115645970139|杨高远|0.00
  
6|142545764587219409172|周明|647.41
  
7|103851828756182786938|张龙|0.00
  
        小计            |3979.09
  使用foreach-object对每个数据成员使用正则表达式,最后格式化输出即可:
  


  • ${C:\test.txt} | `
  • foreach-object{$total=0;$id=1}`
  • {
  •     [void]($_ -match '^.{3}(?\d+)(?[\p{IsCJKUnifiedIdeographs}]+)(?[\d.]*)');
  •     $ofs = '|';
  •     "$($id;$id++;$matches.id;$matches.name;'{0:f2}' -f [float]$matches.salary)";
  •     $total += $matches.salary
  • }`
  • {"`t小计`t`t|$total"}
  

  运行结果:
DSC0003.png

  欢迎提出意见建议!



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-561913-1-1.html 上篇帖子: 【探索PowerShell 】【九】条件控制、逻辑 下篇帖子: 【探索PowerShell 】【十一】函数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表