系统极客一直在努力
专注于操作系统及软件使用教程

Windows 10中常用的15项PowerShell高级任务

Windows 10

想必一直关注 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」并以管理员身份运行

windows-10-powershell-advanced-task-2

或者在搜索栏中键入 PowerShell 搜索到之后用Ctrl + Shift + 回车打开。

设置日期和时间

有很多种方法都可以设置 Windows 系统的时间、日期,但使用 PowerShell 应该说是最快捷的方式了,只需类似如下命令即可:

Set-Date -date "2016-12-01 8:30 AM"

windows-10-powershell-advanced-task-3

AM 和 PM 相信不用解释了吧。

调整日期和时间

某些特殊情况下,我们可能需要对日期和时间进行调整而不是直接指定具体值,要完成此任务还是使用 Set-Date cmdlet,但用法与此前就有所不同了,例如:

Set-Date (Get-Date).AddDays(2)

windows-10-powershell-advanced-task-4

从上面命令大家可以看到,我们先通过 Get-Date 获取当前日期之后再触发 Set-Date 为日期加 2。当然此命令还可以使用 AddHoursAddMinutesAddSeconds 为时间增加时、分、秒等。

验证文件和文件夹

PowerShell 命令可以方便地检查计算机上是否存在某个文件和文件夹,使用 Test-Path cmdlet 再跟上路径即可完成验证,而无需花时间在资源管理器中去找。例如:要验证 C 盘是否存在一个名为 PowerShell.xlsx 的 Excel 文件可以使用如下命令:

Test-Path c:\PowerShell.xlsx

此命令返回的是 TrueFalse 这样的布尔值,如果你不知道确切的文件名,也可以直接使用通配符,例如:

Test-Path c:\*.xlsx

windows-10-powershell-advanced-task-5

重命名文件和文件夹

一旦你知道文件名文件夹的确切路径,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

windows-10-powershell-advanced-task-6

如果你只是想预览文件,而非阅读整个文本,可以使用 -totalcount 参数:

Get-Content c:\Sysgeek\Hello.txt -totalcount 1

windows-10-powershell-advanced-task-7

添加文本内容

除读取文本文件内容外,在 PowerShell 中使用 Add-Content cmdlet 可以直接添加内容:

Add-Content c:\Sysgeek\Hello.txt "by 海猴子"

windows-10-powershell-advanced-task-8

当然,此命令只是将文本追加到文件最后,不一定满足你的需求。

统计文本文件

不论是要统计普通文件也好,还是想统计一天编写了多少行代码,都可以使用如下命令:

Get-Content c:\Sysgeek\Hello.txt | Measure-Object

windows-10-powershell-advanced-task-9

服务状态统计

当你需要统计 Windows 服务及状态时,此前可能会手动一个一个去查看,其实使用 PowerShell 的 Get-Service cmdlet 即可立即遍历出当前系统上的所有服务及状态:

Get-Service

windows-10-powershell-advanced-task-10

除此之外,要按服务状态进行统计也非常方便,例如要统计当前所有已停止的服务可以使用如下命令:

Get-Service | Where-Object {$_.status -eq "stopped"}

windows-10-powershell-advanced-task-11

重启服务

一旦你确定某个服务导致问题时,可以直接从 PowerShell 重新启动它:

Restart-Service Dnscache

如果你不知道具体的服务名称,也可以通过参数来指定服务的显示名称:

Restart-Service -displayname "DNS Client"

windows-10-powershell-advanced-task-12

更改服务启动状态

在 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 进行抛砖引玉吧。

分享到:更多 ()