为家庭用户使用 PowerShell - 初学者指南

谁不希望他们能成为一个巫师并说出几句话来让神奇的事情发生?好吧(Well),我们无法向您展示如何成为一名巫师,但我们可以向您展示如何做一点计算机魔术。

如果您有一台装有Windows 7的(Windows 7)Windows计算机,那么您就有了PowerShell。此外,如果您有一台装有Windows 7的计算机,请出于安全考虑对其进行更新。

但这篇文章不仅适用于Windows用户。最新版本的PowerShell是免费的,可以在 Mac 和Linux计算机上安装和使用。

这很重要,因为您了解的有关PowerShell的知识现在几乎可以在任何计算机上使用。谁知道?您可能会将这项技能提升到一个新的水平,并冒险进入信息技术(Information Technology)领域。

什么是 PowerShell?

来自微软(Microsoft)的高科技回答是,它是一个“专为系统管理员设计的命令行外壳”。“听起来很(” Sounds)吓人。但事实并非如此。你会照顾你的电脑吗?是的,那么您就是您家的系统管理员。

您是否告诉您的计算机如何处理点击和击键?是的,因此可以将命令行 shell 视为您输入内容以告诉计算机要做什么的另一个窗口。你可以这样做。

PowerShell就像一种编程语言,但不像大多数语言那样神秘。它读起来真的很像普通的英语(English),这是微软(Microsoft)努力争取的,以便非程序员也能学会。

这是一种编写几行命令(称为脚本)的方式,可以让Windows操作系统执行您希望它执行的操作。然后,您可以将这些行保存在文件中并通过单击运行它或安排它定期运行。

你可以用 PowerShell 做什么?

PowerShell的高级点是能够自动执行任务,因此您不必浪费时间重复做平凡的事情。对于专业的系统管理员(Systems Administrator)来说,这可能类似于创建新用户,为他们生成密码,然后将包含详细信息的电子邮件发送给他们的新主管。

手动完成,通过点击和输入,该过程可能需要 5 分钟到一个小时或更长时间。使用正确的脚本,系统管理员(Systems Administrator)甚至可能不必执行其中的任何部分。

但是您想知道您可以在家中使用PowerShell做什么。(PowerShell)几乎所有你不喜欢一次又一次地做的事情。通过删除不需要的临时文件和日志文件,使用它来释放硬盘驱动器上的空间。

在您孩子的计算机上设置宵禁。重命名(Rename)或组织一堆文件。这就是PowerShell(PowerShell)的美妙之处。几乎(Almost)可以在计算机上执行的任何操作,都可以创建PowerShell脚本以通过单击或按计划自动运行和运行。

如何使用 PowerShell?

使用PowerShell(PowerShell)的最简单方法是在PowerShell 集成脚本环境 (ISE)(PowerShell Integrated Scripting Environment (ISE))中。您可以通过单击开始并在(Start)Windows 10的搜索栏中键入powershell ise来找到它。您应该看到它,如下所示。

我们第一次使用它时,我们将以管理员(Administrator)身份运行它。为此,您必须首先在您的计算机上拥有管理员权限。在“开始”菜单(Start Menu)中,右键单击PowerShell ISE,然后单击“以管理员身份运行”(Run as Administrator)

您可能会收到一个用户访问控制(User Access Control)( UAC ) 警告弹出窗口,询问您是否确定要执行此操作。单击(Yes)

现在您正在查看PowerShell IDE窗口(1)((1))的顶部窗格是脚本窗格。这是您编写脚本的地方。窗口(2)((2))的底部窗格是控制台区域。测试脚本时,您将在此窗格中看到输出。

这也是您会看到错误消息的地方,这将帮助您修复并改进您的脚本。窗口右侧的窗格(3)是命令插件。将其视为您可以使用的所有PowerShell命令的字典。

PowerShell设置为不运行除了已经是(PowerShell)Windows一部分的脚本之外的任何脚本。您需要对其进行更改,以便可以运行自己的脚本。

在脚本窗口中,复制并粘贴以下内容:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

它的Set-ExecutionPolicy部分称为 cmdlet(发音为 commandlet)。Cmdlet 是强大的东西。(Think)它们想象成你可以给Windows的短命令,Windows会做一堆更复杂的东西来满足你的命令。

一个类比是告诉你的孩子打扫他们的房间。简明扼要(Short)。如果您的孩子精通房间清洁,那么他们会去整理床铺,将衣物放入篮子中,将玩具和书籍搁置起来,甚至可能用吸尘器吸尘。他们明白 cmdlet Clean-YourRoom意味着这一切。

