Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Показать параметр 'описание'

Ответить
Настройки темы
CMD/BAT - [решено] Показать параметр 'описание'

Пользователь


Сообщения: 72
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg Снимок.JPG
(78.9 Kb, 8 просмотров)
Добрый день.
Как присвоить переменной значение 'описание' см. влож.
Стоят win10.

Отправлено: 08:40, 30-05-2019

 

Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата Busla:
вызовом wmic.exe »
Можно, конечно... да только:
Цитата YuS_2:
подумалось так: зачем печку топить, когда есть центральное отопление. »
Потому что:
Цитата Iska:
иногда случаются совершенно невразумительные отказы при попытках сетевого взаимодействия. »
а надо ведь ещё и:
Цитата Arsenik77:
хотелось бы для узнать этот параметр у компьютеров находящихся в своей подсетки (не только локального). »

-------
scio me nihil scire. Ѫ


Отправлено: 12:45, 30-05-2019 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 72
Благодарности: 1

Профиль | Отправить PM | Цитировать


Появилась проблемка, не до конца показывается переменная var, если есть пробел в описании то только до него показывается.
В моем варианте for /f %%i in ('powershell -nol -c "&{(gwmi -computername kkk win32_operatingsystem|select description).description}"') do set var=%%i
если локально то все нормально.

Последний раз редактировалось Arsenik77, 30-05-2019 в 13:14.


Отправлено: 13:03, 30-05-2019 | #12


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Arsenik77:
не до конца показывается переменная var, если есть пробел в описании то только до него показывается. »
До конца, до конца. Добавьте параметр "delims=" в цикл разбора по for /f.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:14, 30-05-2019 | #13


Пользователь


Сообщения: 72
Благодарности: 1

Профиль | Отправить PM | Цитировать


Не получилось запустить
Цитата YuS_2:
если таки надо в cmd запускать именно, то: »
а свой вариант отрабатывает 52 компа и вылетает
Цитата Arsenik77:
Вот так примерно »
Нашел другой вариант решения net view \\имя компа , только не знаю как записать в переменную 3-ю строчку
Скрытый текст

C:\WINDOWS\system32>net view \\k140
Общие ресурсы на \\k140

УМКК;АБК;6 этаж;УИТ (Scada)

Имя общего ресурса Тип Используется как Комментарий

-------------------------------------------------------------------------------
slProject Диск
Команда выполнена успешно.

Отправлено: 19:40, 30-05-2019 | #14


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата Arsenik77:
Не получилось запустить »
Проверяйте напрямую из powershell, но с учетом -ThrottleLimit, по умолчанию этот параметр равен 32
Цитата:
Specifies the maximum number of concurrent connections that can be established to run this command. If you omit this parameter or enter a value of 0, the default value, 32, is used.
Список машин не обязательно перечислять в строке, можно вынести в файл, а в строку запуска добавить чтение из файла:
Код: Выделить весь код
icm -comp (gc machines.txt) -scr {(gwmi win32_operatingsystem).description}} -thrott 100
файл положить рядом со скриптом, а перечисление оформить по одной машине на строку...

А, да, совсем забыл, там ведь:
Цитата:
To create a PSSession or run commands on a remote computer, by default, the current user must be a member of the Administrators group on the remote computer. Credentials are sometimes required even when the current user is logged on to an account that is a member of the Administrators group.
и
Цитата:
If the current user is a member of the Administrators group on the remote computer, or can provide the credentials of a member of the Administrators group, use the Credential parameter of the New-PSSession, Enter-PSSession or Invoke-Command cmdlets to connect remotely.
Поэтому придется организовывать что-то вроде:
Код: Выделить весь код
icm -comp SRV -cred SRV\Admin -scr {(gwmi win32_operatingsystem).description}}
В общем, не всё так просто с безопасностью...

Ну а раз уж:
Цитата Arsenik77:
Нашел другой вариант решения net view \\имя компа , только не знаю как записать в переменную 3-ю строчку »
то можно так:
Код: Выделить весь код
@echo off

for /f "delims=" %%a in ('type machines.txt') do set pc=%%a&call :out
pause&exit /b

:out
for /f "skip=2 delims=" %%b in ('net view \\%pc%') do set var=%%b&goto next
:next
echo %pc% - %var%
exit /b
machines.txt - список машин, по одной на строку

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:40, 30-05-2019 | #15


Пользователь


Сообщения: 72
Благодарности: 1

Профиль | Отправить PM | Цитировать


