Я использую Powershell в Windows Server 2008 R2, и мне нужен постоянный пользователь, который получит владельца процесса с именем и фамилией от AD.Получить владельца процесса от AD
Вот сценарий написал с помощью Mathias R. Йессена
Import-Module ActiveDirectory
$ProcessWithOwners = Get-WmiObject Win32_Process -Filter 'Name LIKE "vr[0-9]%"' |Select *,@{Name="Owner";Expression={$_.GetOwner().User}}
foreach($Process in $ProcessWithOwners)
{
$Username = $Process.Owner
$ADUser = Get-ADUser -Filter "SamAccountName -eq '$Username'" -properties *
$a = new-object -comobject wscript.shell
$b = $a.popup(“Process name $($Process.Name) is run by user $($ADUser.DisplayName)“,0,“Warning”,1)
}
Но обычный пользователь не может получить доступ к владельцу процесса.
Есть ли способ решить эту проблему?
* Final Update *
Для выполнения этого сценария в качестве обычного пользователя, я сделал некоторые изменения:
Import-Module ActiveDirectory
Add-Type -Name win -MemberDefinition '[DllImport("user32.dll")] public static extern bool ShowWindow(int handle, int state);' -Namespace native
[native.win]::ShowWindow(([System.Diagnostics.Process]::GetCurrentProcess() | Get-Process).MainWindowHandle,0)
$ConsProcess = Get-WmiObject Win32_Process -Filter 'Name LIKE "vr[0-9]%"' | Select *,@{Name="Owner";Expression={$_.GetOwner().User}}
if ($ConsProcess -ne $null) {
foreach($Process in $ConsProcess)
{
$QueryProcess = query process $Process.ProcessName
$Id = ($QueryProcess[1] -replace ' +',' ').Trim().Split(' ')[2]
$QueryUser = query session $Id
$User = ($QueryUser[1] -replace ' +',' ').Trim().Split(' ')[1]
$ADUser = (Get-ADUser -Identity $User -Properties *).DisplayName
$a = new-object -comobject wscript.shell
$b = $a.popup(“Консультант запущен с именем $($Process.Name) пользователем $($ADUser)“,0,“Внимание”,1)
}
}
else
{
& 'D:\consultantplus\cons.exe' /adm /inet
}
Извините, я забыл об этом)) Проблема в том, что Out-String возвращает массив и последний Write-Host возвращает пустую строку ... – user3301252
'$ (Get-ADUser -Filter" SamAccountName -eq '$ user' "). DisplayName' –