haru777999
Goto Top

CMD TYPE wandelt leider Umlaute und Sonderzeichen um

Guten Tag miteinander (Biber auch da?)

Bin am Verzweifeln. :'( :'(

Übersicht:
Ich versuche mit dem DN (distinguished Name) die SAMID zu erhalten (dsquery, dsget usw.).
Nun werden aber mit type der Textdatei die korrekten Sonderzeichen im DN (Umlaute, é usw.) mit anderen Sonderzeichen ersetzt.
Dies in einer cmd und auf der Command-Line.
Umgebung: Server 2008 R2 o.ä.

Details:
Die Textdatei sieht z.B. so aus (korrekt vorher geschrieben mit dsget.exe group %%G -members -expand):
"CN=Hans Muster,OU=Benutzer,OU=Musterou,DC=domainxxx,DC=local""CN=Désirée Wunderschön,OU=Benutzer,OU=Musterou,DC=domainxxx,DC=local"

Dann der Script:
for /f "delims=" %%U in ('type Temp\!_SERVER!_ts_ou_all_groupmembers_ne.txt') do (      echo Prozent U ist: %%U)
oder auch nur so:
for /f "delims=" %%U in (Temp\!_SERVER!_ts_ou_all_groupmembers_ne.txt) do (      echo Prozent U ist: %%U)

Resultat von echo %%U im cmd, rsp. type:
"CN=DÚsirÚe Wundersch÷n,OU=Benutzer,OU=Baderpartner,DC=baderpartner,DC=local"

Resultat von type Temp\SERVER_ts_ou_all_groupmembers_ne.txt auf Command-Line:
"CN=DÚsirÚe Wundersch÷n,OU=Benutzer,OU=Baderpartner,DC=baderpartner,DC=local"

dann (nur zur Erklärung):
for /f "tokens=*" %%S in ('dsget.exe user %%U -samid ^| findstr /i /v "samid" ^| findstr /i /v "dsget succeeded"') do (...dsget failed:Directory object not found.
Logisch!

Ziel:
Mit type oder selbstverständlich anderen Ansätzen sollen die Sonderzeichen nicht umgewandelt werden.
Ersetzen der Zeichen ist keine Lösung. Im AD können mittlerweile fast die gesamten 256 ANSI Zeichen eingegeben werden...

Habe m.E. wirklich alles versucht:
- Alternative für type (nichts gefunden)
- mit chcp die Codepage geändert, z.B. chcp 1252 oder andere, was nichts ändert (default Codepage ist hier überall 850)
- echo.exe (aus den GNU shellutils 1.9.4) echoed einfach andere Sonderzeichen. Aber das Problem ist ja type.

Vielen Dank im voraus.

Grüsse
Haru

Content-Key: 252262

Url: https://administrator.de/contentid/252262

Printed on: April 19, 2024 at 15:04 o'clock

Mitglied: 114757
114757 Oct 17, 2014 updated at 16:02:55 (UTC)
Goto Top
Hallo Haru,
das lässt sich auch mit Powershell abkürzen:
Import-Module ActiveDirectory
Get-ADGroupMember "NamedeinerGruppe" | select SAMAccountname  
Wer ärgert sich den heute noch mit Batch auf einem Windows Server rum face-wink

Gruß jodel32

mit chcp die Codepage geändert, z.B. chcp 1252 oder andere, was nichts ändert (default Codepage ist hier überall 850)
p.s. hier läuft das einwandfrei wenn ich die Codepage vorher auf 1252 schalte ... vielleicht ist das Zeichenformat deiner Quelldatei nicht ANSI
Member: Haru777999
Haru777999 Oct 21, 2014 updated at 07:49:45 (UTC)
Goto Top
Hallo Jodel

PowerShell ist leider nicht auf allen Maschinen installiert. Und als Freelancer ich darf gar nichts installieren.
VBS wäre eine Alternative. Aber auch das tut nicht überall.
Darum muss ich mich mit CMD rumquälen.
Wenn ich CMD mit CHCP 1252 laufen lasse, ändert sich nichts an der Problematik.
In Notepad werden die Sonderzeichen korrekt dargestellt (geliefert von dsget).

Hoffe jemand hat noch eine andere Lösung.

Grüsse
Haru
Member: Haru777999
Haru777999 Oct 24, 2014 at 12:19:16 (UTC)
Goto Top
Hallo zusammen

Habe das Problem wie folgt umgangen:
Nie etwas in ein txt File redirecten, sondern innerhalb einer For-Schleife nur mit Variablen arbeiten!
Vorteil: braucht kein type, die Sonderzeichen bleiben erhalten
Nachteil: For-Schleife wird relativ gross

Grüsse
Haru