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

Psexec variable mitgeben

Frage Entwicklung Batch & Shell

Mitglied: Crowdy

Crowdy (Level 1) - Jetzt verbinden

16.11.2010 um 14:58 Uhr, 5078 Aufrufe, 8 Kommentare

Hallo Script und Programmierprofis!

Ich möchte psexec eine variable mit auf den weg geben. Leider konnte google mir nicht helfen.

Ich starte über eine "lokale" auf meiner Workstation eine Batch die wie folgt aussieht (AUSSCHNITT):

01.
 psexec \\server C:\Ordner\Ordner1\checkin.cmd 
So sieht die Batch auf dem Server aus:

01.
@echo off 
02.
rem :START 
03.
rem settings 
04.
 
05.
echo. 
06.
 
07.
set ADDOM=domain 
08.
rem echo Bitte Benutzernamen eingeben: 
09.
set /p n= 
10.
set USERHOMEDIR=D:\Profile\%n% 
11.
 
12.
cd D:\Profile\standartprofil\ 
13.
d: 
14.
cmd /c xcopy /s "D:\Profile\standartprofil\\*.*" "D:\Profile\%n%" 
15.
 
16.
takeown /F %userhomedir% /R /D Y /A 
17.
 
18.
 
19.
cd C:\AppleScripts\Apple 
20.
 
21.
c: 
22.
 
23.
cmd /c SetACL.exe -on "%USERHOMEDIR%" -ot file -actn setprot -op "dacl:np;sacl:nc" -rec cont_obj 
24.
 
25.
 
26.
cmd /c SetACL.exe -on "%USERHOMEDIR%" -ot file -actn setowner -ownr "n:%ADDOM%\%n%" -rec cont_obj 
27.
 
28.
 
29.
cmd /c SetACL.exe -on "%USERHOMEDIR%" -ot file -actn ace -ace "n:%ADDOM%\%n%;p:full" -rec cont_obj 
30.
 
31.
 
Wenn ich das Script via psexec (sysinternals) ausführe und die variablen durch einen "richtigen" Ordnernamen in der Batch auf dem Server starte funktioniert das wunderbar. Gibt es eine Möglichkeit eine Variable zu übergeben?

Mit:

01.
psexec \\server C:\Ordner\Ordner1\checkin.cmd  
02.
%1
funktioniert das leider nicht

Vielen Dank für eure Hilfe und Anregungen im Voraus!

//Crowdy
Mitglied: bastla
16.11.2010 um 15:15 Uhr
Hallo Crowdy und willkommen im Forum!

Wenn ich das einigermaßen richtig verstanden habe, willst Du die Eingabe des Benutzernamens "mitliefern" - das könnte (beides ungetestet) über
echo %1|psexec \\server C:\Ordner\Ordner1\checkin.cmd
gehen oder Du änderst im Batch am Server auf
set USERHOMEDIR=D:\Profile\%1
oder besser (wenn der Batch auch "interaktiv" verwendet werden soll)
01.
set "n=%~1" 
02.
if not defined n set /p n=Bitte Benutzernamen eingeben:  
03.
set USERHOMEDIR=D:\Profile\%n%
und startest mit
psexec \\server C:\Ordner\Ordner1\checkin.cmd %1
BTW: Direkt zum Standarten-Profil-Ordner kommst Du mit
cd /d D:\Profile\standartprofil
Grüße
bastla
Bitte warten ..
Mitglied: 60730
16.11.2010 um 22:47 Uhr
Servus und auch von mir ein willkommen,

sag mal bitte, was macht denn (oder soll) dieses Script?

deine Zeile 14 sieht aber auch sehr merkwürdig aus?
xcopy /s "D:\Profile\standartprofil\\*.*" "D:\Profile\%n%"
ich meine jetzt nicht den Theo ohne Deo... sind dir da die Backslashes verrutscht?


Ergänzend zu Bastlas Vorschlag würde ich eine "echte" Überprüfung bauen...

01.
:username 
02.
set "n=%~1" 
03.
if not defined n set /p n=Bitte Benutzernamen eingeben:  
04.
net user %n% /domain|findstr /i "%n%" || goto username 
05.
set USERHOMEDIR=D:\Profile\%n%
[OT]
Du hast sowohl mich, als auch Bastla ins grübeln gebracht, der kennt jetzt sogar den Standarten Profil Ordner
[/OT]
Gruß
Bitte warten ..
Mitglied: Crowdy
17.11.2010 um 15:24 Uhr
Hallo zusammen,

danke für die freundliche Begrüßung und schnelle Hilfe!

Kurz und Knapp, da es sonst zu Umfangreich werden würde:

