Per Skript eigene Prozesse finden, die elevated laufen
Moin Kollegen.
Zur Veranschaulichung der Frage hier ein Screenshot:
Ich würde gerne per Skript auslesen können, welche Prozesse unter meinem Usernamen laufen und gleichzeitig elevated (deutscher Taskmanager: "heraufgestuft") sind.
Ersteres bekomme ich ja noch mühelos hin, aber ob elevated oder nicht, gelingt mir nicht.
Zur Veranschaulichung der Frage hier ein Screenshot:
Ich würde gerne per Skript auslesen können, welche Prozesse unter meinem Usernamen laufen und gleichzeitig elevated (deutscher Taskmanager: "heraufgestuft") sind.
Ersteres bekomme ich ja noch mühelos hin, aber ob elevated oder nicht, gelingt mir nicht.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 556055
Url: https://administrator.de/contentid/556055
Ausgedruckt am: 22.11.2024 um 19:11 Uhr
14 Kommentare
Neuester Kommentar
Moin ...
Ich hab nur ein Skript welches alle Prozesse auflistet welche elevated laufen.
Aber das sollte ja mit wenig Arbeit anpassbar sein
Get-Process |
Add-Member -Name Elevated -MemberType ScriptProperty -Value {if ($this.Name -in @('Idle','System')) {$null} else {-not $this.Path -and -not $this.Handle} } -PassThru |
Format-Table Name,Elevated
Ich hab nur ein Skript welches alle Prozesse auflistet welche elevated laufen.
Aber das sollte ja mit wenig Arbeit anpassbar sein
Get-Process |
Add-Member -Name Elevated -MemberType ScriptProperty -Value {if ($this.Name -in @('Idle','System')) {$null} else {-not $this.Path -and -not $this.Handle} } -PassThru |
Format-Table Name,Elevated
Servus DWW,
mal schnell in PS runtergetippt, probier mal ...
(Listet elevated Prozesse von allen Usern der Maschine und excludiert den elevated Prozess unter dem das Skript selbst läuft)
Grüße Uwe
mal schnell in PS runtergetippt, probier mal ...
(Listet elevated Prozesse von allen Usern der Maschine und excludiert den elevated Prozess unter dem das Skript selbst läuft)
#Requires -RunAsAdministrator
function Get-ProcessElevation {
param([parameter(Mandatory=$true,ValueFromPipeline=$true)][System.Diagnostics.Process]$process)
begin {
if(!('WIn32.Tools' -as [type])){
Add-Type –MemberDefinition '
[DllImport("advapi32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool OpenProcessToken(IntPtr ProcessHandle, UInt32 DesiredAccess, out IntPtr TokenHandle);
[DllImport("advapi32.dll", SetLastError = true)]
public static extern bool GetTokenInformation(IntPtr TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, IntPtr TokenInformation, uint TokenInformationLength, out uint ReturnLength);
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool CloseHandle(IntPtr hObject);
public enum TOKEN_INFORMATION_CLASS
{
TokenUser = 1,
TokenGroups,
TokenPrivileges,
TokenOwner,
TokenPrimaryGroup,
TokenDefaultDacl,
TokenSource,
TokenType,
TokenImpersonationLevel,
TokenStatistics,
TokenRestrictedSids,
TokenSessionId,
TokenGroupsAndPrivileges,
TokenSessionReference,
TokenSandBoxInert,
TokenAuditPolicy,
TokenOrigin,
TokenElevationType,
TokenLinkedToken,
TokenElevation,
TokenHasRestrictions,
TokenAccessInformation,
TokenVirtualizationAllowed,
TokenVirtualizationEnabled,
TokenIntegrityLevel,
TokenUIAccess,
TokenMandatoryPolicy,
TokenLogonSid,
MaxTokenInfoClass
}
public enum TOKEN_ELEVATION_TYPE
{
TokenElevationTypeDefault = 1,
TokenElevationTypeFull,
TokenElevationTypeLimited
}
' -name "tools" -namespace Win32 –passThru -EA SilentlyContinue | out-null
}
$elevationresult = [Win32.tools+TOKEN_ELEVATION_TYPE]::TokenElevationTypeDefault
}
process{
[System.IntPtr]$tokenhandle = [System.IntPtr]::Zero
[System.IntPtr]$elevationTypePtr = [System.IntPtr]::Zero
try{
if ([Win32.Tools]::OpenProcessToken([System.IntPtr]$process.Handle,(0x00020000 -bor 0x0008),[ref]$tokenhandle)){
[int]$elevationResultSize = [System.Runtime.InteropServices.Marshal]::SizeOf([int]$elevationresult)
[int]$returnedSize = 0
[System.IntPtr]$elevationTypePtr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($elevationResultSize)
if ([Win32.Tools]::GetTokenInformation($tokenhandle,[Win32.tools+TOKEN_INFORMATION_CLASS]::TokenElevationType,$elevationTypePtr,$elevationResultSize,[ref]$returnedSize)){
$elevationresult = [Win32.tools+TOKEN_ELEVATION_TYPE][System.Runtime.InteropServices.Marshal]::ReadInt32($elevationTypePtr)
$process | Add-Member -MemberType NoteProperty -Name Elevated -Value ($elevationresult -eq [Win32.tools+TOKEN_ELEVATION_TYPE]::TokenElevationTypeFull) -PassThru
}
}
}catch{
return $false
}finally{
if($elevationTypePtr -ne [Intptr]::Zero){
[System.Runtime.InteropServices.Marshal]::FreeHGlobal($elevationTypePtr)
}
if($tokenhandle -ne [Intptr]::Zero){
[Win32.Tools]::CloseHandle($tokenhandle) | out-null
}
}
}
}
Get-Process -IncludeUserName | Get-ProcessElevation | ?{$_.Elevated -and $_.id -ne $pid} | select Name,Username,Elevated
Zitat von @DerWoWusste:
Frage am Rande: welchen Powershellkurs empfiehlst Du, der nicht bei Null anfängt, aber kurz dahinter?
Also wenn es über die Grundlagen der Sprachelemente und CMDLets hinaus geht dann würde ich jegliche c# Doku und die des .NET Frameworks empfehlen. Im Grunde basiert die PS ja komplett darauf und man kann so gut wie alles was du mit c# machen kannst auch in die PS Syntax umschreiben. Eine gute c# Programmier Basis bringt einen auf jeden Fall weiter wenn man Dinge machen möchte die die "normale" PS Tutorials so nicht unbedingt behandeln. Allgemeine Kenntnisse wie man Win32 Funktionen aufrufen kann und wie man Typen und Klassem anwendet sind auch nicht verkehrt. Man lernt halt viele Dinge und Varianten mit der Zeit (die man leider oft nicht hat), da helfen da oft meist nur Nachtschichten/Überstunden.Frage am Rande: welchen Powershellkurs empfiehlst Du, der nicht bei Null anfängt, aber kurz dahinter?
Links zu Kursen/Tutorials kann ich dir momentan keine bieten da bin ich nicht mehr aktuell, hatte mal selbst angefangen sowas zusammen zu schreiben, aber das wie so oft leider aus Zeitmangel abbrechen müssen da das Feld ja sehr vielfältig ist wenn man alles irgendwie versucht in ein umfassendes Werk zu pressen.
Ohne zu wissen zu welchen Themen genau z.B. mal eins rausgepickt
https://devblogs.microsoft.com/scripting/
https://devblogs.microsoft.com/scripting/
Hier mal ein paar Links, die mir z.T. sehr geholfen haben (habe jetzt aber nicht geprüft, ob die alle noch existieren):
Technet-Forum:
http://social.technet.microsoft.com/Forums/de-DE/powershell_de/threads? ...
Hey scripting guy:
http://blogs.technet.com/b/heyscriptingguy/?Redirected=true
Script-Center:
http://gallery.technet.microsoft.com/ScriptCenter/
Technet, What Can I Do With Windows PowerShell?
http://technet.microsoft.com/en-us/library/ee332526.aspx
Technet, Windows PowerShell Management Cmdlets:
http://technet.microsoft.com/de-de/library/hh849827.aspx
Technet, Windows PowerShell Tip of the Week:
http://technet.microsoft.com/en-us/library/ff730948.aspx
Technet, Windows PowerShell Tips:
http://technet.microsoft.com/en-us/library/ee692948.aspx
System.Windows.Forms Namespace:
http://msdn.microsoft.com/en-us/library/system.windows.forms%28VS.80%29 ...
Dictionary-Object
http://technet.microsoft.com/en-us/library/ee198718.aspx
Tutorial:
http://www.computerperformance.co.uk/powershell/
Cmtlets:
http://www.colorconsole.de/PS_Windows/en/
WMI:
http://social.msdn.microsoft.com/Search/de-DE?query=wmi&emptyWaterm ...
Win32 Classes:
http://msdn.microsoft.com/en-us/library/aa394084%28v=vs.85%29.aspx
Tutorials:
http://www.powershellpro.com/powershell-tutorial-introduction/powershel ...
GUI-Programmierung:
http://www.martinlehmann.de/wp/download/powershell-gui-programmierung-f ...
http://powershell.com/cs/
Datenträger-cmtlets:
http://www.tomsitpro.com/articles/powershell-for-storage,2-764.html
Viel Erfolg!
Technet-Forum:
http://social.technet.microsoft.com/Forums/de-DE/powershell_de/threads? ...
Hey scripting guy:
http://blogs.technet.com/b/heyscriptingguy/?Redirected=true
Script-Center:
http://gallery.technet.microsoft.com/ScriptCenter/
Technet, What Can I Do With Windows PowerShell?
http://technet.microsoft.com/en-us/library/ee332526.aspx
Technet, Windows PowerShell Management Cmdlets:
http://technet.microsoft.com/de-de/library/hh849827.aspx
Technet, Windows PowerShell Tip of the Week:
http://technet.microsoft.com/en-us/library/ff730948.aspx
Technet, Windows PowerShell Tips:
http://technet.microsoft.com/en-us/library/ee692948.aspx
System.Windows.Forms Namespace:
http://msdn.microsoft.com/en-us/library/system.windows.forms%28VS.80%29 ...
Dictionary-Object
http://technet.microsoft.com/en-us/library/ee198718.aspx
Tutorial:
http://www.computerperformance.co.uk/powershell/
Cmtlets:
http://www.colorconsole.de/PS_Windows/en/
WMI:
http://social.msdn.microsoft.com/Search/de-DE?query=wmi&emptyWaterm ...
Win32 Classes:
http://msdn.microsoft.com/en-us/library/aa394084%28v=vs.85%29.aspx
Tutorials:
http://www.powershellpro.com/powershell-tutorial-introduction/powershel ...
GUI-Programmierung:
http://www.martinlehmann.de/wp/download/powershell-gui-programmierung-f ...
http://powershell.com/cs/
Datenträger-cmtlets:
http://www.tomsitpro.com/articles/powershell-for-storage,2-764.html
Viel Erfolg!