Jump to content

Scharping-FVB

Members
  • Gesamte Inhalte

    58
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von Scharping-FVB

  1. 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.

  2. vor 4 Minuten schrieb cj_berlin:

    Moin,

     

    warum macht man das 2024 noch per CMD?

    Das Skript ist von 2018 :aetsch2:

    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.

  3. 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

     

  4. 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 :-)

  5. 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

  6. 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 noch :-)

     

    Vielen lieben Dank an euch alle, es ist großartig, wie schnell und kompetent hier geholfen wird!

  7. Nicht ganz.

     

    funtion Mutter {

    Param(

    [parameter(Mandatory = $true)]
    [string]
    $user

     

    funktion 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.

     

  8. 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

  9. 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.

  10. 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.

    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?

  11. 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

  12. 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,
    Jan

    Die GPO ist aktiv (Always - 60 Sekunden Wartezeit) und in den IP Einstellungen sind nur die DC als DNS-Server eingetragen.

  13. 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

  14. 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

  15. 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?

  16. 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?

    • Like 1
×
×
  • Neu erstellen...