一起学习网 一起学习网

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 | Where-Object -FilterScript {$_.Name -eq "Win32_Product"}).Install(\MACHINEWHEREMSIRESIDESpathpackage.msi)
  19. 使用基于MSI的应用升级包升级所安装的应用——(Get-WmiObject -Class Win32_Product -ComputerName . -Filter "Name='name_of_app_to_be_upgraded'").Upgrade(\MACHINEWHEREMSIRESIDESpathupgrade_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
  22. 添加打印机——(New-Object -ComObject WScript.Network).AddWindowsPrinterConnection(\printerserverhplaser3)
  23. 移除打印机——(New-Object -ComObject WScript.Network).RemovePrinterConnection("\printerserverhplaser3 ")
  24. 进入PowerShell会话——invoke-command -computername machine1, machine2 -filepath c:Scriptscript.ps1

Powershell小技巧之创建一个新对象
下面是一个简单有效的创建一个自定义对象的方法:$object=[PSCustomObject]@{Name='Weltner'ID=123Active=$true}这将产生一个含初始值的对象:PS$objectNameIDActive---------

Powershell小技巧之使用WMI工具
WMI是一个强大的技术:只需要简单的指定一个WMI类名就能返回它类的所有实例:PSGet-WmiObject-ClassWin32_BIOSSMBIOSBIOSVersion:76CN27WWManufacturer:LENOVOName:76CN27WWSerial

Powershell小技巧之从文件获取系统日志
有时你可能会需要分析系统文件将他们传输到硬盘,或你想直接从evtx读取系统日志。你可以这样做:$path="$env:windirSystem32WinevtLogsSetup.evtx"Get-WinEvent-Pat