RemoteAPP ignoriert Autostart

Problem

Beim starten einer RemoteAPP werden sämtliche gängigen Möglichkeiten ignoriert Anwendungen im Hintergrund mit dem Benutzer zu starten.

Folgende Pfade werden erst aktiv, nachdem die „Explorer.exe“ gestartet wurde. Bei RemoteAPPs wird Sie aber nicht ausgeführt.

  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
  • „C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup“
  • „C:\Users\%Username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup“

Lösung

Eine Lösung für das Problem findet sich in dem Registry-Eintrag:

RDS – Microsoft

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\StartupPrograms

Die Einträge werden durch „,“ Komma getrennt!
Beispiel: rdpclip,C:\Program Files (x86)\PDF24\pdf24.exe

Citrix

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\icawd\StartupPrograms

Die Einträge werden durch „,“ Komma getrennt!

 

 

Suchen & Umbenennen von Dateinamen mit Powershell

Suchen & Umbenennen von Dateinamen mit Powershell

Erläuterung

// Suchen & Umbenennen von Dateinamen mit Powershell //
Dieses Skript sucht nach einem gewünschten Begriff in Dateinamen und entfernt / umbenennt diesen, falls der „Ersetzen“ auf $True gesetzt wurde, um. Steht „Ersetzen“ auf $False (default) dann werden nur nach den Dateinamen die den Begriff beinhalten gesucht und es wird keine Änderung durchgeführt.

Skript

#
# Autor: Jan Weis
# Version: 0.1
# www.it-explorations.de
#

#requires -Version 3
param
(
    [Parameter(Mandatory = $true)][String]$RootVerzeichnis = 'C:\Test',
    [Parameter(Mandatory = $true)][String]$SuchenNach = 'Log',
    [String]$ErsetzenDurch = 'LOgFF',
    [Switch]$Ersetzen
)

ForEach ($File in (Get-ChildItem -Path $RootVerzeichnis -Recurse -File | Where-Object -FilterScript {
            $_.Name -like "*$SuchenNach*"
        }
))
{
    try
    {
        $Dateiname = ($File.Name).ToString()
        $Dateiname = $Dateiname.Replace($SuchenNach,$ErsetzenDurch)
        
        if ($Ersetzen)
        {
            Write-Host -Object "> Umbenennen: $($File.BaseName) " -NoNewline
            Rename-Item -Path ($File.FullName) -NewName $Dateiname
            Write-Host -Object 'OK!' -ForegroundColor Green
        }
        else
        {
            Write-Host -Object "> Nur Suchen: $($File.BaseName)"
        }
    }
    catch
    {
        "Error was $_"
        $line = $_.InvocationInfo.ScriptLineNumber
        "Error was in Line $line"
    }
}

 

Suchen & Ersetzen von Dateiinhalten – Powershell

Erläuterung

// Suchen & Ersetzen von Dateiinhalten mit Powershell //
Dieses Skript sucht nach dem „Suchbegriff“ in Klartext-Dateien (Dateien die nicht verschlüsselt oder codiert sind txt,html etc.) rekursiv durch die Unterverzeichnisse und ersetzt, falls gewünscht, die Inhalte der Dateien durch die eigens angegebenen.

$DateiTypen gibt den zu durchsuchenden DateiTyp an.
Wird nur der Parameter „SuchenNach“ angegeben, dann ersetzt das Skript nichts, sondern zeigt nur die Dateien die jeweils den gesuchten Begriff beinhalten an.

Skript

<#

Author: Jan Weis
Version: 0.1

Purpose: Sucht und Ersetzt Informationen in Dateien.

#>


param
(
    [Parameter(Mandatory = $true,Position = 0)][String]$Pfad,
    [Parameter(Mandatory = $true,Position = 1)][String]$SucheNach,
    [Parameter(Mandatory = $false,Position = 2)][String]$ErsetzeDurch
)

[Int]$i = 0
$DateiTypen = '*.htm','*.html'


Write-Host 'Durchsuche Verzeichnisse...' -NoNewline -ForegroundColor Yellow
$Ordner = Get-ChildItem -Path $Pfad -Include $DateiTypen -Recurse -File
Write-Host 'OK!' -ForegroundColor Green
Write-Host "Gefundene Dateien: $($ordner.Count)" -ForegroundColor Yellow

foreach ($Datei in $Ordner)
{
    try
    {
        # Dateiinhalt auslesen
        [Array]$DateiInhalt = Get-Content -Path $Datei -Encoding UTF8 

        $i++

        # Inhalt überprüfen und ersetzen
        if ($DateiInhalt -notlike '')
        {
            if (Select-String -InputObject $DateiInhalt -Pattern $SucheNach)
            {
                if ($ErsetzeDurch -like '')
                {
                    Write-Host ''
                    Write-Host "[-] Inhalt gefunden - '$($Datei.FullName)'" -ForegroundColor Yellow
                }
                else
                {
                    [String]$Inhalt = $DateiInhalt
                    $Inhalt = $Inhalt.Replace($SucheNach,$ErsetzenDurch)
                    $Inhalt | Out-File -FilePath $Datei -Encoding utf8
                
                    Write-Host ''
                    Write-Host "[-] Inhalt gefunden und geändert - '$($Datei.FullName)'" -ForegroundColor Yellow
                }
            }
        }
    
        if ($i -like '*00')
        {
            Write-Host '.' -NoNewline
        }
    }
    catch
    {
        "Error was $_"
        $line = $_.InvocationInfo.ScriptLineNumber
        "Error was in Line $line"
    }
}

 

