Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Frage Entwicklung Batch & Shell

Mitglied: derhoeppi

derhoeppi (Level 2) - Jetzt verbinden

09.07.2013 um 09:43 Uhr, 2626 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: http://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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows Server
Powershell Import-CSV Komma ausschreiben plus New-ADUser Pipen (3)

Frage von Freakazoid89 zum Thema Windows Server ...

Batch & Shell
Powershell Workflow, CSV Stapelverarbeitung Problem (6)

Frage von Rippchen zum Thema Batch & Shell ...

Batch & Shell
gelöst Mit PowerShell per CSV-File Ordner erstellen (19)

Frage von windelterrorist zum Thema Batch & Shell ...

Datenbanken
gelöst Import CSV in MYSQL (3)

Frage von schneerunzel zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...