Jump to content

Einmaliges ausführen einer Batch


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

hallo,

 

wir sind gerade dabei ca. 150 Clients in eine neue Domäne bzw. auf einen neuen Exchange 2003 umzustellen.

 

Ich habe bisher eine Batch gebastelt, das die Benutzer-Profile von Outlook mit dem Exchange mittles einer prf-Datei verknüpft.

 

Nun suche ich eine Möglichkeit das Script nur einmal auszuführen.

Ansonsten würde das Profil bei jedem Anmelden des Benutzers wieder neu erstellt werden.

 

Gibts es eine Möglichkeit, dass dieses Script nur einmal auf den Benutzer angewendet wird, evtl. per WSH-Script ?

 

Wie könnte so ein Script aussehen ?

 

Server: Windows 2003

Clients: Windows 2000

Link zu diesem Kommentar

Hi Zusammen

 

Ja, das mit dem PRF würde mich auch interessieren. Habe es auch schon auf verschiedene, von MS dokumentierte Arten versucht. Leider ist eine der Methoden wenig sinnvoll, da das Default Profile beim Ausführen eines Loginscripts durch ein Neues ersetzt wird, und das andere als Backup angelegt wird.

 

Die andere Methode startet hingenen Outlook automatisch neu, ist somit also auch wenig brauchbar....... :( :( :(

 

 

Allerdings habe ich den Ort in der Registy gefunden, wo das Outlook default Profile abgelegt ist.

 

[b]

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles]
"DefaultProfile"="[i]blabla, irgendwas Profil....[/i]"

[/b]

 

 

Wüsste nicht genau wie das aussehen müsste, aber man konnte doch ne Reg-Abfrage laufen lassen, die dann das Vorhandensein dieses Profil prüft, und allenfalls Outlook auffordert, das PRF (auf einem Netz-share) zu verarbeiten.

 

Das wäre cool, wenn das ginge.... :shock: :cool:

Was meinst du thorgood?

 

Die anderen sind natürlich auch gefragt! :D

 

 

Grüsse

Velius

 

 

 

P.S.: @G-Files

Ich würde an deiner Stelle den Titel des Threads ändern, da sich sonst Leute mit Ahnung davon diesen nicht ansehen werden.

Link zu diesem Kommentar

hallo,

 

ja das mit erstellen einer Textdatei habe ich mir auch schon überlegt.

 

Roaming Profiles werden auch genutzt, deshalb wäre es glaub ich am bestens so eine Textdatei im Profil abzulegen.

 

Das Script soll per Benutzer-GPO beim Anmelden augerufen werden.

 

Ich habe bisher folgendes Script getestet, das eine Textdatei erstellt:

 

set fileso = CreateObject("Scripting.FileSystemObject")
Set infile = fileso.CreateTextFile("C:\profilcheck.txt")

 

Jedoch sollte es dies benutzerspezifisch im Profil des Benutzers ablegen und danach auf die Nicht-Existenz dieser Text-Datei überprüfen und falls nicht vorhanden ein Script mit der Office-Versions-Abfrage starten die wie folgt aussieht:

 

sComputer = "."   '  use "." for local computer
iOfficeVer = GetOfficeVer(sComputer)

If iOfficeVer = -1 Then
 WScript.Echo "Version of Office installed is unknown, " _
    & "could not connect to the remote computer."
Elseif iOfficeVer = 0 Then
 WScript.Echo "Office is not installed."
Else
 WScript.Echo "Version of Office installed: " & iOfficeVer
End If

Function GetOfficeVer(sNode)
 On Error Resume Next
 Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE
 Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
       & sNode & "/root/default:StdRegProv")
 If Err.Number <> 0 Then
   GetOfficeVer = -1
   Exit Function  '------->
 End If

 sValueName = "Path"
 sRegPre = "SOFTWARE\Microsoft\Office\"
 sRegPost = "\Common\InstallRoot"


If oReg.GetStringValue( _
      HKLM, sRegPre & "11.0" & sRegPost, sValueName, sValue) = 0 Then
   GetOfficeVer = 2003
		Set WshShell = WScript.CreateObject("WScript.Shell")
       		WshShell.run ("cmd.exe /c \\server\verteilung\profil_2003.bat")
 Elseif oReg.GetStringValue( _
      HKLM, sRegPre & "10.0" & sRegPost, sValueName, sValue) = 0 Then
   GetOfficeVer = 2002
		Set WshShell = WScript.CreateObject("WScript.Shell")
       		WshShell.run ("cmd.exe /c \\server\verteilung\profil_2002.bat")
 Elseif oReg.GetStringValue( _
      HKLM, sRegPre & "9.0" & sRegPost, sValueName, sValue) = 0 Then
   GetOfficeVer = 2000
		Set WshShell = WScript.CreateObject("WScript.Shell")
       		WshShell.run ("cmd.exe /c \\server\verteilung\profil_2000.bat")
 Elseif oReg.GetStringValue( _
      HKLM, sRegPre & "8.0" & sRegPost, sValueName, sValue) = 0 Then
   GetOfficeVer = 97
 Else
   GetOfficeVer = 0
 End If

End Function

 

in den profil_2000.bat liegt das prf-profil folgendermassen aufgerufen wird:

 


\\server\verteilung\newprof.exe -p \\server\verteilung\Outlook_2000.prf

 

in der profil_2002.bat steht folgendes:

 


cd C:\Programme\Microsoft Office\Office10\
outlook.exe /cleanprofile /importprf \\server\verteilung\Outlook_2002.PRF

 

in der profil_2003.bat steht folgendes:

 


cd C:\Programme\Microsoft Office\Office11\
outlook.exe /cleanprofile /importprf \\server\verteilung\Outlook_2003.PRF

 

 

 

kann mir da jemand weiterhelfen ?

Link zu diesem Kommentar

Warum mit einer Datei prüfen. Ein Eintrag in der Registry finde ich schöner.

 

Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")

If Not PRFIsInstalled() Then

Dein Script...

End If

Function PRFIsInstalled()
On Error Resume Next
Dim PRFCheck
   PRFCheck = WshShell.RegRead("HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\PRFIsInstalled")
   If PRFCheck = "Yes" Then
      PRFIsInstalled = True
   Else
      WshShell.RegWrite "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\PRFIsInstalled", "Yes", "REG_SZ"
      PRFIsInstalled = False
   End If
End Function

 

thorgood

Link zu diesem Kommentar

Hi Thorgood

 

 

Wusste doch, dass wir auf dich zählen können.....

 

Also thoretisch kann man den dein VBS auch so ergänzen, oder?

 

Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")

If Not PRFIsInstalled() Then

Dein Script...

End If

Function PRFIsInstalled()
On Error Resume Next
Dim PRFCheck
   PRFCheck = WshShell.RegRead [b]("HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles")[/b]
   If PRFCheck = "[b][i]corporate profile[/i][/b]" Then
      PRFIsInstalled = True    
   End If
End Function

Link zu diesem Kommentar
Original geschrieben von thorgood

Wenn die Namen des alten und neuen Profils sich unterscheiden Ja.

 

thorgood

 

Nachtrag: Da fehlt noch was

If PRFCheck = "corporate profile" Then
      PRFIsInstalled = True
End If
[b]PRFIsInstalled = False[/b]

 

 

Und wenn nicht, dann müsste ich über WshShell.RegWrite das Dafult Profile umbenennen, gell? :suspect: :)

