Gå til innhold

Utføre CMD kommando med PHP


Anbefalte innlegg

Burde ikke dette funke?

system('cmd.exe /c Dsadd user "cn='.$fornavn.' '.$etternavn.', ou=Trinn1, ou=Elever, dc=svarttjern,dc=skole" -samid '.$brukernavn.' -upn '.$brukernavn.'@svarttjern.skole -pwd '.$passord.' -fn '.$fornavn.' -ln '.$etternavn.' -display '.$fornavn.' -memberof "CN=Klasse1A, ou=Klassetrinn, ou=Elever, DC=svarttjern, DC=skole" "CN=Bibliotek, ou=Klassetrinn, ou=Elever, DC=svarttjern, DC=skole" -tel '.$telefonnummer.' -desc "'.$beksrivelse.'" -profile \\svarttjern-ad\profiles\trinn1');

 

Du skal ikke ha behov for å spesifisere cmd.exe, jeg regner med at selve kommandoen du vil utføre er dsadd. Du kan prøve

$temp=system('dsadd ..... ');
if ($temp===FALSE)
 echo "system dsadd feilet";
else
 echo $temp;

for å se hva som blir returnert av system kommandoen.

 

Jeg kan ikke bruke " IOM at " er i bruk inne i selve cmd kommandoen som utføres

Som nevnt over så bør du lese litt om forskjellen på bruken av ' og ".

Du kan fint bruke " inne i en streng med ", men du må escape dem f.eks slik $temp="hei på \"deg\"";

En echo $temp; vil da gi resultatet hei på "deg"

 

det funka ikke med .bat fil... Ingenting skjer når jeg åpner den manuelt heller...

Det er ikke så rart et det ikke fungerer når du starter den manuelt, ingen av parameterene er satt. %1-6 eksisterer ikke da.

 

Du kan evt endre .bat file til dette for å se om du får med deg alle parameterene og om det kommer noen feilmeldinger fra kommandoen

:: %1 fornavn
:: %2 etternavn
:: %3 brukernavn
:: %4 passord
:: %5 tlf
:: %6 beskrivelse

:: skriver ut verdiene av %1 - %6
echo %1 
echo %2
echo %3
echo %4
echo %5
echo %6

Dsadd user "cn=%1 %2, ou=Trinn1, ou=Elever, dc=svarttjern,dc=skole" -samid %3 -upn %[email protected] -pwd %4 -fn %1 -ln %2 -display %1 -memberof "CN=Klasse1A, ou=Klassetrinn, ou=Elever, DC=svarttjern, DC=skole" "CN=Bibliotek, ou=Klassetrinn, ou=Elever, DC=svarttjern, DC=skole" -tel %5 -desc "%6" -profile \\svarttjern-ad\profiles\trinn1

:: fjern pause når alt fungerer
pause

Endret av Crowly
Lenke til kommentar
Videoannonse
Annonse
Når du bruker " så blir \t til tab, dersom du forandrer til ' ($system_call .= '\\svarttjern-ad\profiles\trinn1';) så vil det fungere flott :)

 

Alternativt escape \, så det blir $system_call .= "\\\\svarttjern-ad\\profiles\\trinn1";)

echo $system_call gir da \\svarttjern-ad\profiles\trinn1

Men det blir noen ekstra tegn å taste inn, så det er nok enklere å bruke '

 

( \ er escape char, så for å få \ i en streng omsluttet av " , så må man skrive \\ for å kun få en \)

Lenke til kommentar
Det er visst marginalt raskere å utføre fordi PHP ikke må se om strengen inneholder en variabel før den skriver ut.

 

Escape tegn fungerer ikke i strenger med '. Så det blir som nevt over, mindre ting php må kontrollere i strengen før den blir skrevet ut. Men forskjellene er ikke merbare, om man da ikke har veldig tunge script og hver lille ytelses forbedring er viktig.

 

F.eks for å få en new line på slutten av strengen

 

Fungerer:

echo "test test\n";

echo 'test test'."\n";

 

Fungere ikke

echo 'test test\n';

Lenke til kommentar
Det er visst marginalt raskere å utføre fordi PHP ikke må se om strengen inneholder en variabel før den skriver ut.

 

Escape tegn fungerer ikke i strenger med '. Så det blir som nevt over, mindre ting php må kontrollere i strengen før den blir skrevet ut. Men forskjellene er ikke merbare, om man da ikke har veldig tunge script og hver lille ytelses forbedring er viktig.

 

F.eks for å få en new line på slutten av strengen

 

Fungerer:

echo "test test\n";

echo 'test test'."\n";

 

Fungere ikke

echo 'test test\n';

 

Nå er det slik at "\'" eller "\\" i slutten av en string har spesiell betydning selv med '.

 

http://no.php.net/manual/en/language.types...g.syntax.single

 

Det å mikse enkel og dobbel om hverandre blir lett suppe og uoversiktelig, slik at korrektur av koden kan bli tilnærmet umulig.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...