欢迎各位兄弟 发布技术文章
这里的技术是共享的
在PowerShell中,你可以通过命令行传递参数给你的脚本文件。这通常通过在脚本文件名后直接添加参数(以空格分隔)来完成,并在脚本内部使用$args
数组或者定义参数(使用param
关键字)来接收这些参数。
下面是一个简单的示例,展示了如何定义脚本以接受参数,并在命令行中传递这些参数。
example.ps1
首先,我们创建一个名为example.ps1
的PowerShell脚本文件,该文件使用param
关键字来定义两个参数:name
和age
。
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 有一个安全功能,通过执行策略来控制哪些脚本可以运行,以防止潜在的安全风险。
错误信息中提到的执行策略禁止在当前系统上运行脚本。你可以通过以下几种方法来解决这个问题:
更改执行策略:
你可以通过 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
时。确保你了解这些更改的含义,并只在必要和安全的情况下实施。