使用此Powershell脚本在Windows中自动执行文件加密

文件加密和文件解密可能需要一些工作。但是,使用PowerShell扩展,您可以将过程简化为单行命令。为此,我们需要安装Gpg4win和Powershell模块。使用脚本,我们可以自动执行文件加密和解密过程。

让我们看看如何使用脚本自动在Windows 10中加密文件。

先决条件:安装,模块,以及Certs

You’ll want to have the GPG4Win tools installed and configured before you begin. Head over to the project page and download the latest version. (If you need some guidance installing and configuring the tool, use this PDF guide.) You are going to use the symmetric cipher function of GPG4Win in this module.

此Powershell模块使用密码短语而不是密钥对来处理文件加密。最后,完成安装并转到Powershell模块。

Powershell模块是打包的功能集合。他们使用PSM1文件格式。您可以将这些文件保存在个人资料的“模块"目录中。然后,使用导入模块将模块添加到会话/脚本中。

所有模块的cmdlet都可用。随着您提高Powershell技能,甚至可以创建自己的模块。要安装文件加密模块,请从TechNet下载。

下一步,您需要将其复制到Modules目录之一。如果您只想自己安装,请将其复制到用户文件夹中的PowershellModules中。将其复制到资源管理器中以获得快捷方式:

%UserProfile%\Documents\WindowsPowerShell\Modules

如果要为所有用户安装该模块,请使用 Program Files \ Windows PowerShell \ Modules 文件夹。将此粘贴到资源管理器中以获得快捷方式:

%ProgramFiles%\Windows PowerShell\Modules

在Modules目录中创建一个名为GNUPG的新文件夹,并将PSM1文件粘贴到其中。

您需要导入模块每次使用:导入模块GnuPG 。但是,您可能需要将执行策略调整为“不受限制"。通过运行cmdlet Set-ExecutionPolicy RemoteSigned 来执行此操作。

由于下载了此模块,因此仍然需要将其标记为本地文件。右键单击文件,然后选择属性。接下来,在对话框中,点击取消阻止。在UAC对话框中确认您的操作,然后就可以使用该模块了。

使用Cmdlet

Skip the first Cmdlet, which is used to install GPG4Win . You should have already completed this step. If not, you can use this cmdlet to install and configure the program. The cmdlet downloads it to a folder you choose and runs the installer. The other two are complementary: Add-Encryption and Remove-Encryption. Both of these take three parameters.

第一个是目录,作为 -FolderPath传递。该模块将逐步浏览目录中的每个文件以应用或删除文件加密。您不想将其指向“文档"文件夹。您可能需要创建几个子文件夹来使用此脚本。如果您查看模块的源代码,则它使用 Get-ChildItem 来获取目录中的所有内容。解密功能将搜索范围限制为以.GPG结尾的文件。

下一个参数是用于文件加密的密码:-密码。确保这很复杂,因为它是对文件的保护。该函数使用ForEach循环逐步浏览每个文件。对于GPG4Win,文件和密码短语在开始过程中作为参数组合。

最终参数 -GPGPath 不是必需的。它设置为GPG4Win的默认安装位置。如果您将其放在另一个驱动器上,则可以使用此参数进行更新。它将更改开始过程的目标。

编写脚本

现在是时候使过程自动化。该脚本将加密目录中的文件。将解密的文件移到新目录。该脚本将删除原始文件。

您需要进行一些准备才能启动脚本。首先,使用导入模块GnuPG 导入模块。您需要设置几个变量。第一个变量 $ EncryptionTarget 是您的目标文件夹。 (在示例中,环境变量用于指向当前用户的文档文件夹。)将第二个变量设置为密码。此步骤使以后更易于更改。

Import-Module GnuPG$EncryptionTarget = "$($env:USERPROFILE)\Documents\Files-ToEncrypt"$Passphrase = "MakeAVeryLongSecurePhrase"Add-Encryption $EncryptionTarget -Password $PassphraseStart-Sleep -Seconds 60$EcnryptedFiles = Get-ChildItem $EncryptionTarget | Where-Object $_.Name -like "*.gpg"foreach ($gpg in $EcnryptedFiles){  Move-Item -Path $gpg.FullName -Destination "$($env:USERPROFILE)\Documents\$($gpg.Name)"}$UnEncryptedFiles = Get-ChildItem $EncryptionTarget | Where-Object $_.Name -notlike "*.gpg"foreach ($nongpg in $UnEcnryptedFiles){  Remove-Item -Path $nongpg.FullName -Confirm $false}

这些变量作为参数进入 Add-Encryption 。您使用开始睡眠来给文件加密时间完成时间。该示例使用了三分钟。您可以根据要使用的文件的大小和数量对其进行更改。

通过将 Get-ChildItem Where-Object 。使用 ForEach 循环,将每个文件复制到一个新目录。我们重复这些步骤,但是将 -like 切换为-notlike。 A 第二个 ForEach 循环清理原始文件。

设置重复任务

您已经有了脚本,现在需要创建计划任务。打开任务计划程序,然后单击创建任务

命名为类似 AutoEncrypt 。如果仅希望任务在登录时运行,则保留默认值。如果将其设置为无论运行,它将只能访问本地目录。但是,如果目的地位于远程计算机上,则需要存储密码才能运行作业。您可能想设置一个辅助帐户来保护主帐户的安全。

单击 Triggers 标签并设置条件。接下来,点击新建以调出计划窗口。您可以将触发设置保留为默认值。点击重复执行每个任务旁边的复选框,并将其设置为 5分钟。如果您的需求不是很紧急,可以选择减少运行频率。在持续时间旁边的下拉列表中,选择无限期。单击确定,返回到“创建任务"窗口。

操作选项卡上,单击新建。在弹出窗口中,将Powershell的路径放在“程序"框中:

%SystemRoot%/system32/Windows PowerShell/v1.0/powershell.exe

在参数框中,放入 ./ 以及脚本的路径。单击两次确定,然后将脚本设置为按计划任务运行。

一些安全问题和其他想法

请注意,您具有要输入的密码在存储文件的同一台计算机上解密文件。这些类型的文件加密更适合在发送文件或将其存储在另一台计算机上之前对其进行加密。 (如果要锁定文件系统,请使用“全盘加密"。)您可以设置类似的任务来对解密执行相同的操作。

您是否有一个需要快速且快速地进行项目?脏文件加密脚本?在评论中让我们知道。

标签: 加密 在线安全性