$User=Read-Host "SamAccountName eingeben" # Anmeldelogs nach dem System des Benutzers durchsuchen $Directory="\\vbw-bochum.local\dfs\Logondaten\benutzer" $Files=Get-ChildItem $Directory -File $UserSystems=@() foreach ($File in $Files) { foreach($line in Get-Content ($File.FullName)) { if($line -like "Rechner*") { $item=New-Object -type psobject | Add-Member -MemberType NoteProperty -Name "SamAccountName" -Value $File.name.TrimEnd(".txt") -PassThru | add-member -MemberType NoteProperty -Name "System" -Value $line.TrimStart("Rechner: ") -PassThru | Add-Member -MemberType NoteProperty -Name "Erfassungsdatum" -Value $File.lastwritetime -PassThru } } $UserSystems += $item } $system=(($UserSystems | Where-Object samaccountname -like $User).system).trimend(" ") # Auf dem gefundenen System nach Sessions mit dem Anmeldenamen suchen Invoke-Command -ComputerName $system -ScriptBlock ` { $sessions=quser | Where-Object {$_ -match "$($user:using)"} $sessions $SessionIDs=@() foreach ($line in $sessions) { if ($line -notlike "*Benutzername*" -and $line -notlike "*Aktiv*") { #replace "\s{2,}",";" => Ersetze alle mehr als 2x aufeinanderfolgenden Leerzeichen durch ein ; $SessionIDs+=($line -replace "\s{2,}",";").split(";")[2] } } foreach ($SessionID in $SessionIDs) { logoff $SessionID } }