Im Unternehmen nutzen wir aus "kosten- und effizienz-" Gründen AD für unsere Apple Clients. Da die Mitarbeiter ein vordefiniertes Profil mit verschiedenen Einstellungen bekommen sollen, legt das Script neue Benutzer in der AD an, setzt User-GPOs etc., kopiert ein "Default-Roamingprofile" ("Standartprofil mit Settings und Beispielfiles") und setzt Rechte. Da das alles öfters für 20 und mehr Personen gemacht werden muss will ich das ganze per Script automatisieren um die Stundenlangen "Klickorgien" zu vermeiden.

Diese Woche befinde ich mich im Urlaub, deshalb werde ich erst nächste Woche Montag eure Tips ausprobieren und testen. Wenn ich sämtliche Scripts fertig habe werde ich den ganzen "Kladderadatsch" hier für die Nachwelt posten.

Schöne Woche noch und nochmal Danke für die Hilfe (bin ein echter Script-Newbe)!

// Crowdy
Bitte warten ..
Mitglied: Crowdy
17.11.2010 um 15:27 Uhr
deine Zeile 14 sieht aber auch sehr merkwürdig aus?
> xcopy /s "D:\Profile\standartprofil\\*.*" "D:\Profile\%n%"
ich meine jetzt nicht den Theo ohne Deo... sind dir da die Backslashes verrutscht?

Äh ja, hab nur den für mich bisher nicht Lösbaren teil gepostet, das ist nur nenn Typo gewesen. Hab es gekürzt für die Übersicht.

//Crowdy
Bitte warten ..
Mitglied: Crowdy
22.11.2010 um 09:53 Uhr
Hallo zusammen,

hab es jetzt in den verschiedenen Varianten getestet und die "Übergabe der Variable" für psexec

will leider immer noch nicht so recht für mich funktionieren.

Deshalb poste ich nochmal alle Scripts ausführlich, vlt. findet ja jemand den Fehler im Detail.

1. Ich starte die "start.bat" zum Ausführen der "ad_check_in.vbs".

start.bat:
01.
call ad_check_in.vbs
ad_check_in.vbs:
01.
Dim fso, f, Zeile, Feld 
02.
Set fso = CreateObject("Scripting.FileSystemObject") 
03.
Set f = fso.OpenTextFile ("user.txt",1,0) 
04.
 
05.
Do while not f.AtEndOfLine 
06.
Zeile = f.readLine 
07.
Feld = split(Zeile,",") 
08.
Benutzer = Feld(0) 
09.
Vorname = Feld(1) 
10.
Nachname = Feld(2) 
11.
Passwort = Feld(3) 
12.
Call BenuntzerAnlegen(Benutzer,Vorname,Nachname,Passwort) 
13.
Loop 
14.
f.Close 
15.
Wscript.Quit(0) 
16.
 
17.
Sub BenuntzerAnlegen(Benutzer,Vorname,Nachname,Passwort) 
18.
Dim ouo, b 
19.
Set ouo = GetObject("LDAP://OU=test,DC=corp,DC=test,DC=de") 
20.
Set b = ouo.Create("user", "CN=" & Vorname & " " & Nachname) 
21.
Dim WshShell, ret 
22.
Set WshShell = WScript.CreateObject("WScript.Shell") 
23.
b.Put "sAMAccountName", Benutzer 
24.
b.Put "displayName", Vorname & " " & Nachname 
25.
b.Put "givenName", Vorname 
26.
b.Put "sn", Nachname 
27.
b.Put "userPrincipalName", Benutzer & "@corp.test.de" 
28.
b.Put "profilePath", "corp.test.deProfiles" & Benutzer 
29.
b.Put "homeDirectory", "Server01Home" & Benutzer 
30.
b.Put "homeDrive", "P:" 
31.
b.Put "scriptPath", "runLoginGOE.cmd" 
32.
b.Put "c", "DE" 
33.
b.Put "co", "DEUTSCHLAND" 
34.
b.Put "l", "Musterstadt" 
35.
b.Put "postalCode", "0815" 
36.
b.Put "streetAddress", "Adresse 1" & vbCrlf & "Adresse 2" & vbCrlf & "Adresse 3" & vbCrlf 
37.
b.SetInfo 
38.
b.SetPassword Passwort 
39.
b.AccountDisabled = False
user.txt:
01.
vnachnam,Vorname,Nachname,password
2. Im AD-Script wird die "verz.cmd" aufgerufen.

verz.cmd:
01.
md Server01ProfilesApple\%1 
02.
 
03.
echo J | cacls Server01Home\%1 /C /E /G Administratoren:F 
04.
echo J | cacls Server01Home\%1 /C /E /G corp.test.com\%1:F 
05.
echo J | cacls Server01Home\%1 /C /E /R Jeder 
06.
 
07.
 
08.
md corp.test.deProfiles\%1 
09.
 
