【问题标题】:Use variable in Powershell command line [duplicate]在 Powershell 命令行中使用变量 [重复]
【发布时间】:2021-02-04 13:31:54
【问题描述】:

我有一个小型 Powershell 脚本,可以将文件上传到 Blob 存储。我们的想法是在构建完成后将其作为内联脚本在 Devops 中运行,而不是像现在这样硬编码路径/文件。

如果我在我的计算机上的 Powershell 命令提示符下运行它,它工作正常。

az storage blob upload --% --container-name mycontainer --account-name myaccount --name "File.zip" --file "c:\Projects\File.zip" --sas-token "{my token}"

但是,我想用我的构建管道可以设置的变量交换硬编码的路径+文件。但这里是我还没有弄清楚如何实际使用该变量的地方。

当我尝试在本地运行时,以下内容不起作用。为了测试,我创建了一个变量,然后进行了调用。

// Create variable
New-Variable -Name "TestFile" -Value "c:\projects\File.zip"
(enter)
// Try to upload it
az storage blob upload --% --container-name mycontainer --account-name myaccount --name "File.zip" --file $TestFile --sas-token "{my token}"

结果:

FileOperationError: [WinError 2] 系统找不到文件 指定:'$TestFile'

我假设我需要以不同的方式声明它或通过管道使其工作,但是如何?

【问题讨论】:

  • 你是对的@zett42。将 --% 移动到令牌之前(这就是我将它放在那里的原因)解决了这个问题。如果您将其写为回复,我可以将其标记为已解决。
  • 我已投票决定将此问题作为重复问题结束。

标签: powershell command-line azure-devops


【解决方案1】:

在变量的开头和结尾使用语音标记,例如"$TestFile"

【讨论】:

  • 不幸的是,结果相同。我尝试过 --file $TestFile、--file "$TestFile" 和 --file '$TestFile' 但它们都产生相同的结果。我的猜测是该值未解析,因此它实际上认为 $TestFile 是值本身。
  • 使用撇号,应该是这个字面量,所以你在两个撇号之间输入的正是只会出现的内容。
  • 使用New-Variable 命令时,我知道使用Get-Variable 可以使用使用New-Variable 命令创建的变量。
猜你喜欢
  • 2012-09-05
  • 2022-01-23
  • 2020-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多