Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   не работает фильтр в qwinsta (http://forum.oszone.net/showthread.php?t=310742)

butunin@vk 25-01-2016 10:30 2598813

не работает фильтр в qwinsta
 
не могу понять в чем дело. не срабатывает select-object
Код:

PS C:\Users\b> qwinsta /server:isonoe
 СЕАНС            ПОЛЬЗОВАТЕЛЬ            ID  СТАТУС  ТИП        УСТР-ВО
 services                                    0  Диск
 console                                    1  Подключено
 rdp-tcp#4        lisv                  4  Активно
 rdp-tcp#7        prana              5  Активно
 rdp-tcp#6        nev                6  Активно
 rdp-tcp#9        smtv                7  Активно
 rdp-tcp#13        vaiasv              8  Активно
 rdp-tcp#11        burka                9  Активно
 rdp-tcp#14        efrata              10  Активно
 rdp-tcp#15        shoaev              12  Активно
 rdp-tcp#20        Miamn              13  Активно
 rdp-tcp#23        arhiev                14  Активно
 rdp-tcp#24        movaa            15  Активно
 rdp-tcp#25        polana            16  Активно
 rdp-tcp#26        stanv              17  Активно
 rdp-tcp#27        laev              20  Активно
 rdp-tcp#37        suvai                21  Активно
 31c5ce94259d4...                        65536  Прием
 rdp-tcp                                65537  Прием

Выполняю селект
Код:

PS C:\Users\buu> qwinsta /server:isonoe | Select-Object СЕАНС,ПОЛЬЗОВАТЕЛЬ,ID

СЕАНС                                  ПОЛЬЗОВАТЕЛЬ                            ID
-----                                  ------------                            --


Kazun 25-01-2016 10:39 2598820

Код:

qwinsta /server:isonoe | foreach {$_.trim() -replace "\s+",","} | ConvertFrom-Csv | Select-Object СЕАНС,ПОЛЬЗОВАТЕЛЬ,ID

butunin@vk 25-01-2016 10:41 2598821

Цитата:

Цитата Kazun
qwinsta /server:isonoe | foreach {$_.trim() -replace "\s+",","} | ConvertFrom-Csv | Select-Object СЕАНС,ПОЛЬЗОВАТЕЛЬ,ID »

Спасибо! Можете объяснить почему не сработал в 3 словах ?

Kazun 25-01-2016 10:43 2598824

Это текст, а не объект.

butunin@vk 25-01-2016 11:30 2598854

Цитата:

Цитата Kazun
Это текст, а не объект. »

Ага это понятно ... написал процедуру
Код:

function Get-TSSessions
{
        param (
                $ComputerName = $com3
        )
       
        qwinsta.exe /server:$ComputerName |
        ForEach-Object {
                $_.Trim() -replace "\s+", ","
        } |
        ConvertFrom-Csv
}

Ps Не удается выполнить команду из-за следующей ошибки: Не удается найти указанный файл.
не может найти фаил qwinsta.exe задал явные параметры start-process -filepath c:\windows\system32\qwinsta.exe такая же ошибка ...

Kazun 25-01-2016 11:37 2598859

qwinsta - из x86 процесса должна запускаться по пути: C:\Windows\sysnative\qwinsta.exe

butunin@vk 25-01-2016 12:03 2598872

Цитата:

Цитата Kazun
qwinsta - из x86 процесса должна запускаться по пути: C:\Windows\sysnative\qwinsta.exe »

Kazun, помогите еще раз с gred не пойму в чем проблема , в логике не вижу проблемы.

Код:

function Get-TSSessions
{
        param (
                $ComputerName = "locahost"
        )
       
        Start-Process -FilePath "C:\Windows\sysnative\qwinsta.exe" /server:$ComputerName |
        ForEach-Object {
                $_.Trim() -replace "\s+", ","
        } |
        ConvertFrom-Csv | Select-Object СЕАНС, ПОЛЬЗОВАТЕЛЬ, ID
}

function get-prod2
{
       
        $array3 = New-Object System.Collections.ArrayList
        $Script:UseFilter = $false
        $Script:Getp = @(Get-TSSessions -ComputerName Erinome)
        if ($filter)
        {
                $Script:fu = @($Getp | Where { $_.ПОЛЬЗОВАТЕЛЬ -match $filter })
                $array3.AddRange($fu)
                $Script:UseFilter = $true
        }
        else
        {
                $array3.AddRange($Getp)
        }
        $datagrid3.DataSource = $array3
        $updated = Get-Date
        $com = "5"
        $statusBar2.text = "Последние обновление было {0} следующий через {1} минут" -f $updated, $com
       
}

Не отдает в Gred
Пишу в Powershell Studio Sapien

Kazun 25-01-2016 12:33 2598881

Start-Process -FilePath "C:\Windows\sysnative\qwinsta.exe" /server:$ComputerName заменить на :

Код:

& "C:\Windows\sysnative\qwinsta.exe" /server:$ComputerName

butunin@vk 25-01-2016 13:06 2598889

Цитата:

Цитата Kazun
Start-Process -FilePath "C:\Windows\sysnative\qwinsta.exe" /server:$ComputerName заменить на : »

о гуд! Спасибо, ну и побочный вопрос , могу ли как то я добавить столбец свой?
например:
Код:

PS C:\Users\buu> qwinsta /server:isonoe | foreach {$_.trim() -replace "\s+",","} | ConvertFrom-Csv | Select-Objec
t ПОЛЬЗОВАТЕЛЬ,ID

ПОЛЬЗОВАТЕЛЬ                                                ID
------------                                                --
0                                                          Диск
1                                                          Подключено
lisinaov                                                    4
prokhorovana                                                5
negadovpv                                                  6
smv                                                  7
vasyaninasv                                                8
bunka                                                  9
efr                                                  10
sheaei                                                11
belousovaev                                                12

И сюда добавить новый столбец (которого нет qwinsta) это имя сервера которое берется из /server:isonoe , то есть формально нам надо чтобы получилось следующие.

Код:

PS C:\Users\buu> qwinsta /server:isonoe | foreach {$_.trim() -replace "\s+",","} | ConvertFrom-Csv | Select-Objec
t ПОЛЬЗОВАТЕЛЬ,ID

ПОЛЬЗОВАТЕЛЬ                                                ID                    server
------------                                                --                          --
0                                                          Диск                          isonoe
1                                                          Подключено                isonoe
lisinaov                                                    4                              isonoe
prokhorovana                                                5                          isonoe
negadovpv                                                  6                          isonoe
smv                                                  7                                    isonoe
vasyaninasv                                                8                      isonoe
bunka                                                  9                              isonoe
efr                                                  10                                    isonoe
sheaei                                                11                              isonoe
belousovaev                                                12                      isonoe


Kazun 25-01-2016 13:09 2598895

Код:

Select-Object ПОЛЬЗОВАТЕЛЬ,ID,@{n="Server";e={$Server}}

butunin@vk 25-01-2016 13:18 2598900

Цитата:

Цитата Kazun
Select-Object ПОЛЬЗОВАТЕЛЬ,ID,@{n="Server";e={$Server}} »

Так тут вроде все понятно, значение не отдает ...
Код:


PS C:\Users\bu> qwinsta /Server:isonoe | foreach {$_.trim() -replace "\s+",","} | ConvertFrom-Csv | Select-Objec
t ПОЛЬЗОВАТЕЛЬ,ID,@{n="Server";e={$Server}}

ПОЛЬЗОВАТЕЛЬ                            ID                                      Server
------------                            --                                      ------
0                                      Диск
1                                      Подключено
lisi                                4
provana                            5
ne                            6
sm                              7
vasasv                            8


Kazun 25-01-2016 13:19 2598901

$Server - определить переменную в коде.

butunin@vk 25-01-2016 13:20 2598902

Цитата:

Цитата Kazun
$Server - определить переменную в коде. »

Ага, тут я уже понял... а он не может ее брать с имени сервера из qwinsta /Server:isonoe

Kazun 25-01-2016 13:22 2598903

Сделать глобальную перменную $Server и везде ее подставлять.

qwinsta /Server:$Server

butunin@vk 25-01-2016 14:04 2598920

Цитата:

Цитата Kazun
Сделать глобальную перменную $Server и везде ее подставлять. »

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

Суть следующая. Есть ферма серверов на которые подключаются пользователи, я хотел собрать все подключение в один массив и подключаться в shadow сессии либо отключаться их через формку datagrid
через qwinsta я получаю ID логин и сервер который вы помогли мне запихнуть в массив, но вот фильтрация тут не работает , и понятно КАК МНЕ КАЖЕТСЯ почему. Возможно ли это реализовать через БД? То есть создать BD куда запихивать данные которые отдает qwinsta и через PS уже вытаскивать их?

Код:

function get-prod2
{
       
        $statusBar2.Text = "Getting data..."
        $array3 = New-Object System.Collections.ArrayList
        $Script:UseFilter = $false
        $Script:Getp = @($g1)
        if ($filter)
        {
                $Script:fu = @($Getp | Where { $_.ID -match $filter })
                $array3.AddRange($fu)
                $Script:UseFilter = $true
        }
        else
        {
                $array3.AddRange($Getp)
        }
        $datagrid3.DataSource = $array3
        $updated = Get-Date
        $com = "5"
        $statusBar2.text = "Последние обновление было {0} следующий через {1} минут" -f $updated, $com
       
}

$RichTextbox1.Add_TextChanged({
        Get-Prod2 $RichTextbox1.Text
})


Kazun 25-01-2016 14:42 2598929

Код:

function get-prod2($filter=$null)


Время: 12:46.

Время: 12:46.
© OSzone.net 2001-