
newbi2009
-
Gesamte Inhalte
31 -
Registriert seit
-
Letzter Besuch
Beiträge erstellt von newbi2009
-
-
ja - die Zeile funktiniert ja auch in der Powershell, wirft nur diese blöde Fehlermeldung
-
Hallo zusammen,
wir betreiben einen/mehrere LDAP Server (kein Active Directory). Bisher habe ich für Powershell-basierende Abfragen immer die von Lotus Notes mitgeliferten ComandLine-Tools (hier ldapsearch.exe) benutzt, was ganz gut funktioniert hat. Leider wird uns wohl bald der Notes client und somit auch die da mit kommenden LDAP CL-Tools deinstalliert, sodass ich mich nach einer anderen Lösung umschauen musste... Hier bin ich auf "open LDAP for Windows" gestossen. Software ist nun installiert und ich kann auf die cl-Tools zugreifen. Jetzt zu meinem zwei Problem:
Eins vorweg: Egal, ob ich den Bind mit "-x" oder ohne durchführe, ist das Ergebnis das Gleiche
& "C:\OpenLDAP\ClientTools\ldapsearch.exe" -H ldap://XXXXX.home.local:2390 -D $username -w $script:pw -b $script:DN -s base "objectClass=*" userCertificate > $safepath
oder Bind mit „-x“ – kein Unterschied:
& "C:\OpenLDAP\ClientTools\ldapsearch.exe" -x -H ldap://XXXXX.home.local:2390 -D $username -w $script:pw -b $script:DN -s base "objectClass=*" userCertificate > $safepath
ich bekomme IMMER folgende Fehlermeldung im Programmfenster (Powershell ISE) angezeigt (auch ein Umleiten mit 2>&1 bringt nicht mehr Fehlermeldungs-Text in der Ausgabe-Datei)
ldapsearch.exe : ldap_bind: Success (0)
In C:\Users\xxxxx\Documents\Powershell-Scripte\Benutzer von PROD in TEST\Benutzer_von_PROD_nach_TEST.ps1:498 Zeichen:18
+ ... & "C:\OpenLDAP\ClientTools\ldapsearch.exe" -H ldap://xxxx ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (ldap_bind: Success (0):String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
additional info: Bind succeeded.
Ich verstehe nicht, was hier "angemeckert" wird. Es steht explizit in der Meldung, dass der Bind funktioniert hat, und auch die Ausgabe funktioniert korrekt
Dies ist der Text der Ausgabedatei)
---------------------------------------
# extended LDIF
#
# LDAPv3
# base < cn=DoeJohn,ou=Extern,ou=Three,o=Two,c=One > with scope baseObject
# filter: objectClass=*
# requesting: userCertificate
#
# DoeJohn, Extern, Three, Two, One
dn: cn=DoeJohn,ou=Extern,ou=Three,o=Two,c=One
userCertificate;binary:: MIIHaDCCBVCgAwIBAgIDSHYqMA0GCSqGSIb3DQEBCwUAMFwxCzAJB
gNVBAYTAkRFMRkwFwYDVQQKExBQS0ktMS1WZXJ3YWx0dW5nMRMwEQYDVQQLEwpCdW5kZXN3ZWhyMR
0wGwYDVQQDExRCdyBWLVBLSSBDQSAyMDIyIC0gMjAeFw0yMzAyMTUxMDEwMDlaFw0yODAyMTUxMDE
wMDlaMFgxCzAJBgNVBAYTAkRFMQ0wCwYDVQQKEwRidW5kMQ0wCwYDVQQLEwRibXZnMRAwDgYDVQQL
EwdwZXJzbWlsMRkwFwYDVQQDExBHZXV0aW5nIFRob3JzdGVuMIICIjANBgkqhkiG9w0BAQEFAAOCA
qvkJ++i7MSkz6FguCrewZ+d3QiogHFh5QI77zQklognb+6GhGyH9Iv0amzRLCVWyWgxPMw0OUs92K
7H4thYcNpl/l8QB5rf0v/R23vSEOgMqypkORkNGRZ2hf36kWuJPil60657xAbfoArGXdiF+Hs+tv8
zPkdwrTtg9flgDVVeceRfGDzuaUf0NYU2ee7xBVO2oJyd1mgBDdZfMihRTrYM70+ewmqDYp4wiuCb
wsh++XX9hts9BI+ldO2Lm4FMmoOjQjg5/SrdWh6gLEeLeZDmxSXtl8WafGlLpLDRNK3zYiaR+soW4
EEWI6kz0ZhqRAs0AQlQcD5qqCTmWvylvtjPyRnW1NA4fpc7RIi02Zcj2v7pdsd+lnwZ8sr9UblQFi
WqKSFk/hvvgdzCVwA==
# search result
search: 2
result: 0 Success
text: Search succeeded. Found 1 Entries (0 Aliases), 1 Attributes, 1 Values. (C
hainedResult=no)
# numResponses: 2
# numEntries: 1
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Was ich aber noch viel merkwürdiger finde, ist der Fakt, dass ich bei JEDEM 2. VERSUCH, das Skript laufen zu lassen, den Fehler bekomme, dass das Bind NICHT funktioniert hat:
ldapsearch.exe : ldap_bind: Success (0)
In C:\Users\xxxxx\Documents\Powershell-Scripte\Benutzer von PROD in TEST\Benutzer_von_PROD_nach_TEST.ps1:498 Zeichen:18
+ ... & "C:\OpenLDAP\ClientTools\ldapsearch.exe" -x -H ldap://x ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (ldap_bind: Success (0):String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
additional info: Bind succeeded.
ldap_result: Can't contact LDAP server (-1)
Dann ist die Ausgabedatei auch "quasi" leer:
# extended LDIF
#
# LDAPv3
# base < cn=DoeJohn,ou=Extern,ou=Three,o=Two,c=One > with scope baseObject
# filter: objectClass=*
# requesting: userCertificate
#
# numResponses: 0
Kann mich hier irgend jemand erleuchten, wo/was genau mein Fehler ist?
Vielen Dank
Gruß
Holger
-
Hallo zusammen,
danke für die Antworten.
Nur falls es noch interessiert: Ich habe es jetzt gelöst, indem ich 2 verschiedene WMI Abfragen "gebaut" habe - und die beiden Ausgaben hintereinander anzeigen lasse:
1. Abfrage nach "welcher Adapter verbunden ist (LAN oder WLAN)
SELECT NetConnectionID FROM Win32_NetworkAdapter WHERE NetConnectionID = 'WLAN' or NetConnectionID = 'ETHERNET' and NetEnabled = 'TRUE'
=> @zahni: Das funktioniert doch....
2. Abfrage nach der IPAdresse:
SELECT IPAddress FROM Win32_NetworkAdapterConfiguration where DNSDomain = 'homedomain'
Gruß
Holger
-
Hallo Gemeinde,
ich habe ein Problem mit einer SQL-Abfrage aus WMI (für die Anzeige in BGInfo) und hoffe, Ihr könnt mich „erhellen“ 😊
zu der kompletten Frage habe ich (mit Beispielen) das angehängte PDF erstellt
vielen Dank für Eure Hilfe
Gruß
Holger
-
Hallo Jan,
das klingt sehr interessant. Ich denke, da muss ich mal tiefer drüber nachdenken!
Danke für den Hinweis. Das kannte ich bisher nicht!!
Gruß
Holger
-
Vielen Dank, Evgenij!!
Und @ Norbert: Ich bitte um eine harte und gerechte Strafe. Aber NEIN, ich habe keine Lösung gefunden (Startpage.com) Du scheinst da eine inteligentere Such-Anfrage gestartet zu haben, als ich in den letzten Stunden!
-
1
-
-
Hallo zusammen,
ich suche jetzt schon seit einiger Zeit, finde aber nicht wirklich etwas hierzu.
Wir haben einen bestimmten Dienst auf etlichen Servern mit einem bestimmten Domänen-Konto laufen.
Da wir (Policy-bedingt) Passwörter für Service-Accounts alle 180 Tage ändern müssen, bin ich gerade dabei hierfür ein Programm zu schreiben.
Leider finde ich keine Möglichkeit per PS die Passwörter für die ausführenden (Domänen)-Konten für bestimmte Dienste zu ändern.
mit Get-Service kommt man da anscheinend nicht wirklich weiter...
Hat da irgendjemand eine Idee/Ansatz?
vielen Dank für Eure Schwarmintelligenz
Gruß und ein schönes WE
Holger
-
nein, das funktioniert leider auch nicht.....
Ich hatte eigentlich gedacht, das wäre ein Microsoft Modul...
Aber wenn man dem KeePass-Link auf dieser URL folgt, kommt man tatsächlich zu dem Projekt, dass Du da aufgezeigt hast.... b***d! Ich habe echt nicht gesehen, dass der letzte EIntrag 3 Jahre alt ist.....
-
Hallo Forum,
ich "spiele" gerade mit den PowerShell Modulen für SecretVault bzw KeePass-Zugriff herum:
Microsoft.Powershell.SecretManagement,
Microsoft.Powershell.SecretStore,
SecretManagement.KeePass
Dabei stoße ich auf das Problem, dass ich das MasterPassword für die KeePass irgendwie nicht wirklich übergeben bekomme. Egal, ob ich das PW in Klars***rift oder als SecureString übergebe...:
Version1
$KeePassParameter = @{ Path = "D:\KeePass\Meine_KPDB.kdbx"; ShowFullTitle = $true; UseMasterPassword = $true; MasterPassword = "01000000d08c9ddf0115d1118c7a00c04fc297e...." } Register-SecretVault -Name KeePassVault -ModuleName SecretManagement.KeePass -VaultParameters $KeePassParameter
oder Version2
$KeePassParameter = @{ Path = "D:\KeePass\Meine_KPDB.kdbx"; ShowFullTitle = $true; UseMasterPassword = $true; MasterPassword = "Test-PW" } Register-SecretVault -Name KeePassVault -ModuleName SecretManagement.KeePass -VaultParameters $KeePassParameter
...ich bekomme bei der Abfrage der SecureVault immer
Get-SecretInfo -Vault KeePassVault
immer eine grafische Abfrage des MasterPasswords. (siehe Screenshot) Hat jemand eine Idee, wie ich das MasterPassword korrekt übergebe, sodass ich auf die SecureVault ohne zusätzliche PW-Abfrage zugreifen kann?
Vielen Dank für Eure Hilfe
Gruß
Holger
-
vor 1 Stunde schrieb newbi2009:
$Namen = @($worksheet.Cells.Item($Zeile,1).Text)
hat sich erledigt! Ich habe hier versucht ein array und nicht einen einzelnen Wert zuzuweisen......
-
Hallo Forum,
ich versuche den Inhalt einer Spalte eines Excel-Worksheets in einer Combo-Box auszugeben.
Grundsätzlich funktioniert das auch. Zumindest sind in, "$objCombobox.items" die gewünschtenNamen gespeichert.
Allerdings bekomme ich in der Combo-Box selber nur 4 x "system Object[]" angezeigt.
Wo liegt mein Fehler?
Hier mein Code:
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") $Namen = @() $Zeile=1 $Page = "User" $objForm = New-Object System.Windows.Forms.Form $objForm.Text = "Combobox" $objForm.Size = New-Object System.Drawing.Size(300,200) $objForm.StartPosition = "CenterScreen" $objForm.KeyPreview = $True $OKButton = New-Object System.Windows.Forms.Button $OKButton.Location = New-Object System.Drawing.Size(75,120) $OKButton.Size = New-Object System.Drawing.Size(75,23) $OKButton.Text = "OK" $OKButton.Add_Click( { foreach ($objItem in $objCombobox.SelectedItem) {$global:x = $objItem $global:x} $objForm.Close() }) $objForm.Controls.Add($OKButton) $CancelButton = New-Object System.Windows.Forms.Button $CancelButton.Location = New-Object System.Drawing.Size(150,120) $CancelButton.Size = New-Object System.Drawing.Size(75,23) $CancelButton.Text = "Cancel" $CancelButton.Add_Click({$objForm.Close()}) $objForm.Controls.Add($CancelButton) $objLabel = New-Object System.Windows.Forms.Label $objLabel.Location = New-Object System.Drawing.Size(10,20) $objLabel.Size = New-Object System.Drawing.Size(280,20) $objLabel.Text = "Treffen Sie bitte eine Auswahl:" $objForm.Controls.Add($objLabel) $objCombobox = New-Object System.Windows.Forms.Combobox $objCombobox.Location = New-Object System.Drawing.Size(10,40) $objCombobox.Size = New-Object System.Drawing.Size(260,20) $objCombobox.Height = 70 $objexcel=New-Object -ComObject Excel.Application $workbook=$objexcel.WorkBooks.Open('C:\temp\Users.xlsx') $worksheet=$workbook.WorkSheets.item($Page) $objexcel.Visible= $false do { $Namen = @($worksheet.Cells.Item($Zeile,1).Text) write-host Name = $Namen [void] $objCombobox.Items.Add($Namen) $Zeile++ } while($worksheet.Cells.Item($Zeile,1).Text.Length -gt 0) $objexcel.quit() $objForm.Controls.Add($objCombobox) $objForm.Topmost = $True $objForm.Add_Shown({$objForm.Activate()}) [void] $objForm.ShowDialog()
Die Excel-Tabelle sieht so aus:
und die Combo-Box selber sieht so aus:
vielen Dank für Eure Hilfe
Holger
-
vor 44 Minuten schrieb Sunny61:
Zum Thema Pfad des Scriptes auslesen findest Du hier ein Beispiel: https://www.itnator.net/psscriptroot-beinhaltet-pfad-des-powershell-scripts/
Bau dir das mal in dein Script an der richtigen Stelle ein und lass dir mit write-host $PSScriptRoot den Pfad ausgeben. Wenn es der richtige ist, dann geht es weiter.
Verknüpfungen legt man nicht manuell an, sondern lässt sie per GPO bei den betroffenen Usern *aktualisieren*, dann passt der Aufruf. ;)
THIS did the trick
Vielen Dank!!
-
Hallo Nobby,
danke für die Antwort.
Naja, die Firmen-Policies lassen es einfach nicht zu, exe-Dateien selber zu kompilieren
Der UNC-Pfad sollte tatsächlich bei allen Benutzern gleich sein. Dann müsste ich den "Installationspfad" aber manuell in das Skript schreiben
ala: \\Server\Freigabe\Skripte
Das würde mit Sicherheit auch funktionieren.
Ich würde das Ganze aber gerne eleganter lösen. Z.B. für den Fall, dass das Verzeichnis "Skripte" einmal an einen anderen Ort verschoben werden sollte
Mein Skript sieht in etwa so aus:
function Uhr() { $Date = Get-Date $Time= $Date.toString()("yyyy-MM-dd_HH.mm.ss") $Datum= $Time.toString("yyyy-MM-dd") } $InstallPath = $PWD.ToString() Uhr $LogDateiName = "$InstallPath\Logs\$Satum\MeinSkriptname_" + $Time +".log" . . . write-output "Diese Zeile soll in die Log-Datei eingetragen werden" | Tee-Object -FilePath $LogDateiName -append
Danke und Gruß
Holger
Hallo BOfH_666,
auch Dir "danke" für Deine Antwort.
Ich möchte es eigentlich vermeidenzu allen Kollegen zu latschen und einen Link auf die ps.1-Datei zu erstellen.
Ausserdem bin ich mir nicht ganz sicher, ob der Link das Problem lösen würde.
Es würde dann doch der Pfad des lokalen Rechners ausgelesen - also würden die Log-Dateien wieder nicht alle im gleichen Verzeichnis (Netzlaufwerk) landen.....
Dass die Datei mit der PowerShell.exe ausgeführt werden sollte ist mir schon klar. Aber es wird (glaube ich) halt standardmäßig die 64bit Version ausgeführt, die gegen die Pumpe läuft, wenn man versucht damit eine LotusNotes-Anwendung auszulesen....
Und alles andere als rechter Mausklick / Ausführen mit kann ich meinen Kollegen nicht zumuten
-
Hallo Forum,
ich habe ein kleines Problem und hoffe, es gibt eine einfache Lösung hierzu:
Ich habe ein Powershell-Skript geschrieben, welches ich auf einem Netzlaufwerk (nennen wir es Z:\Skripte\meinSkript.ps1) abgelegt habe.
Dieses Skript schreibt Log-Dateien, die im gleichen Verzeichnis erzeugt werden sollen (Z:\Skripte\Logs)
Ausserdem soll dieses Skript von allen meinen Kollegen benutzt werden können, die sich das Netzlaufwerk aber nicht alle mit "Z:\" gemappt haben.
Um die Log-Datein also an dem gewünschten Ort abzulegen, muss ich den Netzwerkpfad der ps1-Datei auslesen.
Jetzt gibt es ein paar Probleme:
- Windows öffnet ps.1-Dateien standardmäßig mit einem Text-Editor (Doppelklick auf die Datei führt diese nicht aus)
- Ich kann/darf aus der ps.1 keine exe kompilieren, die per Doppelklick ausgeführt werden könnte
- mein Script MUSS in einer 32 Bit Variante von PowerShell ausgeführt werden (weil ich Lotus Notes abfrage) - Das heisst, "rechter Mausklick/öffnen mit Powershell" lässt das Skript abbrechen, weil Powershell standardmäßig in einer 64 bit Version startet
Ich muss das Skript also in einer "Powershell ISE" öffnen (vor Allem meine nicht PowerShell-affinen Kollegen). Hier steht der Fokus natürlich auf C:\Windows\System32
Lese ich jetzt den Pfad mit "get-location" oder "PWD" aus, bekomme ich natürlich "C:\Windows\System32" geliefert. Dies kann ich dann natürlich nicht verwenden, um den Pfad für eine Log-Datei in dem Netzlaufwerk zu generieren.
Ich kann den Kollegen auch nicht sagen, dass sie sich das Programmverzeichnis alle auf den eigenen Rechner kopieren sollen und die erzeugten Logs dann manuell auf dem Netzlaufwerk ablegen sollen.
Wie bekomme ich also in der "Power Shell ISE" den Pfad in eine Variable, in der die ps1-Datei liegt?
Vielen Dank für einen Tipp
Gruß
Holger
-
vor 4 Minuten schrieb BOfH_666:
Punkte sind, wenn es um regex geht "spezielle Zeichen". Der Punkt steht für ein beliebiges Zeichen. Wenn Du also wirklich einen Punkt ersetzen willst, musst Du ihn "Escapen".
Im einfachsten Fall so ...
"2261 4405 ..." -replace '\s\.\.\.'
Das Escape-Zeichen ist der Backslash "\" und das "\s" steh hier für ein "White-Space" - also ein Leerzeichen oder ein Tab ....
VIELEN DANK!!
-
Hallo Forum,
ich kämpfe gerade mit einem Problem, das ich nicht verstehe. Vielleicht kann mich ja jemand von Euch erleuchten?
Ich versuche Punkte aus einer Variable (in der eine Faxnummer gespeichert ist) zu ersetzen
ich habe in einer globalen Variable eine Faxnummer mit Leerzeichen und 3 Punkten dahinter gespeichert:
$global:Fax = "2261 4405 ..."
jetzt versuche ich das Leerzeichen und die darauf folgenden 3 Punkte zu entfernen:
if ($global:Fax -like ("* ...")) { $global:Fax_neu = $global:Fax -replace (" ...","") }
Der Inhalt von $global:Fax_neu ist jetzt erstaunlicherweise: 22615
Warum? Und wie bekomme ich es hin, dass
$global:Fax_neu = 2261 4405
ist?
vielen Dank für Eure Hilfe
Gruß
Holger
-
vor 6 Minuten schrieb NilsK:
Moin,
was uns zum Anfang zurückführt ... lässt sich der Umweg über CSV, vielleicht sogar der über Excel vermeiden? Falls nicht, dann ist es vielleicht wirklich am einfachsten, die Importdatei erst zu korrigieren und dann zu verarbeiten.
Gruß, Nils
....was mich dann wieder zu meiner ursprünglichen Frage führt: MUSS ich den Umweg gehen, den Inhalt der Variable zuerst in eine Datei zu speichern, nur um diese danach wieder einzulesen?
Das muss doch auch ohne gehen.... Aber wie?
-
vor 7 Minuten schrieb tesso:
Ich frage nochmal. Warum ein Array?
damit ich jeden einzelnen Wert ansprechen und später in den LDAP-Server einfügen kann
vor 4 Minuten schrieb tesso:Ich würde an der Wurzel ansetzen. Warum wird die CSV falsch erzeugt?
...das ist ein Excl-Datei "saved as CSV"
-
...also dann doch so, wie ich es ganz am Anfang versucht habe => mir selber eine neue CSV-Datei aus verschiedenen Bestandteilen "zusammenstricken" und diese dann abspeichern und neu laden.
-
1
-
-
vor 34 Minuten schrieb Sunny61:
Und was genau heißt funktioniert das Ganze nicht mehr?
Zu ladene CSV_Datei Ohne " als erstes Zeichen:
Zeile 01
Zeile 02
Zeile 03
Zeile 04
Zeile 05
Schmitz;Harald;Schmitz@zuHause.de;123456;
;Heiner;;234567;
Müller;;Mueller@zuHause.de;;
Maier;Susanne;;456789
;;;;;;;;;;;;;;PS C:> $abc = @(import-csv -path C:\temp\Test.csv -Header "Nachname","Vorname","Email","PersonalNummer" -Delimiter ";"| Select-Object -skip 5) PS C:> $abc Nachname Vorname Email PersonalNummer -------- ------- ----- -------------- Schmitz Harald Schmitz@zuHause.de 123456 Heiner 234567 Müller Mueller@zuHause.de Maier Susanne 456789 PS C:> $abc[1] Nachname Vorname Email PersonalNummer -------- ------- ----- -------------- Heiner 234567 PS C:> $abc[1].Vorname Heiner PS C:>
Bei einer zu ladene CSV_Datei MIT " als erstes Zeichen einer beliebigen der ersten 5 Zeilen, füllt sich die Variable $abc nicht mehr:
Zeile 01
"Zeile 02
Zeile 03
Zeile 04
Zeile 05
Schmitz;Harald;Schmitz@zuHause.de;123456;
;Heiner;;234567;
Müller;;Mueller@zuHause.de;;
Maier;Susanne;;456789;;;;;;;;;;;;;;
PS C:> $abc = @(import-csv -path C:\temp\Test.csv -Header "Nachname","Vorname","Email","PersonalNummer" -Delimiter ";"| Select-Object -skip 5) PS C:> $abc PS C:> $abc[1] PS C:> $abc[1].Vorname PS C:>
-
Hallo zusammen,
ich habe es jetzt mit dieser Zeile hinbekommen
$abc = @(import-csv -path C:\temp\Test.csv -Header 'Nachname;Vorname;Email;PersonalNummer' | Select-Object -skip 5)
$abc = @(import-csv -path C:\temp\Test.csv -Header "Nachname","Vorname","Email","PersonalNummer" -delimiter ";" | Select-Object -skip 5)
vielen Dank für Eure Hilfe.
Allerdings habe ich noch ein Phänomen, bei dem ich bitte nochmal Eure Hilfe bräuchte:
Sobald das ERSTE ZEICHEN einer Zeile in der csv-Datei, die eingelesen wird, ein Anführungszeichen " ist, funktioniert das Ganze nicht mehr?!
Wie kann ich das denn "reparieren" (ich habe leider in meiner einzulesenden CSV in 2 Zeilen jeweils ein " als erstes Zeichen stehen)
Danke nochmal
Holger
sorry, ich wollte die Code-Zeile nicht doppelt posten....
-
vor 18 Minuten schrieb BOfH_666:
OK.... also prinzipiell bin ich absolut bei Nils. Wir haben hier schon öfters an Lösung von hinten durch die Brust ins Auge gebaut, die aber für die eigentlich zu lösende Aufgabe völlig unnötig waren.
Davon unabhängig:
Du kannst Dir doch das ganze Geraffel sparen, wenn Du die aus Deiner Excel-Datei erzeugte CSV-Datei, die ja keine Header hat, ganz normal mit Import-CSV einliest, dabei mit dem Parameter -Header, die gewünschten Header dazupackst und mit einem Select-Object -Skip 5, die ersten 5 Zeilen auslässt.
...grundsätzlich ne gute Idee, hätte ich auch selber drauf kommen können
Aber so richtig funktionieren tut das auch nicht
$abc = @(import-csv -path C:\temp\Test.csv -Header 'Nachname;Vorname;Email;PersonalNummer' | Select-Object -skip 5)
ein
$abc
bringt dann auch das gewünschte Ergebnis:
Nachname;Vorname;Email;PersonalNummer ------------------------------------- Schmitz;Harald;Schmitz@zuHause.de;123456; ;Heiner;;234567; Müller;;Mueller@zuHause.de;; Maier;Susanne;;456789 ;;;;;;;;;;;;;; Müller;;Mueller@zuHause.de;;
auch ein
$abc[2]
bringt das gewünschte Ergebnis
Nachname;Vorname;Email;PersonalNummer ------------------------------------- Müller;;Mueller@zuHause.de;;
allerdings liefert ein
$abc[2].Email
kein Ergebnis ?!
Was mache ich denn hier falsch?
-
vor 10 Minuten schrieb NilsK:
Moin,
aha, es handelt sich also um eine wiederkehrende Aufgabe mit wechselnden Daten? Was geschieht damit, d.h. in welcher Art verarbeitest du das weiter?
Bekommst du die CSVs direkt oder erzeugst du die selbst? Falls du die CSVs bekommst, könntest du auch die Excels direkt erhalten?
Hintergrund der Fragen: Wenn wir wissen, welche Aufgabe du eigentlich lösen musst, können wir dir vielleicht besser helfen. Wir erleben immer wieder, dass wir ein Detailproblem mit jemandem lösen und hinterher feststellen, dass es viel leichter wäre, die tatsächliche Aufgabe ganz anders anzugehen.
Gruß, Nils
Hi Nils,
ja, ich könnte auch die Excel-Datei bekommen. Das ist kein Problem.
Was ich damit weiter vorhabe ist nicht ganz einfach zu erklären und da werde ich wohl auch noch lange dran sitzen, bis ich das hinbekomme.
Im Endeffekt muss ich die Daten, die in der Excel geliefert werden herausfiltern und damit existierende Benutzer-Daten auf einem Oracle-LDAP-Server updaten.
Sprich: Benutzer x soll ein bestimmtes Flag auf dem LDAP Server gesetzt bekommen. Das mache ich bisher alles "zu Fuß". Es kommt aber vor, dass Excel-Tabellen mit 60 oder mehr Benutzern reinkommen, bei denen manuell unterschiedliche Flags gesetzt werden müssen, oder diese in unterschiedlioche Gruppen aufgenommen werden müssen.....
Das möchte ich so weit automatisieren, wie es mir möglich ist....
Lange Rede, kurzer Sinn: Es wäre mir tatsächlich schon mega geholfen, wenn Ihr mir bei meinem ursprünglichen Problem helfen könntet.... Es werden bestimmt beim Entwickeln noch genug andere Probleme auftauchen, die ich ich jetzt noch nicht absehen kann
Danke und Gruß
Holger
-
vor einer Stunde schrieb NilsK:
Moin,
stellen wir das Ganze doch mal auf die Füße: Was hast du denn insgesamt vor?
Gruß, Nils
Hi Nils,
Ich habe immer wieder Excel-Dateien, die den gleichen Aufbau haben. Nur eben unterschiedlich mit Namen, Mail-Adresse, etc... befüllt. Diese werden mir als csv-Datei abgespeichert zur Verfügung gestellt. Hier sind halt die ersten paar Zeilen immer Datenmüll. Ich möchte die Zeilen, die die Benutzer-Informationen (in der csv immer ab Zeile 6) also weiterverarbeiten. Dazu möchte ich diese in einem mehrdimensionalen Array haben, damit ich ich für jeden Benutzer die einzelnen Daten explizit ansprechen kann (z.b. Mailadresse von Benutzer aus Zeile 7 => $ergebnis[2].Email)
Quasi genau so, wie ich es habe, wenn ich den Zwischenschritt mit der zweiten csv Datei, die ich abspecihere und wieder einlese, habe.
Halt nur, ohne den Umweg eine neue Datei abzulegen und wieder einzulesen....
Danke und Gruß
Holger
vor 52 Minuten schrieb BOfH_666:Es gibt ein Modul, mit dem Du Excel-Dateien direkt verarbeiten kannst: ImportExcel. Das macht die Sache eventuell leichter.
Dafür gibt es beim cmdlet Import-Csv den Parameter -Header, mit dem man eigene Header hinzufügen kann.
Ja ... quasi oben alles beantwortet ...
Ach übrigens, wenn Du Code postest, diesen am Besten auch als Code formatieren (das ist der Button "</>" oben im Editor)
Hallo BOfH_666,
danke für Deine Antwort. Das ImportExcel-Modul schaue ich mir einmal genauer an. Dankefür den Tipp!
Allerdings bringt mir das cmdlet Import-Csv nicht so viel. Ich habe ja eine Variable ($xyz) in die ich meinen selbstgebauten Header und die nötigen "Daten-Zeilen" aus der ursprünglichen csv Datei gelegt habe.......
Ich bekomme es aber nicht hin, diese Variable als Array zu benutzen. Ich muss zuerst den Inhalt der Variable in eine Datei abspecihern und DANN mit import-csv diese neue Datei wieder einlesen (der Inhalt der abgespeciherten csv Datei ist ja genauso, wie ich es brauche..... nur bekomme ich diesen halt nicht in ein Array)
Danke und Gruß
Holger
Fehlermeldung open LDAP - ldapsearch.exe
in Windows Forum — Scripting
Geschrieben · bearbeitet von newbi2009
Hi Evgenij,
danke für den Tipp mit $ErrorActionPreference. Das ist okay für mich.
Unsere Firmen-Policies sind relativ strikt, sodass es ein schier endloser Prozess ist, neue Software (auch Powershell-Module sind "neue Software") genehmigt zu bekommen, daher der Weg über die externen *.exe-Dateien
Bleibt meine zweite Frage: Warum funktioniert der Bind nur bei jedem zweiten Lauf???
Gruß
Holger