【问题标题】:Inline powershell script variables getting removed in Azure Pipelines在 Azure Pipelines 中删除的内联 powershell 脚本变量
【发布时间】:2021-08-11 20:08:37
【问题描述】:

我正在尝试使用内联脚本通过 Azure YAML 管道 powershell 任务创建一个 .ps1 文件;

- task: PowerShell@2
  displayName: "????Create IIS Log Cleardown script file"
  env:
    DaysToKeep: ${{ parameters.DaysToKeep }}
  inputs:
    targetType: 'inline'
    script: |
      $DaysToKeep = $env:DaysToKeep
      Set-Content -Path C:\scripts\CleanupScript.ps1 @"
      $logPath = 'C:\inetpub\logs\LogFiles'
      $daysKept = $DaysToKeep
      $retentionDate = $(Get-Date).AddDays(-$daysToKeep)
      ..."@

在目标服务器上,文件已更新,但文件中的所有 powershell 变量已被删除/替换;

 = 'C:\inetpub\logs\LogFiles'
 = 3
 = .AddDays(-3)

powershell 脚本变量 $logPath、$daysKept 和 $retentionDate 已被删除。

我尝试了几种方法转义脚本,但都没有成功,有什么方法可以从变量替换中完全转义该脚本,同时仍保留 powershell 脚本中所需的单引号和双引号?

【问题讨论】:

    标签: azure powershell azure-pipelines-yaml


    【解决方案1】:

    是的,这些值正在传递给文件内容。 您有 3 个选项:

    1. 将参数添加到 .ps1 文件并使用这些参数和所需的值调用它
    2. 在运行脚本之前使用标记代替变量并替换目标中的标记
    3. 使用 Get-Variable 和 Set-Variable

    在我看来,1 是最好的选择

    【讨论】:

    • 我的问题是powershell脚本中的变量,例如。 $retentionDate 正在从最终的 ps1 文件中删除
    【解决方案2】:

    我发现问题是由于此处字符串 (@""@) 使用双引号而不是单引号 (@''@) 引起的;

    - task: PowerShell@2
      displayName: "?Create IIS Log Cleardown script file"
      env:
        DaysToKeep: ${{ parameters.DaysToKeep }}
      inputs:
        targetType: 'inline'
        script: |
          $DaysToKeep = $env:DaysToKeep
          Set-Content -Path C:\scripts\CleanupScript.ps1 @'
          $logPath = "C:\inetpub\logs\LogFiles"
          $daysKept = $env:DaysToKeep
          $retentionDate = $(Get-Date).AddDays(-$daysKept)
          ...'@
    

    这会用下面的行正确地写入文件,不再剪切 powershell 变量;

    $logPath = "C:\inetpub\logs\LogFiles"
    $daysKept = $env:DaysToKeep
    $retentionDate = $(Get-Date).AddDays(-$daysKept)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-25
      • 2017-10-14
      • 1970-01-01
      • 1970-01-01
      • 2020-06-09
      • 1970-01-01
      • 2018-07-26
      • 2020-09-07
      相关资源
      最近更新 更多