Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Powershell Import-CSV

Mitglied: derhoeppi

derhoeppi (Level 2) - Jetzt verbinden

09.07.2013 um 09:43 Uhr, 2717 Aufrufe, 12 Kommentare, 1 Danke

Hallo Leute,

nachdem wir gestern bereits ein Problem bei einer Filterbedingung gelöst haben, möchte ich nun ein anderes Skript, welches ebenfalls auf die CSV zugreift erweitern. Meine CSV-Datei enthält folgende Werte: VMName, Powerstate, VMHost. Die CSV enthält ca. 500 VM's. Darunter befindet sich ebenfalls mein vCenter und der SQL Server auf dem die vCenter Datenbank liegt. Wie bekomme ich es im Skript hin, dass mir der Host dieser beiden Server genannt wird?

Gruß
derhoeppi
Mitglied: colinardo
09.07.2013, aktualisiert um 09:56 Uhr
Hello again derhoeppi,
sind zwar nur spärliche Infos die du hier lieferst aber im groben und ganzen so:
01.
$csv = import-csv "C:\test.csv" 
02.
$csv | ?{$_.Name -eq "nameDeinesvCenterServer"} | select VMHost
Grüße Uwe
Bitte warten ..
Mitglied: derhoeppi
09.07.2013 um 10:51 Uhr
Hallo Uwe,

ich habe meinen Fehler gefunden. Ich habe in einer Variablen den DNS Namen des vCenters stehen. In der CSV steht jedoch nur der Anzeigename, so dass die Option -eq nie gegriffen hat. Ich hätte es durch ein -like ersetzen sollen.
Mit dem Skript möchte ich den Host ermitteln auf dem die VM zum Zeitpunkt der CSV Erstellung lief. Nach einem Shutdown des RZ möchte ich bestimmte Maschinen wieder hochfahren. Da ich zu diesem Zeitpunkt noch kein vCenter zur Verfügung habe, möchte ich mich direkt auf den Host verbinden um das vCenter + SQL Server bzw. eine vApp zu starten. Dazu muss ich die Hosts ermitteln. Gleiches gilt zum Beispiel für einen RZ Shutdown,
Bitte warten ..
Mitglied: kontext
09.07.2013, aktualisiert 10.07.2013
Zitat von derhoeppi:
ich habe meinen Fehler gefunden. ....
Somit sollte das Problem gelöst sein, richtig?
Dann wäre es noch hilfreich die Frage auch als gelöst zu markieren: https://www.administrator.de/faq/32


Da kommt doch noch was (Siehe unten) ...
... da kam der Moderator zu früh in mir zum Vorschein

Gruß
@kontext
Bitte warten ..
Mitglied: derhoeppi
09.07.2013 um 11:10 Uhr
Hallo Uwe,

wenn ich den Import mit dem entsprechenden VMHost in eine Variable schreiben lasse, gibt mir die Variable folgenden Inhalt aus: @{VMHost=VMHostName}. Damit kann ich leider kein Connect-VIServer machen. Warum wird @{VMHost=...} mit in die Variable aufgenommen?

Gruß
derhoeppi

@kontext: Es hat schon seinen Grund weshalb ich diesen Thread nicht als gelöst markiert habe.
Bitte warten ..
Mitglied: colinardo
09.07.2013 um 11:21 Uhr
Weil das Ergebnis ein PSCustomObject ist. Um nur den Inhalt zu erhalten musst du die Eigenschaft "expandieren":
01.
$var = $csv | ?{$_.Name -eq "nameDeinesvCenterServer"} | select -ExpandProperty VMHost
Bitte warten ..
Mitglied: derhoeppi
09.07.2013 um 12:30 Uhr
Hallo Uwe,

super vielen Dank. Eine letzte Frage habe ich noch. In meiner CSV habe ich die Spalte VMHost. In einem Cluster sind meinetwegen 3 Hosts. Kann ich über eine Bedingung die VM's zu einem Host filtern, so dass ich zum Beispiel die VM's auf dem Host herunterfahren oder Starten kann? Vermutlich werde ich hier mit foreach arbeiten müssen?

Gruß
derhoeppi
Bitte warten ..
Mitglied: colinardo
09.07.2013 um 12:36 Uhr
wo stehen die die 3 Hosts ? in einer zusätzlichen Spalte ? mit welchem Trennzeichen voneinander getrennt?
Filtere den Cluster dann musst du mit Split den String mit den Hosts zerlegen und dieses Array mit einer Foreach-Schleife durchlaufen.
Bitte warten ..
Mitglied: derhoeppi
10.07.2013, aktualisiert um 08:22 Uhr
Hallo Uwe,
der Cluster ist nicht in der CSV vermerkt. Nur VMName, Host der VM und Powerstatus.

Ich importiere zum Anfang die CSV-Datei folgendermaßen.

$VMHosts = Import-Csv "CSVDatei.csv" | Select -ExpandProperty VMHosts - unique