10.
echo J | cacls corp.test.deProfiles\%1 /C /E /G Administratoren:F 
11.
echo J | cacls corp.test.deProfiles\%1 /C /E /G corp.test.de\%1:F 
12.
echo J | cacls corp.test.deProfiles\%1 /C /E /R Jeder 
13.
 
14.
psexec Server01 C:Applecheckin.cmd
3. Über psexec von Sysinternals soll die Variable für den Benutzernamen in die "checkin.cmd"-

Batch übergeben werden:

checkin.cmd:
01.
@echo off 
02.
:START 
03.
rem settings 
04.
 
05.
echo. 
06.
 
07.
set ADDOM=t4h 
08.
rem echo Bitte Benutzernamen eingeben: 
09.
set /p n= 
10.
set USERHOMEDIR=D:Home\%1 
11.
 
12.
cd D:Homestandard_profil 
13.
d: 
14.
cmd /c xcopy /s "D:Homestandard_profil*.*" "D:Home\%1" 
15.
 
16.
rem take ownership for administrators group 
17.
 
18.
takeown /F %userhomedir% /R /D Y /A 
19.
 
20.
 
21.
rem set inheritation flag 
22.
 
23.
cd C:Scripts 
24.
c: 
25.
 
26.
cmd /c SetACL.exe -on "%USERHOMEDIR%" -ot file -actn setprot -op "dacl:np;sacl:nc" -rec cont_obj 
27.
 
28.
 
29.
rem put back ownership for user 
30.
 
31.
cmd /c SetACL.exe -on "%USERHOMEDIR%" -ot file -actn setowner -ownr "n:%ADDOM%\%1" -rec cont_obj 
32.
 
33.
 
34.
rem put back ACL for user 
35.
 
36.
cmd /c SetACL.exe -on "%USERHOMEDIR%" -ot file -actn ace -ace "n:%ADDOM%\%1;p:full" -rec cont_obj 
37.
 
38.
 
39.
 
40.
rem goto START 
41.
 
42.
pause
So wie ich mir das vorgestellt hab funktioniert es soweit auch ganz gut. Wenn ich in der "checkin.cmd" die Variable (%1) durch den Benutzernamen (vnachnam) ersetze läuft alles wie gewünscht durch. Noch jemand eine Idee wo bei mir der "Hase im Pfeffer" sitzt?

Vielen Dank im Voraus!!!

//Crowdy
Bitte warten ..
Mitglied: Crowdy
23.11.2010 um 11:34 Uhr
Keiner mehr eine zündende Idee?
Bitte warten ..
Mitglied: bastla
23.11.2010 um 11:55 Uhr
Hallo Crowdy!

Abgesehen davon, dass ich die "checkin.cmd" etwas straffen würde:
01.
@echo off & setlocal 
02.
 
03.
rem settings 
04.
set ADDOM=t4h 
05.
 
06.
::set /p n=Bitte Benutzernamen eingeben:  
07.
set USERHOMEDIR=D:\Home\%1 
08.
 
09.
cmd /c xcopy /e "D:\Homestandard_profil\*.*" "%USERHOMEDIR%\" 
10.
 
11.
rem take ownership for administrators group 
12.
takeown /F "%USERHOMEDIR%" /R /D Y /A 
13.
 
14.
 
15.
cd /d C:\Scripts 
16.
rem set inheritation flag 
17.
cmd /c SetACL.exe -on "%USERHOMEDIR%" -ot file -actn setprot -op "dacl:np;sacl:nc" -rec cont_obj 
18.
 
19.
rem put back ownership for user 
20.
cmd /c SetACL.exe -on "%USERHOMEDIR%" -ot file -actn setowner -ownr "n:%ADDOM%\%1" -rec cont_obj 
21.
 
22.
rem put back ACL for user 
23.
cmd /c SetACL.exe -on "%USERHOMEDIR%" -ot file -actn ace -ace "n:%ADDOM%\%1;p:full" -rec cont_obj 
24.
 
25.
pause
müsste der Aufruf von "psexec" etwa so aussehen:
psexec \\server C:\Ordner\Ordner1\checkin.cmd Benutzername
damit in "checkin.cmd" auch etwas als %1 ankommt ...

Grüße
bastla
Bitte warten ..
Mitglied: Crowdy
24.11.2010 um 11:11 Uhr
bastla,

du bist Großartig!!! Vielen vielen Dank! Ohne deine Hilfe hätte ich das wahrscheinlich nächstes Jahr noch nicht gelöst!

//Crowdy
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
PHP
gelöst PHP - Variable in anderes PHP-Skript mitgeben (3)

Frage von Jens4ever zum Thema PHP ...

Batch & Shell
gelöst Selected Gridview Value in Variable schreiben (4)

Frage von reissaus73 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Abfrage Vergleiche mit Variable goto (4)

Frage von Zunaras zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...