Jump to content

Kuddel071089

Members
  • Gesamte Inhalte

    559
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von Kuddel071089

  1. Hallo zusammen,

     

    ich habe ein Skript für unseren Verwaltungshost geschrieben, um die Speicherbegrenzung des Homeverzeichnisses eines Anwender zu begrenzen.

     

    Man muss nur die neuen Speichergrenze (als Zahl) eingeben.

     

    Leider bekomme ich es nicht hin, die GB als Format mitzugeben.

     

    
    Invoke-Command -ComputerName $fileserver -ScriptBlock {Set-FSRMQuota -Path $using:homeverzeichnis -Size $quota+"GB"}
    
    

     

    Fehlermeldung

    
    Neue Speichergrenze eingeben (Beispiel 5 GB): 10
    Die Argumenttransformation für den Parameter "Size" kann nicht verarbeitet werden. Der Wert "10+GB" kann nicht in den Typ "System.UInt64" konvertiert
    werden. Fehler: "Die Eingabezeichenfolge hat das falsche Format."
    
    

     

    Hat jemand eine Lösung für mich?

  2. Hallo Nils, das Backup wird mit Windows Boardmitteln (Windows Server Sicherung) erstellt und entsprechend per Boot von Windows DVD wiederhergestellt.

     

    Die Testumgebung läuft einem gesonderten ESX-Host, sodass keine physische Verbindung zum produktiven AD besteht.

     

    Der Weg mit dem Klonen wurde uns von MS selber geraten und als Best Practice verkauft...

  3. Hallo zusammen,

     

    auf unserem primären DC läuft täglich ein BareMetal Backup.

     

    Aus diesem Backup wird unsere Testumgebung per BareMetal Restore erstellt.

     

    Kann man den Restore irgendwie automatisieren, da der Rest der Erstellung der Testumgebung schon per Powershell automatisiert wurde.

     

    Ziel soll es irgendwann einmal sein, dass am WE die Testumgebung neu ausgerollt wird, damit die damit im Test-AD möglichst aktuell gehalten werden.

     

    Hat jemand eine Idee für mich?

     

     

    Vielen Dank schon einmal :-)

  4. Hallo zusammen,

     

    ich bin gerade dabei eine Gruppe im AD zu erstellen, mit der das Daily Doing ausgeführt werden soll, damit man nicht immer mit Domain-Admin Rechten unterwegs ist.

     

    Der Sinn sei mal dahin gestellt, war ne Ansage von oben.

     

    Aktuell versuche ich gerade der Gruppe im DNS die benötigten Rechte zum Erstellen und Löschen von Host-Einträgen zuzuweisen.

     

    Leider habe ich aktuell keine Idee, wie ich das hinbekomme.

     

    Ich habe schon in der DNS Konsole unter Eigenschaften und Sicherheit geschaut, aber wusste dann nicht welche Haken ich setzen muss.

     

    Vllt. kann mir ja jmd weiterhelfen.

     

     

    Vielen Dank schon einmal :-)

  5. Also wäre das dann einmal ein Out-File Befehl mit den Spaltenköpfen und dann in der Schleife selber ein Out-File befehl mit den Infos richtig?

     

     

    So sieht jetzt mein Export aus:

     

    
    Servername;Funktion;Letzte Update Installation - Datum;Letzte Update Installation - Uhrzeit;Neustart nötig;Ausstehende Updates;Betriebssystem;WSUS-AD-Gruppe;Laufzeit;Startdatum;Startzeit;Abfragezeit
    NTS211;xxxxxxxxxxx;18.10.2018;04:09:10;nein;1;Windows Server 2008 R2 Standard;ManInst;5 Tage 5 Stunden 10 Minuten;04:12:55;18.10.2018;09:20
    
    

     

    Leider erkennt Excel diesen Output nicht als Tabelle

     

     

    image.png

  6. Ich hoffe das Skript ist nicht all zu unübersichtlich ^^

     





    
    cls
    $host.ui.RawUI.WindowTitle = "WSUS Auswertung AD ausführlich v0.6"
    
    #Mailvariablen
    $Mailempfaenger= "IB1-MS-Admin@xxxx.de"
    $cc = "xxxx@xxxx.de"
    $smtpserver = "outlook.xxxx.de"
    $absender = "VNTS413@xxxx.de"
    
    #Startzeit für den Mailbody
    $startuhrzeit = Get-Date -Format HH:mm
    
    #Modul zur Updateabfrage importieren
    Import-Module C:\Windows\System32\WindowsPowerShell\v1.0\Modules\PendingUpdates\Get-PendingUpdate.ps1 -Force
    
    $servers = Get-ADComputer -Filter {OperatingSystem -like "Windows Server*" -and Name -notlike "VNTS2*" -and name -notlike "L*" -and Name -like "*NTS*" -or Name -like "VN4*"} | Sort
    
    #Erstellung der Reportdatei für die Mail
    $datum = Get-Date -Format dd.MM.yyyy
    $report = "C:\WSUS_Report_$datum.csv"
    
    #Alte Reports löschen
    if(Test-Path $report) {Remove-Item $report}
    
    
    #$output =
    foreach($server in $servers) {
    #Zurücksetzten der Variablen
    if($funktion) {Remove-Variable -Name funktion}
    if($datum) {Remove-Variable -Name datum}
    if($reboot) {Remove-Variable -Name reboot}
    if($os) {Remove-Variable -Name os}
    if($updates) {Remove-Variable -Name updates}
    
    #Abfrage der Serverinfos
    $serverinfos = Get-ADComputer $($server.Name) -Properties *
    $os = $serverinfos.operatingsystem
    $funktion = $serverinfos.description
    
    #Abfrage der WSUS-Gruppe
    $wsusgruppe = Get-ADComputer $($server.name) -Properties *
    if($wsusgruppe.Memberof -like "*Role-GPO-Server-IB1-WSUS-ManInst*") {$wsusgruppe = "ManInst"}
    if($wsusgruppe.Memberof -like "*Role-GPO-Server-IB1-WSUS-Autoboot-3-Uhr*") {$wsusgruppe = "Autoboot-3-Uhr"}
    if($wsusgruppe.Memberof -like "*Role-GPO-Server-IB1-WSUS-Autoboot-4-Uhr*") {$wsusgruppe = "Autoboot-4-Uhr"}
    if($wsusgruppe.Memberof -like "*Role-GPO-Server-IB1-WSUS-Autoboot-11-Uhr*") {$wsusgruppe = "Autoboot-11-Uhr"}
    if($wsusgruppe.Memberof -like "*Role-GPO-Server-IB1-WSUS-Autoboot-So-3-Uhr*") {$wsusgruppe = "Autoboot-So-3-Uhr"}
    if($wsusgruppe.Memberof -like "*Role-GPO-Server-IB1-WSUS-Default*") {$wsusgruppe = "Default"}
    
    #Aktuelle Uhrzeit
    $abfragezeit = Get-Date -Format HH:mm
    
    
        #Abfragen nur ausführen, wenn der Server erreichbar ist
        if(Test-Connection $($server.Name) -Quiet) {
        ""
        
        Write-Host "+++ $($server.name) / $funktion +++" -ForegroundColor Yellow
        
        
        
        Write-Host "-Abfrage Installatonsdatum letztes Update: " -ForegroundColor Cyan -NoNewline
        #Letzten installatonszeitpuntk abfragen
        #if(Get-WUHistory -ComputerName $($server.Name) -EA SilentlyContinue) {
            $wuabfrage = Get-WUHistory -ComputerName $($server.Name) | Select-Object -first 1
            #Umwandel des Installationszeitpunktes in deutsche Uhrzeit
            $datum = $wuabfrage.Date
    
            if($datum) {    
            #Umwandel des Installationszeitpunktes in deutsche Uhrzeit
            $datum = $wuabfrage.Date
            #2 Stunden rauf rechnen, damit die Auswertung passt
            $date = $datum.ToString("dd.MM.yyyy")
            $uhrzeit =  (get-Date $datum).AddHours(2).ToString("HH:mm:ss")
            Write-Host "OK" -ForegroundColor Green}
            else{$datum = $null}
            #}
    
        Write-Host "-Abfrage Reboot nötig: " -ForegroundColor Cyan -NoNewline
        #Check, ob ein Reboot nötig ist
        if(Get-WURebootStatus -ComputerName $($server.Name) -EA SilentlyContinue) {
            $reboot = Get-WURebootStatus -ComputerName $($server.Name) -Silent
            #Konvertieren des Status
            if($reboot -eq "True") {$reboot = "ja"}
            if($reboot -ne "True") {$reboot = "nein"}
            
            Write-Host "OK" -ForegroundColor Green
          }
        
    
     
    
        Write-Host "-Abfrage ausstehende Updates: " -ForegroundColor Cyan -NoNewline
        
    
    
        #Wenn die Abfrage Get-PendingUpdate nicht funktioniert
            $updates = Invoke-Command -Computer $($server.Name) -ArgumentList $($server.Name) -ScriptBlock {
            $computer = $args[0]
            # Abfrage mit COM-Objekt
            $Searcher = New-Object -ComObject Microsoft.Update.Searcher
            $Criteria = "IsInstalled=0 and Type='Software'"
            $SearchResult = $Searcher.Search($Criteria).Updates
            $SearchResult.Count
            }
    
            Write-Host "OK" -ForegroundColor Green -nonewline
    
    
        #Auslesen der Uptime
        Function Get-Uptime {
            #Nur ausführen, wenn die Uptime ausgelesen werden kann
            if(Get-WmiObject win32_operatingsystem -ErrorAction SilentlyContinue -Computername $($server.Name)) {
                $os = Get-WmiObject win32_operatingsystem -ErrorAction SilentlyContinue -Computername $($server.Name)
                $uptime = (Get-Date) - $os.ConvertToDateTime($os.LastBootUpTime)
                $days = $uptime.Days
                $hours = $uptime.Hours
                $minutes = $uptime.Minutes
                if($days -gt 1 -or $days -eq 0) {$tage = "$days Tage"} else {$tage = "$days Tag"}
                if($hours -gt 1 -or $hours -eq 0) {$stunden = "$hours Stunden"} else {$stunden = "$hours Stunde"}
                if($minutes -gt 1 -or $minutes -eq 0) {$minuten = "$minutes Minuten"} else {$minuten = "$minutes Minute"}
            }
            $uptime = "$tage $stunden $minuten"
            Return $uptime
        }
        $uptime = Get-Uptime
        
    
    
        #Auslesen des Bootdate
        Function Get-Bootdate {
        $os = Get-WmiObject win32_operatingsystem -ErrorAction SilentlyContinue -Computername $($server.Name)
        $bootdate = $os.ConvertToDateTime($os.LastBootUpTime)
        $bootdate = $bootdate.ToString("dd.MM.yyyy")
        Return $bootdate
        }
        $bootdate = Get-Bootdate
        if(!($bootdate)) {$bootdate = $null}
    
        #Auslesen der Bootzeit
        Function Get-Boottime {
        $os = Get-WmiObject win32_operatingsystem -ErrorAction SilentlyContinue -Computername $($server.Name)
        $boottime = $os.ConvertToDateTime($os.LastBootUpTime)
        $boottime = $boottime.ToString("HH:mm:ss")
        Return $boottime
        }
        $boottime = Get-Boottime
        if(!($boottime)) {$boottime = $null}
    
    
        ""
        }
    
        else{
        $date = $null
        $uhrzeit = $null
        $reboot = $null
        $updates = $null
        $uptime = $null
        $boottime = $null
        $bootdate = $null
        }
    
    ""
    $servername = $($server.Name)
    
    New-Object -TypeName PSObject -Property @{
    
            Servername = $servername
            Funktion = $funktion
            LetzteUpdateInstallationDatum = $date
            LetzteUpdateInstallationUhrzeit = $uhrzeit
            Neustartnoetig = $reboot
            AusstehendenUpdates = $updates
            Betriebssystem = $os
            WSUSADGruppe = $wsusgruppe
            Laufzeit = $uptime
            Startdatum = $boottime
            Startzeit = $bootdate
            Abfragezeit = $abfragezeit
            } | Export-CSV -Path $report -notypeinformation -Encoding UTF8 -Append
         
        
    
    }
    
     
    
    #Report versenden
    
    #Endzeit für Mail
    $enduhrzeit = Get-Date -Format HH:mm
    $body = "Startzeit: $startuhrzeit Uhr / Endzeit: $enduhrzeit Uhr"
    
    Send-MailMessage -SmtpServer $smtpserver -to $Mailempfaenger -from $absender -Subject "+++ WSUS: Taeglicher Report  +++" -Attachments $report_mail -body $body
    
    #CSV Datei auf C:\ löschen
    Remove-Item $report
    
    

  7. Hallo zusammen,

     

    ich habe für unsere Server einen kleinen WSUS Report geschrieben der pro Server folgenden Infos abfragt:

     

    Servername

    Funktion

    Letzte Update Installation - Datum

    Letzte Update Installation - Uhrzeit

    Neustart nötig

    Ausstehende Updates

    Betriebssystem

    Laufzeit

    Startdatum

    Startzeit

    Abfragezeit

     

    Die Infos werden jeweils in eine eigene Variable gespeiochert und am Ende der Schleife per Out-File in eine *.csv geschrieben.

     

     

    Jetzt würde ich gern den ganzen Report direkt in eine formatierte CSV-Datei schreiben, so dass man die Datei direkt in Excel und große Formatierung (Text in Saplten) lesen kann.

     

    Wie genau bekomme ich das hin?

     

     

     

    Vielen Dank schon einmal

     

  8. Hallo zusammen,

     

    unser WSUS läuft auf einer Windows Server 2016 VM (4vCPU, 10 GB RAM).

     

    Leider schafft es der WSUS immer wieder in kürzester Zeit, den RAM komplett auszulasten, so dass in der WSUS Konsole die Fehlermeldung "Fehler: Verbinungsfehler" angezeigt wird.

     

    Da hilft dann immer nur "iisreset".

     

    Den Speicher vom IIS Anwendungspool für den WSUS habe ich schon auf 6GB begerenzt, funktioniert aber nicht.

     

    Die Datenbank vom WSUS ist die Windows interne.

     

    hat jemand einen Tipp für mich, wie ich den WSUS wieder nutzen kann?

     

     

    Vielen Dank schon einmal

  9. Hallo zusammen,

     

    unsere Daten liegen auf einem virtuellen Windows 2012 Failover Cluster.

     

    Mir ist gerade aufgefallen, dass die auf dem Volume gesetzten Kontingentgrenzen irgenwie nicht umgesetzt werden.

     

    Mein User hat zum Beispiel eine Grene von 5GB für mein Laufwerk F:\.

     

    1 GB habe ich noch frei und trotzdem kann ich ein komplette WinSRV ISO auf F:\ kopieren.

     

    Des Weiteren wird unter Computer bei freier Speicher nicht der persönlich zugewiesene Speicher angezeigt, sondern der freie Speicher der Disk.

     

    Hat jermand eine Idee woran das liegen kann?

     

    Vielen Dank schon einmal

  10. Hallo zusammen,

     

    seit der Umstellung von Windows 7 auf Windows 10 haben Mitasrbeiter von uns Probleme beim benutzen einer Software.

     

    Als Workaround haben sie einen AD-User bekommen, der auf ihrem Client lokale Admin-Rechte hat.


    Was ein normaler Anwender mit Admin-Rechte auf seinem Client macht, kann man sich ja vorstellen.

     

    Jetzt meine Frage: Kann ich jetzt nur der Anwendung die Probleme mit Benutzerrechten hat, die Admin-Rechte zuweisen?

     

     

    Hat dazu jemand vllt. eine Idee?

  11. DHCP Reservierung:

    
    #IP, MAC Auslesen und statische DHCP Reservierung setzen
            $mac_abfrage = Get-NetworkAdapter -VM $servername | Select MacAddress
            $mac = $($mac_abfrage.MacAddress)
            $mac = $mac.Replace(':','-')
            $ip = Get-DhcpServerv4Reservation -ComputerName DHCP-Server-1 -ClientId $mac -ScopeId 172.17.46.0 -EA SilentlyContinue
            #Warten bis eine IP zugwiesen wurde
            while(!($ip)) {
                sleep 1
                $ip = Get-DhcpServerv4Reservation -ComputerName DHCP-Server-1 -ClientId $mac -ScopeId 172.17.46.0 -EA SilentlyContinue
            }
    
            $ip = $ip.IPAddress
            $ip = $ip.IPAddressToString
            Add-DhcpServerv4Reservation -ScopeId 172.17.46.0 -IPAddress $ip -ClientId $mac -ComputerName DHCP-Server-1 -Name $servername
    
    

  12. Hallo zusammen,

     

    wir testen gerade in unserer VMware Umgebung die Massenausrollung von Windows Servern mit DHCP.

     

    Wenn eine VM ausgerollt wurde, soll die per DHCP zugewiesene IP statisch eingetragen werden.

     

    Das ganze geschiet immer von einem zentralen Terminalserver, auf dem das Ausrollskript gestartet wird.

     

    Wie bekomme ich jetzt also hin, der VM die DHCP IP statisch zuzuwiesen?

     

     

    Vielen Dank schon einmal

     

    EDIT:

    Meine ersten Versuche sehen so aus:

    $servername = "Test3"
    $ip = "172.17.46.22"
    
    $adapter_name = Invoke-Command -ComputerName $servername -ScriptBlock {Get-NetIPInterface | Where-Object {$_.AddressFamily -eq "IPv4" -and $_.InterfaceAlias -notlike "Loopback*"}}
    $adapter_name = $adapter_name.InterfaceAlias
    
    
    Invoke-Command -ComputerName $servername -ScriptBlock {netsh interface ip set address "$using:adapter_name" static $using:ip 255.255.255.0 172.17.46.1}
    
    
    Invoke-Command -ComputerName $servername -ScriptBlock {netsh interface ip add dns "$using:adapter_name" 172.17.35.101}
    Invoke-Command -ComputerName $servername -ScriptBlock {netsh interface ip add dns "$using:adapter_name" 172.17.36.99 index=2}
    Invoke-Command -ComputerName $servername -ScriptBlock {netsh interface ip add dns "$using:adapter_name" 172.17.35.102 index=3}
    
    

     

    Das Eintragen der DNS Server funktioniert, nur beim Setzten der IP bekomme ich immer folgenden Fehler:

    
    Invalid mask parameter (172.17.46.1).
    
    
  13. Hallo zusammen,

     

    ich habe ein Skript geschrieben, um mir die Mitglieder der lokalen Administratiorengruppe anzeigen zu lassen.

     

    Auf Windows Server 2012 (Powershell 5.0.10586.117) funktioniert folgender Befehl

    
    get-localgroupmember -Computername Test-Server -Name Administratoren
    
    

     

    Wenn ich den gleichen Befehl jetzt auf Windows Server 2016 ausführe, kann "-Computername" nicht mehr interpretiert werden.

     

    Kennt jemand das Problem?

     

     

    Vielen Dank schon einmal

×
×
  • Neu erstellen...