У меня есть этот простой скрипт PS test.ps1
, который копирует файл с одного сервера на другой.Сценарий работает должным образом при выполнении непосредственно с сервера Jenkins.
$username = "domain\tester"
$pass = Get-Content "C:\test\Convert Password To Encrypted String\servername.txt" | ConvertTo-SecureString
$cred = New-Object -TypeName System.Management.Automation.PSCredential -
ArgumentList $username, $pass
Start-Sleep -Seconds 1.5
$Session = New-PSSession -ComputerName "servername" -Authentication
Negotiate -Credential $cred
Copy-Item "C:\test.txt" -Destination "C:\test" -ToSession $Session
Но при вызове того же сценария из пользовательского интерфейса Jenkins происходит сбой с приведенной ниже ошибкой.
C:\Program Files (x86)\Jenkins\workspace\jenkinsJob>powershell -File C:\test.ps1
New-PSSession : Cannot process argument transformation on parameter
'Credential'. userName
At C:\test\test.ps1:8 char:91
+ ... ComputerName "servername" -Authentication Negotiate -Credential $cred
+ ~~~~~
+ CategoryInfo : InvalidData: (:) [New-PSSession], ParameterBindi
ngArgumentTransformationException
+ FullyQualifiedErrorId : ParameterArgumentTransformationError,Microsoft.P
owerShell.Commands.NewPSSessionCommand
Copy-Item : Cannot validate argument on parameter 'ToSession'. The argument is
null or empty. Provide an argument that is not null or empty, and then try the
command again.
At C:\test\test.ps1:9 char:120
+ ... build.test\dist\test.txt" -Destination "C:\test" -ToSession $Session
+ ~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Copy-Item], ParameterBindingVa
lidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.Power
Shell.Commands.CopyItemCommand
C:\Program Files (x86)\Jenkins\workspace\jenkinsJob>exit 0
Finished: SUCCESS
Я проверил все настройки PowerShellреализованы, как и ожидалось.Проверено Set-ExecutionPolicy
неограниченно.Дженкинс вызывает скрипт как powershell - путь к файлу.