Exchange Roaming User
; ScriptNavn: RoamingExchange.kix
; Lavet af: Lars Kim Lund
; Dato: 28.06.1999
; Beskrivelse: Exchange Roaming User Setup.
;
; Der er flere metoder til at få Exchange indstillinger til at 'roame'.
; Microsoft har lavet et lille program der hedder 'profgen.exe', der kan benyttes til formålet.
; Det er dog efter min mening mangelfuldt så jeg har derfor programmeret det i KIX istedet.
; Scriptet benytter en profilskabelon (default.prf) der kan findes på Exchange klient CD-rommen
; samt 'newprof.exe', der er en del af Exchange klienten.
;
; Da Exchange af uvisse årsager foretager en konvertering af danske karakterer når den gemmes
; i registry har det været nødvendigt at foretage en tegnkonvertering. Endvidere vil den opmærksomme
; læser bemærke at visse dele af scriptet sørger for at emigreringen til Roaming User forløber automatisk.
; De dele kan naturligvis udelades når det er sikkert at alle brugere er blevet 'konverteret'.
;
; Når man ikke bruger profiles og derfor ikke foretager replikering mellem klient og homedirectory ved login
; og logoff så er det meget svært at få de lokale indstillinger til at 'roame'. Herunder f.eks. autosignaturen.
$space=" "
?""
; Find default profile...
?"Configuring Exchange..."
$regbase="HKEY_USERS\.DEFAULT\Software\Microsoft\Windows Messaging Subsystem\Profiles"
$regkey="DefaultProfile"
$profil_def=readvalue($regbase,$regkey)
; Scan for existing .pab file...
?$space+"The active profile is $profil_def"
; Converting profile-name. You might want to add ä, ü etc...
$linecount=1
$profil_tmp=""
while $linecount<=len($profil_def)
$char=substr($profil_def,$linecount,1)
select
case $char="æ" $char="[v~"
case $char="ø" $char="[x&"
case $char="å" $char="[u~"
case $char="Æ" $char="[v|"
case $char="Ø" $char="[x}"
case $char="Å" $char="[u|"
endselect
$profil_tmp=$profil_tmp+$char
$linecount=$linecount+1
loop
$profil_def=$profil_tmp
$index=0
:loop1
$key=enumkey("$regbase\$profil_def",$Index)
If @error=0
$check_base="$regbase\$profil_def\$key"
$check_key="001e6600"
$check_val=readvalue($check_base,$check_key)
if @error=0
$profil_pab=$check_val
?$space+"Address Book found, $profil_pab"
goto loop1_out
endif
$index=$index + 1
goto loop1
endif
:loop1_out
;?$space+"Address Book found, $profil_pab"
; Searching for the right profile...
$index=0
:loop2
$key=enumkey($regbase,$index)
If @error=0
if $key=@userid
?$space+"The profile @userid has been activated."
$res=writevalue($regbase,$regkey,@userid,"reg_sz")
goto no_profile
endif
$index=$index+1
goto loop2
endif
; Check if .pab file is local...
$home="h:\@userid\_profil\exchange"
use h: @homeshr
$check_lokal=substr($profil_pab,1,1)
if ($check_lokal<>"c") or ($profil_pab="")
goto no_copy
endif
; If local and if user does not have .pab on server, local .pab is beeing copied...
if exist("$home\@userid.pab")<>1
?$space+"Copying: $profil_pab"
copy "$profil_pab" "$home\@userid.pab"
endif
:no_copy
; Check last user...
?$space+"Checks existing profile..."
if ($profil_def=@userid)
?$space+"The profile is correkt and will not be changed!"
goto no_profile
endif
; Make a new profile if necessary...
?$space+"Making new profile: @userid"
$prf_ini="c:\exchange\default.prf"
; Copies profile template if it doesnt exist...
if exist("c:\exchange\default.prf")<>1
copy "@lserver\netlogon\exchange.prf" "$prf_ini"
endif
; Manipulating profile template...
$prf_group="General"
$prf_var="ProfileName"
$res=writeprofilestring($prf_ini,$prf_group,$prf_var,@userid)
$prf_group="Service1"
$prf_var="MailboxName"
$res=writeprofilestring($prf_ini,$prf_group,$prf_var,@userid)
$prf_var="HomeServer"
$res=writeprofilestring($prf_ini,$prf_group,$prf_var,"MAILSRV")
$prf_group="Service2"
$prf_var="PathToPersonalAddressBook"
$res=writeprofilestring($prf_ini,$prf_group,$prf_var,"$home\@userid.pab")
shell "%comspec% /c c:\exchange\newprof.exe -p $prf_ini"
:no_profile
; Searching for local calender file and removes evt. reference...
:loop3
$key=enumkey("$regbase\$profil_def",$Index)
If @error=0
$check_base="$regbase\$profil_def\$key"
$check_key="001e03e8"
$check_val=readvalue($check_base,$check_key)
if @error=0
$profil_sch=$check_val
if $profil_sch<>""
?$space+"Removing reference to local calender file: $profil_sch"
$res=writevalue($check_base,$check_key,"","reg_sz")
goto loop3_out
endif
endif
$index=$index + 1
goto loop3
endif
?$space+"Callender settings are OK!"
:loop3_out
; The end...
?$space+"OK!"
?""
|