Blog de Florent Appointaire

Blog sur les technologies Microsoft (Windows Server, System Center, Azure, Windows Azure Pack/Azure Stack, etc;)
    • 29/1/2015

    [WAP] Erreur “Unable to retrieve clouds on VMM Server…”

    system_center_2012_logo_4199E297

    Ce matin, en me connectant sur ma plateforme WAP, j’ai rencontré le message d’erreur suivant:

    Unable to retrieve clouds on VMM server ‘SERVERNAME’. Please make sure the server name is correct and try connecting again.

    SNAGHTML3744692

    J’ai donc cherché ce message d’erreur sur TechNet, et je suis tombé sur le KB 2935175 qui décrit ce problème.

    J’ai regardé la solution mais ceci ne correspondait pas à mon problème. En effet, en faisant un Get-SCSPFTenant  j’avais bien l’utilisateur Administrator avec la subscription id 00000000-0000-0000-0000-000000000000.

    J’ai donc active les logs sur mes serveurs spf avec les commandes suivantes:

    logman create trace spfdebugtrace -p Microsoft-ServiceProviderFoundation 0xc000000000000000 0x5
    logman update spfdebugtrace -p Microsoft-Windows-PowerShell 0xf0010000000003ff 0x5
    logman update spfdebugtrace -p ActivityEventSource 0x0 0xff  
    logman start spfdebugtrace

    J’ai rafraichi ma page Admin et j’ai stopper la capture avec la commande suivante:

    logman stop spfdebugtrace

    J’ai ensuite converti mon fichier .etl en txt avec la commande suivante (vous pouvez également l’importer dans l’Event Viewer):

    netsh trace convert C:\PerfLogs\Admin\spfdebugtrace_000001.etl

    Toutes ces commandes sont disponibles sur TechNet: http://support.microsoft.com/kb/2850280

    J’ai parcouru le fichier de log de SPF et je suis tombé sur cette ligne:

    [0]0ADC.02D8::‎2015‎-‎01‎-‎28 09:06:24.773 [Microsoft-Windows-PowerShell]Error Message = Cannot bind parameter 'VMMServer'. Cannot convert value "SERVERNAME" to type "Microsoft.SystemCenter.VirtualMachineManager.Remoting.ServerConnection". Error: "The type or name syntax of the registry key value IndigoTcpPort under Software\Microsoft\Microsoft System Center Virtual Machine Manager Administrator Console\Settings is incorrect.  Ensure that the type of value name is correct; the name is not empty, contains only valid characters and is less than 255 characters."  Fully Qualified Error ID = CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.InvokeExpressionCommand

    Je suis allé dans regedit > Software\Microsoft\Microsoft System Center Virtual Machine Manager Administrator Console\Settings  et j’ai vu que la clé IndigoTcpPort était en REG_MULTI_SZ avec aucune valeur. J’ai alors supprimé cette clé et recréé un clé de type DWORD avec comme nom IndigoTcpPort et comme valeur 8100 (le port de connexion à votre console VMM).

    image

    J’ai redémarré le serveur et après le redémarrage, plus aucun message d’erreur.

    En espérant voir avoir aide.

    • 28/1/2015

    [SCOM 2012] Déployer les agents automatiquement avec le firewall

    0407.scom2012_logo

    Ayant besoin de déployer des agents SCOM automatiquement, j’ai créé ce script PowerShell qui va scanner votre AD et comparer chaque objet avec SCOM pour voir si l’agent est installé ou pas.

    Si l’agent n’est pas installé, alors le script va ouvrir les règles firewall nécessaires, installer l’agent et supprimer les règles firewall. Si l’agent s’est bien installé, alors il va l’approuver dans SCOM.

    Par exemple, ce script peut être programmé pour être execute toute les 24h, via le Task Scheduler ou Orchestrator.

    Vous pourrez le télécharger ici: https://gallery.technet.microsoft.com/Deploy-SCOM-Agent-fc1009f7

    N’hésitez pas à me donner vos remarques/bugs.

    • 27/1/2015

    [WAP] Erreur lors de l’exécution de la commande Get-MgmtSvcResourceProvider avec ADFS

    system_center_2012_logo

    Après avoir modifié l’authentification de WAP vers ADFS, j’ai voulu reconfiguré les différents resources providers pour les faire pointer vers un F5 (Load Balancer). J’ai utilisé la commande de base pour récupéré mon jeton (Get-MgmtSvcToken) mais j’ai reçu l’erreur suivante:

    Get-MgmtSvcResourceProvider : The security token cannot be verified.
    At line:29 char:7
    + $rp = Get-MgmtSvcResourceProvider -Name $resourceProviderName -IncludeSystemReso ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [Get-MgmtSvcResourceProvider], ManagementClientException
        + FullyQualifiedErrorId : Microsoft.WindowsAzure.Server.Management.ManagementClientException,Microsoft.WindowsAzure.Admin.PowerShell.GetResourceProvider

    Après quelques recherches, je suis tombé sur cet article Microsoft: https://technet.microsoft.com/en-us/library/bab7a8c3-b71b-4e87-ad0f-db1f3acf0b1d#C_GetMgmtSvcToken

    Dans la partie Issue, il est bien précisé l’erreur que j’ai.
    Dans la partie Recommendation, il est précisé que il peut y avoir des problème avec la commande Get-MgmtSvcToken si on utilize un ADFS. Microsoft fournit alors un script PowerShell qui remplace la commande Get-MgmtSvcToken:

    function Get-AdfsToken([string]$adfsAddress, [PSCredential]$credential)
    {
        $clientRealm = '
    http://azureservices/AdminSite'
        $allowSelfSignCertificates = $true

        Add-Type -AssemblyName 'System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
        Add-Type -AssemblyName 'System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'

        $identityProviderEndpoint = New-Object -TypeName System.ServiceModel.EndpointAddress -ArgumentList ($adfsAddress + '/adfs/services/trust/13/usernamemixed')
        $identityProviderBinding = New-Object -TypeName System.ServiceModel.WS2007HttpBinding -ArgumentList ([System.ServiceModel.SecurityMode]::TransportWithMessageCredential)
        $identityProviderBinding.Security.Message.EstablishSecurityContext = $false
        $identityProviderBinding.Security.Message.ClientCredentialType = 'UserName'
        $identityProviderBinding.Security.Transport.ClientCredentialType = 'None'

        $trustChannelFactory = New-Object -TypeName System.ServiceModel.Security.WSTrustChannelFactory -ArgumentList $identityProviderBinding, $identityProviderEndpoint
        $trustChannelFactory.TrustVersion = [System.ServiceModel.Security.TrustVersion]::WSTrust13

        if ($allowSelfSignCertificates)
        {
            $certificateAuthentication = New-Object -TypeName System.ServiceModel.Security.X509ServiceCertificateAuthentication
            $certificateAuthentication.CertificateValidationMode = 'None'
            $trustChannelFactory.Credentials.ServiceCertificate.SslCertificateAuthentication = $certificateAuthentication
        }

        $ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($credential.Password)
        $password = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($ptr)
        [System.Runtime.InteropServices.Marshal]::ZeroFreeCoTaskMemUnicode($ptr)

        $trustChannelFactory.Credentials.SupportInteractive = $false
        $trustChannelFactory.Credentials.UserName.UserName = $credential.UserName
        $trustChannelFactory.Credentials.UserName.Password = $password #$credential.Password

        $rst = New-Object -TypeName System.IdentityModel.Protocols.WSTrust.RequestSecurityToken -ArgumentList ([System.IdentityModel.Protocols.WSTrust.RequestTypes]::Issue)
        $rst.AppliesTo = New-Object -TypeName System.IdentityModel.Protocols.WSTrust.EndpointReference -ArgumentList $clientRealm
        $rst.TokenType = 'urn:ietf:params:oauth:token-type:jwt'
        $rst.KeyType = [System.IdentityModel.Protocols.WSTrust.KeyTypes]::Bearer

        $rstr = New-Object -TypeName System.IdentityModel.Protocols.WSTrust.RequestSecurityTokenResponse

        $channel = $trustChannelFactory.CreateChannel()
        $token = $channel.Issue($rst, [ref] $rstr)

        $tokenString = ([System.IdentityModel.Tokens.GenericXmlSecurityToken]$token).TokenXml.InnerText;
        $result = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($tokenString))
        return $result
    }

    # Fill in values
    $adfsAddress = '
    https://adfshost'
    $username = 'domain\username'
    $password = 'password'
    $securePassword = ConvertTo-SecureString -String $password -AsPlainText -Force
    $credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username,$securePassword

    $token = Get-AdfsToken -adfsAddress $adfsAddress -credential $credential
    $token

    Il vous faudra remplacé les variables $adfsAddress par l’adresse de votre serveur ADFS et $username & $password par les credentials qui ont les droits de changer ce resources providers.

    • 19/1/2015

    [SPF 2012 R2] Impossible d’appliquer l’UR4

    systemcenter2012_logo.png-1200x0

    Quand vous essayez d'appliquer l'UR4 (KB2992021) à votre SPF 2012 R2 (kb2992021_Microsoft.SystemCenter.Foundation.Setup_x64.msp) vous recevez le message d'erreur suivant:

    image

    Pour résoudre ce problème, ouvrez un command prompt en tant qu'administrateur et executez le KB:

    clip_image001

    clip_image002

    Le problème a disparu et le patch s’est installé.