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

PowerShell 2.0 实践(四)管理Windows进程

[复制链接]

尚未签到

发表于 2018-9-3 07:21:08 | 显示全部楼层 |阅读模式
  上一次我们对Windows服务进行了简单的管理,学习了获取本地及远程计算机上服务的方法,以及查找特定服务,开始、结束、暂停、恢复服务等操作。本次我们来关注一下Windows管理中另一个核心内容:进程管理。
  测试脚本下载
  本系列所有脚本均在Windows Server 2008 R2 DataCenter (PowerShell 2.0) + PowerGUI Script Editor Free Edition x64中测试通过。
  进程是操作系统结构的基础,是一个正在执行的程序,是计算机中正在运行的程序实例,可以分配给处理器并由处理器执行的一个实体。由单一顺序的执行显示,是一个由当前状态和一组相关的系统资源所描述的活动单元。
  PowerShell中与进程相关的命令主要有5个:
  Get-Process
  Start-Process
  Stop-Process
  Debug-Process
  Wait-Process

  •   首先来查看一下进程对象的成员:
  Get-Process | Get-Member
  运行结果:

  可以看到,Get-Process返回的是.NET对象System.Diagnostics.Process的实例,其中有5个别名非常重要:
  Handles
  进程打开的句柄数
  NPM
  进程正在使用的非分页内存量,以千字节为单位
  PM
  进程正在使用的可分页的内存量,以千字节为单位
  VM
  进程正在使用的虚拟内存量,以兆字节为单位。虚拟内存包括磁盘上分页文件中的存储
  WS
  进程工作集的大小,以千字节为单位。工作集包括进程最近引用的内存的页面
  查看占用分页内存最多的前10个进程:
  Get-Process | SortPM-Descending | Select-First 10
  运行结果:

  获取所有占用 > 50 MB的进程,并倒排序:
  Get-Process | Where {$_.WS -gt 50MB} | SortWS–Descending
  运行结果:

  在PowerShell 2.0中,还可以查看远程计算机上的进程。
  如下图所示,虚拟机中计算机的IP为:192.168.200.132:

  Get-Process-ComputerName192.168.200.132
  运行结果:


  •   开启一个进程。在PowerShell 2.0中,可以在本地计算机上使用Start-Process来启动一个进程:
  Start-Processiexplore.exe
  Start-Process只能用于本地计算机。
  运行结果:

  注意,默认会启动32位的程序,如果想启动64位的程序,需要添加-FilePath参数,指明64位程序所在位置:
  Start-Process-FilePath"C:\Program Files\Internet Explorer\iexplore.exe"
  运行结果:


  •   结束进程。
  首先启动一个记事本进程,并记录下来,接着线程休眠3秒,然后结束该进程:
  $notepad= [System.Diagnostics.Process]::Start("notepad")
  [System.Threading.Thread]::Sleep(3000)
  Stop-Process-Id$notepad.Id
  运行结果:

  3秒后记事本会自动关闭。
  4、获取Word进程所在的目录信息:
  (Get-ProcessWINWORD).MainModule
  运行结果:

  获取Excel进程依赖的库信息
  Start-ProcessEXCEL
  (Get-ProcessEXCEL).Modules
  Stop-Process-NameEXCEL
  运行结果:

  获取进程的元数据:
  Get-Process | Select Company,Product,ProductVersion
  运行结果:

  Google Chrome的版本号居然没有被正确识别J
  设置进程优先级:
  每个进程都有相应的优先级,优先级决定它何时运行和接收多少 CPU 时间。最终的优先级共 32 级,是从 0 到 31 的数值,称为基本优先级别(Base Priority Level)。系统按照不同的优先级调度进程的运行,0-15 级是普通优先级,进程的优先级可以动态变化,高优先级进程优先运行,只有高优先级进程不运行时,才调度低优先级进程运行,优先级相同的进程按照时间片轮流运行。16-31 级是实时优先级,实时优先级与普通优先级的最大区别在于相同优先级进程的运行不按照时间片轮转,而是先运行的进程就先控制 CPU,如果它不主动放弃控制,同级或低优先级的进程就无法运行。

  可由PriorityClass属性读写,有效值列表:Normal,>  $process=Get-ProcessWINWORD
  Write-Host$process.PriorityClass
  $process.PriorityClass="High"
  Write-Host$process.PriorityClass
  运行结果:

  可见,Word的优先级由Normal变为了High。
  5、调试进程:
  Debug-Process-NameWINWORD
  会弹出提示窗口选择调试器:

  等待进程结束
  Wait-Process-Namenotepad
  脚本输入窗口会一直等待,直到该进程结束后才可以继续输入:

  关闭记事本窗口后:

  小结:
  本次对Windows进程进行了简单的管理操作,相比Windows服务来说进程管理略显单一,主要是查看进程与设置进程优先级,但是重要性是一样的。进程和服务是Windows的基础功能,维系着运行的程序,如果设置不当可能会引起系统不稳定。此外,PowerShell 2.0增强了远程处理能力,方便了远程管理操作。下一次我们来关注一下注册表的相关操作。


运维网声明 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-561768-1-1.html 上篇帖子: PowerShell 2.0 实践(三)操作Windows服务 下篇帖子: PowerShell 2.0 实践(五)管理Windows注册表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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