Scharping-FVB
-
Gesamte Inhalte
58 -
Registriert seit
-
Letzter Besuch
Beiträge erstellt von Scharping-FVB
-
-
Liebes Forum,
ich möchte weiter Automatisieren.
Dazu soll ein bestimmten lokaler User restlos vom System entfernt werden.
Also der User an sich, sein Profil und der zugehörige Ordner.
Ich habe für PowerShell bisher folgende Lösungen gefunden:
User löschen:
Remove-LocalUser -Name "install"
User-Ordner löschen:
Remove-Item -Path "c:\Users\install" -Force
Leider klappt das Profil löschen noch nicht:
$UserAccount = Get-CimInstance Win32_UserProfile -Filter 'LocalPath like "C:\Users\install"' Get-CimInstance Win32_Userprofile -Filter "SID = '$($UserAccount.SID)'" | Remove-CimInstance
Leider klappt das nicht, der Aufruf der CimInstance liefert einen Fehler:
Get-CimInstance : Invalid query At line:1 char:16 + ... erAccount = Get-CimInstance Win32_UserProfile -Filter 'LocalPath like ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Get-CimInstance], CimException + FullyQualifiedErrorId : HRESULT 0x80041017,Microsoft.Management.Infrastructure.CimCmdlets.GetCimInstanceCommand
Ich vermute, dass das an den Sonderzeichen im String liegt, habe dafür aber keine passende Lösung.
-
vor 4 Minuten schrieb cj_berlin:
Moin,
warum macht man das 2024 noch per CMD?
Das Skript ist von 2018
Ehrlich, ich traue mich noch nicht an ein PowerShell Skript als Logon Skript. Und noch besser weiß ich einfach nicht.
Welche Lösung würdest du vorschlagen?
Es geht um diesen Anwendungsfall:
Auf den Clients soll ein LAPS-User angelegt werden. Ich möchte das nicht über ein aufzurufendes Skript lösen oder das manuelle Anlegen. Daher mein automatischer Weg, das über ein Logon-Skript.
-
Liebes Forum,
ich möchte per Log einen lokalen User anlegen, sofern dieser noch nicht vorhanden ist.
Irgendwie klappt es mit der Abfrage nicht:
net user | find /i "user" || Goto AddUser Goto End :AddUser net user user Sf3eWfkws-123 /add /comment:"Local Account" net localgroup administratoren user /add :End
Obwohl der User nicht vorhanden ist, wird dieser nicht angelegt.
Hab ich beim "If-Else" einen Fehler drin?
Viele Grüße
Davorin
Und schon selber die Lösung gefunden.
Hartnäckigkeit zahlt sich aus
net user | find /i "user" if %ERRORLEVEL% EQU 0 ( Goto :AddUser ) else ( echo "User schon vorhanden" ) Goto End :AddUser net user user Sf3efdf23212-w /add /comment:"Local Account" net localgroup administratoren user /add :End
-
vor 19 Stunden schrieb Dukel:
EDIT: Du brauchst bei einfachen Variablen keine Doppelten Quotes:
Write-Host "Es gab einen Fehler beim Anlegen des Links $LinkName. Bitte manuell nacharbeiten."
Der Inhalt der Variable soll aber in Anführungszeichen ausgegeben werden
Ich meine, dass es da noch etwas technischeres gibt, fällt mir aber gerade nicht ein.
-
vor 5 Minuten schrieb Dukel:
Informiere dich über try/catch.
Das funktioniert hier nicht, habe ich als erstes versucht.
try { $Shortcut.Save() -erroraction stop }
Erroraction wird nicht (an)erkannt:
+ $Shortcut.Save() -erroraction stop + ~~~~~~~~~~~~ Unexpected token '-erroraction' in expression or statement.
Ich habe das jetzt so gelöst:
$ErrorActionPreference = "SilentlyContinue" $WshShell = New-Object -comObject WScript.Shell $Shortcut = $WshShell.CreateShortcut("\\fs2\drive-i\$user\$LinkName.lnk") $Shortcut.TargetPath = "\\fs1\scan2file\$user" $LinkName = $Shortcut.FullName $LinkLocation = $Shortcut.TargetPath $Shortcut.Save() if($?) { Write-Host "Link ""$LinkName"" wurde im Pfad ""$LinkLocation"" angelegt." -ForegroundColor green } else { Write-Host "Es gab einen Fehler beim Anlegen des Links ""$LinkName"". Bitte manuell nacharbeiten." -ForegroundColor Red }
Mit if ($?) wird geprüft, ob $Shortcut.save() $true war und entsprechend reagiert.
Vielen Dank für die Anregungen und Hilfen
-
Gerade eben schrieb BOfH_666:
Wie wär's, das einfach mit einem "Test-Path" zu prüfen?
Da haben wir uns überschnitten.
Ja, in diesem Fall, aber allgemein eben nicht.
-
Liebes Forum,
ich erstelle einen Shortcut:
$WshShell = New-Object -comObject WScript.Shell $Shortcut = $WshShell.CreateShortcut("\\fs1\drive-i\scharping\Scans.lnk") $Shortcut.TargetPath = "\\fs1\scan2file\$user" $Shortcut.Save()
Sollte der letzte Befehl (das Speichern) scheitern, hätte ich das gerne behandelt, es soll also in einer Variablen gespeichert werden, ob der erfolgreich war, also $true oder $false.
Ich könnte für dieses Beispiel einfach mit "TestPath" prüfen, ob der Link existiert, aber ich möchte das gerne allgemein halten, um diese Prüfung auf Ausführung auch für andere Befehle nutzen zu können.
Wie ist das allgemein möglich?
Viele Grüße
Davorin
-
vor 4 Minuten schrieb Dukel:
Würde ich aber nicht machen.
1. brauchst du dann keine Funktion
2. Ist es übersichtlicher und du kannst die Funktion Problemlos mehrmals verwenden:
function umlaute {}
function username { ... umlaute ... }
function adresse { ... umlaute ... }
function email { ... umlaute ... }
Ja, du hast Recht, das klappt auch.
Ist meine erste Funktion, die ich schreibe, ich lerne nochVielen lieben Dank an euch alle, es ist großartig, wie schnell und kompetent hier geholfen wird!
-
vor 26 Minuten schrieb Dukel:
Ich glaube nicht, dass du Funktionen innerhalb von Funktionen schreiben kannst.
Schreibe alle Funktionen untereinander.
Doch, das geht
Jetzt auch mit dem richtigen Ausgabewert.
-
Brett vorm Kopp...
$user = ersetze -user $user
Es kann so einfach sein...
Vielen Dank und bitte entschuldige das Code-Desaster...
-
Nicht ganz.
funtion Mutter {
Param(
[parameter(Mandatory = $true)]
[string]
$userfunktion Kind ([string]$user) {
$user = $user.Replace("ä", "ae").Replace("ö", "oe").Replace("ü", "ue").Replace("Ä", "Ae").Replace("Ö", "Oe").Replace("Ü", "Ue").Replace("ß","ss")
Return $user
}
# Ersetze Umlaute
Kind $user
Write-Host "Neuer Username ohne Umlaute ist: $user"
}
Aufruf mit: Mutter "Müller"
Da sollte dann die Ausgabe mit Mueller erfolgen.
Es wird aber durch das Return $user nach dem Ersetzen an der Konsole ausgegeben, aber nicht in die MUtter-Variable übernommen. In der Mutter-Funktion bleibt $user unverändert.
-
Liebes Forum,
ich möchte innerhalb einer Funktion eine weitere Funktion nutzen. Diese bekommt eine Variable übergeben und soll diese verändern. Den geänderten Wert soll die Kind-Funktion an die Mutter-Funktion zurückgeben, damit damit weiter gearbeitet werden kann.
Leider gilt die geänderte Variable nur innerhalb der Kind-Funktion, nicht außerhalb.
Wie kann ich den Wert an die Mutter-Funktion zurückgeben? Die Lösung ist sicherlich simpel, doch ich habe da irgendwie ein Brett vor dem Kopf.
Viele Grüße
Davorin
-
vor 15 Stunden schrieb Sunny61:
Das hattest Du mit W10 ja auch schon machen müssen. Außer Du hattest die LTSC Editionen im Einsatz, dann ist für 10 Jahre Ruhe.
Stimmt, wir haben vor einiger Zeit alles auf 22H2 umgestellt.
Das ging ja glücklicherweise In-Place über den WSUS, also mit geringem Aufwand.Und danach war Ruhe, weil 22H2 als letzte Version dann doch mehr als zwei Jahre Extended Support hatte.
-
vor 1 Minute schrieb testperson:
Hi,
das betrifft Windows 11 Enterprise und Education. Für Pro ud Home ist für 23H2 im November 2025 Schluss. Allerdings wird Windows 11 24H2 Pro wohl wieder 2 Jahre Support oben drauf bekommen.
- Windows 11 Home und Pro - Microsoft Lifecycle | Microsoft Learn
- Windows 11 Enterprise und Education - Microsoft Lifecycle | Microsoft Learn
Gruß
Jan
Das bedeutet ja trotzdem, dass ich alle zwei Jahre eine neue Version von Windows 11 testen und evaluieren muss.
Ich meine, dass Windows 10 22H2 mehr als nur zwei Jahre Support bekommen hat. Oder deswegen, weil es das letzte Windows 10 war?
-
Liebs Forum,
bei uns steht das Ende von Windows 10 an und wir suchen nach einem (Windows) Nachfolger. Für Windows 10 ist der Extended Support im Oktober 2025 zu Ende.
Über das Supportende von Win11 finde ich nur November 2026 für 23H2.
Ich vermute, dass ist der "normale" Support, aber für den Extended Support (oder wie der heißt), bei dem es nur noch Sicherheitsupdates, aber keine neuen Funktionen gibt, finde ich nichts.
Hat jemand eine Microsoft-Seite, auf der das steht?
Viele Grüße
Davorin
-
vor 1 Stunde schrieb MurdocX:
Hallo,
helfen könnte noch:
- Den Dienst auf "Verzögerten Start" zu stellen
- Network location awareness not detecting domain network from offsite location - Microsoft Q&A
Danke, das scheint eine der einfacheren Lösungen zu sein,
Ich werde die Reg-Keys einfach per GPO auf die Server und Clients verteilen.
-
vor 8 Stunden schrieb MurdocX:
Hallo,
es gibt die Möglichkeit "Auf das Netzwerk warten" als GPO.
Wurden unter den DNS-Einstellungen der aktiven Netzwerkkarte ausschließlich Domaincontroller für die Clients hinterlegt? Oder finden sich bspw. die Firewall oder andere DNS-Server in der Liste?
VG,
JanDie GPO ist aktiv (Always - 60 Sekunden Wartezeit) und in den IP Einstellungen sind nur die DC als DNS-Server eingetragen.
-
Liebes Forum,
hin und wieder geht bei einigen unserer Win10 VMs die Kennung des Netzwerks beim automatischen Neustart nach Windows Updates verloren. Das Netzwerk wird nicht mehr als Domain erkannt und somit wird die Firewall aktiviert und es ist keine Domäne und kein Internet mehr verfügbar.
Eine richtig funktionierende Lösung habe ich dazu nicht gefunden, wie kann ich das verhindern, dass die Netzwerkkennung verloren geht?
Viele Grüße
Davorin
-
Danke für die schnelle und funktionierende Antwort :-D
-
Liebes Forum,
ich möchte konkret diese Ausgabe in eine Zahl umwandeln:
$targetGroup = "Domain Users"
$targetGroupPrimaryID = Get-ADGroup $targetGroup -Properties PrimaryGroupToken | select PrimaryGroupToken
Das Ergebnis ist:
PrimaryGroupToken
-----------------
513
Ich hätte gerne den Token als Zahl "513", wie komme ich an diesen Wert ran?
Out-String macht mir einen dreizeiligen String.
Viele Grüße
Davorin
-
vor 1 Minute schrieb LK28:
Schau dir mal Lösungen von CyberArk an, Delinea Secret Server, Fudo PAM an.
Danke, das mache ich
-
vor 6 Minuten schrieb LK28:
Ich als Admin/Dienstleister möchte meine Admin Passwörter beim Kunden doch am besten gar nicht mehr wissen, schon gar nicht die Passwörter händisch auf Aufforderung ändern, sondern das Passwortmanagement durch PAM regeln lassen. Was auch den netten Vorteil mit sich bringt, dass man das unbekannte Passwort nicht mal mehr kopieren und einfügen muss.
Wie funktioniert das mit der nicht-händischen Eingabe?
Wenn ich nach "PAM" google, kommen nur allgemeine Aussagen. PAM ist demnach ein Konzept, kein Programm, das Kennwörter automatisch in Eingabefelder einsetzt.
Oder gibt es da eine Lösung, die so ähnlich funktioniert, wie das AutoType von KeePass? -
Gerade eben schrieb Damian:
Ja, und ist das Thema deswegen nicht mehr aktuell?
Ich wollte nicht einen neuen eröffnen, zu genau dieser Aussage.
Denn genau um die Aussage von Evgenij geht es mir.
- 1
-
Am 6.9.2022 um 15:29 schrieb cj_berlin:
Moin,
solange in der Umgebung NTLM und/oder RC4 in Kerberos aktiv sind, ist ein Kennwortwechsel nach wie vor das einzige wirksame Mittel gegen Pass-The-Hash (nicht zur Vorbeugung, wohlgemerkt, sondern nur zur Eingrenzung).
Das bedeutet ja, dass ich das Kennwort wöchentlich ändern sollte.
Denn mit PtH wird ja nicht das Kennwort "geklaut", sondern nur der Hash, das Kennwort ist dadurch nicht bekannt. Allerdings kann der Angreifer, sobald sein Hash nicht mehr funktioniert, einfach den neuen Hash des neuen Kennworts auf dem schon erfolgreichen Weg erneut klauen.
Dann wäre eine sehr sehr häufige Änderung die einzige wirksame Gegenmaßnahe.Oder übersehe ich da etwas?
- 1
Lokalen User mit Profil und Ordner löschen
in Windows Forum — Scripting
Geschrieben
Vielen Dank, genau das habe ich gesucht und es funktioniert wunderbar