Назад | Перейти на главную страницу

wmic зависает в Cygwin

Если я открою Cygwin в rxvt, запустив wmic не показывает ожидаемого wmic:root\cli> Подсказка. Если я выполню C:\cygwin\bin\bash.exe из cmd.exe, Бег wmic внутри bash.exe возвращает ожидаемое приглашение. Зачем?

У меня есть переменная окружения CYGWIN установлен в ntsec tty. Я могу echo "hello" с ответом, а все остальное кажется счастливым. Просто когда я запускаю wmic и несколько других приложений Windows, у которых есть запрос, оно никогда не появляется.

Для wmic попробуйте использовать echo '' | wmic <query here>, где <query here> ваш желаемый запрос.

Например, чтобы получить сервисную метку машины Dell по SSH: echo '' | wmic bios get serialnumber.

Работа интерактивного режима кажется мне бесполезной, но это должно раскрыть вам большую часть функциональности wmic.

Неудачные попытки:

Одно альтернативное решение, которое я прочитал, заключалось в использовании < /dev/null в конце вместо echo '' | спереди, то есть: wmic bios get serialnumber < /dev/null. Однако мне не повезло с этим. (из Nabble thread)

Другое альтернативное решение, которое я прочитал, заключалось в попытке установить tty в CYGWIN переменная окружающей среды. Мне это тоже не повезло. (из сообщения Ларри Холла в списке рассылки Cygwin, ссылка на который отсутствует из-за предотвращения спама)

Это старая проблема Cygwin pty с собственным консольным приложением. Rxvt основан на «псевдотерминальном устройстве» (pty), которое Cygwin реализует с помощью каналов Windows. Приложения, не относящиеся к Cygwin, видят только каналы Windows, что заставляет некоторых из них думать, что им следует переходить в неинтерактивный режим без запроса. (Более конкретно, функция isatty () возвращает false при вызове в конвейере.)

В зависимости от версии Cygwin, которую вы используете, вам, возможно, придется использовать файл </ dev / null. Я считаю, что использую 1.7, и мне больше не нужно использовать </ dev / null в большинстве версий Windows (исключение составляет Windows 2003 R2, вы все равно должны использовать </ dev / null.)

Вот пример:

wmic bios (работает почти во всех версиях Windows) wmic bios </ dev / null (работает во всех версиях Windows на основе моего тестирования)

Надеюсь это поможет.

эхо не требуется.

Запускаем в командной строке cygnin:

Administrator@darwin-test7-wi ~
$ wmic pagefileset where 'name="C:\\pagefile.sys"' delete
Deleting instance \\DARWIN-TEST7-WI\ROOT\CIMV2:Win32_PageFileSetting.Name="C:\\pagefile.sys"

Instance deletion successful.
=============================================

Administrator@darwin-test7-wi ~
$ wmic pagefileset create name="C:\\pagefile.sys"

Instance creation successful.
-----------------------------------------------------

Administrator@darwin-test7-wi ~
$ wmic pagefileset where 'name="C:\\pagefile.sys"' set InitialSize=512,MaximumSize=512

Updating property(s) of '\\DARWIN-TEST7-WI\ROOT\CIMV2:Win32_PageFileSetting.Name="C:\\pagefile.sys"'

Property(s) update successful.
------------------------------------------------------