Kuddel071089
-
Gesamte Inhalte
559 -
Registriert seit
-
Letzter Besuch
Beiträge erstellt von Kuddel071089
-
-
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?
-
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...
-
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
-
Die Gruppe DNS-Admins hat denke ich mehr Berechtigungen als benötigt.
Somit wärde das auch nur ein Notlösung -
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
-
Ich habe jetzt zwei fast perfekt Lösungen hinbekommen:
1. In die erste Zeile sep=: schreiben
oder
2. Statt Semikolon einen Tabstop als Trennzeichen verwenden.
Ecel öffnet die Datei und erkennt die eizelnen Spalten.
Leider sind die Spalten alle gleich klein, so dass die Spaltenköpfe nicht alle lesbar sind.
-
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
-
Hallo Nils,
der Bereich mit dem CSV Export im Skript ist nur ein Test, der nicht funktioniert.
Die Spalten werden durcheinander geworfen, also der Servername ist nicht mehr die erste Spalte und Excel erkennt das Format nicht.
-
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
-
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
-
Das Update ist nicht installiert und kann auch nicht installiert werden, weil die 2016er Version angeblich nicht geeignet ist
-
Ein wenig ist das Verhalten besser geworden, aber nach spätestens 30 Min, hat die Konsole wieder die Verbindung verloren
-
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
-
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
-
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?
-
Das vCenter selber hat wohl eine Erweitergun für sowas, den vCenter Orchestrator. Aber wir haben da keine Lizenz für und auch noch keine Ahnung von.
Daher dieser weg über Powershell.Ein Tool für den gesamten Prozess wäre toll, aber ist mal wieder zu teuer ^^
-
vor 1 Minute schrieb tesso:
Ok, das war als nicht das gesamte Skript.
Das gesamte Skript hat 1200 Zeilen. Die wollte ich dann doch nicht alle posten ^^
-
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
-
Habe den Fehler doch gefunden.
Mein eben gepostets Skript funktioniert doch... -
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).
-
Hab mir das Modul vom 2012er Server kopiert und importiert.
jetzt funktioniert mein Skript wieder
-
-
Hallo tesso,
ja das Skript habe ich auch schon gesehen.
In Meiner Auswertung wird das Skript aber nicht importiert der so.
Naja wie dem auch sei.
Wie muss ich das Skript in meine Auswertung einbauen, dass ich nicht die ganze Auswertung umbauen muss?
-
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
PS: Set-FSRMQuota mit Variable
in Windows Forum — Scripting
Geschrieben
Leider nein, Fehlermeldung bleibt die gleiche