You are currently offline, waiting for your internet to reconnect

The Add-CMDistributionPoint cmdlet in Configuration Manager sets an incorrect ServerRemoteName value

Symptoms
Consider the following scenario:
  • You use the Add-CMDistributionPoint PowerShell cmdlet that was introduced in Cumulative Update 1 for Microsoft System Center 2012 Configuration Manager Service Pack 1 (SP1) to create a new remote distribution point (DP).  
  • You deploy content to the new DP and then create a deployment that requires that content for a client in the same remote location as the new DP. 
In this scenario, you find that the client tries to download the content from the first server that is installed in the hierarchy (the CAS or stand-alone Primary). If the first server in the hierarchy is a stand-alone Primary that is a DP that is hosting the content, the client successfully downloads the content. This is shown by the DataTransferService.log entries on the client.
Cause
This occurs because the Add-CMDistributionPoint PowerShell cmdlet incorrectly sets the ServerRemoteName property for the distribution point to the fully qualified domain name (FQDN) of the first server in the hierarchy. Because of this, the client selects the best distribution point from which to download content. The client makes this choice based on locality (the same IP subnet, the same Active Directory site, and so on) but then uses the wrong FQDN to communicate with the DP.
Resolution
To resolve this issue, install Cumulative Update 3 for System Center 2012 Configuration Manager Service Pack 1 (SP1). For more information about this cumulative update, click the following article number to view the article in the Microsoft Knowledge Base:  
2882125 Description of Cumulative Update 3 for System Center 2012 Configuration Manager Service Pack 1
Workaround
You can work around the issue by correcting the ServerRemoteName property of the DP. The following VBScript sample will verify and correct this property as needed for one or more DPs:

'Sample script to connect to the SMS provider for a specific site server (argument 1)' for a specific site code (argument 2) and ' and correct ServerRemoteName for a specified DP (argument 3) in a specified site (argument 4) if it does not match ServerName.On Error Resume Next'Validate command line argumentsSet args=wscript.argumentsIf args.Count = 4 then strProviderSiteServer = WScript.Arguments(0) strProvSiteCode = UCASE(WScript.Arguments(1)) strDPServer = WScript.Arguments(2) strDPSiteCode = UCASE(WScript.Arguments(3))Else wscript.Echo "Incorrect command line arguments." & vbCrLf wscript.Echo "Usage: cscript //nologo CorrectServerRemoteName.VBS <ProviderServer> <ProvSiteCode> <DPServer> <DPSiteCode>" & vbCrLf wscript.Echo "Example: cscript //nologo CorrectServerRemoteName.VBS Server01 CAS DPServer PRI" & vbCrLf WScript.Quit(1)End If'Connect to the provider on the specified site serverstrProviderSiteServer = "\\" + strProviderSiteServer + "\"Set ObjSDKConn = GetObject("winmgmts:" & "{impersonationLevel=Impersonate,authenticationLevel=Pkt}!" & strProviderSiteServer & "root\sms\site_" & strProvSiteCode)If Err.number <> 0 then wscript.Echo "Connecting to the provider failed with code: " & Err.number WScript.Quit(2)End If'Query for the specified DPstrQuery = "Select * from SMS_SCI_SysResUse where RoleName='SMS Distribution Point' and SiteCode='" & strDPSiteCode & "' and NetworkOSPath like '%" & strDPServer & "%'"Set ObjQueryResult = ObjSDKConn.ExecQuery(strQuery)If Err.number <> 0 then wscript.Echo "Querying for the specified DP server failed with code: " & Err.number WScript.Quit(3)End IfIf ObjQueryResult.Count < 1 Then wscript.Echo "Querying for the specified DP server succeeded but no DPs were returned." WScript.Quit(4)End If'Loop through the list of DPs returnedwscript.Echo "Found " & ObjQueryResult.Count & " DPs matching the specified name."For each ObjDP in ObjQueryResult  wscript.Echo strServeName = Replace(ObjDP.NetworkOSPath,"\","") For each ObjProp in ObjDP.Props  If ObjProp.PropertyName = "Server Remote Name" then   If strServeName = ObjProp.Value1 then    wscript.Echo "ServerName and ServerRemoteName both match as '" & strServeName & ".  Not making any change to this DP."   Else    wscript.Echo "ServerRemoteName for " & strServeName & " is " & ObjProp.Value1 & ".  Correcting."    ObjProp.Value1 = strServeName    ObjDP.Put_    If Err.number <> 0 then     wscript.Echo "Saving the change failed with code: " & Err.number    Else     wscript.Echo "Successfully updated the property."    End If   End If  End If NextNext
More information
A fix for this issue is scheduled to be included in a future update for the product.
Properties

Article ID: 2935813 - Last Review: 02/25/2014 21:20:00 - Revision: 1.1

Microsoft System Center 2012 Configuration Manager Service Pack 1

  • KB2935813
Feedback