这行 Powershell 起什么作用?

这行 Powershell 起什么作用?

这是我根据自己的在线研究编写的脚本,但我对 PowerShell 不熟悉,不知道第一行具体做什么。如果脚本在 Windows 10 PC 上本地运行,是否需要它,还是仅适用于 Windows 服务器上的域/Active Directory/?

该脚本的目的是使用 PowerShell 控制台检索 Bitlocker 恢复密钥的副本。

这是我目前的脚本:

        # what does this line do?
           Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
        # move to script folder to run ".\Get-BitlockerRecovery.ps1"
           cd PS_scripts
        # run ".\Get-BitlockerRecovery.ps1"
           .\Get-BitlockerRecovery.ps1
        # return to starting point
           cd ..

以下是“.\Get-BitlockerRecovery.ps1”中的代码:

# Identify all Bitlocker volumes
$BitlockerVolumers = Get-BitLockerVolume

# For each volume (object), get the RecoveryPassowrd and display it.
$BitlockerVolumers |
    ForEach-Object {
        $MountPoint = $_.MountPoint 
        $RecoveryKey = [string]($_.KeyProtector).RecoveryPassword       
        if ($RecoveryKey.Length -gt 5) {
            Write-Output ("The drive $MountPoint has a recovery key $RecoveryKey.")
        }        
    }

我发现了这一点,但不完全明白它是否适用于我的情况,因为它提到“适用于 Windows 服务器计算机”。

RemoteSigned。要求从 Internet 下载的所有脚本和配置文件都由受信任的发布者签名。Windows 服务器计算机的默认执行策略。
链接:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-executionpolicy?view=powershell-7.1

再次强调,我是 PowerShell 新手,所以请使用 ELI5。
另外,如果您在其他地方发现任何其他错误,请告诉我。

答案1

我是 PowerShell 新手,不知道第一行到底起什么作用。

PowerShell 的设计比批处理更安全。因此,默认情况下,Windows 会限制运行 PowerShell 脚本。如果该脚本(可能未经授权)正在下载恶意软件或创建其他安全漏洞,则允许脚本执行会很危险。

在第一行的情况下,设置了执行策略(对脚本的限制),以便在本地创建的脚本可以毫无问题地运行,但是由 Windows 确定从另一台计算机(例如互联网)获取的脚本会受到额外的限制。

如果脚本在 Windows 10 PC 上本地运行,是否需要它?

据我所知,新安装的(非服务器)Windows 不允许自动运行 PowerShell 脚本——需要设置执行策略才能允许脚本运行(尽管非 Windows 计算机的执行策略显然Unrestricted从 PowerShell 6.0+ 开始设置为允许脚本运行)。但是,这不一定需要为每个脚本都执行。也就是说,您可以从命令行更改这些设置一次,而不是逐个脚本更改。

我发现了这一点,但不完全明白它是否适用于我的情况,因为它提到“适用于 Windows 服务器计算机”。

它表明这RemoteSigned是 Windows Server 上 PowerShell 的默认执行策略,而不是Undefined(我相信)非服务器版本的 Windows - 并不是说​​它仅适用于 Windows Server。

该 cmdlet 的官方文档Set-Execution可以在这里找到

相关内容