谁不希望他们成为巫师,只说几句话就发生神奇的事情?好吧,我们无法向您展示如何成为一名向导,但可以向您展示如何做一点计算机魔术。
如果您有一台装有Windows 7的Windows计算机,那么您将拥有PowerShell。另外,如果您的计算机上装有Windows 7,请为安全起见对其进行更新。
但是本文不仅仅针对Windows用户。最新版本的PowerShell是免费的,可以在Mac和Linux计算机上安装和使用。
这很重要,因为您对PowerShell的了解现在可以在几乎所有计算机上使用。谁知道?您可能会将此技能提高到一个新水平,并涉足信息技术领域。
什么是PowerShell?
Microsoft的高科技答复是,它是一种“ …专门为系统管理员设计的命令行外壳。”听起来令人生畏。但事实并非如此。您会照顾计算机吗?是的,那么您就是您家中的系统管理员。
您告诉计算机如何处理点击和击键吗?是的,因此可以将命令行shell看作是另一个窗口,您可以在其中键入内容以告诉计算机该做什么。您可以执行此操作。
<!-In_content_1全部:[300x250] / dfp:[640x360]->
PowerShell就像一种编程语言,但不像大多数语言那样晦涩难懂。它实际上读起来很像普通英语,这是Microsoft力求的,以便非程序员可以使用。
这是一种编写几行命令(称为脚本)的方法,以使Windows操作系统执行您希望执行的操作。然后,您可以将这些行保存在文件中,然后单击一下即可运行,或安排它定期运行。
PowerShell可以做什么?
PowerShell能够自动执行任务,因此您不必浪费时间重复执行平凡的事情。对于专业的系统管理员,这可能类似于创建新用户,为他们生成密码,然后将包含详细信息的电子邮件发送给新主管。
通过单击和键入手动完成,此过程可能需要5分钟到一个小时或更长时间。使用正确的脚本,系统管理员甚至不必执行任何操作。
但是您想知道可以在家中使用PowerShell做什么。您不喜欢一次又一次地做的几乎所有事情。使用它通过删除不需要的临时文件和日志文件来释放硬盘上的空间。
在孩子的计算机上设置宵禁。重命名或整理一堆文件。这就是PowerShell的优点。您几乎可以在计算机上做的任何事情,都可以创建PowerShell脚本以单击并按计划自动运行。
如何使用PowerShell?
使用PowerShell的最简单方法是PowerShell集成脚本环境(ISE)。您可以通过单击开始,然后在Windows 10的搜索栏中键入powershell ise来找到它。您应该看到它,如下所示。
首次使用它,我们将以管理员身份运行它。为此,您必须首先具有计算机的管理员权限。在您的开始菜单中,右键单击PowerShell ISE,然后单击以管理员身份运行。
您可能会得到UserAccess Control(UAC)警告弹出窗口,询问您是否确定要执行此操作。点击是。
现在,您正在查看PowerShell IDE。窗口(1)的顶部窗格是脚本窗格。这是您编写脚本的地方。窗口(2)的底部窗格是控制台区域。测试脚本时,您会在此窗格中看到输出。
这也是您将看到错误消息的地方,这样可以帮助您修复脚本并使脚本变得更好。窗口(3)右侧的窗格是命令附加组件。可以将它视为所有可用的PowerShell命令的字典。
PowerShell设置为不运行Windows以外的任何脚本。您需要对其进行更改,以便您可以运行自己的脚本。
在脚本窗口中,复制并粘贴以下内容:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
strong>Set-ExecutionPolicy的一部分称为cmdlet(发音为commandlet)。 Cmdlet是功能强大的东西。可以将它们视为您可以向Windows提供的简短命令,然后Windows会做很多更复杂的事情来满足您的命令。
打个比方,就是要告诉孩子打扫房间。简明扼要。如果您的孩子精通房间清洁,那么他们将去整理床铺,将衣服放在篮子里,搁置玩具和书籍,甚至用吸尘器清洁地板。他们了解cmdlet Clean-YourRoom就是这些。
在窗口顶部,您将看到一个绿色箭头。单击该箭头以运行命令。
- ExecutionPolicy部分告诉Set-ExecutionPolicy要设置什么策略。这是一个参数。意思是,“我希望您按照这些准则进行工作,并特别做到这一点。它告诉它使用RemoteSigned的特定策略。
RemoteSigned策略指出,PowerShell可能不会执行或运行从Internet下载的任何脚本,除非该脚本是由受信任的发布者签名的。
以一种回旋的方式告诉PowerShell,可以在本地运行任何脚本,因为这些脚本不需要由远程受信任的发布者签名。现在,您的PowerShell脚本将能够运行您在计算机上编写的任何脚本。
让我们看一下删除临时文件的脚本。它不像CCleaner强大或全面,但CCleaner带有其自身的问题集。
使用PowerShell在硬盘上创建空间
我们将分解此脚本,逐行,以便您了解其工作原理。最后,该脚本将完整显示,因此您可以根据需要复制和粘贴该脚本。
$TempFileLocation = "C:\Users\username\Appdata\Local\Temp\*"
任何在其前面带有美元符号的内容都是变量名。可以把它想像成用来放入贵重物品的钱包。钱包让我们想起了美元符号,贵重物品听起来像是可变的,所以我们也会记住这一点。我们正在创建一个名为$ TempFileLocation的钱包或变量。等号告诉PowerShell将在该变量中放置什么。
在这种情况下,我们将放置Windows临时文件的位置– C:\ Users \ username \ AppData \本地\临时\ *。我们这样做有两个原因:在该位置删除文件始终是安全的,我们将使用它来告诉PowerShell必须删除文件的位置。
在该位置显示用户名的位置,将其交换给您的用户名称。这是您用来登录计算机的用户名。末尾的星号(*)是通配符。它代表的是Temp文件夹中的所有内容,因为Temp文件夹中的所有内容都是临时的,我们希望将其删除。
该位置周围的双引号也很重要。告诉PowerShell,其中包含一个字符串。认为字符串是由字母和字符组成的字符串。如果是普通数字,我们将不使用引号。
$TempFile = Get-ChildItem $TempFileLocation -Recurse
我们在制作另一个变量。这次,我们将使用命令在$ TempFile变量中添加一些内容。
Get-ChildItem
另一件事关于诸如Get-ChildItem之类的cmdlet的注意事项是,它完全可读。看看第一个单词是一个动词吗? Cmdlet都以动作词开头,因此您立即知道它在做什么。 ChildItem是两个名词。
cmdlet的第二部分总是要告诉我们什么PowerShell将应用该操作。 ChildItem表示父位置的所有子代。这就像说要获取文件夹中的所有文件,其中文件是子文件,文件夹是父文件。
获取子项的cmdlet是什么?变量$ TempFileLocation中的所有内容。 PowerShell将转到我们之前放置在$ TempFileLocation中的位置,并获取在那里的所有子项。然后,将它们放入变量$ TempFile中。
那么-递归部分又是什么呢?这就是说Get-ChildItem要遍历该位置的所有内容。不要只是立即在父文件夹中获取文件。如果该文件夹中有文件夹,则也让他们的所有孩子,以及他们的孩子,等等。我们将全部拿走。
$TempFileCount = ($TempFile).count
是的,我们正在创建名为$ TempFileCount的第三个变量,并将在该变量中添加一个数字。号码在哪里好吧,($ TempFile).count会给我们这个数字。您可能已经发现.count部分将对我们刚刚存储在$ TempFile中的所有文件进行计数。
我们为什么这样做?主要是因为很高兴知道我们要用脚本的其余部分清除多少无用文件,以便我们可以知道它的有效性。
if($TempFileCount -eq 0)
现在我们要设置提出条件声明。您会看到它在询问“如果”。有什么事括号中的内容是对还是错。方括号很重要,否则“ If”不知道要比较什么。在这里,它询问我们存储在$ TempFileCount中的数字是否等于零。
-eq是等号的简写。这是一种比较运算符。这就像告诉您的孩子们:“如果您的房间干净,好极了,我们将要做某事……”这句话说的是,如果存储在$ TempFileCount中的数字等于零,则执行下一步。
{Write-Host "There are no files in the folder $TempFileLocation" -ForegroundColor Green}
这就是如果$ TempFileCount为零的情况。大括号很重要。如果$ TempFileCount等于零,它们告诉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 删除项会执行以下操作:它会删除该位置上的所有内容。
-WhatIf参数在此阶段非常重要。它告诉PowerShell运行命令,但只能尝试一下,不要删除任何内容。只是告诉我们如果我们真的这样做会发生什么。
这使您无需更改计算机上的任何内容即可测试命令。将-WhatIf留在那儿,直到您对脚本将要执行的操作满意为止为止。然后只需删除该内容,脚本即可完成其工作。
参数-确认:$ false阻止脚本询问您是否确实要删除文件。您知道-递归的作用。-Force意味着无论如何都删除该内容。 -警告操作设置为SilentlyContinue。
这可以防止脚本向您发出有关删除内容的警告。 -ErrorAction设置为SilentlyContinue,这样,如果在此过程中出现任何错误,它就会不断变化。
现在,我们在最后一行。
Write-Host "Cleared $TempFileCount files in the folder $TempFileLocation" -ForegroundColor Green}
就像第一次写主机一样,它将输出以下句子,因此我们知道发生了什么。它会告诉我们从刚处理的文件夹中删除了多少文件,并以绿色显示以使其易于发现。
让我们一起来看一下脚本:
$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脚本 创建并只是运行它。只需先将其解压缩即可查看脚本文件。
只要您想运行此脚本,只需右键单击它,然后选择使用PowerShell运行。当您的脚本执行任务时,PowerShell控制台将弹出一两秒钟,然后在没有错误的情况下消失。
在哪里可以了解更多PowerShell?
这似乎很多!对于您的第一个PowerShell脚本,这是相当不错的。如果您做到了这一点,请为自己鼓掌。您今天学到了很多东西,但是现在您想了解更多。那很棒!
Internet上有很多资源可用于了解有关PowerShell的更多信息。我们的文章“ 通过命令行或PowerShell生成启动程序列表 ”是一个很好的起点。然后检查以下其他资源: