25个常⽤PowerShell命令总结
尽管Windows PowerShell已经出现⼀段时间了,习惯命令⾏的管理员可能对了解PowerShell功能的基础很感兴趣。
下⾯我们看看能由Windows PowerShell完成的最常见的25个任务。不⽌是这些任务很简单,显⽰语句的命令架构和其他PowerShell命令也很简单。掌握好这些基本命令是成为PowerShell专家的必经之路。
  ⼊门级别
  1. 像⽂件系统那样操作Windows Registry——cd hkcu:
  2. 在⽂件⾥递回地搜索某个字符串——dir –r | select string "searchforthis"
  3. 使⽤内存到五个进程——ps | sort –p ws | select –last 5
  4. 循环(停⽌,然后重启)⼀个服务,如DHCP——Restart-Service DHCP
  5. 在⽂件夹⾥列出所有条⽬——Get-ChildItem – Force
  6. 递归⼀系列的⽬录或⽂件夹——Get-ChildItem –Force c:\directory –Recurse
  7. 在⽬录⾥移除所有⽂件⽽不需要单个移除——Remove-Item C:\tobedeleted –Recurse
  8. 重启当前计算机——(Get-WmiObject -Class Win32_OperatingSystem -ComputerName .).Win32Shutdown(2)
  收集信息
  9. 获取计算机组成或模型信息——Get-WmiObject -Class Win32_ComputerSystem
  10. 获取当前计算机的BIOS信息——Get-WmiObject -Class Win32_BIOS -ComputerName .
  11. 列出所安装的修复程序(如QFE或Windows Update⽂件)——Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName .
  12. 获取当前登录计算机的⽤户的⽤户名—— Get-WmiObject -Class Win32_ComputerSystem -Property UserName -ComputerName .
  13. 获取当前计算机所安装的应⽤的名字——Get-WmiObject -Class Win32_Product -ComputerName . | Format-Wide -Column 1
  14. 获取分配给当前计算机的IP地址——Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter
IPEnabled=TRUE -ComputerName . | Format-Table -Property IPAddress
  15. 获取当前机器详细的IP配置报道——Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter
IPEnabled=TRUE -ComputerName . | Select-Object -Property [a-z]* -ExcludeProperty IPX*,WINS*
  16. 到当前计算机上使⽤DHCP启⽤的⽹络卡——Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled=true" -ComputerName .
  17. 在当前计算机上的所有⽹络适配器上启⽤DHCP——Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=true -ComputerName . | ForEach-Object -Process {$_.EnableDHCP()}
  软件管理
  18. 在远程计算机上安装MSI包——(Get-WMIObject -ComputerName TARGETMACHINE -List | Wh
ere-Object -FilterScript {$_.Name -eq "Win32_Product"}).Install(\\MACHINEWHEREMSIRESIDES\path\package.msi)
  19. 使⽤基于MSI的应⽤升级包升级所安装的应⽤——(Get-WmiObject -Class Win32_Product -ComputerName . -Filter
"Name='name_of_app_to_be_upgraded'").Upgrade(\\MACHINEWHEREMSIRESIDES\path\upgrade_package.msi)
  20. 从当前计算机移除MSI包——(Get-WmiObject -Class Win32_Product -Filter "Name='product_to_remove'" -ComputerName . ).Uninstall()
  机器管理
  21. ⼀分钟后远程关闭另⼀台机器——Start-Sleep 60; Restart-Computer –Force –ComputerName TARGETMACHINE
shell代码
  22. 添加打印机——(New-Object -ComObject WScript.Network).AddWindowsPrinterConnection(\\printerserver\hplaser3)
  23. 移除打印机——(New-Object -ComObject WScript.Network).RemovePrinterConnection("\\printerserver\hplaser3 ")
  24. 进⼊PowerShell会话——invoke-command -computername machine1, machine2 -filepath c:\Script\script.ps1
