У меня есть сценарий PowerShell, который отлично работает на виртуальной машине Azure Azure 2016, но не может выполнить тот же сценарий из моего агента сборки, который также является виртуальной машиной Azure OS Windows Server 2016. В PowerShell не регистрируются ошибки, из-за которых я не могу понять, в чем их причины?
Есть ли какие-либо предварительные условия, которые мне нужно проверить или установить на сервере для выполнения этого сценария?
Ниже приведен сценарий, который выполняет командный файл, присутствующий на другой виртуальной машине.
$Username = 'ABC'
$Password = 'XYZ'
$pass = ConvertTo-SecureString -AsPlainText $Password -Force
$Cred = New-Object System.Management.Automation.PSCredential -ArgumentList $Username,$pass
try {
Invoke-Command -ComputerName "ServerName" -credential $cred -ErrorAction Stop -ScriptBlock {Invoke-Expression -Command:"cmd.exe /c 'C:\CI\Demo_CI.bat'"
Write-Host "done"
}
} catch {
Write-Host "error"
}
Я не получаю сообщения об ошибке, оно переходит в раздел перехвата и отображает ошибку, и я проверил предварительные требования, а на моей виртуальной машине также установлена оболочка PowerShell 5.1 и среда управления Windows.





Я считаю, что вы здесь столкнулись с проблемой делегирования учетных данных. Вы можете попробовать включить CredSSP в своем агенте сборки и в целевом «ServerName». Чтобы узнать больше о credssp, см. здесь, иначе вам придется использовать psexec в CI.
Я также попытался использовать CredSSP, но все еще не смог понять проблему.
Какое сообщение об ошибке вы получаете? В основном он имеет те же предварительные требования, что и
PowerShell on Target Machines task, подробности см. ВPrerequisites.