Я пишу сценарий PowerShell, чтобы узнать идентификатор сеанса активного пользователя на удаленном компьютере, чтобы затем запустить программу, используя этот идентификатор сеанса. Вот что я до сих пор.Извлечь идентификатор сеанса из пользовательской команды psexec/PowerShell
$queryusers = $psexecdirectory + ' \\' + $remotepc + ' -u ' + $domain + '\' + $username + ' -p ' + $password + ' query user'
$results = iex $queryusers
выше работает отлично, с результатами примера ниже хранится на переменной $results
USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME
usr1 3 Disc 1:12 9/5/2013 11:59
AM
>usr2 rdp-tcp#1 4 Active . 9/5/2013 11:59
AM
я использовал ниже, чтобы получить идентификатор, но номер на имя сеанса «rdp- CTP # 0' меняется, когда другой пользователь регистрируется в, как на выходе выше, что делает его бесполезным:
$id = $results | Select-String "$rdp-tcp#0\s+(\w+)" |
Foreach {$_.Matches[0].Groups[1].Value}
Я не знаком с синтаксисом PowerShell, и не смогли найти сайт где объясняются параметры форматирования. Кто-нибудь может мне помочь? И если вы знаете веб-сайт, где я могу узнать больше об извлечении фрагментов из строк? Заранее спасибо.
Или используйте больше powershell (на самом деле WMI), и вам не нужны psexec или string fiddeling. http://gallery.technet.microsoft.com/scriptcenter/0e43993a-895a-4afe-a2b2-045a5146048a –