25.把批处理废掉吧,向PowerShell进军
打破批处理的习惯,向PowerShell进军
PowerShell应当已经名正⾔顺地成为批处理( shell脚本)的替代者了,但是因为⼀些原因,许多⼈都不是很情愿抛弃批处理。这篇⽂章将作为⼀个系列⽂章的开始帮助你打破批处理的习惯,向PowerShell进军。
在我进⼊这些⽂章系列之前,我想先稍微讲述⼀下关于批处理⽂件的⼀些历史和为什么你需要使⽤PowerShell来代替⽼风格的批处理代码编写你的脚本。
批处理⽂件的历史
批处理⽂件拥有很悠久的历史了,微机操作系统上的⼀个CP/M ,拥有可提交的命令,它可以将⽂本⽂件中的⼀系列命令逐⾏运⾏。它⾮常简单(因为当时的内存很吃紧),不⽀持任何类型的条件分⽀。
当开发MS-DOS时,微软在它的Command命令解释器中,也纳⼊了⾮常类似的批处理功能:把命令存在⼀个⽂本⽂件中,命名
为.Bat的扩展名,然后命令解释器就会运⾏它⾥⾯的每⼀个命令。
在以后的DOS版本中,微软通过多种⽅式扩展了批处理⽂件。增加了标签,GOTO语句,和If语句来处理分⽀。很重要的⼀点,批处理“语⾔”不是被设计出来的。它只是脱胎于CP/M可提交命令⽽已。
Windows NT 和
很快就到了Windows NT (1993)了,微软纳⼊了⼀个控制台模式的应⽤程序,,直到这⼀天它也才呈献给⽤户的⼀个传说中
的“C: 提⽰符”。是旧的MS-DOS上的Command的⼀个超集,甚⾄使⽤很多相同的命令。命令类似,它的设计向后兼容,以确保⽤户能够运⾏旧的MS-DOS上的批处理⽂件。也能运⾏带有.Bat 扩展名“批处理⽂件”。
< 和 Command之间的相似性是它对.Bat⽂件的向后兼容性,微软刚开始选择的图标(“MS-DOS” logo)导致了⽤户困惑多年。即使在今天我们在⼀些论坛社区,还会看到⼀些提问“如何⽤DOS⼲什么什么”,事实上这关DOS鸟事。
<⽐ Command拥有更多的功能,相应的也就是批处理⽂件的扩展。其中就包括 For /f的迭代,简单的使⽤Call命令来调⽤⼦程序,环境的指定(Setlocal and Endlocal)。虽然这些增强,让批处理“语⾔”更加实⽤,它仍然还是有许多缺陷,这让写⼀个简单的批处理程序变成⼀件令⼈头疼的事。
Windows Script 主机
从Windows 2000(1999)开始,微软通过引⼊Windows Script Host 两个真正的,内置的,可编程语⾔(VBScript和JScript 微软版本低Javascript)来增强它的脚本功能。 WSH脚本依赖于COM对象来在操作系统和应⽤程序之间进⾏交互。尽管WSH极其实⽤和强⼤,它受限于机器上必须安装所需的COM对象,并且没有提供命令⾏界⾯。
进⼊ Windows PowerShell
批处理和WSH脚本没有提供⼀致性,因为它们是两种分开的增强⼯具,拥有不同的⽤户接⼝(批处理和wSH脚本是两码事)。微软意识到了这⼀点,在2006年发布了Windows PowerShell的第⼀个版本,结束了列国混战的局⾯,⼀统了Windows脚本的江湖。PowerShell基于.NET 框架,提供了⼀个命令⾏,和管理Windows 操作系统的接⼝。
现在我们拥有了Windows PowerShell,没有任何必要再去编写旧式的的批处理⽂件( shell
脚本)。展望未来吧,你应当将你的精⼒放在学习PowerShell上,主要是因为微软已经将PowerShell定位成Windows操作系统⾃动化和企业应⽤程序管理的默认⼯具了。
为什么是时候停⽌写批处理了
这⾥给出你应当停⽌写批处理⽂件,⽽转向PowerShell脚本的五个理由。
1. PowerShell是未来,是标杆。微软已经将PowerShell定位为Windows操作系统和微软企业应⽤程序管理的默认⼯具了。许多第三⽅
供应商也提供了PowerShell类库⽤来管理他们的产品。
2. 批处理是晦涩难懂的,它有很多缺陷。我以前经常去⼀些脚本提问的⽹站,我都数不清我问过多少次诸如为什么环境变量展开后不正
确啦,为什么命令运⾏后不正确啦。真的没有必要把⾃⼰耗在上了。批处理的限制太多了,投⼊到PowerShell的怀抱中吧!
3. PowerShell是⽀持批处理和命令⾏的,转向PowerShell并不是说抛弃了批处理,⽼式的批处理⽂件仍然可以在PowerShell上很好地
运⾏,命令⾏⼯具也仍然在PowerShell上能够完美兼容运⾏。
4. PowerShell是真正的脚本编程语⾔,你可能还没有尝到PowerShell的甜头,尤其当你尝试体验⼀些复杂逻辑时,在PowerShell中明
显⽐要简单地多。许多时候,⼀⾏PowerShell命令⾏,能够替代成百上千的批处理代码。
5. PowerShell 使⽤的是对象,不像和其它基于⽂本的Shell只能使⽤⽂本的命令输出。另⼀⽅⾯PowerShell使⽤的是.NET 对
象,那些昔⽇在批处理中⽐较棘⼿的问题(⽐如⽇期时间的解析)在PowerShell中变得出奇的简单。
扔下批处理吧
<短期内不会消亡,但是也没有什么理由值得我们在这⽼式的批处理语⾔上煞费苦⼼,把它扔下来,使⽤PowerShell来代替它吧!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。