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

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

jkadaba 24-01-2021 19:40 2947450

Количество экземпляров именованного канала
 
Некоторое приложение (portal.exe) при запуске создает именованный канал, имя которого имеет вид portal.PID.filetime, где PID идентификатор процесса, а filtetime время запуска, представленное целочисленным значением полей одноименной структуры. Так вот, помимо того, что мне нужно вытащить filetime в виде привычной даты, хотелось бы получить еще и количество экземпляров данного канала. Просто вывести список каналов можно так:
Код:

[IO.Directory]::GetFiles('\\.\pipe\')
Найти нужный можно через Select-String. Но в выводе команды нет упоминания о количестве экземпляров.
P.S. Использовать pipelist Руссиновича не хотелось бы.

Busla 24-01-2021 19:51 2947452

Цитата:

Цитата jkadaba
количество экземпляров данного канала »

все каналы существуют в единственном экземпляре

greg zakharov 24-01-2021 22:37 2947459

Цитата:

Цитата Busla
все каналы существуют в единственном экземпляре

Здесь, коли упомянут pipelist, скорее превратности перевода. Instances можно перевести и как экземпляры, и как инстанции, и как... - в общем, суть понятна. По факту же это - размер канала в байтах.

В десятке чтобы получить размер можно провернуть такой трюк:
Код:

($$ = (cmd /c dir \\.\pipe\\ | sls '(\d+)\s+(portal.*)').Matches.Groups[1,2])[0], [DateTime]::FromFileTime(($$[1] -split '\.')[-1])

Foreigner 24-01-2021 22:43 2947460

Цитата:

Цитата jkadaba
вытащить filetime в виде привычной даты »

На примере pwsh:

Код:

$a = [IO.Directory]::GetFiles('\\.\pipe\') -match 'pwsh'

# $a = \\.\pipe\PSHost.132559056461144875.248.DefaultAppDomain.pwsh

$filetime = ($a -split '(?<=[^\\])\.(?=[^\\])')[1]

# $filetime = 132559056461144875

[datetime]::FromFileTime($filetime)

# 23 января 2021 г. 23:00:46


greg zakharov 24-01-2021 22:50 2947461

Цитата:

Цитата Foreigner
На примере pwsh...

А зачем пихать что-то в переменную?
Код:

[DateTime]::FromFileTime((([IO.Directory]::GetFiles('\\.\pipe\') -match 'pwsh') -split '\.')[2])

Foreigner 24-01-2021 22:53 2947462

Может лучше через Get-Process?

Код:

(Get-Process portal).StartTime

greg zakharov 24-01-2021 22:55 2947463

Конечно лучше. Проблема лишь в росте количества различных вызовов, а также количестве самих процессов. Хм... а может имелось в виду количество пайпов?


Время: 23:39.

Время: 23:39.
© OSzone.net 2001-