在窗口顶部,您会看到一个绿色箭头。 单击(Click)它以运行命令。

-ExecutionPolicy部分告诉Set-ExecutionPolicy(-ExecutionPolicy)设置什么策略。它是一个参数。它的意思是,“我希望你在这些指导方针内工作,并专门做这件事。它告诉它使用RemoteSigned的特定策略。

RemoteSigned策略规定PowerShell不得执行或运行从Internet下载的任何脚本,除非它由受信任的发布者签名。

以一种迂回的方式,它告诉PowerShell可以运行任何本地创建的脚本,因为这些脚本不需要由远程受信任的发布者签名。现在,您的PowerShell脚本将能够运行您在计算机上编写的任何脚本。

让我们看一个删除临时文件的脚本。它不如CCleaner强大或彻底,但CCleaner也有其自身的一系列问题。

使用 PowerShell(Use PowerShell)硬盘(Your Hard Drive)创建空间(Create Space)

我们将逐行分解此脚本,以便您了解它是如何工作的。最后,脚本将完全显示,因此您可以根据需要复制和粘贴它。

$TempFileLocation = "C:\Users\username\Appdata\Local\Temp\*"

前面有美元符号的任何东西都是变量名。把它想象成一个用来放贵重物品的钱包。钱包(Wallet)让我们想起了美元符号,贵重物品听起来很可变,所以我们也会记住这一点。$TempFileLocation的钱包或变量。等号告诉PowerShell在该变量中放入什么。

在这种情况下,我们将放置一个 Windows 临时文件位置C:\Users\username\AppData\Local\Temp\*。我们这样做有两个原因;它是一个始终可以安全删除文件的位置,我们将使用它来告诉PowerShell必须去哪里删除文件。

在该位置显示用户名的地方,将其换成您的用户名。这是您用于登录计算机的用户名。它末尾的星号 (*) 是通配符。它代表的是Temp文件夹中的所有内容,因为Temp文件夹中的所有内容都是临时的,我们要删除它。

位置周围的双引号也很重要。这告诉PowerShell里面有一个字符串。(Think)字符串视为由字母和字符组成的字符串。如果是普通数字,我们不会使用引号。

$TempFile = Get-ChildItem $TempFileLocation -Recurse

我们正在制作另一个变量。这次我们将使用一个命令来想出一些东西来放入 $TempFile变量。

Get-ChildItem 

关于Get-ChildItem( Get-ChildItem)之类的 cmdlet,您会注意到的另一件事是它完全可读。看看第一个单词是动词吗?Cmdlet(Cmdlets)都以动作词开头,因此您可以立即知道它在做什么。ChildItem是两个名词。

cmdlet 的第二部分总是会告诉我们PowerShell将应用该操作。ChildItem 表示父位置的所有子项。这就像说获取文件夹中的所有文件,文件是子文件,文件夹是父文件。

获取子项的 cmdlet 是什么?变量$TempFileLocation中的所有内容。PowerShell将转到我们之前放入 $ TempFileLocation的位置并获取那里的所有子项。然后,它将它们放入变量$TempFile中。

那么,-Recurse部分是怎么回事?这告诉Get-ChildItem遍历该位置的所有内容。不要直接在父文件夹中获取文件。如果该文件夹中有文件夹,也获取他们所有的孩子,以及他们的孩子等等。我们要把它们全部搞定。

$TempFileCount = ($TempFile).count

是的,我们正在创建名为$TempFileCount的第三个变量,我们将在该变量中放入一个数字。号码在哪里?好吧, ( $TempFile).count我们这个数字。您可能已经发现 .count部分将对我们刚刚存储在 $ TempFile 中的所有文件进行(.count)计数(TempFile)

我们为什么这样做?主要是因为很高兴知道我们用脚本的其余部分清理了多少无用的文件,这样我们就可以知道它的有效性。

if($TempFileCount -eq 0)

现在我们正在设置一个条件语句。您可以看到它在询问“是否”。如果是什么?如果括号中的事物是真或假。括号很重要,否则 If 不知道要比较什么。在这里,它询问我们存储在$TempFileCount中的数字是否等于 0。

-eq是等于的简写。它是一种比较运算符。这就像告诉你的孩子,“如果你的房间很干净,很棒,我们会做点什么......”这句话是说如果存储在 $ TempFileCount中的数字 - 等于零接下来的事情。

