Странная проблема с командой Windows FIND.EXE, наблюдаемая в Windows 2008 R2 при запуске через поставщика удаленного исполнения. Команда FIND.EXE не возвращает ожидаемый результат, однако при запуске вручную на сервере Windows 2008 R2 все работает нормально.
Попробовал несколько вариантов синтаксиса FIND.exe, а также пробовал запускаться как пакетный скрипт ... но ни один из них не дал никакого вывода в stdout и всегда приводит к тому, что ERRORLEVEL равен 1.
Я заменил FIND.EXE на FINDSTR.EXE (echo hello | FINDSTR / I / C: "hello") и заметил, что FINDSTR.EXE работает как положено.
Окружающая среда:
+ Terraform v0.12.3
+ provider.vsphere v1.12.0
+ Windows 2008 R2 SP1
provider "vsphere" {
allow_unverified_ssl = true
...
}
resource "vsphere_virtual_machine" "vm_1" {
name = "..."
...
connection {
type = "winrm"
user = "Administrator"
password = "..."
host = "..."
...
}
provisioner "remote-exec" {
inline = [
"echo hello | FIND /I /C \"hello\"",
"echo %ERRORLEVEL%"
]
}
}
Первая команда во встроенном скрипте должна возвращать «1» (как количество найденных шаблонов), а «ОШИБКА» должна указывать «0» как успешное выполнение.
Фактический результат:
vsphere_virtual_machine.vm_1 (remote-exec): C:\Users\Administrator>echo "hello" | FIND /I /C "hello"
vsphere_virtual_machine.vm_1 (remote-exec): C:\Users\Administrator>echo 1
vsphere_virtual_machine.vm_1 (remote-exec): 1
vsphere_virtual_machine.vm_1 (remote-exec): C:\Users\Administrator>echo "hello" | FINDSTR /I /C:"hello"
vsphere_virtual_machine.vm_1 (remote-exec): "hello"
vsphere_virtual_machine.vm_1 (remote-exec): C:\Users\Administrator>echo 0
vsphere_virtual_machine.vm_1 (remote-exec): 0