Jump to content

Kuddel071089

Members
  • Gesamte Inhalte

    559
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von Kuddel071089

  1. Hallo zusammen,

     

    in unserem AD ist eingestellt, dass ein UserAccount nach 5 falschen PWs für 10 Minuten gesperrt wird.

     

    Da häufiger alte PWs im Browser etc. gespeichert werden, sperren sich die User gerne aus.

     

    Jetzt möchte das Ereginislog der DCs dazu durchsuchen um die Fehlerquelle (PC) geraus zu fnden.

     

     

    Get-EventLog -LogName Security -ComputerName $dc1  | where {$_.eventID -eq 4740}
    

     

    Leider weiß ich jetzt nicht, wie ich da noch die Suche nach einem SamAccountName hinzufügen kann.

     

     

    Ich hoffe ihr könnt helfen.

     

     

    Danke schon einmal


    Mein erster Versuch ist schon einmal ganz vielversprechend

     

     

    cls
    Write-Host "Username: " -ForegroundColor Yellow -NoNewline
    $username = Read-Host
    Write-Host
    Write-Host "NTS605 wird abgefragt:" -ForegroundColor Cyan
    Get-EventLog -LogName Security -ComputerName NTS605  | where {$_.eventID -eq 4740 -and $_.Message -like "*$username*"} | Select Message | FL
    

     

    Nur dauert es eine ganze Weile, bis ein Ergebnis angezigt wird. Wenn ich direkt in der Ereignisanzeige schaue und dort nach der Event-ID suche, bekomme ich direkt Ergebnisse

  2. Moin,

     

    wenn du den Namen gegen zwei Quellen prüfen musst, würde ich zu Beginn eine gemeinsame Liste aus beiden Quellen erzeugen. Dann musst du nur einmal vergleichen und kannst einfacher eine Routine bauen, die verfügbare Namen vorschlägt.

     

    Ein Identity Management ist ja ebensowenig kurzfristig einzuführen wie eine Umstellung der Namenskonvention für Anmeldenamen. Daher ergibt der Ansatz schon Sinn. Ob er prozessual ausreichend eingebettet ist, müsst ihr natürlich selbst prüfen.

     

    Gruß, Nils

     

    Hallo Nils,

     

    vielen Dank erst einmal für deine Antwort.

     

    Gutes Stichwort IDM. Haben wir auch schon mehrfach vorgeschlagen, wurde aber aus kostengründen ablehnt.

     

    Somit sind Admins jetzt selber am fummeln und am basteln.

     

    Ich werde mich dann mal ans Werk machen :-)

  3. Moin,

     

    bevor wir uns jetzt von Punkt zu Punkt hangeln, ohne einen Überblick zu haben, wäre es fein, wenn du beschreibst, was denn eigentlich am Ende dein Ziel ist und was die Rahmenbedingungen sind.

     

    Gruß, Nils

     

    Hallo Nils,

     

    ich bin dabei mein Skript zur Einrichtung eines neuen Users zu aktualisieren.

     

    Vor der EInrichtung müssen wir immer manuell prüfen, ob der angedachte Username bereits in unserem E-Mail Archiv enthalten ist. Von diesem Archiv habe ich einen Export aller User und muss demetnsprechend prüfen, ob der Username noch nicht verwendet wurde.

    Danach muss natürlich auch geprüft werden, ob der User evtl. schon im AD existiert, nur aber ohne Mail Adresse und daher nicht im Mail Archiv auftaucht.

     

    Es wäre natürlich praktisch, wenn Username "Meyer" z.b. schon vergeben ist, automatisch ein "A" von seinem Vornamen "Andreas" an den Usernamen "Meyer-A" angefügt wird, sofern dieser noch frei ist.

     

    Ich weiß nicht wie viel Aufwand das ganze macht. Primär sind für mich diese Schritt:

     

    1. Eingabe angedachter Username

    2. Check ob Username in CSV enthalten ist

    3. Wenn User enthalten dann suche nach $username* in csv um die vergeben Usernamen anzuzeigen

    4. Check ob Username im AD frei ist

    5. Wenn nicht frei -> Get-ADUser -Filter {SamAccountName like "$username*"} | Select SamAccountName | FT -HideTableheader

     

    Keine AHnung ob ich das ganze ein wenig umständlich machen. Praktisch wäre es aufjeden fall, wenn ich nur eine Liste bekomme, welche Usernamen schon in Verwendung sind.

     

     

    Wenn es nicht ganz so kompliziert ist, soll der Username automatisch ausgewählt werden. Also Username= Nachname bzw. Nachname+BuchstabeVorname

  4. Okay einen 1:1 Check habe ich jetzt. Für den Anfang nicht schlecht.

     

    Kann ich die CSV auch durchsuchen um einen passenden Usernamen zu finden ?

     

    Sprich: Suche nach Meyer*

     

    Ergebnis:

    Meyer

    Meyer-B

    Meyer-J

     

    Somit weiß ich, dass ich zb Meyer-K anlegen kann.

     

    Ich weiß nur leider nicht, wie ich die Suche anstoße

     

     

    ##### EDIT #####

     

    Erster Versuch:

    cls
    $username = "Meyer"
    
    IF(Select-String -Path C:\test.csv -Pattern "$username") {
    Select-String -Path C:\test.csv -Pattern "$username"
    }
    

    Ergebnis:

     

    C:\test.csv:2:meyer
    C:\test.csv:5:meyer-j
    

     

    Wenn man jetzt irgendwie den Pfad vor dem Namen entfernen könnte, wäre das schon die Lösung

  5. Hallo zusammen,

     

    ich möchte eine CSV Datei mit Usernamen per Powershell durchsuchen, ob der Username in der CSV schon vorhanden ist.

     

    Leider habe ich keine Ahnung wie ich das anstelle.

     

    Hat jemand einen Tip für mich.

     

    Bis jetzt bin ich bis

    cls
    Write-Host "Username: " -NoNewline
    $Username = Read-Host
    
    $ImportFile = Import-csv "C:\test.csv"
    
    IF($ImportFile -contains $username) {Write-Host "Username vergeben"}
    
    else{
    Write-Host "Username frei"
    }
    

    Die CSV sieht im Moemnt so aus:

    samaccountname
    meyer
    mueller
    schulz
    

    Leider sagt er immer, dass der Username frei ist, obwohl er in der CSV ist.

     

     

    Danke schoneinmal für die Hilfe

     

     

    +++EDIT+++

     


    Okay, -contains war falsch.

     

    Mit -match funktioniert es ^^

  6. Hallo zusammen,

     

    ich würde in einem unserer Server-Skripts gerne hinzufügen, dass bei neuen AD-Server der lokale Administrator umbenannt wird (aus Sicheritsgründen).

     

    Per GPO habe ich es schon versucht, da wurde aber auch bei schon bestehenden AD-Servern der lokale Admin unbenannt, was zu Probleme geführt hat.

     

    Kann man das ganze irgendwie per Powershell realisieren?

     

     

    Vielen Dank schon einmal

  7. So in der Art. Achtung! Die Variablen aus dem eigentlichen Script hast du in der Remote Session nicht verfügbar, diese musst du übergeben.

     

    Habe es jetzt so versucht, funktioniert aber leider nicht

     

     

    #Admin-Gruppe berechtigen
    $adminskript = "net localgroup Administratoren $servername-Admin /ADD"
    Invoke-Command -Computer $servername -ScriptBlock {$adminskript}
    
  8. Wieso musst du für die Berechtigungen auf den neuen Server?

    Du musst eine neue Session öffnen und dann die Befehle in dieser Session per Invoke-command ausführen. Enter-pssession ist für eine interaktive Session.

     

    Das würde dann so aussehen ?

     

     

    Invoke-Command -Computer $servername -ScriptBlock {net localgroup remotedesktopbenutzer $admin-gruppe /ADDI}
  9. Hallo zusammen,

     

    ich habe mir ein Skript geschrieben womit ich automatisiert eine VM in unserer VMware Umgebung bereitstelle.

     

    Zuerst werde Vorarbeiten im AD getätigt (Erstellung Computerobjekt, Erstellung Berechtigungsgruppen.

     

    Danach wird die PowerCLI gestartet und die VM per Template ausgerollt und ins AD aufgenommen.

     

    Jetzt zu meinem Problem:

     

    Ich möchte nun, die im AD erstellt Berechtigungsgruppe der lokalen Admin-Gruppe des neuen Servers hinzufügen.

     

    Mit "Enter-PSSession" komme ich zwar ohne weiteres auf denen neuen Server, die weiteren Befehle im Skript werden aber nicht ausgeführt.

     

     

    $servername = "Test-Server"
    $admin-gruppe = "Test-Server-Admin"
     
    Enter-PSSession -$servername
     
    net localgroup remotedesktopbenutzer $admin-gruppe /ADD
     
    

     

    Hat jemand eine Idee für mich, wie ich das via Powershell hinbekomme?

     

    Danke schon einmal

  10. zu 1) Gibt es einen Grund die LAN Karte nicht bereits im Template anzupassen?

    zu 2) Update Manager / bzw. siehe 1)

    Und den RAM kannste du beim deployen doch direkt im Anschluss anpassen.

     

    das template hängt im moment an einem host. da wir pro host distributed switches haben, die alle den hostnamen enthalten, muss man einen Standard-Switch nehmen, da jeder Host einen "Migrations-LAN" Switch hat.

    Dieser soll dann geändert werden.

     

    Ich würde das alles gerne erst nach dem Sysprep machen, damit ich weiß, dass die VM nicht mehr eigenständig durch das Sysprep herunterfährt.

     

    Bei den VMware Tools gebe ich dir recht. Das Template zu aktualisieren ist einfacher.

     

    Den RAM / die CPU könnte ich natürlich auch direkt nach dem ausrollen bearbeiten, bevor die VM startet

  11. Hallo zusammen,

     

    ich bin gerade dabei einSkript zu schreiben um automatisiert Vmware VMs via Template zu deployen.

     

    So lange das Sysprep nicht gelaufen ist, hat die VM noch einen falschen Namen.

     

    Erst wenn der Name korrekt ist, sollen die nächsten Schritte ausgeführt werden.

     

    Also habe ich es mit einer Schleife versucht. Da ich das erste Mal mit Schleifen arbeite, habe ich leider keine Ahnung wo mein Fehler ist.

     

     

    #PowerCLI abfrage des aktuellen Computernamen
    $DNS_Name = get-vm VNTS999 | select @{N="DnsName"; E={$_.ExtensionData.Guest.Hostname}}
     
    #Schleife
    while ($DNS_Name -notlike "*VNTS999") {
    sleep 3
    $DNS_Name = get-vm VNTS999 | select @{N="DnsName"; E={$_.ExtensionData.Guest.Hostname}}
    }
    

     

    Das Skript läuft nicht weiter, auch wenn die VM den korrekten Namen hat.

     

    Da kann mir doch sichr jmd helfen?

  12. Hallo zusammen,

     

    wir sind gerade dabei eine Migration von Daten vorzubereiten.

     

    Dazu würden wir gern ein Powershell-Skript verwenden.

     

    Robocopy läuft bereits und Synchronisiert alle Änderungen

     

    Den Pfad im DFS umstellen klappt auch schon.

     

    Bevor die letzten Synchronisation läuft, sollen alle offnenen Datein geschlossen werden.

     

    Das ganze soll automatisiert geschehen. Sonst müsste man es manuell über die Computerverwaltungm machen.

     

     

    Jemand eine Idee ?

     

     

    Vielen Dank schon einmal

     

     

  13. also den export nach excel hab ich schon einmal hinbekommen.

     

    folgendes fehlt jetzt noch:

     

    -das Worksheet umbenennen

    -eine Zweite Gruppe abfragen und ein neues Worksheet schreiben

     

    Leider bin ich gerade zu b***d, das selber hinzubekommen

     

     

    $excel = New-Object -ComObject Excel.Application
    $excel.Visible = $true
    $workbook = $excel.Workbooks.Add()
    $sheet = $workbook.ActiveSheet
    $counter = 2
    
    $sheet.cells.Item(1,1) = "Username"
    $sheet.cells.Item(1,2) = "Anzeigename"
    
    Get-ADGroupMember Role-CMT-McAfee-Block-USB | Sort | Select SamAccountName, Name |
    
    
    ForEach-Object {
    
        $counter++
    
        $sheet.cells.Item($counter,1) = $_.SamAccountName
    
        $sheet.cells.Item($counter,2) = $_.Name
    
    }
    

    Update. Bin ein ganzes Stück weiter gekommen. Im Endeffekt muss ich die erstellt Datei nur noch speichern

     

     

    cls
    $excel = New-Object -ComObject excel.application
    $excel.visible = $True
    $workbook = $excel.Workbooks.Add()
    $workbook.Worksheets.Add()
    $excel.DisplayAlerts = $False
    $sheet= $workbook.Worksheets.Item(1)
    
    
    #Block-USB
    #Tabelle benennen
    $sheet.Name = 'Block-USB'
    #Tabellenüberschriften setzen
    $sheet.Cells.Item(1,1) = 'Username'
    $sheet.Cells.Item(1,2) = 'Anzeigename'
    
    #Tabelle füllen
    $row = 2
    $column = 1
    Get-ADGroupMember Role-CMT-McAfee-Block-USB | Sort | Select SamAccountName, Name | ForEach {
        #SamAccountName
        $sheet.Cells.Item($row,$column) = $_.SamAccountName
        $column++
        #Name
        $sheet.Cells.Item($row,$column) = $_.Name
        $column++
            #Increment to next Row and reset Column
        $row++
        $column = 1
    }
    
    $usedRange = $sheet.UsedRange                        
    $usedRange.EntireColumn.AutoFit() | Out-Null
    
    
    #Monitor-USB
    
    $sheet= $workbook.Worksheets.Item(2)
    $sheet.Name = 'Monitor-USB'
    
    $sheet.Cells.Item(1,1) = 'Username'
    $sheet.Cells.Item(1,2) = 'Anzeigename'
    
    #Tabelle füllen
    $row = 2
    $column = 1
    Get-ADGroupMember Role-CMT-McAfee-Monitor-USB | Sort | Select SamAccountName, Name | ForEach {
        #SamAccountName
        $sheet.Cells.Item($row,$column) = $_.SamAccountName
        $column++
        #Name
        $sheet.Cells.Item($row,$column) = $_.Name
        $column++
        #Increment to next Row and reset Column
        $row++
        $column = 1
    }
    
    $usedRange = $sheet.UsedRange                        
    $usedRange.EntireColumn.AutoFit() | Out-Null
    
  14. Hi,

     

    du musst dazu mit dem COM Object Excel.Application eine "richtige" XLS erzeugen ($MeineExcelAnwendung = New-Object -COMObject Excel.Application).

    Dann kannst du die CSVs entsprechend in Blatt1 und Blatt2 ausgeben. Oder du schreibst direkt in die XLS ohne den Umweg über CSV.

     

    Gruß

    Jan

     

    direkt in Excel schreiben kann ich natürlich auch.

     

    Was genau muss ich dazu machen?

×
×
  • Neu erstellen...