Вообщем из всех вариантов толком не работает ни один .
Остался последний вариант создание руками списка с помощью команды net view и выборка компьютера и "заметки с описанием" из этого файла.
Скрытый текст

C:\WINDOWS\system32>net view
Имя сервера Заметки

-------------------------------------------------------------------------------
\\K10 УМКК;АБК;7 этаж;Сбыт
\\K100 УМКК;АБК;6 этаж;УИТ

Примечание имена компьютеров простое K1, K2 .. K317
Основной батник запускаю в Windows Server 2012R2, а тестирую на Win10, поэтому получается тут работает , там не работает.

Последний раз редактировалось Arsenik77, 31-05-2019 в 08:21.


Отправлено: 07:53, 31-05-2019 | #16


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Arsenik77:
создание руками списка »
Сделайте выборку из AD.

Отправлено: 13:33, 31-05-2019 | #17


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата Arsenik77:
из всех вариантов толком не работает ни один »
Если бы Вы хоть показали, что именно не работает, то возможно, Вам подсказали бы, как поправить... а так, лимит телепатии исчерпан пока, восполнить - проблематично.

Цитата Arsenik77:
имена компьютеров простое K1, K2 .. K317 »
можно организовать цикл, генерирующий имена компьютеров:
Код: Выделить весь код
for /l %%i in (1,1,317) do echo K%%i
- и использовать эти имена вместо списка...

-------
scio me nihil scire. Ѫ


Отправлено: 14:13, 31-05-2019 | #18


Пользователь


Сообщения: 72
Благодарности: 1

Профиль | Отправить PM | Цитировать


На самом деле получил много полезных вариантов.
Просто выбрал самый простой и рабочий

Скрытый текст

for /f %%i in ("%pc%;") do (
findstr /c:%%i COMP.txt >tc.log
)
for /f "usebackq tokens=* delims=" %%a in ("tc.log") do (set var=%%~a)

где COMP.txt такого вида
Скрытый текст

\\K147;АБК;7 этаж;Лаборатория
\\K148;АБК;7 этаж;Сбыт
\\K150;АБК;6 этаж;ОТиЗ
и формируется командой net view и ручным редактированием




Отправлено: 15:21, 31-05-2019 | #19


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата Arsenik77:
и рабочий »
ой ли ...
Цитата Arsenik77:
for /f %%i in ("%pc%;") do »
при наличии пробела в %pc% опять же получите бяку

мне вообще интересно: Каким-то чуднЫм образом получаем COMP.txt, первой строкой кода не менее чуднЫм образом практически просто переписываем COMP.txt в tc.log, а вот зачем еще в переменную брать последнюю строку этого файла вообще неясно. Или это все нагромождение идет для одной строки относительно одного запроса, тогда где автоматизация, смысл тогда какой?
Arsenik77,
вам не это ли надо случайно?
COMP.txt

\\K147;АБК;7 этаж;Лаборатория
\\K148;АБК;7 этаж;Сбыт
\\K150;АБК;6 этаж;ОТиЗ

Код с запросом по имени компа, например: K148
Код: Выделить весь код
@echo off
echo Введите имя компа:& set /p comp=
<COMP.txt (for /f "tokens=2* delims=\;" %%a in ('find "%comp%"') do @echo %%a;%%b)
pause
в переменную или другой файл так:
Код: Выделить весь код
@echo off
echo Введите имя компа:& set /p comp=
:: В переменную
<COMP.txt (for /f "tokens=2* delims=\;" %%a in ('find "%comp%"') do set "var=%%a;%%b")
:: Запись в другой файл
<COMP.txt>file.txt (for /f "tokens=2* delims=\;" %%a in ('find "%comp%"') do @echo %%a;%%b)
pause

Последний раз редактировалось alpap, 31-05-2019 в 16:46.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:34, 31-05-2019 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Показать параметр 'описание'

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - показать устройства призраки yuv Программирование и базы данных 8 02-03-2014 18:15
Разное - Показать раздел ruv123 Microsoft Windows 2000/XP 9 21-12-2010 21:03
Любой язык - [решено] Показать MessageBox у клиента avolkov2009 Скриптовые языки администрирования Windows 10 16-05-2010 13:21
Proxy/NAT - Как показать, что я с Украины viter_alex Сетевые технологии 3 11-10-2008 02:30
C/C++ - [решено] Как показать окно процесса EvgeniyQQQ Программирование и базы данных 5 14-11-2007 16:03




 
Переход