Microsoft Intune
Intune - Neuen lokalen Administrator auf Clients anlegen
Mit Intune ist es nativ nicht möglich neue, lokale User / Admins auf Endgeräten zu erstellen. In dieser Anleitung zeigen wir, wie wir, mithilfe einer Win32-App und einem PowerShell Skript, dieses Problem lösen. Das PowerShell Skript ermöglicht es, beliebige Benutzer anzulegen und diese in die lokale Administratoren-Gruppe aufzunehmen.
Wir verwalten den neuen lokalen Admin anschließend mit Windows LAPS über Intune. Somit spricht nichts dagegen, dem neuen User vorerst ein zufällig generiertes Kennwort zu verpassen. Alternativ kann im Skript auch ein festes Kennwort hinterlegt werden, dies ist allerdings nicht zu empfehlen.
1. PowerShell-Skript zum Anlegen des Benutzers & Hinzufügen in lokale Admin-Gruppe
$exitCode = 0
if (![System.Environment]::Is64BitProcess)
{
# start new PowerShell as x64 bit process, wait for it and gather exit code and standard error output
$sysNativePowerShell = "$($PSHOME.ToLower().Replace("syswow64", "sysnative"))\powershell.exe"
$pinfo = New-Object System.Diagnostics.ProcessStartInfo
$pinfo.FileName = $sysNativePowerShell
$pinfo.Arguments = "-ex bypass -file `"$PSCommandPath`""
$pinfo.RedirectStandardError = $true
$pinfo.RedirectStandardOutput = $true
$pinfo.CreateNoWindow = $true
$pinfo.UseShellExecute = $false
$p = New-Object System.Diagnostics.Process
$p.StartInfo = $pinfo
$p.Start() | Out-Null
$exitCode = $p.ExitCode
$stderr = $p.StandardError.ReadToEnd()
if ($stderr) { Write-Error -Message $stderr }
}
else
{
# start logging to TEMP in file "scriptname".log
Start-Transcript -Path "$env:TEMP\$($(Split-Path $PSCommandPath -Leaf).ToLower().Replace(".ps1",".log"))" | Out-Null
Import-Module Microsoft.PowerShell.LocalAccounts
## Random PWD Funktion
function RandomPwGenerator {
param (
[int]$length = 40
)
$characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!!!!!!!!!!"
$randomString = -join ((Get-Random -Count $length -InputObject $characters.ToCharArray()))
$secureString = ConvertTo-SecureString $randomString -AsPlainText -Force
return $secureString
}
# Username festlegen
$Username = "manager"
$Password = RandomPwGenerator
$UserParams = @{
Name = $Username
Password = $Password
PasswordNeverExpires = $true
Description = "Lokaler account für LAPS"
FullName = $Username
}
$localAdminGroupName = (Get-WMIObject -Class Win32_Group -Filter "LocalAccount=True and SID='S-1-5-32-544'").Name
$localUser = Get-LocalUser -Name $Username -ErrorAction SilentlyContinue
if ($localUser -eq $null) {
$User = New-LocalUser @UserParams
}
Try
{
Add-LocalGroupMember -Group $localAdminGroupName -Member $Username }
catch
{
Write-Host "Is already admin member"
}
Stop-Transcript | Out-Null
}
exit $exitCode
2. Win32-App-Paket erstellen
Please specify the source folder: Quellordner-der-die-zuvor-erstellte-PS1-Datei-enthält
Please specify the setup file: LAPS_lokalen_Administrator_anlegen.ps1
Please specify the output folder: Zielordner-in-dem-das-INTUNEWIN-File-erstellt-werden-soll
Do you want to specify catalog folder: N
3. Erkennungsmethode-Skript erstellen
Das zweite PowerShell-Skript dient als Erkennungsmethode und wird entsprechend während der App-Erstellung in Intune hinterlegt.
Schritte:
a) Skript-Datei erstellen
b) Den folgenden Skript-Inhalt einfügen und die Datei lokal speichern als LAPS_lokalen_Administrator_anlegen_Erkennung.ps1
c) Der Benutzername in Zeile 2 muss dem Benutzernamen aus dem ersten Skript (Zeile 49) entsprechen.
Import-Module Microsoft.PowerShell.LocalAccounts
$Username = "manager"
$localUser = Get-LocalUser -Name $Username -ErrorAction SilentlyContinue
$localAdminGroupName = (Get-WMIObject -Class Win32_Group -Filter "LocalAccount=True and SID='S-1-5-32-544'").Name
# Get-LocalGroupMember wirft unter Windows11 manchmal Fehler! Daher net localgroup nehmen!
$adminlist = (net localgroup $localAdminGroupName) | Where-Object { $_ -match '\S' } | Select-Object -Skip 4 | Select-Object -SkipLast 1
if ($localUser -eq $null) {
Write-Host "LAPS User $Username ist nicht vorhanden!"
Exit 1
}else{
Write-Host "LAPS User $Username ist vorhanden!"
if(!($adminlist -contains $Username)){
Write-Host "LAPS User $Username ist kein lokaler Administrator!"
Exit 1
}else{
Write-Host "LAPS User $Username ist lokaler Administrator!"
Exit 0
}
}
4. Intune-App erstellen
a) Optional im Vorfeld eine Rechner-Gruppe für die App-Zuweisung anlegen.
b) Neue App in Intune anlegen
c) Windows app (Win32) auswählen
e) Beschreibung, etc. ausfüllen
f) Install / Uninstall command
Powershell.exe -NoProfile -ExecutionPolicy ByPass -File .\LAPS_lokalen_Administrator_anlegen.ps1
Da ein Uninstall command zwingend erforderlich ist, muss hier etwas eingetragen werden. Der Einfachheit halber tragen wir einfach das Install command erneut ein
g) Minimale Betriebssystemanforderungen ausfüllen
i) Ggf. an die vorher erstellte Gruppe zuweisen (siehe Schritt a weiter oben)
Allgemeine Hinweise zum IOK-Blog
Der IOK Blog stellt IT-Administratoren aktuelle und aus unserer Sicht relevante Informationen zur Verfügung. „Kurz und knackig“ wollen wir Sie so informiert halten. Für sämtliche Informationen gilt Folgendes:
- Die Informationen wurden sorgfältig recherchiert, gelten aus unserer Sicht aber nur zum Zeitpunkt der Veröffentlichung. Bitte eventuelle Updates ggf. bei den genannten Ansprechpartnern der IOK oder bei Herstellern erfragen.
- Irrtum und Änderungen sind vorbehalten.
- IOK übernimmt keine Gewährleistung und Haftung für Schäden, die sich direkt oder indirekt aus der Umsetzung der von uns publizierten Artikel und vorgeschlagenen Vorgehensweisen und Informationen ergeben.
- Technische Informationen und Lizenzbedingungen der Hersteller gelten in jedem Fall.
Wir wünschen Ihnen nun viel Erfolg mit den Infos aus dem IOK-Blog!