Link zu diesem Kommentar

hallo,

 

mein Script sieht jetzt folgendermassen aus :

 


Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")

If Not PRFIsInstalled() Then

[i]
'Office-Versions-Abfrage Anfang
sComputer = "."   '  use "." for local computer
iOfficeVer = GetOfficeVer(sComputer)

If iOfficeVer = -1 Then
 WScript.Echo "Version of Office installed is unknown, " _
    & "could not connect to the remote computer."
Elseif iOfficeVer = 0 Then
 WScript.Echo "Office is not installed."
Else
 WScript.Echo "Version of Office installed: " & iOfficeVer
End If

Function GetOfficeVer(sNode)
 On Error Resume Next
 Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE
 Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
       & sNode & "/root/default:StdRegProv")
 If Err.Number <> 0 Then
   GetOfficeVer = -1
   Exit Function  '------->
 End If

 sValueName = "Path"
 sRegPre = "SOFTWARE\Microsoft\Office\"
 sRegPost = "\Common\InstallRoot"


If oReg.GetStringValue( _
      HKLM, sRegPre & "11.0" & sRegPost, sValueName, sValue) = 0 Then
   GetOfficeVer = 2003
		Set WshShell = WScript.CreateObject("WScript.Shell")
       		WshShell.run ("cmd.exe /c \\server\profil_2003.bat")
 Elseif oReg.GetStringValue( _
      HKLM, sRegPre & "10.0" & sRegPost, sValueName, sValue) = 0 Then
   GetOfficeVer = 2002
		Set WshShell = WScript.CreateObject("WScript.Shell")
       		WshShell.run ("cmd.exe /c \\server\profil_2002.bat")
 Elseif oReg.GetStringValue( _
      HKLM, sRegPre & "9.0" & sRegPost, sValueName, sValue) = 0 Then
   GetOfficeVer = 2000
		Set WshShell = WScript.CreateObject("WScript.Shell")
       		WshShell.run ("cmd.exe /c \\server\profil_2000.bat")
 Elseif oReg.GetStringValue( _
      HKLM, sRegPre & "8.0" & sRegPost, sValueName, sValue) = 0 
 Else
   GetOfficeVer = 0
 End If

End Function
'Office-Versions-Abfrage Ende
[/i]

End If

Function PRFIsInstalled()
On Error Resume Next
Dim PRFCheck
   PRFCheck = WshShell.RegRead ("HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles")
   If PRFCheck = "Exchange_Neu" Then
      PRFIsInstalled = True    
   End If
   PRFIsInstalled = False

End Function

 

 

 

Jedoch wird bei jedem ausführen des Scripts in der Registry immer ein neues Backup des Profils erstellt.

 

Habe ich noch einen Fehler drin ?

Link zu diesem Kommentar

Bei mir sieht's jetzt so aus.....

 

 


Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")

If Not PRFIsInstalled() Then

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.run ("outlook.exe /importprf \\server\share\MailSettingsOutlook.prf")

End If

Function PRFIsInstalled()
On Error Resume Next
Dim PRFCheck
PRFCheck = WshShell.RegRead ("HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\DefaultProfile")
If PRFCheck = "Unsere Firma Profil" Then
	PRFIsInstalled = True
End If
PRFIsInstalled = False

End Function

 

 

Trotzdem wird die Abfrage nicht durchgeführt, und es werden Backups erstellt der vorgänger Profile.....

 

Sieht da jemand den Fehler?? :(

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...