Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Имя залогиненного пользователя на ПК

Ответить
Настройки темы
PowerShell - [решено] Имя залогиненного пользователя на ПК

Пользователь


Сообщения: 80
Благодарности: 1

Профиль | Отправить PM | Цитировать


Добрый день!
Требуется узнать имя пользователя, залогиненного на ПК (домен), пробовала узнать через запрос к WMI например так:
Get-WmiObject Win32_ComputerSystem –Computer $computer -Credential $creds ....
Имя получаю, но не со всех ПК, предполагаю, что wmi не везде корректно работает или другие причины.
Ни как не могу сообразить альтернативный способ как можно узнать имя пользователя который вошел на ПК, предположение есть, что можно через реестр. но как?
Еще было хорошо все реализовать через Powershell.

Отправлено: 15:56, 07-03-2016

 

Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Глянул в WMIExplorer, который писал пару лет назад...
Скрытый текст
Код: Выделить весь код
#requires -version 2.0
{
  Add-Type -AssemblyName System.Windows.Forms
  
  if (!(New-Object Security.Principal.WindowsPrincipal (
    [Security.Principal.WindowsIdentity]::GetCurrent()
  )).IsInRole(
    [Security.Principal.WindowsBuiltInRole]::Administrator
  )) {
    [void][Windows.Forms.MessageBox]::Show(
        "WMIExplorer requires administrator privileges.",
        "WMIExplorer",
        [Windows.Forms.MessageBoxButtons]::OK,
        [Windows.Forms.MessageBoxIcon]::Information
    )
    return
  }
  
  [Windows.Forms.Application]::EnableVisualStyles()
  #region resources
  $ico = [Drawing.Icon]::ExtractAssociatedIcon(($PSHome + '\powershell.exe'))
  $f_1 = New-Object Drawing.Font("Tahoma", 9, [Drawing.FontStyle]::Bold)
  $f_2 = New-Object Drawing.Font("Tahoma", 8, [Drawing.FontStyle]::Bold)
  $i_1 = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAA" + `
         "AgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAEJJREFUOE9j/P//PwNJAKiBJMCArBpuE0QQjQsVhGuASGPahiaOUDG0NWANDVyhN1w8jRbZ8PgmkD" + `
         "SITIJYEg9+nQBeQy7v217GjAAAAABJRU5ErkJggg=="
  $i_2 = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAA" + `
         "AgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAwBQTFRF////9u7YW5vY4+74rbfE4aoU/ez99u/a0mXT9+/bb4CXADOZgWIMjC2NnngO/fD9mc3//e" + `
         "39+q3623DcyJgX89Zs+pj79eGF8ctQ8stQ78A04t73fLTpNWO17fT67bUc2GzZ9Ndr7rUd8MA17bUdsjyz9eCF9OGG5/D56vL68ctP7rYc9NZrQ" + `
         "3PJ9eGG774v8MA06fH5////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
         "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
         "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
         "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
         "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
         "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
         "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
         "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABrgGBQAAAJJJREFUKFNVjtcSgzAMBM/ggh1KGqGl917+/" + `
         "+ciGwJEL5pdnWYOoNGC2dWOFtm0b7Q43XNnEpfR4pgW5T5kSAJrmHimxW5FLINxIAGRbfL3tubZJBqBxdfyFRpj1jUDKr7FChzyULM1CiQgo6pp" + `
         "QmwFKu/SlSPhe8PHuTXc8twb+D/DzT+TXy56d5f7dPnmz/1/Ab2bB7l4ZZdYAAAAAElFTkSuQmCC"
  $i_3 = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAA" + `
         "AgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAwBQTFRF475Q7NKHZ3qVrpuB69GF5cNZ69Fz58hk8uGPeoym6tFy4sRx5cVc7dZ89OaZ4r1P58x8hm" + `
         "xH9+2m3Lxk7th/8d6J6s9v4LdE9OeZ8uORy8Cz9eug69J19uufnYhu6ctpb4Gc9+3P5cNa4tGp6cpn79yFtKSKpZF39OaYzKIxeouneFw6boGb7" + `
         "9uDgWZD8eCOn4he2b9plX5kmYRqel48d1o569CEfWJA7NR5vKyS37hJoo5079uFnolw////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
         "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
         "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
         "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
         "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
         "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
         "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + `
         "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK4belAAAAHtJREFUKFNjsEMDDEQLKDIwsghwC2sqw7QwC" + `
         "ElLSIqKyAjCBWT5tBSY2OT1YAKMGhyqvFwqPOYMdjDdhpw6TEoMJgx2cN1i7Kz84qYMdoxQ3dZqzOpy2lJAAahuW4gTGezM9G3Auo1hAla6FmDd" + `
         "RjABZQNLiG6YACHfAgASrCzzMRTKjwAAAABJRU5ErkJggg=="
  #endregion resources
  
  #region functions
  function Get-Resource([String]$s) {
    [Drawing.Image]::FromStream(
      (New-Object IO.MemoryStream(($$ = [Convert]::FromBase64String($s)), 0, $$.Length))
    )
  }
  
  function Get-NameSpaces([String]$root) {
    (New-Object Management.ManagementClass(
        $root, [Management.ManagementPath]'__NAMESPACE', $null
      )
    ).PSBase.GetInstances() | % {
      return (New-Object Windows.Forms.TreeNode).Nodes.Add($_.Name)
    }
  }
  
  function Get-SubNameSpace([Windows.Forms.TreeNode[]]$nodes) {
    foreach ($nod in $nodes) {
      $nod.Nodes.Clear()
      Get-NameSpaces ('root\' + $nod.FullPath) | % { $nod.Nodes.Add($_) }
    }
  }
  
  function Get-ClassesNumber {
    $sbLbl_1.Text = "Classes: " + $lvList1.Items.Count.ToString()
  }
  
  function Reset-AllMessages {
    $lvList2.Items.Clear()
    $rtbDesc, $sbLbl_2, $sbLbl_3 | % { $_.Text = [String]::Empty }
  }
  
  function Get-Description([Object]$o, [Boolean]$b) {
    try {
      $$ = switch ($b) { $true { [Management.MethodData]$o } $false { [Management.PropertyData]$o } }
      $$ = $$.PSBase.Qualifiers['Description'].Value
      $$ = $(if (![String]::IsNullOrEmpty($$)) { $$ } else { "n\a" }) + "`n`n"
    }
    catch {}
    
    return $$
  }
  #endregion functions
  
  $frmMain = New-Object Windows.Forms.Form
  $mnuMain = New-Object Windows.Forms.MenuStrip
  $mnuFile = New-Object Windows.Forms.ToolStripMenuItem
  $mnuExit = New-Object Windows.Forms.ToolStripMenuItem
  $mnuView = New-Object Windows.Forms.ToolStripMenuItem
  $mnuSStr = New-Object Windows.Forms.ToolStripMenuItem
  $mnuHelp = New-Object Windows.Forms.ToolStripMenuItem
  $mnuInfo = New-Object Windows.Forms.ToolStripMenuItem
  $scSplt1 = New-Object Windows.Forms.SplitContainer
  $scSplt2 = New-Object Windows.Forms.SplitContainer
  $tvRoots = New-Object Windows.Forms.TreeView
  $lvList1 = New-Object Windows.Forms.ListView
  $lvList2 = New-Object Windows.Forms.ListView
  $chCol_1 = New-Object Windows.Forms.ColumnHeader
  $chCol_2 = New-Object Windows.Forms.ColumnHeader
  $chCol_3 = New-Object Windows.Forms.ColumnHeader
  $chCol_4 = New-Object Windows.Forms.ColumnHeader
  $chCol_5 = New-Object Windows.Forms.ColumnHeader
  $chCol_6 = New-Object Windows.Forms.ColumnHeader
  $chCol_7 = New-Object Windows.Forms.ColumnHeader
  $tabCtrl = New-Object Windows.Forms.TabControl
  $tpPage1 = New-Object Windows.Forms.TabPage
  $tpPage2 = New-Object Windows.Forms.TabPage
  $rtbDesc = New-Object Windows.Forms.RichTextBox
  $imgList = New-Object Windows.Forms.ImageList
  $sbStrip = New-Object Windows.Forms.StatusStrip
  $sbLbl_1 = New-Object Windows.Forms.ToolStripStatusLabel
  $sbLbl_2 = New-Object Windows.Forms.ToolStripStatusLabel
  $sbLbl_3 = New-Object Windows.Forms.ToolStripStatusLabel
  #
  #common
  #
  $mnuMain.Items.AddRange(@($mnuFile, $mnuView, $mnuHelp))
  $scSplt1, $scSplt2, $tvRoots, $lvList1, $lvList2, $tabCtrl, $rtbDesc | % {
    $_.Dock = [Windows.Forms.DockStyle]::Fill
  }
  $scSplt1, $scSplt2 | % { $_.SplitterWidth = 1 }
  $lvList1, $lvList2 | % {
    $_.FullRowSelect = $true
    $_.MultiSelect = $false
    $_.ShowItemToolTips = $true
    $_.Sorting = [Windows.Forms.SortOrder]::Ascending
  }
  $chCol_1.Text = "Name"
  $chCol_2.Text = "Desciption"
  $chCol_3.Text = "Amended"
  $chCol_4.Text = "Local"
  $chCol_5.Text = "Overridable"
  $chCol_6.Text = "PropagatesToInstance"
  $chCol_7.Text = "PropagatesToSubclass"
  $chCol_1, $chCol_2, $chCol_6, $chCol_7 | % { $_.Width = 130 }
  $chCol_3, $chCol_4, $chCol_5 | % { $_.Width = 70 }
  $tabCtrl.Controls.AddRange(@($tpPage1, $tpPage2))
  $tpPage1, $tpPage2 | % { $_.UseVisualStyleBackColor = $true }
  $rtbDesc.ReadOnly = $true
  $i_1, $i_2, $i_3 | % { $imgList.Images.Add((Get-Resource $_)) }
  $sbStrip.Items.AddRange(@($sbLbl_1, $sbLbl_2, $sbLbl_3))
  $sbLbl_1, $sbLbl_2, $sbLbl_3 | % { $_.AutoSize = $true }
  $sbLbl_2.ForeColor = [Drawing.Color]::DarkMagenta
  $sbLbl_3.ForeColor = [Drawing.Color]::DarkGreen
  #
  #mnuFile
  #
  $mnuFile.DropDownItems.AddRange(@($mnuExit))
  $mnuFile.Text = "&File"
  #
  #mnuExit
  #
  $mnuExit.ShortcutKeys = [Windows.Forms.Keys]::Control, [Windows.Forms.Keys]::X
  $mnuExit.Text = "E&xit"
  $mnuExit.Add_Click({$frmMain.Close()})
  #
  #mnuView
  #
  $mnuView.DropDownItems.AddRange(@($mnuSStr))
  $mnuView.Text = "&View"
  #
  #mnuSStr
  #
  $mnuSStr.Checked = $true
  $mnuSStr.Text = "&Status Bar"
  $mnuSStr.Add_Click({
    $toggle =! $mnuSStr.Checked
    $mnuSStr.Checked = $toggle
    $sbStrip.Visible = $toggle
  })
  #
  #mnuHelp
  #
  $mnuHelp.DropDownItems.AddRange(@($mnuInfo))
  $mnuHelp.Text = "&Help"
  #
  #mnuInfo
  #
  $mnuInfo.Text = "About..."
  $mnuInfo.Add_Click({
    $frmInfo = New-Object Windows.Forms.Form
    $pbImage = New-Object Windows.Forms.PictureBox
    $lblName = New-Object Windows.Forms.Label
    $lblCopy = New-Object Windows.Forms.Label
    $btnExit = New-Object Windows.Forms.Button
    #
    #pbImage
    #
    $pbImage.Image = $ico.ToBitmap()
    $pbImage.Location = New-Object Drawing.Point(16, 16)
    $pbImage.Size = New-Object Drawing.Size(32, 32)
    $pbImage.SizeMode = [Windows.Forms.PictureBoxSizeMode]::StretchImage
    #
    #lblName
    #
    $lblName.Font = $f_2
    $lblName.Location = New-Object Drawing.Point(53, 19)
    $lblName.Size = New-Object Drawing.Size(360, 18)
    $lblName.Text = "WMIExplorer v1.01"
    #
    #lblCopy
    #
    $lblCopy.Location = New-Object Drawing.Point(67, 37)
    $lblCopy.Size = New-Object Drawing.Size(360, 23)
    $lblCopy.Text = "Copyright (C) 2011-2014 greg zakharov"
    #
    #btnExit
    #
    $btnExit.Location = New-Object Drawing.Point(135, 67)
    $btnExit.Text = "OK"
    #
    #frmInfo
    #
    $frmInfo.AcceptButton = $btnExit
    $frmInfo.CancelButton = $btnExit
    $frmInfo.ClientSize = New-Object Drawing.Size(350, 110)
    $frmInfo.ControlBox = $false
    $frmInfo.Controls.AddRange(@($pbImage, $lblName, $lblCopy, $btnExit))
    $frmInfo.FormBorderStyle = [Windows.Forms.FormBorderStyle]::FixedSingle
    $frmInfo.ShowInTaskbar = $false
    $frmInfo.StartPosition = [Windows.Forms.FormStartPosition]::CenterParent
    $frmInfo.Text = "About..."
    
    [void]$frmInfo.ShowDialog()
  })
  #
  #scSplt1
  #
  $scSplt1.Orientation = [Windows.Forms.Orientation]::Horizontal
  $scSplt1.Panel1.Controls.Add($scSplt2)
  $scSplt1.Panel2.Controls.Add($tabCtrl)
  $scSplt1.SplitterDistance = 60
  #
  #scSplt2
  #
  $scSplt2.Panel1.Controls.Add($tvRoots)
  $scSplt2.Panel2.Controls.Add($lvList1)
  $scSplt2.Panel1MinSize = 17
  $scSplt2.SplitterDistance = 30
  #
  #tvRoots
  #
  $tvRoots.ImageList = $imgList
  $tvRoots.Select()
  $tvRoots.Sorted = $true
  $tvRoots.Add_AfterExpand({Get-SubNameSpace $_.Node.Nodes})
  $tvRoots.Add_AfterSelect({
    $lvList1.Items.Clear()
    Reset-AllMessages
    
    if ($tvRoots.SelectedNode) {
      $cur = 'root\' + $tvRoots.SelectedNode.FullPath
      
      (New-Object Management.ManagementClass($cur, $obj)
      ).PSBase.GetSubclasses($enm) | % {
        $lvList1.Items.Add($_.Name, 1)
      }
      
      $frmMain.Text = $cur + ' - WMIExplorer'
      Get-ClassesNumber
    } #if
  })
  #
  #lvList1
  #
  $lvList1.LargeImageList = $imgList
  $lvList1.TileSize = New-Object Drawing.Size(270, 19)
  $lvList1.View = [Windows.Forms.View]::Tile
  $lvList1.Add_Click({
    Reset-AllMessages
    
    for ($i = 0; $i -lt $lvList1.Items.Count; $i++) {
      if ($lvList1.Items[$i].Selected) {
        $path = $cur + ':' + $lvList1.Items[$i].Text
        $frmMain.Text = $path + ' - WMIExplorer'
        #caption
        $rtbDesc.SelectionFont = $f_1
        $rtbDesc.AppendText("$($lvList1.Items[$i].Text)`n$(('-' * 100))`n")
        #getting class data
        $wmi = (New-Object Management.ManagementClass($path, $obj)).PSBase
        #extract class description and fill qualifiers table
        $wmi.Qualifiers | % {
          $itm = $lvList2.Items.Add($_.Name, 2)
          if ($_.Name -match 'Description') {
            $rtbDesc.AppendText("$($_.Value)`n`n")
            $itm.SubItems.Add("See specification")
          }
          else { $itm.SubItems.Add($_.Value.ToString()) }
          $itm.SubItems.Add($_.IsAmended.ToString())
          $itm.SubItems.Add($_.IsLocal.ToString())
          $itm.SubItems.Add($_.IsOverridable.ToString())
          $itm.SubItems.Add($_.PropagatesToInstance.ToString())
          $itm.SubItems.Add($_.PropagatesToSubclass.ToString())
        }
        #extract method(s) data
        $wmi.Methods | % {
          $rtbDesc.SelectionColor = [Drawing.Color]::DarkMagenta
          $rtbDesc.SelectionFont = $f_2
          $rtbDesc.AppendText("$($_.Name)`n")
          $rtbDesc.AppendText((Get-Description $_ $true))
        }
        #extract property(ies) data
        $wmi.Properties | % {
          $rtbDesc.SelectionColor = [Drawing.Color]::DarkGreen
          $rtbDesc.SelectionFont = $f_2
          $rtbDesc.AppendText("$($_.Name + '(Type: ' + $_.Type + ', Local: ' + $_.IsLocal + ', Array: ' + $_.IsArray + ')')`n")
          $rtbDesc.AppendText((Get-Description $_ $false))
        }
        #derivation
        if ($wmi.Derivation.Count -ne 0) {
          $rtbDesc.SelectionColor = [Drawing.Color]::DarkBlue
          $rtbDesc.SelectionFont = $f_2
          $rtbDesc.AppendText("Derivation`n")
          $wmi.Derivation | % { $rtbDesc.AppendText("$($_)`n") }
        }
        #count methods and properties
        $sbLbl_2.Text = "Methods: " + $wmi.Methods.Count.ToString()
        $sbLbl_3.Text = "Properties: " + $wmi.Properties.Count.ToString()
      } #if
    } #for
  })
  #
  #lvList2
  #
  $lvList2.Columns.AddRange(@($chCol_1, $chCol_2, $chCol_3, $chCol_4, $chCol_5, $chCol_6, $chCol_7))
  $lvList2.SmallImageList = $imgList
  $lvList2.View = [Windows.Forms.View]::Details
  #
  #tpPage1
  #
  $tpPage1.Controls.AddRange(@($rtbDesc))
  $tpPage1.Text = "Specification"
  #
  #tpPage2
  #
  $tpPage2.Controls.AddRange(@($lvList2))
  $tpPage2.Text = "Qualifiers"
  #
  #frmMain
  #
  $frmMain.ClientSize = New-Object Drawing.Size(800, 557)
  $frmMain.Controls.AddRange(@($scSplt1, $sbStrip, $mnuMain))
  $frmMain.Icon = $ico
  $frmMain.MainMenuStrip = $mnuMain
  $frmMain.StartPosition = [Windows.Forms.FormStartPosition]::CenterScreen
  $frmMain.Text = "WMIExplorer"
  $frmMain.Add_Load({
    Get-NameSpaces 'root' | % { $tvRoots.Nodes.Add($_) }
    Get-SubNameSpace $tvRoots.Nodes
    
    $obj = New-Object Management.ObjectGetOptions
    $enm = New-Object Management.EnumerationOptions
    
    $obj.UseAmendedQualifiers = $enm.EnumerateDeep = $true
    $sbLbl_1.Text = "Ready"
  })
  
  [void]$frmMain.ShowDialog()
}.Invoke()

..скорее всего цель задачи сводится к использованию Win32_LogonSession или Win32_LoggedOnUser.

Отправлено: 19:07, 07-03-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6619
Благодарности: 1525

Профиль | Отправить PM | Цитировать


https://www.google.ru/search?q=how+t...+who+logged+on

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 19:52, 07-03-2016 | #3


Старожил


Сообщения: 498
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


Про пош не скажу, но вот удобный метод http://sysrtfm.ru/windows-sever-2008...jn-vbs-skript/.
Потом уже можно вытащить пошем (get-aduser/get-adcomputer) кто где сидит, чтобы не искать в dsa.msc.

Отправлено: 14:06, 09-03-2016 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата nokogerra:
но вот удобный метод »
Неудобный. Совсем. И не гарантирует корректность результатов.

Отправлено: 16:05, 09-03-2016 | #5


Старожил


Сообщения: 498
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


И чем он неудобный? И почему же не гарантирует корректность результатов? У меня все корректно показывает и на удобство не жалуюсь - можно увидеть общую картину в dsa или быстро получить залогиненного пользователя на определенной машине или наоборот - машину, на которую выполнил вход пользователь просто запросив значение атрибута description (или какой там есть желание использовать).

Отправлено: 17:05, 09-03-2016 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата nokogerra:
И чем он неудобный? И почему же не гарантирует корректность результатов? »
1. По какой-либо причине при входе не произошла запись в Description — до очередного входа пользователя в систему он будет «невидим».
2. По какой-либо причине при выходе не произошла запись в Description — до очередного выхода пользователя из системы он останется «в сети», вплоть до вечности.

nokogerra, главная беда этого подхода, что подобные случаи в нём совершенно не учитываются, нет никаких дополнительных периодических «проходов»-опросов, как, например, это сделано хотя бы в том же механизме «Сетевого окружения» (Browsing), где рано или поздно, но картина начинает соответствовать реальности.

Насчёт возможных претензий «такого не может быть»/«это бывает раз в сто лет» — не принимается: не просто «бывает», но и бывает стабильно и регулярно.

Отправлено: 17:50, 09-03-2016 | #7


Старожил


Сообщения: 498
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


Хм, такое, конечно, может случиться, но когда групповые политики не отрабатывают "стабильно и регулярно", то не ладно что-то в датском королевстве.

Отправлено: 20:22, 09-03-2016 | #8


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата nokogerra:
…то не ладно что-то в датском королевстве. »
nokogerra, не могу с Вами спорить. Но я вовсе не про групповые политики. В стране эльфов никогда нет перебоев с электричеством, связь никогда не пропадает, и машины никогда не зависают.

Вы не поняли суть моих претензий к данному подходу: подобные ошибки в его рамках не обрабатываются в принципе. Никак. Совсем. И это очень плохо.

Отправлено: 21:45, 09-03-2016 | #9


Ветеран


Сообщения: 1496
Благодарности: 384

Профиль | Отправить PM | Цитировать


Если вдруг это как-то поможет, я для себя делаю так:

1. Создана структура вида \\FileServer\Data\Computer_Reports\OS_Versions, Everyone: Modify
2. Скриптом на файл-сервере создаётся файл \\FileServer\Data\Computer_Reports\Empty.txt
Скрипт зашедулен на запуск от лица SYSTEM раз в пять минут. Это нужно для свежих атрибутов файла (время создания)

Цитата:
cmd.exe /c echo 2> D:\Data\Computer_Reports\Empty.txt
3. GPO Compliance Reports подключена к корню домена
Цитата:
User Configuration > Preferences > Windows Settings > Files > New > File > Replace
\\FileServer\Data\Computer_Reports\Empty.txt
\\FileServer\Data\Computer_Reports\OS_Versions\%OsVersion%_%ComputerName%_%LogonUser%.txt
Мы знаем, что GPO на рабочих станциях отрабатывает при логоне и ещё примерно каждые полтора часа.
Папка OS_Versions наполняется пустыми файлами вида "Windows 8.1_COMPUTERNAME_USERNAME.txt" с более-менее корректными метками времени.
Ссылка на папку ставится сотрудникам IT на рабочий стол. Поиск в ней осуществляется прямо в Windows Explorer. Знаешь имя пользователя - получи компьютер, и наоборот.

Чтобы эти файлы не копились бесконечно, на файл-сервере зашедулен ещё один скрипт:
(Можете их объединить, для меня они разные, так как иногда играют разные роли.)

Цитата:
$RetentionDepth = 60
$DataFolder = "D:\Data\Computer_Reports"
$EventHorizon = (Get-Date).AddDays(-$RetentionDepth)
Get-ChildItem $DataFolder -recurse | ?{$_.CreationTime -lt $EventHorizon} | del

-------
Microsoft Certified Trainer; Cisco Certified Systems Instructor; Certified EC-Council Instructor; Certified Ethical Hacker v8.


Последний раз редактировалось WindowsNT, 11-03-2016 в 11:39.


Отправлено: 11:31, 11-03-2016 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Имя залогиненного пользователя на ПК

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Вставить в пустое поле в программу имя пользователя ПК andry692 AutoIt 12 28-05-2014 12:17
2008 R2 - Имя пользователя и полное имя пользователя при организации общего доступа к файлам Kniaz Windows Server 2008/2008 R2 0 12-06-2013 13:19
Любой язык - удалённое выполнение скрипта, с правами залогиненного пользователя vich68rus Скриптовые языки администрирования Windows 4 06-09-2011 18:11
CMD/BAT - [решено] Как узнать название группы залогиненного пользователя? avolkov2009 Скриптовые языки администрирования Windows 3 06-06-2011 11:59
Изменение "Мой компьютер" на "Имя текущего пользователя на имя компьютера" shcval Microsoft Windows 2000/XP 1 15-12-2006 21:01




 
Переход