Я хотел бы иметь командный файл, который будет запрашивать список служб (DisplayName, State, StartMode), но выводить их в красиво отформатированный при просмотре его в текстовом файле.

Вот что мне нужно, чтобы выгрузить его в файл .csv, но я хочу, чтобы он был в текстовом файле, который будет иметь другую информацию и не сможет использовать Excel (обычно с помощью блокнота, чтобы открыть этот файл и сохранить его). сюда).

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colListOfServices = objWMIService.ExecQuery ("Select * from Win32_Service WHERE DisplayName LIKE 'CommVault%'")
wscript.echo chr(34) & "Service Name" & chr(34) & "," & chr(34) & "Status" & chr(34) & "," & chr(34) & "Start Mode" & chr(34)
For Each objService in colListOfServices
    wscript.echo chr(34) & objService.DisplayName & chr(34) & "," & chr(34) & objService.State & chr(34) & "," & chr(34) & objService.StartMode & chr(34)
Next

2 ответа2

0

Назовите это MyServiceViewer.hta.

<html>
<head>
<style>
BODY        {font-size :100%;font-family: Arial, Helvetica, sans-serif;color: black;
        background:URL(images/watermark.gif);background-color: white;
        margin-top:0; margin-left:0pt; margin-right:0pt ; text-align:Justify}
P       {margin-left:40pt;margin-right:10pt}
TABLE       {font-size: 90%; text-align:left; margin-left:40pt;margin-right:10pt;background-color:lavender;width:90%}
THEAD       {color: white;font-weight:bold;background-color:darkblue; margin-left:40pt;margin-right:10pt}
TD      {Vertical-Align:Top;padding:3px}
</style>
</head>
<body>
<OBJECT CLASSID="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83"
    ID=dsoMacro5 WIDTH=0 HEIGHT=0>
    <PARAM NAME="DataURL" VALUE="Services.txt">
    <PARAM NAME="UseHeader" Value="True">
    <PARAM NAME="FieldDelim" VALUE=",">
    <PARAM NAME="Sort"  Value="Service Name">
</OBJECT>
<h3>My Services Database</h3>
<h4>Select a button to filter list</h4>
<p>To search for a word in the Title field use <i>* word *</i>. To search for the first word in a field use <i>Word *</i> or the last word use <i>* word</i>. To search for a string within a word or word use <i>*partialword*</i>. Searches are case sensitive.</i></p>
<p><INPUT Name=tb1 TYPE=Text Value=""> <INPUT ID=cmdNavFirst TYPE=BUTTON VALUE="     Search     " onclick="dsoMacro5.object.filter='Service Name=' + tb1.value;dsoMacro5.reset()"></p>
<p><INPUT ID=cmdNavFirst TYPE=BUTTON VALUE="   Sort Status   " onclick="dsoMacro5.object.sort='Status';dsoMacro5.reset()"></p>
<hr class="body">
<TABLE ID=tblMacro2 DATASRC=#dsoMacro5 OnRowEnter=Alert(tblMacro2.row)>
<THEAD>
<TR>
<TD WIDTH="60%"><b>Service Name</b></TD>
<TD WIDTH="20%"><b>Status</b></TD>
<TD WIDTH="20%"><b>Start Mode</b></TD>
</TR>
</THEAD>
<TBODY>
<TR>
<TD WIDTH="20%"><SPAN DATAFLD="Service Name"></SPAN></TD>
<TD WIDTH="60%"><SPAN DATAFLD="Status"></SPAN></TD>
<TD WIDTH="20%"><SPAN DATAFLD="Start Mode"></SPAN></TD>
</TR>
</TBODY>
</TABLE>
</body>
</html>

И назовите этот файл services.txt

Service Name,Status,Start Mode
Workstation,Ok,Manual
Workstation,Ok,Manual
Workstation,Ok,Manual
Workstation,Ok,Manual
Server,Ok,Manual
Server,Ok,Manual
Server,Ok,Manual
Server,Ok,Manual
BFE,Ok,Auto
BFE,Ok,Auto
BFE,Ok,Auto

На ваш конкретный вопрос он не будет работать со шрифтами переменной ширины, vbs + notepad. Если вы поменяете шрифт с фиксированной шириной в блокноте ...

Для заполнения на 20 символов фиксированной ширины

A="Running"

MsgBox A & Space(20 - Len(A)) & "|end of marker so you can see spaces in msgbox"

Часто простое размещение вкладок между столбцами также будет работать на 95%, на 100%, если данные имеют одинаковую или почти одинаковую длину. Опять же, установив вкладки большего размера, чем стандартные, во вьюере (но не в блокноте), можно сделать это. Я обычно использую Word, но если у вас 32-битные окна, Edit может иметь настраиваемую ширину вкладки.

0

Это даст вам красиво отформатированную текстовую таблицу:

wmic /output:Services.txt service where "DisplayName like 'CommVault%'" get DisplayName,State,StartMode

Вы также можете использовать различные файлы XSL в Windows\System32\wbem и Windows\System32\wbem\en-US (или любой другой код языка, используемый вашей копией Windows) для форматирования вывода wmic различными способами.

Например, это даст вам красиво отформатированную таблицу HTML:

wmic /output:Services.htm service where "DisplayName like 'CommVault%'" get DisplayName,State,StartMode /format:"%windir%\System32\wbem\en-US\htable.xsl"

Если по какой-то причине вам необходимо использовать VBScript, вы можете просто изменить операторы wscript.echo для вывода в любом формате, который вы хотите, затем перенаправить в текстовый файл или, что еще лучше, заставить сам скрипт писать непосредственно в текстовый файл.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .