Microsoft

dcdiag – VerifyEnterpriseReferences – msDFSR-ComputerReferenceBL – Q312862

0

En préparant un plugin nagios sur la santé AD, dcdiag /e /c a eu la bonne idée de remonter cette alerte:

Starting test: VerifyEnterpriseReferences

The following problems were found while verifying various important DN

references. Note, that these problems can be reported because of

latency in replication. So follow up to resolve the following

problems, only if the same problem is reported on all DCs for a given

domain or if the problem persists after replication has had

reasonable time to replicate changes. 

 [1] Problem: Missing Expected Value

Base Object: CN=myDC,OU=Domain Controllers,DC=mydomain,DC=net

Base Object Description: "DC Account Object"

Value Object Attribute Name: msDFSR-ComputerReferenceBL

Value Object Description: "SYSVOL FRS Member Object"

Recommended Action: See Knowledge Base Article: Q312862

 

L’article Q312862 n’est plus vraiment d’actualité, mais le problème sous-jacent est bien réel.

Depuis Windows 2008, la réplication AD est censée se faire via DFS-R et non plus FRS. Cependant, cela implique de n’avoir plus que des DC > Windows Server 2003.

Donc si vos DC sont à jours, il faut utiliser dfsrmig dont les principales commandes sont:

Vérifier l’état global:

PS C:\users\mchateau\Desktop> dfsrmig /GetGlobalState

Current DFSR global state: 'Start'

Succeeded.

Les différents états possibles sont:

0 'Start'
1 'Prepared'
2 'Redirected'
3 'Eliminated'

==>Si vous êtes déjà en DFS-R, l’état est Eliminated.

 

Vérifier l’état de la migration:

PS C:\users\mchateau\Desktop> dfsrmig /GetMigrationState

All domain controllers have migrated successfully to the Global state ('Start').
Migration has reached a consistent state on all domain controllers.
Succeeded.

 

Passer à l’état Prepared:

PS C:\users\mchateau\Desktop> dfsrmig /SetGlobalState 1

Current DFSR global state: 'Start'

New DFSR global state: 'Prepared'

Migration will proceed to 'Prepared' state. DFSR service will copy the contents of SYSVOL to SYSVOL_DFSR folder.
If any domain controller is unable to start migration, try manual polling.
Or run with option /CreateGlobalObjects.
Migration can start anytime between 15 minutes to 1 hour.
Succeeded.

 

Vérifier l’état (en cours):

PS C:\users\mchateau\Desktop> dfsrmig /GetMigrationState

The following domain controllers have not reached Global state ('Prepared'):

Domain Controller (Local Migration State) - DC Type
===================================================

myDC01 ('Start') - Writable DC
myDC02 ('Start') - Writable DC
myDC03 ('Start') - Primary DC
myDC04 ('Start') - Writable DC

Migration has not yet reached a consistent state on all domain controllers.
State information might be stale due to Active Directory Domain Services latency.
PS C:\users\mchateau\Desktop>

 

Il ne reste plus qu’à faire les 2 états suivants tour à tour:

dfsrmig /SetGlobalState 2
dfsrmig /SetGlobalState 3

 

Au final:

PS C:\users\mchateau\Desktop> dfsrmig /GetMigrationState
All domain controllers have migrated successfully to the Global state ('Eliminated').
Migration has reached a consistent state on all domain controllers.
Succeeded.

scom_2012

SCOM 2012 : De l’installation à l’exploitation, mise en oeuvre et bonnes pratiques

2

Update: le livre est ouvert à la vente sur le site ENI et dans les librairies… Bonnes lectures :) N’hésitez pas à me donner votre avis ^^

Un peu d’auto promo sur un livre que j’ai écris et qui sort pour noël :)

Il porte sur System Center Operations Manager (SCOM) 2012, depuis l’installation jusqu’à l’exploitation des alertes.
Il couvre à la fois les aspects techniques (règles vs moniteurs) mais aussi la manière de gérer et d’exploiter la solution.

Il répond aux besoins d’expertise du lecteur en traitant de façon approfondie, d’un point de vue théorique et pratique, de l’architecture à la supervision applicative, en passant par ledéploiement, les rapports, la création de packs et l’exploitation. L’aspect technique n’étant qu’une partie d’un projet SCOM, l’auteur présente également une méthode pour gérer le flux d’alertes, enrichie de ses retours d’expérience.

Aperçu de la table des matières :

Introduction (Pourquoi SCOM, Le mode de fonctionnement, Le modèle de licence, SCOM vs Nagios, Nouveautés depuis SCOM 2007…)

Architecture SCOM (Introduction, Composants SCOM, Capacity planning, Consommation réseau, Gestion de la sécurité, Haute disponibilité…)

Déploiement(Introduction, Installation initiale, Mise à jour depuis SCOM 2007, Accéder à la plateforme, Configuration initiale, Gestion des droits…)

Mise sous supervision (Introduction, Déploiement agent Windows, Compte restreint, Déploiement agent Linux, Supervision SNMP, Supervision Web…)

Exploitation de la supervision (Introduction, Présentation des consoles, Règle vs moniteur, Explorateur d’intégrité, Effet sapin de noël, Temps de maintenance, Bonnes pratiques…)

Les rapports (Introduction, Utilisation des rapports standards, La base entrepôt, Report Builder, Business Intelligence Development Studio, Suivi du niveau de service…)

Les packs d’administration (Introduction, Importation de packs, Remplacements, Packs de la communauté, Objets de packs, Création de packs…)

Supervision applicative (Introduction, Applications distribuées, Applications Web .Net, Applications Java J2E…).

 http://www.editions-eni.fr/livres/scom-2012-system-center-operations-manager-de-l-installation-a-l-exploitation-mise-en-oeuvre-et-bonnes-pratiques/.2f80e3011dd5984d7046b876f446d463.html

Si vous n’avez pas encore envoyé votre lettre au père noël, il est encore temps ! ;)

wss_administration

SharePoint 2010 – erreur – suppression d’un serveur SQL référence – wss_administration

0

Symptômes:

En voulant supprimer un ancien serveur SQL sur SharePoint depuis l’administration centrale:

An object in the SharePoint administrative framework, "SPDatabaseServiceInstance Name= could not be deleted because other objects depend on it. Update all of these dependants to point to null or different objects and retry this operation. The dependant objects are as follows: SPWebService Name=WSS_Administration

Correction:

Vous avez déplacé la base (à priori ;) ) mais il SharePoint en a gardé une référence. Vous pouvez alors utilisé une application Web qui pointe sur le bon serveur pour mettre à jour celui de l’administration centrale:

$centralAdmin=Get-SPWebApplication -IncludeCentralAdministration | ? {$_.DisplayName -match ‘SharePoint Central Administration’}
$goodExample=Get-SPWebApplication -identity ‘http://mygoodwebapp’
$centralAdmin.Parent.DefaultDatabaseInstance=$goodExample.Parent.DefaultDatabaseInstance
$centralAdmin.Parent.Update()
$centralAdmin.Update()

Utilisez les alias SQL pour la prochaine fois :)

Internet Information Services (IIS) Manager. Bad Data. (Exception from HRESULT: 0×80090005)

0

Symptômes:

Lorsque vous accédez à la console IIS ou aux pools d’applications, vous avez l’erreur suivante:

Bad Data. (Exception from HRESULT: 0x80090005)

Causes:

Vous avez copié le fichier de configuration de IIS d’une machine à l’autre (C:\Windows\System32\inetsrv\config\applicationHost.config)

Ce dernier contient des comptes Windows pour certains pools d’applications. Le mot de passe est encrypté en utilisant une clé locale à la machine, l’autre serveur n’arrive donc pas à les décrypter.

Corriger le mot de passe à la main depuis la console IIS ne résous pas le problème.

Résolution:

2 possibilités:

  • Faire un retour arrière sur le serveur où la configuration a été copiée. Par défaut IIS garde une copie des 10 derniers fichiers de configuration (C:\inetpub\history)
  • Utiliser la méthode supportée pour copier la configuration.

Exporter la configuration:

aspnet_regiis -px "iisConfigurationKey" "C:\iisConfigurationKey.xml" -pri 
aspnet_regiis -px "iisWasKey" "c:\iisWasKey.xml" –pri

Importer sur la cible:

aspnet_regiis -pi "iisConfigurationKey" "C:\iisConfigurationKey.xml" 
aspnet_regiis -pi "iisWasKey" "C:\iisWasKey.xml"

web_content_management_7362

SharePoint 2010 – The super user account utilized by the cache is not configured

0

Vous avez peut-être déjà rencontré ce message d’avertissement SharePoint:

Object Cache: The super user account utilized by the cache is not configured. This can increase the number of cache misses, which causes the page requests to consume unneccesary system resources.
 To configure the account use the following command 'stsadm -o setproperty -propertyname portalsuperuseraccount -propertyvalue account -url webappurl'. The account should be any account that has Full Control access to the SharePoint databases but is not an application pool account.

Généralement, j’utilise le script powershell suivant (toutes mes Application Web sont en claim):

foreach ($a in (Get-SPWebApplication))
{
   $a;
   $a.Properties["portalsuperuseraccount"];
   $a.Properties["portalsuperreaderaccount"];
   $a.Properties["portalsuperuseraccount"] =« i:0#.w|mydomain\SharePointAdminAccount« ;
   $a.Properties["portalsuperreaderaccount"] =« i:0#.w|mydomain\SharePointDedicatedReadAccount« ;
   $a.Update();
}

Cependant, aucun site n’avait les 2 propriétés incorrectes. Pour trouver facilement, il faut basculer dans l’onglet Details de l’event:

Il s’y trouve le PID (Process ID) ayant généré l’erreur:

Il suffit ensuite d’utiliser par exemple Process Explorer de sysinternals pour identifier le site qui pose problème:

Dans le cas présent il s’agit de la centrale Admin, qui ne doit pas être en mode claim par ailleurs

TechED 2012 Europe: la meilleure session

0

Les techED sont maintenant terminées… Voici ma session préférée:Windows Azure Internals

Mark Russinovich (qu’on ne présente plus) montre l’autre côté du miroir pour Azure.

Eléments les plus marquants:

  • ~10 personnes pour administrer 100 000 serveurs physiques!
  • Démonstration d’une interface d’administration Azure,
  • Vue graphique des racks avec les VM,
  • Démonstration de self healing de la plateforme,
  • Explications sur le bug du 29 février, avec la ligne de commande qui a tout planté

Je vous préviens, c’est du lourd :)

Elle est disponible en ligne ici (slides + vidéo): http://channel9.msdn.com/events/TechEd/Europe/2012/AZR302

TechED 2012 Europe

TechEd 2012 Europe : en approche

0

TechED 2012 Europe approche à grand pas :)

J’y serai, et vous ?

gpmc_e_accessdenied

GPMC : 0×80070005 – access denied – E_Accessdenied

0

En voulant modifier une GPO chez un client, j’ai eu ce message d’erreur GPMC, et la GPO n’est effectivement pas modifiée:

En utilisant Process Monitor, de Sysinternals, l’accès au fichier registry.pol est refusé alors que mon compte est admin du domaine:


Suite à un incident et une restauration autoritaire, les fichiers ont en fait l’attribut lecture seule:

Après avoir décocher l’attribut lecture seule, la modification des GPO fonctionnent de nouveau :)

Restaurer une base SQL server via powershell

0
clear

#---------------------------------------------------
$server="mysqlserver"
$endpoint_port="5022"
$instance="myNamedSQLinstance"
$emailFrom = "provisioning@mydomain.com"
$emailTo = "mathieu.chateau@lotp.fr"
$smtpServer = "mysmtpserver"
$sendmail=$true
$foldersource='\\myfileserver\backupFromDev$'
$folderarchived='\\myfileserver\backupFromDev$\done'
$excludeList=@()
$excludeList+='master'
$excludeList+='tempdb'
$excludeList+='model'
#---------------------------------------------------
$foldersource="c:\"
$folderarchived="F:\"

$majorError=$true
$global:log=@()
try
{
    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO")  | out-null
    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoExtended") | Out-Null
    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.ConnectionInfo") | Out-Null
    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoEnum")
    $source = new-object ('Microsoft.SqlServer.Management.Smo.Server') "$server\$instance"
    $majorError=$false
}
catch
{
       AddLog "major error, one side not reachable $_"
       "major error, one side not reachable $_"
       $majorError=$true
}

function AddLog($text)
{
       $global:log+=$text
       Write-Host $text
}

if ($majorError -eq $false)
{
       $databases = $source.Databases
       foreach ($file in (Get-childitem $foldersource -Filter "*.bak"))
       {
               $dbname=$file.Name -replace (".bak","")
               if ($excludeList -notcontains $dbname)
            {
                #not on the blacklist
                if (($databases | ?{$_.Name -ieq $dbname}) -eq $null)
                {
                    #database does not exist
                    try
                    {
                        #Restore
                        $targetDBFilePath = $source.MasterDBPath + "\" + $dbName + ".mdf"
                        $targetLogFilePath = $source.MasterDBLogPath + "\" + $dbName + ".ldf"
                        AddLog "   going to restore $dbname to:"
                        AddLog "   $targetDBFilePath and $targetLogFilePath"
                        $restore = new-object ('Microsoft.SqlServer.Management.Smo.Restore')
                        $restore.Action = 'Database'
                        $restore.Database = $dbname
                        ##$backupDataFile=$dbbk.Devices[0].Name
                        #$restore.Devices.AddDevice($backupDataFile, [Microsoft.SqlServer.Management.Smo.DeviceType]::File)
                        $backupfile=New-Object ("Microsoft.SqlServer.Management.Smo.BackupDeviceItem")($file.FullName, "File")
                        $restore.Devices.Add($backupfile)
                        #$restoredetails=$restore.ReadBackupHeader($source)
                        $relocateDataFile = new-object ('Microsoft.SqlServer.Management.Smo.RelocateFile')
                        $relocateLogFile  = new-object ('Microsoft.SqlServer.Management.Smo.RelocateFile')
                        $dbFileList = $restore.ReadFileList($source)
                        $relocateDataFile.LogicalFileName = $dbFileList.Select("Type = 'D'")[0].LogicalName
                        $relocateDataFile.PhysicalFileName = $targetDBFilePath
                        $relocateLogFile.LogicalFileName = $dbFileList.Select("Type = 'L'")[0].LogicalName
                        $relocateLogFile.PhysicalFileName = $targetLogFilePath
                        $restore.RelocateFiles.Add($relocateDataFile)
                        $restore.RelocateFiles.Add($relocateLogFile)
                        $restore.ReplaceDatabase = $False
                        $restore.NoRecovery = $False
                        $restore.SqlRestore($source)
                        AddLog "     Restore done"
                        Move-Item $file.FullName $folderarchived
                    }
                    catch
                    {
                        AddLog "    error during restore: $_"
                        $majorError=$true
                        break
                    }
                    
                }
                else
                {
                    #blacklisted name
                    AddLog "database $dbname / $($files.Names) already exist"
                }
            }
            else
            {
                AddLog "Forbidden databasename: $dbname"
            }
       
       }
}

if($sendmail)
{
       $temp=""
       foreach ($line in $log)
       {
              $temp+=$line+"`r`n"
       }
       $smtp = new-object Net.Mail.SmtpClient($smtpServer)
       $smtp.Send($emailFrom, $emailTo,"SQL mirror automator",$temp)
}


$log

rdp rejected

Ferme RDP avec broker: comment accéder à un serveur spécifique ?

0

Hypothèses

  • Vous avez une ferme RDP avec par exemple 2 serveurs RDP,
  • Vous avez le broker en place, donc les utilisateurs sont redirigés vers leur connexion actuelle (affinité),
  • You avez restreint à une session par utilisateur.

Problème

Quand vous essayez de joindre un serveur RDP spécifique de la ferme (pour faire de l’admin dessus ou aider un utilisateur qui est dessus), vous êtes refusé:

La connexion ne peut pas être établie car l’ordinateur distant qui a été joint n’est pas celui que vous avez spécifié. 
Cela peut être dû à une entrée obsolète du cache DNS. Essayez d’utiliser l’adresse IP de l’ordinateur à la place du nom.

 

Idem en essayant par l’adresse IP comme suggéré:

Cet ordinateur ne peut pas se connecter à l’ordinateur distant.

L’ordinateur distant auquel vous essayez de vous connecter vous redirige vers l’ordinateur distant. 
La Connexion Bureau à distance ne peut pas vérifier que les deux ordinateurs distants appartiennent à la même batterie de serveurs. 
Ceci peut se produire si un autre ordinateur du réseau porte le même nom que celui auquel vous tentez de vous connecter.

 

Solution

Il suffit d’utiliser le fameux /admin du client RDP pour bypasser les règles !

 

 

Haut de page