{Write-Host "There are no files in the folder $TempFileLocation" -ForegroundColor Green}

$TempFileCount为零,就会发生这种情况。大括号很重要。如果 $ TempFileCount(TempFileCount)等于 0 ,它们会告诉PowerShell只执行它们内部的操作。

它将写入主机或屏幕,“C:\Users\username\Appdata\Local\Temp\* 文件夹中没有文件”。最后的参数 – ForegroundColor告诉PowerShell使文本变为绿色。这只是更容易与通常为红色的错误消息区分开来。

Else

你知道还有什么意思。这是检查您的孩子是否打扫房间的一部分,“您的房间最好打扫干净,否则...”。$TempFileCount不为零,就会发生这种情况。

{$TempFile | Remove-Item -WhatIf -Confirm:$false -Recurse -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue}

这表示转到存储在$TempFile中的当前位置。它后面的垂直线称为管道。它的功能有点像现实生活中的管道,因为它告诉PowerShell将 $ TempFile的内容汇集到 cmdlet 中,就好像它是通过管道输送到洗衣机中的水一样。然后 cmdlet Remove-Item执行它所说的操作;它会删除该位置的任何内容。

-WhatIf参数在这个阶段非常重要。它告诉PowerShell运行命令,但只是尝试一下,不要删除任何内容。只要(Just)向我们展示如果我们真的这样做会发生什么。

这使您可以在不更改计算机上的任何内容的情况下测试命令。将 -WhatIf 保留在其中,直到您对脚本将执行您希望它执行的操作而不是其他操作感到满意为止。然后只需删除它,脚本就会完成它的工作。

参数-Confirm:$false阻止脚本询问您是否真的要删除文件。你知道-Recurse是做什么的。-Force意味着无论如何都要删除那个东西。-WarningAction设置为SilentlyContinue

这可以防止脚本向您发出有关您正在删除的内容的警告。-ErrorAction设置为SilentlyContinue,这样如果过程中出现任何类型的错误,它就会继续运行。

现在我们在最后一行。

Write-Host "Cleared $TempFileCount files in the folder $TempFileLocation" -ForegroundColor Green}

就像Write-Host第一次做的一样,它会输出下面的句子,所以我们知道发生了什么。它会告诉我们从它刚刚处理的文件夹中删除了多少文件,并以绿色进行,以便于发现。

让我们一起看一下脚本:

$TempFileLocation = "C:\Users\guymcd\Appdata\Local\Temp\*"
$TempFile = Get-ChildItem $TempFileLocation -Recurse
$TempFileCount = ($TempFile).count

if($TempFileCount -eq "0") {
Write-Host "There are no files in the folder $TempFileLocation" - ForegroundColor Green
}
Else {
$TempFile | Remove-Item -Confirm:$false -Recurse -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue
Write-Host "Cleared $TempFileCount files in the folder $TempFileLocation" -ForegroundColor Green
}

您可以将其复制并粘贴到您的PowerShell ISE中,并将其另存为delete-TemporaryFiles.ps1之类的内容。既然您已经了解了 cmdlet,那么您不妨坚持使用它们的命名约定。

如果代码由于某种原因不适合您,您还可以下载我们创建的 PowerShell 脚本并运行它。只需(Just)先将其解压缩以查看脚本文件。

每当您想运行此脚本时,只需右键单击它并选择Run with PowerShellPowerShell控制台会弹出一两秒钟,而您的脚本会执行它的操作,然后如果没有错误就会消失。

在哪里可以了解更多 PowerShell?

这似乎很多!对于您的第一个PowerShell脚本来说,这是相当不错的。如果你已经做到了这一点,请为自己鼓掌。您今天学到了很多,但现在您想了解更多。那太棒了!

Internet上有很多资源可用于了解有关PowerShell的更多信息。我们的文章“通过命令行或 PowerShell 生成启动程序列表”(Generate a List of Startup Programs via Command Line or PowerShell)是一个很好的起点。然后查看这些其他资源:



About the author

我是一位强烈推荐的 Windows 10 专家,我专注于帮助人们个性化他们的计算机外观并使他们的 Office 工具更加用户友好。我利用自己的技能帮助他人找到使用 Microsoft Office 的最有效方法,包括如何格式化文本和图形以进行在线打印、如何为 Outlook 创建自定义主题,甚至如何自定义桌面任务栏的外观计算机。



Related posts