Zu Content springen
Deutsch
  • Es gibt keine Vorschläge, da das Suchfeld leer ist.

FSLogix und Memtime: PowerShell Script

Dieses PowerShell-Skript kann Programmen wie Memtime, die eine Autostart-Funktion haben, dabei helfen, mit FSLogix-Profilen zu funktionieren.

Funktionen des Skripts

Das PowerShell-Skript erledigt dies sicher und automatisch:

  1. Beendet Memtime nur in der aktuellen Benutzer-Session
    1. Prüft Domain- und Benutzerzugehörigkeit
    2. Beeinträchtigt keine anderen Benutzer auf demselben Server
  2. Wartet, bis FSLogix meldet, dass das Profil für die aktuelle SID eingebunden ist
  3. Startet Memtime erst, nachdem das Profil bereit ist
  4. Funktioniert zuverlässig in Multi-User-RDS-Umgebungen

Speichern Sie das Skript als:

# ================================
# Start-Memtime-After-FSLogix.ps1
# (multi-user-sicher, FSLogix-wait)
# ================================

$ErrorActionPreference = "SilentlyContinue"

$memtimeExe = "C:\Program Files\memtime\memtime.exe"
$timeoutSec = 120
$sleepSec   = 2

# Aktuellen Benutzer / SID
$identity  = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$sid       = $identity.User.Value
$domain    = $env:USERDOMAIN
$user      = $env:USERNAME

# --- Memtime nur für diesen User beenden (nicht andere Sessions) ---
Get-CimInstance Win32_Process -Filter "Name='memtime.exe'" |
  ForEach-Object {
    $owner = Invoke-CimMethod -InputObject $_ -MethodName GetOwner
    if ($owner.Domain -eq $domain -and $owner.User -eq $user) {
      Stop-Process -Id $_.ProcessId -Force
    }
  }

function Test-FSLogixProfileReady([string]$sid) {
  $base = "HKLM:\SOFTWARE\FSLogix\Profiles\Sessions"
  if (-not (Test-Path $base)) { return $false }

  foreach ($k in Get-ChildItem $base) {
    $p = Get-ItemProperty $k.PSPath
    if ($p.Sid -eq $sid -and $p.ProfileImagePath -and $p.ProfileImagePath.Length -gt 3) {
      return $true
    }
  }
  return $false
}

# --- Warten bis FSLogix bereit ist (oder Timeout) ---
$deadline = (Get-Date).AddSeconds($timeoutSec)
while ((Get-Date) -lt $deadline) {
  if (Test-FSLogixProfileReady $sid) { break }
  Start-Sleep -Seconds $sleepSec
}

# --- Memtime starten (nur wenn nicht schon läuft) ---
$alreadyRunning = Get-CimInstance Win32_Process -Filter "Name='memtime.exe'" | ForEach-Object {
  $owner = Invoke-CimMethod -InputObject $_ -MethodName GetOwner
  ($owner.Domain -eq $domain -and $owner.User -eq $user)
} | Where-Object { $_ } | Select-Object -First 1

if (-not $alreadyRunning) {
  Start-Process -FilePath $memtimeExe
}


Deployment über GPO (Scheduled Task)

Das Skript kann als geplante Aufgabe über Gruppenrichtlinien bereitgestellt werden.

Pfad:

Benutzerkonfiguration → Einstellungen → Systemsteuerungseinstellungen → Geplante Aufgaben

Aktion

  1. Program: powershell.exe
  2. Argumente:
    -NoProfile -ExecutionPolicy Bypass -File "\\DOMAIN\SYSVOL\DOMAIN\scripts\Start-Memtime-After-FSLogix.ps1"
  3. Trigger: Bei Anmeldung

  4. Optionen: Nur ausführen, wenn der Benutzer angemeldet ist

Wenn Sie weitere Unterstützung benötigen, können Sie sich jederzeit unter support@memtime.com an uns wenden.