La solution est fournie par Microsoft : Your computer may freeze or restart to a black screen that has a "0xc0000034" error message after you install Windows 7 Service Pack 1
lundi, avril 2011
Erreur Fatale C0000034 à l'installation du Service Pack 1 de Windows 7
Par Guillaume MAISON le lundi, avril 2011, 11:57 - Windows 7
mardi, février 2011
Comment faire pour augmenter la taille limite de 18 gigaoctets des bases de données Exchange Server 2003 Service Pack 2
Par Guillaume MAISON le mardi, février 2011, 10:55 - Exchange 2003
Parce que cela m'est arrivé souvent, voici un article Microsoft concernant l'augmentation de la taille limite d'une base Exchange 2003 Standard SP2.
A noter que pour un Exchange 2003 Enterprise, il n'y a pas de taille limite
Page blanche sur OWA d'un Exchange 2007 ou 2010
Par Guillaume MAISON le mardi, février 2011, 10:26 - Exchange
Parce que j'ai été confronté à ce problème et que j'ai une solution, je me permets ce petit message ici.
Le symptôme : OWA ne s'affiche plus sur IE mais une page sans mise en page apparaît bien sur Firefox ou Chrome. IE affiche un message d'erreur javascript en bas à gauche portant sur flogon.js en ligne 6.
Diagnostic : lors de l'application de roll-up pour Exhcange 2007 (presque quelque soit le roll-up), il y a un bigntz lors de la mise à jour de OWA.
Solution : très simple :
ouvrez la console Powershell exchange et tapez la commande suivante :
[powershell]
Get-OwaVirtualDirectory | where-object {$_.owaversion -eq "Exchange2007"} | ForEach-Object {remove-owavirtualdirectory $_.name;new-owavirtualdirectory -name $_.name -websitename $_.website}
Ca retrouve le OWA de base de votre SBS, le supprime (il faut rester devant pour confirmer la suppression) puis le recrée, à l'identique.
vous pouvez même en créer d'autres, si vous le souhaitez, au format Exchange2007 ou Exchange2000Or2003.
Voilà. Pas besoin de se lancer dan sune galère de désinstallation de roll-up, redémarrages et/ou résinstallation de roll-up.
jeudi, février 2010
Importer des rendez vous dans Outlook 2007
Par Guillaume MAISON le jeudi, février 2010, 13:43 - Développement
Lors de l'installation d'un serveur Exchange 2007 chez un client, ce dernier m'a demandé de reprendre dans les calendriers de chacun des utilisateurs tous les événements d'une application d'agenda au format web.
Cette application web s'appelle Ovidentia. C'est une application fonctionnant sous Apache/PHP/MySQL. Ma première idée était de trouver un moyen d'exporter ces événements au format csv (format universellement connu et facilement manipulable par la suite pour automatiser d'une manière ou d'une autre un import). Fonctionnant sous MySQL, je pouvais utiliser un connecteur ODBC pour faire une requête dans Excel pour générer ce csv.
Toutefois, cela ne réglait pas mon souci pour importer les événements dans Outlook, lié à l'Exchange. Surtout, étant donné que j'avais plus de 50 utilisateurs à traiter, comment l'automatiser, sachant que je devais récupérer tous les événements depuis début 2009...
Enfin, j'ai réussi à trouver le script qui allait bien, qui plus est en PowerShell ! En fait, je me suis basé sur ce script Create Calendar Appointments Automatically Based on Existing Calendar Appointments.
Puis, je l'ai modifié, pour intégrer la requête ODBC qui va bien et les traitements qui vont bien pour la création des événements.
Pour cet exemple, les prérequis sont :
- pilote ODBC MySQL
- Powershell 2.0
J'ai donc créé 3 fichiers pour me permettre tout ça :
requete.sql :
SELECT bab_users.id, bab_users.nickname, bab_users.email, bab_cal_events.id, bab_cal_events.title, bab_cal_events.description, bab_cal_events.location, bab_cal_events.start_date, bab_cal_events.end_date, bab_cal_events.bprivate FROM bab_users, bab_cal_events, bab_cal_events_owners, bab_calendar WHERE bab_calendar.owner=bab_users.id AND bab_cal_events_owners.id_cal = bab_calendar.id AND bab_cal_events.id = bab_cal_events_owners.id_event AND bab_cal_events.start_date >= '#startdate#' AND bab_users.nickname ='#username#' GROUP BY bab_users.id, bab_users.nickname, bab_users.email, bab_cal_events.id, bab_cal_events.title, bab_cal_events.description, bab_cal_events.location, bab_cal_events.start_date, bab_cal_events.end_date, bab_cal_events.bprivate ORDER BY bab_cal_events.start_date
agenda.ps1 (LE script d'importation) Il est important d'exécuter ce script sur le poste de l'utilisateur et connecté avec sa session :
param($username, $action="synchro", $reel=$false) function HelpCommand($value) { $howto = @" agenda.ps1 username action [reel ($false|$true)] "username" : le nom de l'utilisateur dans Ovidentia "action" : quelle action doit-on effectuer : import : il s'agit d'une première synchronisation, complète, depuis le 01/01/2009 synchro (par défaut) : il s'agit d'une synchronisation Ovidentia->Outlook pour tous les nouveaux événements (ou événements modifiés) de la date du jour jusqu'à .... "reel" : doit-on réellement mettre à jour ou non (presque équivalent à -Whatif) $false (par défaut) : juste pour tester $true : mettre réellement à jour Exemple 1 : agenda.ps1 gmaison import $false Cet exemple permet de simuler l'import de l'agenda de gmaison depuis le 01/01/2009 Exemple 2 : agenda.ps1 gmaison synchro $true Cet exemple permet de synchroniser l'agenda de gmaison pour tous les événements à venir depuis la date d'exécution du script "@ $howto } trap [Exception] { Write-error "Une erreur est arrivée. Veuillez vérifier vos paramètres" HelpCommand break; } if ($username.tolower() -eq "-help") { HelpCommand break } #si on a oublié de préciser le username if ($username -eq $null) { [string]$username = read-host -prompt "veuillez saisir le nom réseau de l'utilisateur " } #ici, on récupère la requête pour l'utilisateur $filepath = "requete.sql" # ou bien si les noms utilisateurs sont identiques au login réseau #[string]$nomutilisateur = [environment]::username [string]$requete = get-content $filepath $requete = $requete.replace("#username#",$username).tolower() if ($action -eq "import") { $startdate = "2009-01-01" } else { $startdate = (Get-Date -Format "yyyy-MM-dd").toString() } $requete = $requete.replace("#startdate#",$startdate).tolower() #ici, on crée la connexion pour pouvoir récupérer tous ses rendez vous $commande = $null $connexion = $null $commande = new-object system.data.odbc.odbccommand $connexion = new-object system.data.odbc.odbcconnection $commande.connection = $connexion # attention : il faut créer l'entrée odbc pour ovidentia $dsn = "driver=mysql odbc 5.1 driver;uid=exchange;pwd=exchange;port=3306;database=ovidentia;server=serveur" $connexion.connectionstring = $dsn $connexion.open() #ici, on exécute la requête et on récupère les données $commande.commandtext = $requete $dataadapter = new-object system.data.odbc.odbcdataadapter($commande) $dataset = new-object system.data.dataset $nombre= $dataadapter.fill($dataset) # on démarre outlook if ($reel) { $outlookapp = new-object -comobject outlook.application $allcalitems = $outlookapp.getnamespace("MAPI").getdefaultfolder(9).items } #puis on insère les données dans le calendrier foreach ($table in $dataset.tables) { $max_lignes = $table.rows.count $i=0 foreach ($row in $table.rows) { $iduser = $row.id $nickname = $row.nickname $email = $row.email $eveid = $row.id1 $titre = $row.title $desc = $row.description $lieu = $row.location $datedeb = $row.start_date $datefin = $row.end_date $prive = $row.bprivate #write-host $nickname" - "$eveid" -> "$datedeb # on a récupéré toutes les données liées à l'événement # maintenant, on crée l'événement if ($reel) { if ($action -eq "synchro") { # ici, on va rechercher si l'événement utilisateur existe $event = $allcalitems | where-object{$_.userproperties.find("OvidentiaID", $true).value -eq $eveid -and $_.start -ge [datetime]$startdate} } else { $event = $null } # s'il n'existe pas, on le crée if ($event -eq $null) { $event = $outlookapp.createitem(1) $prop = $event.userproperties.add("OvidentiaID", 20) }else{ $prop = $event.userproperties.find("OvidentiaID", $true) } # quoiqu'il arrive, on le met à jour $event.subject = "$titre" $event.location = $lieu $event.body = $desc $event.start = [datetime]$datedeb $event.end = [datetime]$datefin if ($prive -eq "y") { $event.sensitivity = 2 } else { $event.sensitivity = 0 } $maintenant = get-date if ($datedeb -ge $maintenant) { $event.reminderset = $true } else { $event.reminderset = $false } $prop.Value = $eveid; $event.close(0) } else { write-host @" $iduser $nickname $email $eveid $titre $desc $lieu $datedeb $datefin $prive "@ $todisplay } [int]$pourcent = $i++ / $max_lignes *100 write-progress "importation des événements du calendrier" "en cours" -percentcomplete $pourcent -id 1 } }
J'ai également créé un script qui me permet, sur un poste d'un utilisateur, d'automatiser l'exécution du script ci-dessus par l'intermédiaire du planificateur de tâche. exec_task.ps1 la tâche doit être configurée pour être exécutée avec le compte de l'utilisateur :
param($username, $action, $reel) #Récupération de la date du jour $dt = Get-Date -format "yyyyMMdd_hhmm" # construction du chemin où se trouve ce script et celui d'import de l'agenda # mais également le chemin du fichier de log $MyPath = (split-path $myinvocation.Mycommand.Definition) $file = $MyPath +"\"+[Environment]::UserName+"_"+$dt + ".log" #Démarrage de la récupération de la console (pour le log) start-transcript $file #en cas d'erreur on arrête la récupération du log trap { stop-transcript; break} Set-Location $MyPath .\agenda.ps1 $username $action $reel stop-transcript
samedi, janvier 2010
Déplacer la base de données des fichiers cache sous Windows Vista
Par Guillaume MAISON le samedi, janvier 2010, 08:26 - Windows Vista
Bonjour,
En ce qui concerne le déplacement de la base de données de cache des fichiers hors connexion, voici une petite procédure que j'ai réussi à mettre en place :
La procédure idéale étant :
1. Purger la base des fichiers hors connexion Pour XP et Pour Vista
2. Redémarrer l'ordinateur en ayant pris soin de débrancher le câble réseau ou désactivé le Wifi (bref désactivation du réseau)
3. Se reconnecter sur le PC, modifier la base de registre selon la section bModifier les paramètres du Registre/b de l'article Comment déplacer le dossier côté client de mise en cache (CSC) vers un nouvel emplacement dans Windows Vista.
4. Redémarrer le PC et resélectionner les dossiers que l'on désire disponibles hors connexion.
A noter que l'intégralité de la méthode décrite ici : Comment déplacer le dossier côté client de mise en cache (CSC) vers un nouvel emplacement dans Windows Vista n'a pas fonctionné. L'assistant de migration ne m'a jamais trouvé les Go à transférer...
color=#FF0000biATTENTION : il y a des modifications de base de registre. Faites bien une sauvegarde de votre PC ou de votre base de registre avant./i/b/color
PS : dans l'article ci-dessus, il est fait mention d'une notation Windows NT... Il s'agit bien de mettre ??\...... les points d'interrogation ne sont pas des éléments à remplacer par quoi que ce soit ! ils sont à écrire textuellement.
mercredi, mai 2008
VBScript: Créer une signature personnalisée par utilisateur sous Outlook 2003/2007 sur SBS
Par Guillaume MAISON le mercredi, mai 2008, 10:55 - Développement
Souvent, chaque utilisateur veut voir, dans sa signature, son nom, sa ligne directe, le nom de son poste, ... Pour autant, il existe une charte graphique d'entreprise qui doit être commune à l'ensemble de ces signatures. Si chaque utilisateur crée sa propre signature, il faut alors qu'une personne vérifie chacune des signatures et la mette correctement en forme sur l'ensemble des postes. Cela peut devenir fastidieux, notamment si l'entreprise doit changer de signature en fonction d'événéments la concernant (présence sur un salon, présence de publicités pour de nouveaux produits, etc...).
Voici donc un petit script, qui fonctionne avec Outlook 2003 et Outlook 2007, en environnement Active Directory (donc également sur SBS), qui permet de personnaliser la signature, par utilisateur, tout en gardant la cohérence de la charte graphique d'entreprise.
jeudi, avril 2008
Comment gérer une messagerie avec des e-mails internes et externes
Par Guillaume MAISON le jeudi, avril 2008, 10:27 - Microsoft Windows SBS 2003
Imaginez que vous ayez un domaine de messagerie (hébergé en extérieur par un prestataire du type OVH, 1AND1, ... ) dont une partie des utilisateurs est en local, Sur le réseau SBS, et une autre partie qui se trouve toujours en déplacement ou du moins pas dans les locaux du réseau. SBS sait gérer ce cas de figure, avec OWA (Outlook Web Access), RPC Over HTTP, des connexions VPN à distance, etc... Mais, imaginons maintenant que vous ayez un écueil technique que vous ne pouvez contourner (sauf à mettre trop de sous) : impossible d'accéder de l'internet à votre SBS... Là, les choses se compliquent... enfin, presque...
mercredi, octobre 2007
Envoi massif de mails non voulus avec Exchange
Par Guillaume MAISON le mercredi, octobre 2007, 15:34 - General
Si après avoir envoyé un mail avec votre Outlook vous vous apercevez que votre mail est dupliqué et envoyé en masse, sans que vous n'ayez rien fait, intéressez vous à la solution ci-dessous.
jeudi, juin 2007
WebCast PowerShell
Par Guillaume MAISON le jeudi, juin 2007, 13:18 - Développement
Il s'agit du WebCast du séminaire PowerShell qui a eu lieu le 14 mai 2007. Très intéressant si vous voulez vous lancer dans de l'administration système et réseau "à la mode unix" et a priori en encore plus puissant !
mercredi, juin 2007
Installation de SharePoint Services 3.0
Par Guillaume MAISON le mercredi, juin 2007, 18:03 - SharePoint Services
attention, après plusieurs lectures et avis, il semble préférable de faire une installation de WSS 3.0 en parallèle de la v2...
lundi, juin 2007
PowerShell : Mapper des lecteurs réseau en fonction des groupes d'un utilisateur
Par Guillaume MAISON le lundi, juin 2007, 18:35 - Développement
Idem que celui en VBScript mais en PowerShell. Attention, cela nécessite toutefois d'avoir déployé le PowerShell sur l'ensemble des postes de travail (PowerShell mais bien sûr avant .Net).
VBScript : Mapper des lecteurs réseau en fonction des groupes d'un utilisateur
Par Guillaume MAISON le lundi, juin 2007, 18:11 - Développement
Il s'agit contourner les GPO - enfin une tellement infime partie que c'est même pas un contournement mais une autre manière de voir dira-t-on - d'un serveur Windows 2003 par l'intermédiaire d'un script. Celui-ci, sous réserve de modifications, peut être exécuté à l'ouverture d'une session
[METHODE] Installation de Microsoft CRM 3.0 sur un SBS 2003 R2 Premium
Par Guillaume MAISON le lundi, juin 2007, 17:32 - CRM
Procédure Pas-à -pas pour installer un Microsoft CRM 3.0 sur un Microsoft Small Business Serveur 2003 R2 Premium.
Bienvenue !
Par Guillaume MAISON le lundi, juin 2007, 17:10 - General
A la demande générale, voici mon blog.
Vous trouverez sur ce blog un petit peu toutes mes réflexions, mes découvertes, mes ping et mes pongs, mes trucs et astuces, mes questions, sur le coeur de mon métier : l'informatique.
Les commentaires sont les bienvenus :)
Cordialement,
Chtonk
PS : les infos sont données à titre indicatif. Les manipulations et scripts que vous trouverez sur ce site sont à utiliser sous votre seule responsabilité. Ils ont fonctionné dans mon environnement et devraient fonctionner sous la plupart des environnements. Mais si vous utilisez un script ou faites une manipulation décrite ici et que ça ne marche pas, voire plante votre système, c'est à vous et à vous seul que vous devrez vous en prendre. En aucun cas il ne faudra porter réclamations auprès de moi.