从另一个脚本(例如批处理文件)自动运行脚本
正如 Matt Hamilton 所建议的,只需创建您的 PowerShell .ps1 脚本并使用以下命令调用它:
PowerShell C:\Path\To\YourPowerShellScript.ps1
或者如果您的批处理文件的工作目录与 PowerShell 脚本所在的目录相同,您可以使用相对路径:
PowerShell .\YourPowerShellScript.ps1
在此之前,您需要设置 PC 的执行策略,我将在下面展示如何操作。
手动运行脚本方法一
您可以see my blog post for more information,但本质上是创建您的 PowerShell .ps1 脚本文件来执行您想要的操作,然后在同一目录中创建一个 .cmd 批处理文件,并将以下内容用于文件内容:
@ECHO OFF
SET ThisScriptsDirectory=%~dp0
SET PowerShellScriptPath=%ThisScriptsDirectory%MyPowerShellScript.ps1
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& '%PowerShellScriptPath%'"
将第 3 行的 MyPowerShellScript.ps1 替换为 PowerShell 脚本的文件名。
这将允许您简单地双击批处理文件来运行您的 PowerShell 脚本,并且将避免您必须更改您的 PowerShell 执行策略。
我的博文还展示了如何以管理员身份运行 PowerShell 脚本(如果这是您需要做的事情)。
手动运行脚本方法二
或者,如果您不想为每个 PowerShell 脚本创建批处理文件,您可以将默认 PowerShell 脚本行为从“编辑”更改为“运行”,允许您双击 .ps1 文件来运行它们。
您需要修改一个额外的注册表设置,以便您可以运行文件路径包含空格的脚本。我展示了如何做这两件事on this blog post。
但是,使用此方法,您首先需要设置执行策略以允许运行脚本。每台 PC 只需执行一次,可以通过在 PowerShell 命令提示符下运行此行来完成。
Start-Process PowerShell -ArgumentList 'Set-ExecutionPolicy RemoteSigned -Force' -Verb RunAs
Set-ExecutionPolicy RemoteSigned -Force是真正改变执行策略的命令;这会将其设置为 RemoteSigned,因此您可以根据需要将其更改为其他内容。此外,此行将自动为您以管理员身份运行 PowerShell,这是更改执行策略所必需的。