Kuddel071089
-
Gesamte Inhalte
559 -
Registriert seit
-
Letzter Besuch
Beiträge erstellt von Kuddel071089
-
-
Du schreibst eine formatierte Liste nach $role. Lass doch mal "|FL" weg.
super, das wars.
ich war irretiert, weil ohne das | FL der Wert Entity nicht angezigt wurde
-
und du willst das ganze objekt in ein Tabellenfeld packen?
Ich würde mal schauen was $role für eigenschaften hat. gibts da eventuell $role.name oder so?
$role hat komischerweise keine EIgenschaften.
Wenn ich die Abfrage ein wenig verändere:
$roles = Get-VIPermission -Principal "XXXX-AD\Role-XXXX-VMware-Linux*" | FL
Eigentlich hätte ich jetzt vermutet, dass ich $role.Entity ausgeben kann, aber leider kommt keine Ausgabe.
-
Könnte .ToString() die Lösung sein? Was ist denn $role für ein Datentyp?
$role enthält namen von Objekten in VMware wie zb. virtuelle Switche oder Ordnern
-
Hallo zusammen,
ich baue gerade eine Excel Datei zur Auswewtung von Berechtigungen in VMware durch Powershell.
Dazu werden bestimmte Gruppen abgefragt und in festgelegte Spalten geschrieben.
Hierbei komme ich gerade nicht weiter:
Berechtigungen auf Objekte in VMware #Abfrage $roles = Get-VIPermission -Principal "XXXX-AD\Role-XXXX-VMware-Linux*" | Sort | Select Entity | FT -AutoSize -HideTableHeaders #Ab welcher Zeile sollen die Infos einfügt werden $row = 7 #In welche Spalte sollen die Infos eingefügt werden $column = 6 ForEach ($role in $roles){ $role $sheet.Cells.Item($row,$column) = $role $column++ #Increment to next Row and reset Column $row++ $column = 6 }
Die Variable $role wird zum Test korrekt in der Schleife ausgegeben, nur leider nicht in die Exceltabelle geschrieben.
Fehlemeldung
Ausnahme von HRESULT: 0x800A03EC In \\xxxPfad_zum_Skriptxxx\VMWare_Berechtigungen_ abfragen_Excel_v0.3.ps1:212 Zeichen:5 + $sheet.Cells.Item($row,$column) = $role + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OperationStopped: (:) [], COMException + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
Kennt sich jemand vllt. damit besser aus als ich ?
Die Abfrage von Gruppenmitglieder ging auch ohne Probleme...
Vielen Dank schon einmal
-
Was willst du denn "forcen"? Ein Startup-Script welches beim Hochfahren des Computers z.B. "echo %time% %date% >> C:\Laufzeiten.txt" oder eben beim Runterfahren macht.
Achso, da habe ich dich falsch verstanden. Ja okay, das wäre auch noch eine Möglichkeit, aber an sich kann ich mit meiner Abfrage schon arbeiten
-
CimInstanze ist neuer. Evtl. hilft eine neue Powershell Version auf den alten Systemen oder du nimmst Get-WMIObject.
Mit folgendem Befehl bekomme ich auch bei 2008er Servern ein vernünftiges Ergebnis
Get-WmiObject win32_operatingsystem | select csname, @{LABEL=’LastBootUpTime’ ;EXPRESSION={$_.ConverttoDateTime($_.lastbootuptime)}}
An sich ist das Ergebnis schonmal nicht schlecht. Hier einmal das Ganze Skript:
cls $host.ui.RawUI.WindowTitle = "Laufzet v0.2" $servers = Get-ADComputer -filter {Name -like "*NTS*"} -Properties * | Sort "Servername;Startzeitpunkt;Beschreibung;Betriesbsystem" | Out-File C:\Laufzeiten.csv "" | Out-File C:\Laufzeiten.csv -Append foreach($server in $servers){ #$bootzeit = Get-WmiObject win32_operatingsystem -ComputerName $server.Name | select csname, @{LABEL='LastBootUpTime’ ;EXPRESSION={$_.ConverttoDateTime($_.lastbootuptime)}} -EA SilentlyContinue $zeit = Get-WmiObject win32_operatingsystem -ComputerName $server.Name | select @{LABEL='LastBootUpTime’ ;EXPRESSION={$_.ConverttoDateTime($_.lastbootuptime)}} -EA SilentlyContinue $name = $($server.name) $beschreibung = $($server.Description) $bootzeit = $($zeit.LastBootUpTime) $os = $($server.OperatingSystem) if($bootzeit -ne $null) { "$name;$bootzeit;$beschreibung;$os" | Out-File C:\Laufzeiten.csv -Append } else{ "$name;ABFRAGE NICHT MÖGLICH ;$beschreibung;$os" | Out-File C:\Laufzeiten.csv -Append } }
Das einzige was mich jetzt noch stört, ist das ANzeigeformat des Datums. Mit deim reinen "Get-WmiObjcet" Befehl, bekomme ich das Datum immer im deutschen Format angezeigt.
In meiner CSV-Datei ist es allerdings mal deutsch mal englisch, unabhänging vom Betriebssystem.
Kann mir da jemand helfen ?
-
Eine GPO mit einem Computer-Shutdown-Script oder andersrum mit einem Start-Script?
Aber ein entsprechendes Monitoring wäre wohl sinnvoller.
Forced-Shutdown ist keine Option, da die Serververantwortlichen meist besser entscheiden können, wann eine Downtime möglich ist.
Ich habe es auch mit fogendem Befehl versucht:
Invoke-Command -ComputerName $server -ScriptBlock {systeminfo | find "Systemstartzeit"}
Funktioniert leider auch nicht
-
Wenn Windows Updates einen reboot benötigen, kannst du das afair auch direkt abfragen, der Windows Update Agent meldet dann reboot pending.
Bei uns gibts es viele Server, die durch Serververantwortliche gebootet werden.
Dieser Check soll nur der Prüfung dienen, ob die Server auch wirklich gebootet wurden
-
Hallo zusammen,
ich bin gerade dabei ein SKript zu schreiben, welches mir von allen Server die Laufzeit ausgeben soll.
Zwecks Windows Updates kann man dann sehen, ob die Server schon neugestartet sind.
Mit Servern ab 2012 funktioniert meine Abfrage fehlerfrei, nur alles was älter ist (2008 / 2008R2) scheint nicht mit der Abfrage klar zu kommen:
$servers = Get-ADComputer -filter {Name -like "*NTS*"} -Properties * | Sort "Servername;Beschreibung;Startzeit;Betriesbsystem" | Out-File C:\Laufzeiten.csv "" | Out-File C:\Laufzeiten.csv -Append foreach($server in $servers){ $bootzeit = Get-CimInstance Win32_OperatingSystem -Property LastBootUpTime -ComputerName $($server.name) -EA SilentlyContinue | Select LastBootUpTime $name = $($server.name) $beschreibung = ($server.Description) $bootzeit = $($bootzeit.LastBootUpTime) $os = $($server.OperatingSystem) "$name;$beschreibung;$bootzeit;$os" | Out-File C:\Laufzeiten.csv -Append }
Jemand eine Idee, wie ich eine Abfrage für alle Server hinbekomme?
Danke schon einmal
-
Hallo zusammen,
gibt es eine Möglichkeit alle Gruppen im AD anzeigen zu lassen, die keine NNTS Berechtigungen im FileCluster haben.
Beispiel:
Das Verzeichnis "Personal" wurde gelöscht. Der Admin hat aber Vergessen, die Gruppen "Personal-R" und "Personal-RW" zu löschen. Somit sind die Gruppen überflüssig. Die Auswertung müsste dann "Personal-R" und "Personal-RW" auflisten
Oder gibt es dazu vllt. Freeware Tools ?
Vielen Dank schon einmal
-
Moin,
sind die "Apps" denn überhaupt so dynamisch, dass man DFS-R braucht? Normalerweise tut es robocopy in solchen Situationen auch.
Sind die Dateitypen evtl. von der Replikation ausgeschlossen? DFS-R ist ja eigentlich für ganz andere Zwecke gedacht.
Gruß, Nils
In unseren Augen reicht Robocopy, da der eine Server immer als Primärer Server genutzt wird und der andere nur im Falle eines Ausfalls.
DFSr sollten wir nur auf WUnsch des Kunden verwenden, bzw. konnten ihm das nicht ausreden.
Um die komplexität aufzulösen, wäre es uns Admins eh lieber, den Syn per Robocopy zu machen.
Kann ich die DFSr-Gruppe ohne weiteres löschen oder muss ich etwas beachten, vorallem was den DFS Ordner angeht
-
Hallo zusammen,
ich habe aktuell Probleme mit zwei Server und DFS.
auf beiden Servern gibts es ein Verzeichnis D:\Apps.
Dieser Verzeichnis ist im DFS als Ziel im Ordner "Apps" eingestellt.
Damit auf beiden Server immer die gleichen Daten liegen, wurde für den DFS Ordner "Apps" die Replikationsgruppe "Apps" angelegt.
DIe Diagnoseberichte zeigen keine Fehler an.
Gesynct wird trotzdem nichts. Ich habe gerade nicht wirklich einen Ansatz, wie ich das Problem angehen soll.
Kann man die Repl-Gruppe löschen und neu erstellen, ohne dass der DFS Ordner davon irgendetwas mitbekommt?
Danke schon einmal für eure Hilfe
-
Moin,
in der PowerShell arbeitest du mit Objekten. Die meisten Cmdlets erwarten auch Objekte, daher solltest du ihnen keine einzelnen Attribute übergeben. In der ersten Zeile also das "Select sAMAccountName" weglassen.
Außerdem solltest du in deiner Schleife die Objekte noch filtern. Gruppen können nicht nur User als Mitglieder haben, sondern auch andere Gruppen. Da dein Kommando dann nur User auflösen kann, darfst du auch nur User übergeben.
Und das zweite Sortieren ist unnütz, es gibt an der Stelle nur ein Objekt, also nichts zu sortieren.
Dieser Code sollte erreichen, was du willst:
$vmadmins = Get-ADGroupMember 'VMware-Administratoren' | Sort SamAccountName foreach($vmadmin in $vmadmins){ if ($vmadmin.objectClass -eq 'user') { Get-ADUser $vmadmin -Properties * | Select sAMAccountName, Enabled, @{Name="ExpiryDate";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}} } }
Gruß, Nils
Moin Nils,
ich habe es jetzt per CSV-Export hinbekommen. Es werden nur User (danke für deinen Hinweis) in eine CSV geschrieben. welche am Ende wieder gelöscht wird
-
Hallo zusammen,
ich bin gerade dabei eine Auswertung per Powershell zu erstellen.
Dazu möchte ich die Mitglieder diverser Gruppen auflisten und dann dazu noch ein paar Infos der einzelnen User, wie z.B. Enabled oder Ablaufdatum.
Meine erste Abfrage ist daher:
$vmadmins = Get-ADGroupMember VMware-Administratoren | Sort | Select SamAccountName
Jetzt möchte ich mir noch ein Paar Infos zu den Usern holen:
foreach($vmadmin in $vmadmins){ Get-ADUser $vmadmin.SamAccountName -Properties * | Select Enabled, @{Name="ExpiryDate";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}} | Sort }
Ich glaube das Problem ist beim Speichern in der Variable, da die User einfach in dieser Form abgespeichert werden:
Admin-XYZ Admin-ZXY Admin-123 Admin-321
Kann mir jemand bei meinem Problem helfen?
-
Noch ein Tipp:
Installiere den Server zumindest aus Securitysicht (Patches, Security-Policies, Virenscanner, etc.) komplett fertig in einer abgeschotteten Umgebung. Erst dann schieb ihn ins Produktionsnetz und haenge ihn dort mit deinem Skript in die Domäne.
Nicht wie oben geschrieben, die 'restlichen Installationen' erst nach dem Join
Blub
ja so wird es bereits gemacht. der server wird erst nach installiton aller updates ins produktionsnetz gehängt und dann entsprechende software installiert
-
Meine Lösung sieht jetzt so aus:
$installip = "172.15.2.7" $domain = "xxxxx.local" $username = $env:USERNAME $servername = Read-Host #teporären DNS Eintrag setzen Invoke-Command -ComputerName DC1 -ScriptBlock {Add-DnsServerResourceRecord –ZoneName xxxx.local –A –Name $using:servername –IPv4Address $using:installip} Invoke-Command -ComputerName DC1 -ScriptBlock {Get-DnsServerResourceRecord -ZoneName xxxx.local -Name $using:servername} ipconfig /flushdns Add-Computer -ComputerName $servername -LocalCredential $servername\Administrator -DomainName $domain -Credential $domain\$username -Force -Restart #temporärer DNS-Eintrag entfernen Invoke-Command -ComputerName DC1 -ScriptBlock {Remove-DnsServerResourceRecord -ZoneName xxxx.local -RRType "A" -Name $using:servername -Confirm:$false}
-
Moin,
der Parameter heißt "ComputerName", er ist vermutlich nicht für IP-Adressen vorgesehen. Er erwartet den Namen des Rechners, der ins AD aufgenommen werden soll.
Da du das Skript allerdings wohl auch auf dem Rechner ausführst, der gerade installiert wurde, kannst du den Parameter auch einfach weglassen, denn der lokale Computer wird als Standard genommen.
Das ist natürlich auch eine Aussage, mit der man wenig anfangen kann ... versetz dich mal in die Rolle eines Supporters, was fragt der wohl als nächstes? ;)
Gruß, Nils
Geplant war, dass Skript auf von einem zentralen Server aus zu starten, da im Anschluss nach dem Reebot mit dem gleichen Skript direkt die Zugriffsgruppen auf dem Server berechtigt werden sollen.
Also sehe ich das richtig, dass ich im Skript für den Server einen DNS-Eintrtag setze, der auf die Install-IP zeigt, welchen ich dann am Ende wieder entferne ?
Bei der "Fehlerbeschreibung" gebe ich dir natürlich recht. Sehr aussagekräftig ^^. Sorry dafür.
-
Hallo zusammen,
ich habe mir ein Skript geschrieben, um neu installiert Server automatisch in die AD zu heben.
Da die Server bis zur endgültigen Inbetriebnahme aber eine Installations-IP haben, scheint das nicht so ganz zu funktionieren.
Der AD-Join über die IP will nicht so recht und ein DNS Eintrag ist noch nicht gesetzt:
$installip = "172.15.2.7" $domain = "xxxxx.local" $username = $env:USERNAME Add-Computer -ComputerName $installip -LocalCredential $servername\Administrator -DomainName $domain -Credential $domain\$username -Force -Restart
Kann es sein, dass ich für den Server erst einen DNS Eintrag setzen muss und dann "Add-Computer -$servername" nehmen muss?
Danke schon einmal für die Hilfe
-
machst [int]$vm = Read-Host..., dann wird's als Integerzahl interpretiert.
Perferkt. Funktioniert
-
Hallo zusammen,
ich versuche gerade mit Powershell zu rechnen, aber irgendwie klappt das nicht.
Write-Host "Größe der VM: " -NoNewline $vm = Read-Host $reserve = 400 $gesamt = $vm + $reserve Write-Host "$gesamt"
Das Ergebnis soll 420 sein, es kommt aber 20400 raus. Was mache falsch ?
Gruß Kuddel
-
Ihr nutzt Provisioning vom Hersteller, installiert aber dann tagelang Updates manuell? Irgendwas passt hier nicht zusammen..
Sprich bei HP Hardware installiert man die Sicherheitsupdates für Windows über das Intelligent Provisioning oder wie ?
Wir haben die Updates bisher immer über das OS installiert
-
Log liefere ich gleich.
Ja ich musste ein Inplace Upgrade machen, da DomainLevel bereits auf 2012 angehoben wurde und der DC somit verpflichtend auf Windows Server 2012 laufen muss
-
Hallo zusammen,
immer wenn ich auf einem unserer Domain Controller Sicherheitsupdates einspielen will, muss ich feststellen, dass sich ca. jedes dritte Update nicht installieren lässt.
Somit muss ich jedes Updates einzeln installieren, was schlichtweg nervig ist.
Der Server an sich ist ein HP ProLiant DL360 G7.
Da die G7 Serie von HP in ihrer Installationsroutine (Intelligent Provisioning) kein Server 2012 unterstüzt, musste erst Server 2008R2 installiert werden um Windows Server 2012 zu insallieren. Mehr als unschön, aber ging nicht anders.
Hat jemand einen Tipp für mich was ich da machen kann ?
Bin es langsam leit, 2 Tage an einem Sever zu sitzen.
Danke schon einmal
-
Hallo zusammen,
bei unseren Usern und Gruppen ist im Beschreibungsfeld immer vermerkt, wann der User erstellt wurde, wer ihne erstellt hat und durch welches Ticket.
Da dies nicht immer einheitlich ist (Beispiel: mal 01.01.15 aber auch 15.01.2015) würde ich dies gern vereinheitlichen.
Sofern sich im Beschreibungsfeld nur eine Zeile befindet, bekomme ich das ersetzen via CSV-Export und Import hin, sofern ich irgendwie nach Usern mit nur einer Beschreibungszeile filtern kann.
Das größter Problem ist für mich aber, wie ich die zweite zeile bearbeiten kann, da der Export ein Fließtext ist.
Ist-Zustand:
10.10.15/XY/REQ-2015-12345 (User erstellt) oder 11.10.2015/YX/-SR-2015-65481(User erstellt) 02.02.16/ZZ/REQ-2016-12354 (Mail Account hinzugefügt)
Soll:
10.10.15/XY/REQ-2015-12345 (User erstellt) 11.10.15/YX/REQ-2015-65481 (User erstellt) 02.02.16/ZZ/REQ-2016-12354 (Mail Account hinzugefügt)
Ich hoffe ihr versteht was ich meine.
Danke schon einmal für die Hilfe
PS: SenMailMessage -> Body Formatierung fehlerhaft
in Windows Server Forum
Geschrieben
Halle zusammen,
ich habe ein Skript erstellt, um virtuelle Server auszurollen.
Am ende werden alle wichtigen Infos der neuen VM in eine *.txt geschrieben und dann als Mail verschickt.
Die TXT-Datei selber sieht korrekt aus, nur der Mail Body nicht.
So sieht das ganze aus im Skript aus:
In der TXT sieht es so aus:
Nach dem Versand der Mail sieht der Body so aus:
Leider wird die Formatierung irgendwie nicht umgesetzt. in der TXT selber wurden Leerzeichen verwendet, um die Daten besser lesen zu können.
Kennt jemand dieses Problem oder kann mir einen Tipp geben, wie ich einen vernünftigen Mailbody erstellen kann?
Vielen Dank schon einmal