gpt4 book ai didi

powershell - 如何使用 Powershell 下载脚本文件,然后通过传入参数执行它?

转载 作者:行者123 更新时间:2023-12-03 16:27:07 24 4
gpt4 key购买 nike

我通常有这个命令来运行一些 powershell 脚本:
& ".\NuGet\NuGet Package and Publish.ps1" -Version $env:appveyor_build_version -NuGet "C:\Tools\NuGet\nuget.exe" -apiKey $env:apiKey
工作正常,但脚本在我的服务器上本地找到。

我希望说:使用参数等运行此脚本。很好..但该脚本位于 GIST 或某些 GitHub 公共(public)存储库中。

这可能吗?

最佳答案

在 linux 世界中,这通常被称为“管道到 bash”

这是一个安装 Chef taken from the chef documentation 的示例

curl -L https://omnitruck.chef.io/install.sh | sudo bash

同样的事情可以用 powershell 来完成
. { iwr -useb https://omnitruck.chef.io/install.ps1 } | iex; install
iwrInvoke-WebRequest 的简写和 iexInvoke-Expression 的缩写

由于您特别询问了有关传递参数的问题,因此这里有一个带有 args 的示例。
. { iwr -useb https://omnitruck.chef.io/install.ps1 } | iex; install -channel current -project chefdk

您可以 look at the powershell script为了更清楚地了解它是如何工作的。

基本上将您的powershell脚本托管为github gist,然后在脚本中将所有内容包装在一个模块中
new-module -name foobar -scriptblock {


Function Foo() {

}
Function Bar() {

}
Function Install-Project() {
param (
[string]$project = 'chef',
[string]$channel = 'stable'
)
Foo
Bar
}

set-alias install -value Install-Project

export-modulemember -function 'Foo','Bar' -alias 'install'
}

最佳实践

'Piping to bash' 是有争议的,因为如果你不小心,理论上攻击者有可能拦截并用他们自己的脚本替换你的脚本。
  • 仅安装您控制或完全信任的脚本
  • Use permalinks或验证您下载的文件的哈希值
  • 只能从 https
  • 下载

    关于powershell - 如何使用 Powershell 下载脚本文件,然后通过传入参数执行它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33205298/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com