Damit erhalte ich die Hosts in der Variablen $VMHosts, die ich nun als Array ansprechen kann. Nun muss ich nur noch in einer Foreach Schleife die Hosts entsprechend auswählen und die VM's auf diesen Hosts erneut importieren, damit ich einen neuen Filter erhalte.

Gruß
derhoeppi
Bitte warten ..
Mitglied: colinardo
10.07.2013, aktualisiert um 08:24 Uhr
Ich verstehe immer noch nicht ganz wo das Problem liegt. Im vorigen Post habe ich das doch beschrieben:
01.
$VMHosts = Import-Csv "CSVDatei.csv" | ?{$_.VMName -eq "NamedergesuchtenVM"} | Select -ExpandProperty VMHosts
(?{} ist eine Abkürzung für ein Where-Object)
Dies liefert in der Variablen $VMHosts ein Array von Strings nur mit dem Namen der Hosts. Dies kannst du dann wieder mit einer Schleife durchlaufen:
01.
$VMHosts | %{echo $_}
(%{} ist eine Abkürzung für ein Foreach-Object)

Zitat:
Select ist ja nur ein Anzeigefilter,
Stimmt so nicht:
Mit dem Cmdlet "Select-Object" werden nur die angegebenen Eigenschaften eines Objekts oder Satzes von Objekten abgerufen. Er kann auch eindeutige Objekte aus einem Array von Objekten oder eine angegebene Anzahl von Objekten vom Anfang oder Ende eines Arrays von Objekten auswählen.
Wenn Sie angegebene Eigenschaften mit Select-Object auswählen, werden die Werte dieser Eigenschaften aus den Eingabeobjekten kopiert und neue Objekte erstellt, die über die angegebenen Eigenschaften und kopierten Werte verfügen.

Grüße Uwe
Bitte warten ..
Mitglied: derhoeppi
10.07.2013 um 08:56 Uhr
So das ganze habe ich nun gelöst. Funktioniert einwandfrei in meiner Testumgebung.
Um das ganze Script noch übersichtlicher zu machen, möchte ich noch mehr Scriptteile in Functionen auslagern. Ich habe nun eine Funktion, die sich um den Verbindungsaufbau zum VMware Host kümmert.

Relativ simpel mit: Connect-VIServer -Server $VMHost
Nun lese ich aber in der obigen Function die VMware Hosts in eine Variable / Array mit der Bezeichnun $Hosts. Wie kann ich diesen Wert an die Funktion zum Verbindungsaufbau übergeben.

Gruß
derhoeppi
Bitte warten ..
Mitglied: colinardo
10.07.2013, aktualisiert um 09:10 Uhr
01.
function deineFunction($arrHosts){ 
02.
... 
03.
... 
04.
}
Aufruf mit Parametern erfolgt dann so
deineFunction $Hosts
oder so
deineFunction -arrHosts $Hosts
Uwe
Bitte warten ..
Mitglied: derhoeppi
10.07.2013 um 09:25 Uhr
Hallo Uwe,

vielen Dank für das extrem schnelle Feedback. Ich markiere den Beitrag nun als gelöst, weil alle Fragen geklärt sind.

Gruß
derhoeppi
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Powershell: Import-CSV ohne mehrfache Werte

gelöst Frage von DanielBodenseeBatch & Shell2 Kommentare

Hallo zusammen, über Import-CSV und -Header lese ich eine Text-Datei in eine Variable $entries, die Zeilen haben mehrere Spalten. ...

Batch & Shell

Powershell .csv export und excel import

gelöst Frage von playmenBatch & Shell12 Kommentare

Hallo Ich möchte gerne aus einer bestehenden CSV Daten mit Powershell Exportieren und diesen Daten einzeln einer Variabel zuweisen ...

Batch & Shell

Powershell Import CSV zum Drucker erstellen mit Port

Frage von pixel0815Batch & Shell2 Kommentare

Hallo liebe Kollegen, folgendes Skript würde ich gerne verwenden aber irgendwie funktioniert das nicht auf meiner Win 2008 R2 ...

Batch & Shell

Powershell Import Computer aus csv in array und Befehl abarbeiten

Frage von Robbi666Batch & Shell4 Kommentare

Hallo zusammen, ich möchte gerne aus einer Liste von Computern mehrere Dinge überprüfen. $Computername = "Computername" if(Test-Connection -ComputerName $Computername) ...

Neue Wissensbeiträge
Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 10 StundenSicherheit

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 20 StundenInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 1 TagErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 1 TagWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Heiß diskutierte Inhalte
Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server36 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...

Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1028 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgbornMicrosoft17 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Webbrowser
Welcher Browser ist der Beste?
Frage von justtinWebbrowser15 Kommentare

Hallo Leute Ich habe eine interessante Frage. Mich wurde mal interessieren welcher Browser ist eure meinung nach der beste? ...