PowerShell Sharepoint listaelem importálásnál nem ismeri fel a + jelet

PowerShell Sharepoint listaelem importálásnál nem ismeri fel a + jelet
2021-02-19T09:34:05+01:00
2021-02-22T14:52:33+01:00
2022-12-06T17:50:39+01:00
Sandor81
Sziasztok!

Először is bocs a témakör miatt, PowerShell - t nem találtam.
A következő lenne a problémám.
Van egy CSV file, ami SAP - ból jön és egy Sharepoint oldalon van elhelyezve.
Ezt a file-t egy powershell script - el letöltöm egy szerverre, ahol megnyitom, parse-olom és az oszlopai alapján egy Sharepoint listába mentem.
Ezzel eddig semmi gond.
Viszont az a baj, hogy néhány sor nem kerül be a Sharepoint listába.
Jellemzően azok, ahol az egyik cellában + jel van. Valamint különös karakterek jelennek meg a mentett adatok között.
Például:
+Zubehör - ből olyat csinál, hogy 某ör
Ez csak akkor, ha a + jel mögött nincs szóköz. Ha van, akkor az egész sort kihagyja és nem importálja.
Azt már ellenőriztem, hogy a CSV file iso-8859-1 (Latin 1) - es kódolású. Ha jól olvastam, akkor PowerShell csak UTF-8 - at tud kezelni, vagyis annak vesz mindent, de csak, ha UTF-7 - ként hívom meg a file megnyitást, mert UTF-8 - al az ö és ü - ből kérdőjel lesz.
Így nyitom meg magát a file-t.

foreach($csvItem in Import-Csv $csvFile -Encoding UTF7 -Delimiter ";"){
Majd a kapott adatokat mentem Sharepointba, így:

$newElement = Add-PnPListItem -List $ListName -Values @{ "Title" = $csvItem.Anlage "geschaeftsbereich" = $csvItem.GsBe "kostenstelle" = $csvItem.'Kostenst.' "aktivdatum0" = $csvItem.Aktivdatum "anlagenbezeichnung" = $csvItem.Anlagenbezeichnung "buchwert" = $csvItem.Buchwert
Itt az "anlagebezeichnung" ahol előfordulhat a + jel.
Első körben megkérem a CSV exportőreit, hogy a fájlt UTF-8 ként exportálják, hátha akkor működni fog.
DE! 
Az a gyanúm, hogy a szövegben szóközök között álló + jelet a script úgy veszi, hogy stringeket akarok összefűzni és hibára fut miatta.
Az a kérdésem, hogy meg lehet - e úgy adni a mentendő szöveget, hogy egy string-nek vegye?
Például így:

"anlagenbezeichnung" = "$csvItem.Anlagenbezeichnung"
Előre is köszönöm!
Mutasd a teljes hozzászólást!
de csak, ha UTF-7 - ként hívom meg a file megnyitást

Ez a problémád. Az UTF-7 az egy fura kódolás, aminek az elsődleges célja a tetszőleges Unicode szöveg áttolása olyan csatornán, amin csak hét bites ASCII megy át. A pluszjel speciális jelentéssel bír, azzal jelzed hogy most jön egy olyan karakter, ami a hét bites ASCII-n kívül van.

Ha a szöveg iso-8859-1-ben van, akkor a PowerShell-nek is ezt a kódolást kéne megadni. A doksi szerint:

Beginning with PowerShell 6.2, the Encoding parameter also allows numeric IDs of registered code pages (like 
-Encoding 1251
) or string names of registered code pages (like 
-Encoding "windows-1251"
). For more information, see the .NET documentation for Encoding.CodePage.

Szóval egy próbát megér:

foreach($csvItem in Import-Csv $csvFile -Encoding "iso-8859-1" -Delimiter ";"){
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd