Вам нужно написать команду как путь к исполняемому файлу и обменять \ System32 на \ sysnative.
Эта команда работает как нужно:
print(subprocess.check_output(["C:\\Windows\\sysnative\\nbtstat.exe","-A",ipaddress]))
На этой странице описывается папка sysnative, , но я дам здесь краткое (и ОЧЕНЬ упрощенное) объяснение:
System32 и Sysnative - это на самом деле одна и та же папка, доступ к которой осуществляется только под разными именами, но если программа, использующаяпапка является 32-разрядной, то имя, которое вы используете для доступа к этой папке, изменяет доступные параметры в папке.Если 32-разрядная программа использует путь System32, доступны только 32-разрядные параметры, а все 64-разрядные программы скрыты.Если вместо этого он использует путь Sysnative, тогда становятся доступны 64-битные параметры.
Как выясняется, nbtstat.exe на самом деле является 64-битной программой, и поэтому, когда 32-битный скрипт или другая программа пытаетсячтобы открыть его через папку System32, он возвращает ошибку о том, что программа не существует.И поскольку по умолчанию путь для поиска команд - System32, если вы не укажете путь, он также скажет, что программа не существует.
Из-за этого, для 32-битногоЧтобы использовать исполняемый файл 64-битной команды, необходимо явно указать путь к исполняемому файлу, и он должен быть указан через путь Sysnative вместо пути System32.