Стыд. Стыд и позор. Я не представляю — как?! Как могло случиться, что я ошибся в таком элементарном действии, как вставка кода в сообщение?! Как я мог на этом этапе
потерять функцию?! Ладно, шут с ним. Но почему я не проверил код после Вашего первого сообщения, а решил, что Вы пытались запустить две строки вместо кода из спойлера?! И с настойчивостью долдона твердил одно и то же, вместо того, чтобы просто взять и проверить сам код? Не знаю.
Коллега! Я был не прав. Приношу Вам свои искренние извинения, буде таковые могут быть приняты.
Вот тот же код вместе с потерянной функцией:
читать дальше »
Код:

Option Explicit
Const adVarChar = 200
Dim strComputer
Dim objSWbemLocator
Dim objSWbemServicesEx
Dim collSWbemObjectSet
Dim objSWbemObjectEx
strComputer = "."
Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
Set collSWbemObjectSet = objSWbemServicesEx.ExecQuery("SELECT * FROM Win32_Service")
With WScript.CreateObject("ADODB.Recordset")
With .Fields
.Append "Name", adVarChar, 2^15 - 1
.Append "DisplayName", adVarChar, 2^15 - 1
.Append "State", adVarChar, 2^15 - 1
End With
.Open
.Sort = "DisplayName ASC"
For Each objSWbemObjectEx In collSWbemObjectSet
.AddNew Array("Name", "DisplayName", "State"), Array(objSWbemObjectEx.Name, objSWbemObjectEx.DisplayName, objSWbemObjectEx.State)
Next
.MoveFirst
Do Until .EOF
With .Fields
WScript.Echo StrConvert(.Item("Name").Value & vbTab & .Item("State").Value & vbTab & .Item("DisplayName").Value, "windows-1251", "cp866")
WScript.Echo StrConvert(.Item("Name").Value & vbTab & .Item("State").Value & vbTab & .Item("DisplayName").Value, "cp866", "windows-1251")
End With
.MoveNext
Loop
.Close
End With
Set collSWbemObjectSet = Nothing
Set objSWbemServicesEx = Nothing
Set objSWbemLocator = Nothing
WScript.Quit 0
'=============================================================================
'=============================================================================
Function StrConvert(strText, strSourceCharset, strDestCharset)
Const adTypeText = 2
Const adModeReadWrite = 3
With WScript.CreateObject("ADODB.Stream")
.Type = adTypeText
.Mode = adModeReadWrite
.Open
.Charset = strSourceCharset
.WriteText strText
.Position = 0
.Charset = strDestCharset
strConvert = .ReadText
End With
End Function
'=============================================================================