欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

powshell 如何在命令行中 传递参数给脚本文件 示例 文心一言 chatgpt 有大用

在PowerShell中,你可以通过命令行传递参数给你的脚本文件。这通常通过在脚本文件名后直接添加参数(以空格分隔)来完成,并在脚本内部使用$args数组或者定义参数(使用param关键字)来接收这些参数。

下面是一个简单的示例,展示了如何定义脚本以接受参数,并在命令行中传递这些参数。

示例脚本 example.ps1

首先,我们创建一个名为example.ps1的PowerShell脚本文件,该文件使用param关键字来定义两个参数:nameage

powershell复制代码

# example.ps1  

param(

[string]$name,

[int]$age  

)



Write-Host "Hello, $name! You are $age years old."

在命令行中传递参数

然后,你可以在PowerShell命令行中运行这个脚本,并通过空格分隔的方式传递参数给$name$age

powershell复制代码

.\example.ps1 -name "John Doe" -age 30

或者,如果脚本位于你的PowerShell脚本执行策略允许的路径中(通常是当前目录或者添加到环境变量$env:PATH中的目录),你可以省略.\

powershell复制代码

example.ps1 -name "John Doe" -age 30

注意事项

  • 确保你的PowerShell脚本执行策略允许你运行脚本。你可以通过运行Get-ExecutionPolicy来查看当前的执行策略。如果策略设置为Restricted(最严格的设置),你将无法运行脚本。你可以通过Set-ExecutionPolicy RemoteSigned(允许运行本地脚本和从Internet下载的已签名脚本)来更改策略。

  • 传递参数时,-前缀是可选的,但使用它可以提高参数的可读性。不过,如果参数名与脚本中定义的参数名完全匹配(不区分大小写),则即使不使用-前缀,PowerShell也能正确解析它们。然而,为了清晰和兼容性,建议总是使用-前缀。

  • 在脚本中,你可以使用$args数组来接收未命名的参数(即没有使用param关键字定义的参数)。然而,使用param关键字定义参数通常更为清晰和强大。

这个示例应该可以帮助你开始在PowerShell脚本中处理命令行参数。



.\aa.ps1 : 无法加载文件 C:\Users\16666739\Desktop\pw\aa.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go .microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。 所在位置 行:1 字符: 1 + .\aa.ps1 -Names aa,bb + ~~~~~~~~    + CategoryInfo          : SecurityError: (:) [],PSSecurityException    + FullyQualifiedErrorId : UnauthorizedAccess


这个错误信息表明你在尝试运行一个 PowerShell 脚本(aa.ps1)时遇到了执行策略的限制。PowerShell 有一个安全功能,通过执行策略来控制哪些脚本可以运行,以防止潜在的安全风险。

错误信息中提到的执行策略禁止在当前系统上运行脚本。你可以通过以下几种方法来解决这个问题:

  1. 更改执行策略
    你可以通过 PowerShell 更改执行策略来允许脚本运行。这可以通过运行 PowerShell(以管理员身份)并输入以下命令之一来完成:

    注意:使用 -Scope CurrentUser 参数将只更改当前用户的执行策略,而不是所有用户的。如果你想更改所有用户的策略,可以使用 -Scope Machine

  • RemoteSigned:允许运行本地创建的脚本和从互联网上下载的已签名的脚本。

    powershell复制代码

    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
  • Unrestricted:允许运行所有脚本,无论它们是否签名。

    powershell复制代码

    Set-ExecutionPolicy Unrestricted -Scope CurrentUser
  • Bypass:绕过执行策略,允许所有脚本运行而不进行任何警告或提示(不推荐用于生产环境)。

    powershell复制代码

    Set-ExecutionPolicy Bypass -Scope CurrentUser
  • 运行脚本时绕过执行策略
    如果你不想更改全局的执行策略,你可以在运行脚本时使用 -ExecutionPolicy Bypass 参数(注意,这需要管理员权限)。

    powershell复制代码

    powershell -ExecutionPolicy Bypass -File "C:\Users\16666739\Desktop\pw\aa.ps1" -Names aa,bb
  • 签名脚本
    如果你有权限和能力,你可以为你的脚本创建数字签名,并设置策略为 RemoteSigned 或 AllSigned。这通常在企业环境中使用,需要证书和特定的签名工具。

  • 更改执行策略后,你可能需要重新打开 PowerShell 窗口或重新启动计算机,以使更改生效。

    安全提示:更改执行策略可能会增加安全风险,特别是当你设置为 Unrestricted 或 Bypass 时。确保你了解这些更改的含义,并只在必要和安全的情况下实施。



    普通分类: