想必一直关注 Windows 10 开发进度的朋友已经知道,微软将于 Windows 10 Creators Update 中直接用 PowerShell 替换掉命令提示符(CMD),此前系统极客也早就建议大家弃用 CDM 直接使用 PowerShell。目前微软已经开始 PowerShell 向 Linux 系统的布局,而自家产品特别是企业级产品中,PowerShell 早已成为首要管理接口(图形界面反而次之),此后直接在 Windows 中提升 PowerShell 地位,逐步将 CDM 淡出历史舞台也是必然。
虽然要成就 PowerShell 专家必掌握大量基础知识和大量实践,但它却可以实现对 Windows 和微软其它主流产品的几乎所有管理功能(包括很多图形界面都无法实现的功能)。然 PowerShell 对新手用户来说可能会感觉陌生甚至恐惧,但通过本文介绍的 15 个 PowerShell 高级任务,应该能帮助 Windows 用户了解其基本用途,并帮大家开启一扇新的学习大门。
打开PowerShell环境
Windows 10 中已内置了 PowerShell 命令行环境,大家可以直接搜索「PowerShell」并以管理员身份运行。
或者在搜索栏中键入 PowerShell 搜索到之后用Ctrl + Shift + 回车打开。
设置日期和时间
有很多种方法都可以设置 Windows 系统的时间、日期,但使用 PowerShell 应该说是最快捷的方式了,只需类似如下命令即可:
Set-Date -date "2016-12-01 8:30 AM"
AM 和 PM 相信不用解释了吧。
调整日期和时间
某些特殊情况下,我们可能需要对日期和时间进行调整而不是直接指定具体值,要完成此任务还是使用 Set-Date cmdlet,但用法与此前就有所不同了,例如:
Set-Date (Get-Date).AddDays(2)
从上面命令大家可以看到,我们先通过 Get-Date 获取当前日期之后再触发 Set-Date 为日期加 2。当然此命令还可以使用 AddHours、AddMinutes 或 AddSeconds 为时间增加时、分、秒等。
验证文件和文件夹
PowerShell 命令可以方便地检查计算机上是否存在某个文件和文件夹,使用 Test-Path cmdlet 再跟上路径即可完成验证,而无需花时间在资源管理器中去找。例如:要验证 C 盘是否存在一个名为 PowerShell.xlsx 的 Excel 文件可以使用如下命令:
Test-Path c:\PowerShell.xlsx
此命令返回的是 True 或 False 这样的布尔值,如果你不知道确切的文件名,也可以直接使用通配符,例如:
Test-Path c:\*.xlsx
重命名文件和文件夹
一旦你知道文件名文件夹的确切路径,PowerShell 也可以非常容易地重命名文件和文件夹,只需参考如下示例使用 Rename-Item cmdlet 即可:
Rename-Item c:\PowerShell.xlsx New_PowerShell.xlsx
移动文件和文件夹
使用 PowerShell 移动文件或文件夹也非常容易,使用 Move-Item cmdlet 即可,例如:
Move-Item c:\PowerShell.xlsx d:\PowerShell.xlsx
结合通配符使用,可以快速将特定类型的文件从一个文件夹移动到另一个文件夹:
Move-Item c:\*.xls d:\excel\
打开程序
Invoke-Item cmdlet 可以直接在 PowerShell 提示符中打开应用程序:
Invoke-Item c:\Windows\System32\notepad.exe
但已经在 Windows Path 路径中的应用可以直接用名称执行,例如:
notepad
使用默认程序打开文件
Invoke-Item cmdlet 除可以执行应用程序外,还可直接用于打开文件。但需要大家注意的是,使用它打开文件时,只会使用该文件类型关联的默认应用程序打开。
Invoke-Item c:\Sysgeek\Hello.txt
以批处理形式打开文件
当 Invoke-Item cmdlet 与通配符结合时,可以批量打开某类型的文件:
Invoke-Item c:\Sysgeek\*.txt
读取文本文件
PowerShell 是可以直接处理文本文件内容的,例如使用 Get-Content 命令即可读取文本文件内容:
Get-Content c:\Sysgeek\Hello.txt
如果你只是想预览文件,而非阅读整个文本,可以使用 -totalcount 参数:
Get-Content c:\Sysgeek\Hello.txt -totalcount 1
添加文本内容
除读取文本文件内容外,在 PowerShell 中使用 Add-Content cmdlet 可以直接添加内容:
Add-Content c:\Sysgeek\Hello.txt "by 海猴子"
当然,此命令只是将文本追加到文件最后,不一定满足你的需求。
统计文本文件
不论是要统计普通文件也好,还是想统计一天编写了多少行代码,都可以使用如下命令:
Get-Content c:\Sysgeek\Hello.txt | Measure-Object
服务状态统计
当你需要统计 Windows 服务及状态时,此前可能会手动一个一个去查看,其实使用 PowerShell 的 Get-Service cmdlet 即可立即遍历出当前系统上的所有服务及状态:
Get-Service
除此之外,要按服务状态进行统计也非常方便,例如要统计当前所有已停止的服务可以使用如下命令:
Get-Service | Where-Object {$_.status -eq "stopped"}
重启服务
一旦你确定某个服务导致问题时,可以直接从 PowerShell 重新启动它:
Restart-Service Dnscache
如果你不知道具体的服务名称,也可以通过参数来指定服务的显示名称:
Restart-Service -displayname "DNS Client"
更改服务启动状态
在 PowerShell 中更改服务的启动状态也非常简单,只需使用 Set-Service 的 -startuptype 参数即可:
Set-Service Dnscache -startuptype "manual"
该参数还可以用 automatic(自动启动)和 disabled (禁用)两个参数来取代。
强制刷新Windows 10 Apps
如果你的 Windows 10 Apps 卡在启动界面或无法初始化,可以使用如下 PowerShell 命令来强制刷新应用:
Get-AppXPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
除此之外,PowerShell 还可用于卸载 Windows 10 内置应用。
小结
对于 PowerShell 与 CMD 的区别系统极客此前已有文章进行过介绍,本文介绍的都是 PowerShell Cmdlet 的最基础用法,算是为大家学习 PowerShell 进行抛砖引玉吧。