Benutzername auf Namenskonvention prüfen – Powershell

Erläuterung

Das Skript prüft folgende Richtlinie: Nachname 6 Zeichen, Vorname 2 Zeichen. Es generiert aus Vor- und Nachname einen Benutzernamen und prüft diesen auf Richtlinienkonformität (vergleicht den aktuellen SamAccountName). Durch das Verändern der Variablen intLaengestrVorname und intLaengestrNachname kann Einfluss auf die Generierung genommen werden.

Anzupassen!
DOMAINCONTROLLER, ORAGANISATIONSEINHEIT, DOMÄNE und PFAD müssen noch angepasst werden!

Sie können die Ausgabe in eine Datei speichern. Entfernen Sie die # bei „Out-File“ im unteren drittel.

Skript

<#

Author: Jan Weis
Version: 0.1
Version History:

Purpose: Vergleicht den Benutzernamen mit einer Namenskonvention ( 6 Buchstaben Nachname, 2 Buchstaben Vorname )

#>

#requires -Version 1 -Modules ActiveDirectory
# Deklaration
[String]$strKonvention = ''
[String]$strVorname = ''
[String]$strNachname = ''
[String]$SamAccountName = ''
[Int]$MissigChars = 0
[Int]$intLaengestrVorname = 2
[Int]$intLaengestrNachname = 6


# Abfrage der AD-Benutzer
Write-Host -Object '[+] Informationen werden abgerufen. Bitte warten...'
try
{
    $ADUser = Get-ADUser -Filter { Name -like '*'} -Properties SamAccountName -AuthType Negotiate -Server 'HS2A' -ErrorAction SilentlyContinue -SearchBase 'OU=People,DC=hs-kempten,DC=local'
    Write-Host -Object '[OK!]' -ForegroundColor Green
}
catch
{
    Write-Host -Object "[ERROR] Fehler in der AD-Abfrage!`n$_" -ForegroundColor Red
    Exit
}

# Objektverarbeitung
foreach ($User in $ADUser)
{
    try
    {
        # Füllen der Variablen
        $strVorname = $User.GivenName
        $strNachname = $User.Surname
        $SamAccountName = $User.SamAccountName

        # Benutzernamen generieren
        If ( $strNachname.Length -ge $intLaengestrNachname )
        {
            # generiere
            $strKonvention = $strNachname.SubString(0,$intLaengestrNachname) + $strVorname.Substring(0,$intLaengestrVorname)
        }

        # Benutzernamen generieren
        If ( $strNachname.Length -lt $intLaengestrNachname )
        {
            # Berechne fehlende Zeichen
            $MissigChars = $intLaengestrNachname - ($strNachname.length)
            
            # generiere
            $strKonvention = $strNachname + ($strVorname.Substring(0,($intLaengestrVorname+$MissigChars)))
        }
    
        # Vergleiche die strKonvention mit dem Benutzerobjekt
        if ($SamAccountName -notlike $strKonvention)
        {
            Write-Host -Object "[!!] Unstimmigkeit gefunden! Vorname:'$strVorname', Nachname:'$strNachname', Erwartet:$strKonvention, Vorhanden:$SamAccountName" -ForegroundColor Yellow
            #Out-File -FilePath 'PFAD' -Append -InputObject "[!!] Unstimmigkeit gefunden! Vorname:'$strVorname', Nachname:'$strNachname', Erwartet:$strKonvention, Vorhanden:$SamAccountName"
        }
    }
    catch
    {
        Write-Host -Object "[ERROR] $_"
    }
}

 

AD-Gruppen umbenennen – Powershell-Skript

Skript Erklärung

Das Skript sucht im Active Directory nach vorhandenen Gruppen mit der Bezeichnung „-ABC“ im Gruppennamen und ersetzt bei allen zutreffenden Gruppen den Name,CN und SamAccountName durch den neuen Gruppennamen.

Beispiel

Vorher: Gruppe-TEST-ABC
Nachher: Gruppe-TEST-XYZ

#
#
# Autor: Jan Weis
# Funktion: Umbenennen von AD-Gruppen
#
#

Write-Host 'Gruppen werden erfasst...' -NoNewline
$Gruppen = Get-ADGroup -Filter {Name -like '*-ABC'}
Write-Host '[OK]' -ForegroundColor Green

foreach ($obj in $Gruppen)
{
    try
    {
        $Name = (($obj).Name).Replace('ABC','XYZ')
        Set-ADGroup -Identity $obj -SamAccountName $Name 
        Rename-ADObject -Identity $obj -NewName $Name 
        Write-Host "[+] $($obj.Name) wurde erfolgreich in $Name umbenannt." -ForegroundColor Green
    }
    catch
    {
        Write-Host "[ERR] $($obj.Name) wurde nicht umbenannt.`n$_" -ForegroundColor Red
    }
}