Jump to content

Kuddel071089

Members
  • Gesamte Inhalte

    559
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von Kuddel071089

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

    $mailbody = "C:\testbody.txt"
     
    "Servername:    $servername"  | Out-File -FilePath $mailbody -Append
    
    "Funktion:         $funktion"  | Out-File -FilePath $mailbody -Append
    
    "IP:                    $ip" | Out-File -FilePath $mailbody -Append
     
    $body= Get-Content C:\testbody.txt
    
    Send-MailMessage -SmtpServer $smtpserver -to $Mailempfaenger -from "VNTS400@xxxx.de" -Subject "+++ $servername - $funktion erfolgreich ausgerollt +++" -Body $body
    

    In der TXT sieht es so aus:

    "Servername:    Server1
    
    "Funktion:      Test-Server
    
    "IP:            192.168.1.8
    

    Nach dem Versand der Mail sieht der Body so aus:

    "Servername:          Server1
    
    "Funktion:                  Test-Server
    
    "IP:               192.168.1.8
    

    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

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

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

     

     

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

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

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

     

     

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

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

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

     

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

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

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

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

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

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

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

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

×
×
  • Neu erstellen...