PowerShell 技能连载 - 复位防火墙策略
如果您想在 Windows 10 或 11 上将防火墙规则恢复为出厂默认设置,请让 PowerShell 运行相应的 netsh.exe
命令:
1 | PS> netsh advfirewall reset |
需要提升权限的 PowerShell。该命令将撤消自安装操作系统以来您(或安装程序)对 Windows 防火墙所做的任何更改。
如果您想在 Windows 10 或 11 上将防火墙规则恢复为出厂默认设置,请让 PowerShell 运行相应的 netsh.exe
命令:
1 | PS> netsh advfirewall reset |
需要提升权限的 PowerShell。该命令将撤消自安装操作系统以来您(或安装程序)对 Windows 防火墙所做的任何更改。
如果您想在 Windows 10 或 11 上将防火墙规则恢复为出厂默认设置,请让 PowerShell 运行相应的 netsh.exe
命令:
1 | PS> netsh advfirewall reset |
需要提升权限的 PowerShell。该命令将撤消自安装操作系统以来您(或安装程序)对 Windows 防火墙所做的任何更改。
最好确保笔记本上的本地驱动器已加密。这可以保护您的个人数据,以防有一天笔记本被盗或被丢入垃圾堆中。
大多数现代商务笔记本都配备 TPM 芯片并支持硬盘驱动器的实时加密。Windows 附带管理硬盘加密的 PowerShell 模块 “Bitlocker”:
1 | PS> Get-Command -Module bitlocker |
确保在尝试任何这些命令之前启动提升权限的 PowerShell。例如,Get-BitlockerVolume
转储当前设置和保护状态:
1 | PS> Get-BitLockerVolume | Select-Object -Property * |
该 cmdlet 显示当前的保护状态、采用的保护方法,EncryptionPercentage
指示加密是已完成还是仍在处理您的数据。
如果您的硬盘驱动器未加密,则应首先阅读有关 TPM 和加密的更多信息。虽然您可以使用 Enable-Bitlocker
开始加密您的硬盘驱动器,但重要的是您要完全了解所有加密原理,以免意外地把自己的电脑锁定。
在 Windows 资源管理器中导航到文件夹时,您可以轻松打开传统的 cmd 或 PowerShell 控制台,并将当前文件夹设置为当前路径。
只需单击 Windows 资源管理器窗口中的地址栏然后输入 cmd
,powershell
或 pwsh
,然后按 ENTER 键。
cmd
命令将打开经典命令行,powershell
命令将打开 Windows PowerShell 控制台,pwsh
命令将打开 PowerShell 7 控制台(如果已安装)。
仅当存在具有命令名称的文件夹时,此技巧才会失败。如果您打开 Documents 文件夹,单击地址栏,然后输入 “powershell”,那么只有在任何地方都没有名为 “PowerShell” 的子文件夹时,按下 ENTER 键才会打开一个 PowerShell 控制台。因为如果有,资源管理器只会打开此文件夹。
要解决此问题,只需将 “.exe” 添加到在地址栏中输入的命令中。”powershell.exe” 始终打开 Windows PowerShell 控制台,并将当前资源管理器的文件夹设置为默认路径。
在上一个技能中,我们介绍了 Windows 附带的 “SmbShare” PowerShell 模块,使您能够管理文件共享。我们学习了代表您在网络上共享的本地文件夹的 “SmbShare” 名词。今天我们来看看 “SbmMapping” 这个名词。
“SmbMapping” 名词从另一端查看共享:它表示您映射为本地驱动器的远程共享。Get-SmbMapping
列出您已映射的所有网络驱动器:
1 | PS> Get-SmbMapping |
“New-SmbMapping
“ 添加更多网络驱动器并将驱动器号映射到远程共享文件夹。这是一个映射网络驱动器并以纯文本形式提交登录凭据的示例:
1 | PS> New-SmbMapping -LocalPath y: -RemotePath \\storage3\scanning -UserName Freddy -Password topSecret123 |
与往常一样,查看 cmdlet 文档可以更好地了解整个工作原理:
1 | PS> Get-Help -Name New-SmbMapping -Online |
这将在您的默认浏览器中打开一个文档页面,您可以检查可用参数并查看其他示例。
例如,您会发现 -Persistent
开关参数。它确定网络驱动器是永久可用且永久可用,还是仅用于当前会话。-SaveCredentials
将缓存输入的登录凭据,以便下次访问远程共享时不再需要密码。
Windows 附带一个名为 “SMBShare” 的模块,其中包含 42 个用于管理网络共享的 cmdlet。此模块适用于 Windows PowerShell 和 PowerShell 7:
1 | PS> Get-Command -Module SMBShare |
要开始学习使用这些 cmdlet,请从使用动词 “Get” 的那些开始:它们读取信息并且不会意外更改系统设置。
例如,Get-SmbShare
列出了您机器上所有可用的网络共享:
1 | PS> Get-SmbShare |
要了解如何添加、配置或删除 SmbShares,请尝试查看带有名词 “smbshare” 的 cmdlet:
1 | PS> Get-Command -Module SMBShare -Noun SmbShare |
New-SmbShare
允许您添加新的基本网络共享。在继续运行更改系统的命令之前,最好阅读 cmdlet 文档并查看包含的示例:
1 | PS> Get-Help -Name New-SmbShare -Online |
这将在您的默认浏览器中打开文档页面。该文档解释了可用的参数,并提供了如下示例:
1 | PS> New-SmbShare -Name VMSFiles -Path C:\ClusterStorage\Volume1\VMFiles -FullAccess Contoso\Administrator, Contoso\Contoso-HV1$ |
它说明了创建新文件共享并使用访问权限保护它是多么简单。在运行命令之前,您必须调整示例的参数,并且至少更新您要共享的本地文件夹路径,以及应该具有完全访问权限的帐户名称。
使用第三方对话框并不总是一个好的选择。复用内置的 PowerShell 对话框会更有意思。这是一个名为 Show-ConsoleDialog
的函数,您可以用各种选项灵活地构造这样的对话框。
该对话框在纯控制台环境(如 PowerShell 7 或 VSCode)和 PowerShell ISE(作为自定义对话框弹出)中同样显示良好。
1 | function Show-ConsoleDialog |
你可以像这样使用它:
1 | $result = Show-ConsoleDialog -Message 'Restarting Server?' -Title 'Will restart server for maintenance' -Choice 'Yes','No','Later','Never','Always' |
返回值为用户选择的名称。例如,使用 switch
语句来响应用户的选择。
另请注意,每个选项的第一个字母会变成键盘快捷键,因此不要使用具有重复首字母的选项。
在上一个技能中,我们说明了虽然很难直接访问 Windows 电源管理 API,但还有其他 API 可以为您做到这一点。这段代码可让您将 Windows 系统关闭到所需的电源管理状态,即您可以将其休眠并使其进入无能耗状态:
1 | # use the built-in pwmgmt support in Windows Forms |
虽然很难直接访问 Windows 电源管理 API,但还有其他 API 可以实现相同需求。以下代码返回您机器的当前电源状态。如果您使用的是笔记本电脑并且没有交流电源,它可以告诉您剩余电池电量:
1 | Add-Type -AssemblyName System.Windows.Forms |
结果类似这样:
PowerLineStatus : Offline
BatteryChargeStatus : 0
BatteryFullLifetime : -1
BatteryLifePercent : 0,45
BatteryLifeRemaining : 13498
如果 Windows 崩溃或意外停止,当下次重启时,它会产生一条 ID 为 41 的内核错误日志。如果您想检查回顾您的 Windows 是否正常关闭,请尝试以下代码:
1 | Get-EventLog -Logname System -Source "Microsoft-Windows-Kernel-Power" | |
一种更现代且与 PowerShell 7 兼容的方式是使用 Get-WinEvent
,而不是使用过滤器哈希表:
1 | Get-WinEvent -FilterHashtable @{ |