Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 18.12.2018
Сообщений: 390
1

Возможно ли код Powershell переписать в vb.net?

24.12.2018, 17:09. Просмотров 1162. Ответов 3
Метки wmi (Все метки)

есть код на Powershell
PowerShell
1
2
3
4
5
6
Get-WmiObject WmiMonitorID -Namespace root\wmi  -ComputerName zamdir-325-1 |
     ForEach-Object{
          [System.Text.Encoding]::ASCII.GetString($_.SerialNumberId)
          [System.Text.Encoding]::ASCII.GetString($_.ManufacturerName)
          [System.Text.Encoding]::ASCII.GetString($_.UserFriendlyName)
     }
Код отображает информацию о мониторе (ах) удаленного пк в сети.
Возможно ли его отобразить на vb.net?
пытался искать по классу WmiMonitorID, не получилось ничего. заранее спасибо за помощь!

Добавлено через 32 минуты
получилось пока только сделать вот так:
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 Dim objWMIService, colItems As Object
        Dim strComputer As String, serialNum As String
        Dim MN As String
        Dim UFN As String
 
        strComputer = "zamdir-325-1"
        objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\wmi")
        colItems = objWMIService.ExecQuery("SELECT * FROM WMIMonitorID")
 
        For Each objItems In colItems
            serialNum = ""
 
            If objItems.SerialNumberID Is Nothing Then
                MsgBox("XXX")
            Else
                For Each arrValue As UInt16 In objItems.SerialNumberId
                    serialNum = serialNum & Chr(arrValue)
                Next
            End If
 
            MsgBox(serialNum)
 
            MN = ""
            If objItems.ManufacturerName Is Nothing Then
                MsgBox("XXX")
            Else
                For Each arrValue1 As UInt16 In objItems.ManufacturerName
                    MN = MN & Chr(arrValue1)
                Next
            End If
            MsgBox(MN)
 
 
            UFN = ""
            If objItems.UserFriendlyName Is Nothing Then
                MsgBox("XXX")
            Else
                For Each arrValue2 As UInt16 In objItems.UserFriendlyName
                    MN = MN & Chr(arrValue2)
                Next
            End If
            MsgBox(UFN)
        Next
на том компе, что я тестирую - 2 монитора.
как выдать информацию по первому монитору в одном сообщении и по второму монитору в другом?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2018, 17:09
Ответы с готовыми решениями:

Переписать код работы с NotifyIcon (WPF, C#) на VB.NET
Привет!!! помогите перевести программу на С# в VB.NET: using System; using...

Возможно ли переписать код с C# на PowerShell, не испортив функционал?
возможно ли переписать код из C# на powershell не испортив функционал? using System; using...

Переписать код работы с формами с VB.NET на C#
Помогать мне нужно через форма c# тут как поменять? Private Sub Form_Load() Dim i As Integer...

PowerShell в Linux: возможно ли?
Всем привет) Парни, вопрос на засыпку: недавно нашла инфу, о том что при большом желание можно...

3
Лень — мое второе и
2855 / 2127 / 621
Регистрация: 28.11.2014
Сообщений: 3,232
Записей в блоге: 2
25.12.2018, 10:59 2
Лучший ответ Сообщение было отмечено _Alf_ как решение

Решение

_Alf_, добавьте их, к примеру, в listview и замените однообразные переборы на функцию, например так
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
 
        ListView1.View = View.Details
        ListView1.FullRowSelect = True
        ListView1.Columns.Add("Serial", 100)
        ListView1.Columns.Add("Manufacturer", 100)
        ListView1.Columns.Add("UserFriendlyName", 150)
 
        Dim objWMIService, colItems As Object
        Dim strComputer As String
 
        strComputer = "work"
        objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\wmi")
        colItems = objWMIService.ExecQuery("SELECT * FROM WMIMonitorID")
 
        For Each objItems In colItems
            Dim lst As New ListViewItem
 
            lst.SubItems(0).Text = ReturnStr(objItems.SerialNumberId)
            lst.SubItems.Add(ReturnStr(objItems.ManufacturerName))
            lst.SubItems.Add(ReturnStr(objItems.UserFriendlyName))
 
            ListView1.Items.Add(lst)
        Next
 
    End Sub
    Function ReturnStr(ByVal obj As Object) As String
        Dim result As String = ""
        If obj Is Nothing Then
            Return ""
        Else
            For Each arrValue As UInt16 In obj
                result &= Chr(arrValue)
            Next
        End If
        Return result
    End Function
1
1 / 1 / 0
Регистрация: 18.12.2018
Сообщений: 390
25.12.2018, 11:52  [ТС] 3
Orlangur1991, а как переделать код, что бы инфа добавлялась в listbox?
Сначала по первому монитору, потом по второму, и. тд.
то есть вывод был бы так:
Monitor1_Serial: Serial 1 монитора
Monitor1_ManufacturerName: ManufacturerName 1 монитора
Monitor1_UserFriendlyName: UserFriendlyName 1 монитора

Monitor2_Serial: Serial 2 монитора
Monitor2_ManufacturerName: ManufacturerName 2 монитора
Monitor2_UserFriendlyName: UserFriendlyName 2 монитора

и т.д.

и еще вопрос. В ManufacturerName выводиться сокращенное название монитора.
Можно ли и как сделать какой-нибудь классификатор с присвоением так сказать сокращенного названия и полного и в скобочках к сокращенному названию выводить полное, например:

SAM = SAMSUNG
BNQ = BENQ
IVM = IIYAMA

Спасибо еще раз за помощь заранее
0
Лень — мое второе и
2855 / 2127 / 621
Регистрация: 28.11.2014
Сообщений: 3,232
Записей в блоге: 2
25.12.2018, 12:23 4
_Alf_, в listbox можно, только выглядит это некрасиво
vb.net
1
2
3
4
5
6
7
8
9
Dim i As Integer = 1
        For Each objItems In colItems
            With ListBox1.Items
                .Add("Monitor" & i & "_Serial:" & ReturnStr(objItems.SerialNumberId))
                .Add("Monitor" & i & "_ManufacturerName:" & ReturnStr(objItems.ManufacturerName))
                .Add("Monitor" & i & "_UserFriendlyName:" & ReturnStr(objItems.UserFriendlyName))
                i += 1
            End With
        Next
На счет сокращенных названий - переписывайте перед выводом
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2018, 12:23

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Возможно ли настроить порты в Cisco Switch, используя PowerShell?
Привет всем, так как я ещё новичок в PowerShell прошу сильно не пинать. Есть такой вопрос, возможно...

Перевести с Powershell на PascalABC.NET
Всем привет! Помогите, пожалуйста, перевести код с Powershell на PascalABC.NET. Сам код:...

Переписать метод с 4 .net в 3.5 .net или ниже
и так ребят мне нужно этот код переписать чтоб он работал в .net 3.5 как макс желательно 2.0 ...

Перевести код с VBScript на PowerShell
Сделал по учебе задание Windows Scripting Host: 'Проверка изменялась ли папка за последнюю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.