Jump to content

ramsess

Members
  • Gesamte Inhalte

    15
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von ramsess

  1. Guten Morgen, ok das hat prinzipell funktioniert. Jetzt muss ich nur noch eine Abbruch Bedingung einbauen falls die OID noch nicht vergeben ist. Unter der Inovke Anweisung muss wohl noch sowas wie eine Errorlevel Abfrage für die Varialbe $oid damit man nicht solche wilde Fehlermeldungen ausgespuckt bekommt: Invoke-NaSnmpGet : Invalid Object Identifier : .1.3.6.1.4.1.789.1.5.4.1.2.120. At C:\tmp\netapp_volume_NAPP02.ps1:38 char:1 + Invoke-NaSnmpGet -OID $oid | Export-Csv -NoTypeInformation -UseCulture -Append ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (IP:NaController) [Invoke-NaSnmpGet], EONTAPI_EINVAL + FullyQualifiedErrorId : ApiException,DataONTAP.PowerShell.SDK.Cmdlets.Snmp.InvokeNaSnmpGet Eine Ausgabe der oid hinter dem Namen des vFilers für die bessere Orinierung innerhalb der Datei wäre auch nicht schlecht. Sobald ich mir dazu was hab einfallen lassen würde ich das noch der Vollständigkeit halber posten. Die eigentliche Frage ist erstmal geklärt. Danke Jan Gruss ramsess
  2. Hi Jan, Danke für den Input - ich werde es morgen mal ausprobieren und berichte dann. Gruss ramsess
  3. Guten Morgen, ich will die Dokumentation von vFilern der NetApp automatisieren. Die Anmeldung an dem Controller ist mit den cmd-templates von NetApp realisiert und für die Abfrage einer einzelnen OID wird Net-SNMP genutzt. Die Powershell Version ist 3.0. Um nicht eine unübersichtliche Datei mit OIDs wie mit Invoke-NaSnmpWalk zu bekommen soll dieser Befehl Invoke-NaSnmpGet -OID .1.3.6.1.4.1.789.1.5.4.1.2.x. | Export-Csv -NoTypeInformation -UseCulture -Path C:\Tmp\report\NAP01-vfiler.csv benutzt werden (das x ist durch eine Zahl von 1 bis 200 zu ersetzen). Der Befehl einzeln ausgeführt funktioniert auch. Um alle erstellten vFiler in einer Datei zu speichern wollte ich das ganze in eine Schleife packen, die Ausgabe in ein Array ablegen und dann in eine csv Datei schreiben. Mein Überlegung sieht dazu so aus: $i = 1. $id = .1.3.6.1.4.1.789.1.5.4.1.2. do { $oid = "$id" + "$i" $oidInvoke-NaSnmpGet -OID $oid | Export-Csv -NoTypeInformation -UseCulture -Path C:\Tmp\report\NAP01-vfiler.csv $i++ } while ($i -le 5) Wenn ich mir die Variable $id jedoch ausgeben lasse werden mir die 5 Durchläufe als Zahl ausgegeben. Mein erstes Problem besteht also in der Zusammensetzung der Varialbe $oid. In einem anderem Script führe ich zwei Variablen genau so zusammen, was also mache ich falsch? Mein zweites Problem ist, die Frage ob ich mit dem Befehl wirklich ein Array erzeuge das nachdem es gefüllt wurde in die Datei geschrieben wird. In der Bord Suche konnte ich dazu leider nichts zu OIDs in zusammenhang mit do while Schleifen finden und auch Googel brachte keine verwetbaren Suchergebnise. Oder ich habe falsch gesucht - sollte man ja nicht ausschließen. Vielleicht hat jemand eine Idee? Gruß ramsess
  4. Mal sehen was ich da bis morgen noch machen kann. Danke erst mal für die Hilfe.
  5. OK dann baue ich das ganze mal um und melde mich danach noch mal ob es funktioniert hat. Update Wenn ich das ganze richtig verstehe ist invoke-WebRequest für die Powershell ab Version 3 verfügbar. Wir haben die Version 2 im Einsatz und das kann nicht geändert werden. Ebensowenig kann keine aktuelle Version .Net eingespielt werden. Derzeit setzen wir version 3.0 ein. Soweit ich das sehe sind in dieser Konstallation der Einsatz Invoke-WebRequest bzw. dem WEB Client über dotNet nicht möglich. Oder sehe ich das falsch?
  6. Wie müsste ich das machen? Und wie übergehe ich dann ein Zertifikatsfehler?
  7. Hallo Dukel, Danke für Deine Antwort. Um Deine Frage zu beantworten muss ich etwas ausholen. Ziel des Scripts ist es, Citrix Server beim Start in die Überwachung automatisch zu übernehmen. Als Überwachung wird Naigios (SM-BOX falls das jemand kennt) eingesetzt. Diese ist über die REST Schnittstelle bedienbar indem man im IE eine URL aufruft. Ein Aufruf über einen anderen Webbrowser ist nach meiner Kenntnis nicht möglich. Die URL sieht wie folgt aus: https://IP-Naigos/REST/nagios/addhost/apikey/useridentifer/host_name/$name/address/$ip/template/template-name Die statischen Werte iiegen in Variablen die ich hier jetzt nicht aufgeführt habe. Das zusammenbauen der URL soll dynamisch erfolgen unabhängig auf welchem Host das Script ausgeführt wird, indem der Hostname und die IP ausgelesen werden und in eine Variable geschrieben wird. Mit der Übergabe der URL und dem Übergehen der Zertifikatsabfrage wird der Eintrag vorgenommen. Als Rückgabe wird eine xml Datei geliefert die ausgewertet werden soll um ein Log zu schreiben ob alles geklappt hat. Die Rückgabe sieht wie folgt aus: <statusObject> <stautsCode>0</statusCode> <message>ok</message> </statusObject> Wie gesagt bis zu diesem Punkt habe ich das ganze fertig. Meine Überlegung ist es den Wert <message> auszuwerten und das Ergebnis in ein Log zu schrieben, damit ein Admin nachvollziehen kann ob der Eintrag erfolgt ist. Eine andere Möglichkeit zur Auswertung als speichern der Datei habe ich bisher nicht gefunden. Man kann natürlich auch ohne dem Log das ganze schon benutzen – aber wenn die REST Schnittstelle einen Fehler liefert sehe ich das nur dann wenn ich das Script persönlich ausführe. Ziel ist es aber das ganze automatisch ohne Zutun eines Admins laufen zu lassen. In der weiteren Überlegung soll vorab geprüft werden ob der Server bereits in Nagios erfasst ist und gegebenenfalls automatisch das Skript ohne Abarbeitung beenden. Eine IF Abfrage und dem Ersetzen von addhost durch gethost/$name sollte dieses Problem dann lösen. Aber auch hier muss ich die zugegebene xml Datei auswerten. Gibt es Deiner Meinung nach einen anderen Weg das Problem zu lösen? Gruß r.
  8. Hallo zusammen, ich habe folgendes Problem. Für das weiter Verarbeiten muss ich eine über die Powershell im IE aufgerufen zusammengebaute ssl verschlüsselten URL die angezeigte XML Datei speichern. Mein Script baut die URL korrekt zusammen, die SSL Warnung wird übergangen. Aber ich kann die Seite nicht abspeichern. Das funktionieren Script sieht so aus: $ie = New-Object -ComObject InternetExplorer.Application $ie.Visible = $true $ie.Navigate($url1 + $name + $url2 + $ip + $url3) while( $ie.busy){Start-Sleep 1} $secLink = $ie.Document.getElementsByTagName('A') | Where-Object {$_.innerText -eq 'Laden dieser Website fortsetzen (nicht empfohlen).'} $secLink.click() Hat jemand eine Idee - ich stecke an dieser Stelle schlichtweg fest. Schon mal Danke im Voraus. Gruss r.
  9. @Dukel Gute Frage das mit der Kontrolle :\ Aber eigentlich hast Du recht - Ich stelle mich mal auf die Hinterbeine vielleicht hilft es ja was. Erstmal Danke - wenn ich nicht weiter komme, würde ich noch einmal neu fragen. Gruß ramses ( s)
  10. Meine Chefs wollen es nachvollziebar (per Log) haben wer wann welches Script signiert haben. Frei nach dem Motto: "Vertrauen ist gut, ABER ICH (der Chef) HAB EUCH IM AUGE". Gruss Ramses ( s)
  11. Hallo, nachdem ich mein Problem des signieren von Scripten hier gelöst wurde, hoffe ich auf Input für ein weiteres Problem das ich habe. Die Aufgabe ist, das nur berechtigte User PS Scripte signieren dürfen. Meine Überlegung war dazu, das ganze über das AD zu steuern, durch Eingabe von Username / Password / Domäne. Ich habe die möglichen Funktionen zum administrieren der Domäne durchforstet, aber keinen wirklichen Lösungsansatz dafür zu finden. Meine Überlegungen sehen bisher wie folgt aus: Function ADCredentials { Param($username, $password, $domain) Add-Type -AssemblyName System.DirectoryServices.AccountManagement $ct = [system.DirectoryServices.AccountManagement.ContextType]::Domain $pc = New-Object System.DirectoryServices.AccountManagement.PrincipalContext($ct, $domain) New-Object PSObject -Property @{ UserName = $username; IsValid = $pc.ValidateCredentials($username, $password).ToString() } } Das Scipt selbst wirft keinen Fehler aus. Aber wie zur Hölle kann ich die Variablen über eine GUI füllen? :confused: In meiner Verzweiflung habe ich versucht erstmal eine Messagebox zu kreieren. $result = [windows.forms.messagebox]::Show("Bitte kontrollieren Sie ob Ihr Script signiert wurde.","Kopfzeile") Offensichtlich habe ich da eine Entlosschleife gebaut. Diese Zeile bringt keine Fehlermeldung oder die erhoffte Messagebox. Ich muss es per Hand abwürgen. Hat jemand dazu vielleicht eine Idee? VG Ramses ( s)
  12. Hi, ich habe jetzt noch mal versucht das ganze nachzuvollziehen. @tesso Die Fehlermeldung bei einem falschen Pfad für das Zertifikat lautet: Set-AuthenticodeSignature: Das Argument kann nicht an den Parameter "Certificate" gebunden werden, da es NULL ist. @olc Ich habe es hin bekommen mit folgenden Befehlen: $cert = Get-ChildItem cert:\CurrentUser\My –codesigning Set-AuthenticodeSignature C:\scripts\my-test.ps1 $cert Die Groß- Kleinschreibung ist bei der Pfad Angabe zu beachten. Das war´s dann :) Danke an alle die drüber nachgedacht haben (insbesondere an olc) VG ramses ( s)
  13. Hi olc, ja ist möglich - ich habe mal mit echo $zertifikate mir angeschaut was darin steckt. soweit ich das verstehe liegt dort auch das root zertifikat. ist dies ein problem? vg ramses ( s)
  14. In der Anleitung steht diese Befehlsfolge. Wenn es so ausgeführt wird, ist die Fehlermeldung ähnlich. Nach ein wenig Suchen ist es schon aufgefallen das dort ein "E" fehlt. ;) Mit dem korrektem Namen der Variable wird die von mir aufgeführte Fehlermeldung ausgegeben. ramses( s)
  15. Hi @ll, meine Aufgabenstellung von meinem Chef ist ganz einfach: - alle Powershell Scripte dürfen nur im "Set-ExecutionPolicy allsigned" ausführbar sein - Hört sich einfach an und ich habe auch relativ schnell diese Link gefunden. Aber irgendwie komme ich da nicht weiter. Eckdaten die mir wichtig erscheinen Das AD ist ein W2K8 R2 mit einem eigenem Lizenzserver der das Root Zertifikat unter anderem hält. Dort habe ich eine Codesignatur Zertifikat ausgestellt und es auf einem Testclient entsprechend der Anleitung angefordert. Das erstellte Script kann ich aber nicht so wie in der Anleitung dargestellt signieren (auch wenn ich die angeführte Variable $zertifikat in $zertifikate abändere). Nach dem Befehl: $zertifikate=dir cert:\ -recurse –codesign habe ich mit einem echo $zertifikate an der Konsole das gewünschte Zertifikat gesehen. Trozdem spuckt mir der nachfolgende Befehl Set-AuthenticodeSignature C:\powershell\Signaturtest.ps1 $zertifikat die Fehlermeldung Set-AuthenticodeSignature : "System.Object[]" kann nicht in den Typ "System.Sicurity.Cryptography.X509certificates.X509Certificate2" konvertiert werden, der für den Parameter "Certificate" erorderlich ist. Die angegebene Methode wird nicht unterstützt. Bei Zeile:1 Zeichen:26 aus. Und jetzt bin ich auch nach intensiver Suche mit meinem Latein am ende. :confused: Hat jemand das Problem schon mal gehabt oder ist mein Vorgehen komplett falsch? Gruß Ramses( s)
×
×
  • Neu erstellen...