在远程计算机上运行PowerShell脚本在Azure Devops中不起作用

ldioqlga  于 2023-05-01  发布在  Shell
关注(0)|答案(2)|浏览(130)

我试图通过ssh在远程计算机上运行PowerShell脚本。我已经配置了Azure版本,但我得到了一个非常奇怪的错误。
这就是我的配置文件的样子

steps:
- task: SSH@0
  displayName: 'Run shell script on remote machine'
  inputs:
    sshEndpoint: 'Dev SSH service'
    failOnStdErr: false
    runOptions: script
    scriptPath: '$(Build.SourcesDirectory)/Pipelines/Scenarios/test.ps1'
    readyTimeout: '20000'

这就是我的Powershell脚本的样子:

Write-Host "Hello, World!"

远程计算机通过PowerShell配置ssh。
我得到的错误如图所示

转录:

tr -d '\015' <./test.ps1> ./test.ps1._unix

##[error]At line:1 char:14

##[error]+ tr -d '\015' <./test.ps1> ./test.ps1._unix

##[error]The '<' operator is reserved for future use.

##[error]    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException

##[error]    + FullyQualifiedErrorId : RedirectionNotSupported

##[error]Error: Command tr -d '\015' <./test.ps1> ./test.ps1._unix exited with code 1.
nle07wnf

nle07wnf1#

我解决了问题。我创造了一个系统。调试变量。我看到了SSH0是如何工作的,最后我只是将脚本复制到远程机器上,并通过设置Run =命令来执行它。

- task: CopyFilesOverSSH@0
  displayName: 'Copy scripts to on remote machine'
  inputs:
     sshEndpoint: 'Dev SSH service'
     sourceFolder: '$(Build.SourcesDirectory)\Pipelines\Scenarios'
     contents: '**.ps1' 
     targetFolder:  'C:\Test\Scenarios'
     cleanTargetFolder: false
     overwrite: true
     failOnEmptySource: false
     flattenFolders: true

 - task: SSH@0
   inputs:
   sshEndpoint: 'Dev SSH service'
   runOptions: 'commands'
   commands: 'C:\Test\Scenarios\test.ps1'
   readyTimeout: '20000'
j8yoct9x

j8yoct9x2#

我知道这是一个老职位,但我只是遇到了这个同样的问题,并认为我会张贴修复,为我工作。
我正在使用PowerShell脚本,并且我已经将Windows目标计算机配置为默认SSH shell为PowerShell。
上面的错误来自试图在此处删除windows行尾的脚本:链接(第219行)
要解决此问题,请执行以下操作:
RunOptions应从“Inline”更改为“Comands”内联节点应变为命令
出发地:

- task: SSH@0
    inputs:
        sshEndpoint: YOUR_SSH_ENDPOINT_HERE
      runOptions: inline
      inline: | 
        Write-Output 'Hello, World!'
    displayName: Hello world

收件人:

- task: SSH@0
    inputs:
        sshEndpoint: YOUR_SSH_ENDPOINT_HERE
      runOptions: commands #<- changed this
      commands: | #<- changed this
        Write-Output 'Hello, World!'
    displayName: Hello world

相关问题