Friday, May 4, 2018

SCCM: Re-Push Pull Distribution Point




I have a lot of Pull Distributiont Point to manage (near 3000..). My problem is people around the world managing Pull Distribution Point computers are not always IT. Sometimes, they remove folder for "good" reasons or whatever. And sometimes it is SCCM which makes some impressive bugs...

An example below: I checked share on this Pull Distribution Point

Get-WmiObject -ComputerName PULLDPNAME -Class win32_share


 As you can see below, on PULLDPNAME, if you check real path, NO MORE SMS_DP$ share in E:\SMS_DP$...



or that thing: SMS-DP$ exist but NO MORE SMS sub folder...


or this thing:
Product: ConfigMgr Distribution Point -- Error 1706. An installation package for the product ConfigMgr Distribution Point cannot be found. Try the installation again using a valid copy of the installation package 'pulldp.msi'.




You know what ? I am really bored to uninstall and re-install  Pull Distribution Point each time (we have a lot of sites with slow bandwidth...).
So, as a bad boy, I searched how to re-install Pull DP as Microsoft does not give this option.
And I found something interesting.

I first create NO_SMS_ON_DRIVE.SMS on all drive EXCEPT the one which will be the good one for PullDP content.


Then I also check freespace and display only disk drive (NOT usb drive) using:
  Get-WmiObject -ComputerName PULLDPNAME -Class win32_logicaldisk -Filter " DriveType=3 " | Select DeviceID, @{Name='FreeSpace(GB)';Expression={  [math]::Round($_.FreeSpace/1GB,2) }},@{Name='Size(GB)';Expression={ [math]::Round($_.Size/1GB,2)}}


And now I verify PullDP State. For that I found that DistributionPoints table was THE reference  (WARNING: you MUST run these next queries on your Secondary SQL if your PullDP is on a Secondary, and use SQL queries on your Primary if your PullDP is attached on your Primary)

WARNING: USE SQL QUERIES IS NOT SUPPORTED BY MICROSOFT. Do not use queries on Production. Here is is just information to know how work SCCM.

SELECT DPID,IsPullDPInstalled,State,ServerName
from DistributionPoints
where 1=1
AND ServerName like '%PULLDPNAME%'
--Get infos for PULLDPNAME

As you can see IsPullDPInstalled and State field with 1 value permit to indicate PullDP is installed.






After some research I found if we change these 2 values to 0 that permit to re-run PullDP installation 
Something like:

SELECT DPID,IsPullDPInstalled,State,ServerName
from DistributionPoints
where 1=1
AND ServerName like '%PULLDPNAME%'
--Get infos for PULLDPNAME

UPDATE DistributionPoints
SET IsPullDPInstalled = '0', State = '0'
WHERE ServerName like '%PULLDPNAME%'

SELECT DPID,IsPullDPInstalled,State,ServerName
from DistributionPoints
where 1=1
AND ServerName like '%PULLDPNAME%'
--Get infos for PULLDPNAME








After some minutes DP State come back to state 1

And now Distribution Point Configuration Status indicate that DP installed :)

we can see DistMgr.log
~Processing 98.INS 
~DPID 98 - NAL Path ["Display=\\MYPULLDP.MYDOMAIN.NET\"]MSWNET:["SMS_SITE=SEC"]\\MYPULLDP.MYDOMAIN.NET\ , ServerName = MYPULLDP.MYDOMAIN.NET, DPDrive = , IsMulticast = 0, PXE = 0, RemoveWDS = 0 
PullDP ["Display=\\MYPULLDP.MYDOMAIN.NET\"]MSWNET:["SMS_SITE=SEC"]\\MYPULLDP.MYDOMAIN.NET\ is marked Uninstalled 
user(NT AUTHORITY\SYSTEM) runing application(SMS_DISTRIBUTION_MANAGER) from machine (MYSECONDARY.MYDOMAIN.NET) is submitting SDK changes from site(SEC) 
target processor architecture is x64~ 
Installed file on MYPULLDP.MYDOMAIN.NET, copied E:\Program Files\Microsoft Configuration Manager\bin\x64\..\x64\ContentAuthModule.dll to \\MYPULLDP.MYDOMAIN.NET\ADMIN$\system32\inetsrv\ContentAuthModule.dll 
target processor architecture is x64~ 
Installed file on MYPULLDP.MYDOMAIN.NET, copied E:\Program Files\Microsoft Configuration Manager\bin\x64\..\x64\smsfileisapi.dll to \\MYPULLDP.MYDOMAIN.NET\ADMIN$\system32\inetsrv\smsfileisapi.dll 
Found .ins file for remote server ["Display=\\MYPULLDP.MYDOMAIN.NET\"]MSWNET:["SMS_SITE=SEC"]\\MYPULLDP.MYDOMAIN.NET\, will try to verify the selected drive and install DP files on this server 
~Try to create folder SMS_DP$ on drive D:\ on server MYPULLDP.MYDOMAIN.NET 
~The drive share \\MYPULLDP.MYDOMAIN.NET\D$\ is accessible. 
~Successfully created SMS_DP$ directory at - \\MYPULLDP.MYDOMAIN.NET\D$\SMS_DP$. 
~Successfully created share SMS_DP$ on server MYPULLDP.MYDOMAIN.NET 
DP share SMS_DP$ already exist on the remote DP~ 
For server MYPULLDP.MYDOMAIN.NET processor architecture is x64~ 
Install Internet server= 3 
~Command line to install IIS: 'dism.exe /online /norestart /enable-feature /ignorecheck /featurename:"IIS-WebServerRole" /featurename:"IIS-WebServer" /featurename:"IIS-CommonHttpFeatures" /featurename:"IIS-StaticContent" /featurename:"IIS-DefaultDocument" /featurename:"IIS-DirectoryBrowsing" /featurename:"IIS-HttpErrors" /featurename:"IIS-HttpRedirect" /featurename:"IIS-WebServerManagementTools" /featurename:"IIS-IIS6ManagementCompatibility"  /featurename:"IIS-Metabase" /featurename:"IIS-WindowsAuthentication"  /featurename:"IIS-WMICompatibility"  /featurename:"IIS-ISAPIExtensions" /featurename:"IIS-ManagementScriptingTools" /featurename:"MSRDC-Infrastructure" /featurename:"IIS-ManagementService" '. 
~OS version 6.3.9600: installed IIS on remote server MYPULLDP.MYDOMAIN.NET. 
user(NT AUTHORITY\SYSTEM) runing application(SMS_DISTRIBUTION_MANAGER) from machine (MYSECONDARY.MYDOMAIN.NET) is submitting SDK changes from site(SEC) 
STATMSG: ID=2362 SEV=I LEV=M SOURCE="SMS Server" COMP="SMS_DISTRIBUTION_MANAGER" SYS=MYSECONDARY.MYDOMAIN.NET SITE=SEC PID=2916 TID=11960 GMTDATE=mar. déc. 11 14:41:12.020 2018 ISTR0="MYPULLDP.MYDOMAIN.NET" ISTR1="0" ISTR2="" ISTR3="" ISTR4="" ISTR5="" ISTR6="" ISTR7="" ISTR8="" ISTR9="" NUMATTRS=1 AID0=404 AVAL0="["Display=\\MYPULLDP.MYDOMAIN.NET\"]MSWNET:["SMS_SITE=SEC"]\\MYPULLDP.MYDOMAIN.NET\" 
StateTable::CState::Handle - (2362:1 2018-12-11 14:41:12.020+00:00) >> (2364:1 2018-09-12 06:23:24.906+00:00) 
Inbox source is local on MYSECONDARY 
CStateMsgReporter::DeliverMessages - Queued message: TT=1401 TIDT=0 TID='4618D922-D9FB-4D11-A4AE-5703EA77AEDF' SID=2362 MUF=0 PCNT=2, P1='SEC' P2='2018-12-11 14:41:12.020+00:00' P3='' P4='' P5='' 
CStateMsgReporter::DeliverMessages - Created state message file: E:\Program Files\Microsoft Configuration Manager\inboxes\auth\statesys.box\incoming\xkrggttj.SMX  
Successfully send state change notification 4618D922-D9FB-4D11-A4AE-5703EA77AEDF 
OS information for the server - 6.3.9600 
OS information for the server - 6.3.9600, ProductType=3 
Failed to get dependent services of wdsserver 
Failed to get dependent services of sccmpxe 
File to copy: smscore.dll 
Successfully copied: smscore.dll 
File to copy: ccmgencert.dll 
Successfully copied: ccmgencert.dll 
File to copy: smspxe.dll 
Successfully copied: smspxe.dll 
File to copy: sccmpxe.exe 
Successfully copied: sccmpxe.exe 
File to copy: ccmcore.dll 
Successfully copied: ccmcore.dll 
File to copy: CCMUtilLib.dll 
Successfully copied: CCMUtilLib.dll 
File to copy: TSMessaging.dll 
Successfully copied: TSMessaging.dll 
File to copy: tscore.dll 
Successfully copied: tscore.dll 
File to copy: CommonUtils.dll 
Successfully copied: CommonUtils.dll 
File to copy: ccmperf.dll 
Successfully copied: ccmperf.dll 
Configure MSXML 6.0 on DP MYPULLDP.MYDOMAIN.NET 
MSXML 6.0 is configured on DP MYPULLDP.MYDOMAIN.NET successfully 
Run command 'D:\SMS_DP$\sms\bin\vcredist_x64.exe /q /norestart /log "D:\SMS_DP$\sms\bin\vcredist.log"' to install VC redist 
~Successfully installed DP WMI provider on the remote distribution point 
Failed to configure IIS module, GLE - 1168 
ConfigureIISModules failed to configure IIS module 
SQL MESSAGE: spProcessCcmCertBindingState - Updating CM_RoleSSLCertificates for MYPULLDP.MYDOMAIN.NET state=1 
~Creating, reading or updating IIS registry key for a distribution point. 
~IISPortsList in the SCF is "80". 
~IISSSLPortsList in the SCF is "443". 
~IISWebSiteName in the SCF is "". 
~IISSSLState in the SCF is 448. 
~Acquired registry mutex. 
~Port = 80 
~Adding Port = 80 
~Successfully updated the  port list in IIS. 
~Successfully started the default website. 
~SSL is not required. Skipping prerequisite checks for SSL. 
target processor architecture is x64~ 
target processor architecture is x64~ 
~Successfully created the virtual directory SMS_DP_SMSPKG$ for the physical path D:\SCCMContentLib.~ 
~Failed to delete file extension C:\WINDOWS\system32\inetsrv\smsfileisapi.dll. 
~Successfully added file extension C:\WINDOWS\system32\inetsrv\smsfileisapi.dll. 
~Failed to remove application dependency - SMS Distribution Point | SMS_DP. 
~Acquired registry mutex. 
~Creating, reading or updating IIS registry key for a distribution point. 
~IISPortsList in the SCF is "80". 
~IISSSLPortsList in the SCF is "443". 
~IISWebSiteName in the SCF is "". 
~IISSSLState in the SCF is 448. 
~Creating, reading or updating IIS registry key for a distribution point. 
~IISPortsList in the SCF is "80". 
~IISSSLPortsList in the SCF is "443". 
~IISWebSiteName in the SCF is "". 
~IISSSLState in the SCF is 448. 
~Creating, reading or updating IIS registry key for a distribution point. 
~IISPortsList in the SCF is "80". 
~IISSSLPortsList in the SCF is "443". 
~IISWebSiteName in the SCF is "". 
~IISSSLState in the SCF is 448. 
~Creating, reading or updating IIS registry key for a distribution point. 
~IISPortsList in the SCF is "80". 
~IISSSLPortsList in the SCF is "443". 
~IISWebSiteName in the SCF is "". 
~IISSSLState in the SCF is 448. 
~The  port list has not changed. DM will not modify the SMS Port List. 
~SSL is not required. Skipping prerequisite checks for SSL. 
target processor architecture is x64~ 
target processor architecture is x64~ 
~Successfully created the virtual directory SMS_DP_SMSSIG$ for the physical path \\MYPULLDP.MYDOMAIN.NET\SMSSIG$.~ 
~Successfully added file extension C:\WINDOWS\system32\inetsrv\smsfileisapi.dll. 
~Acquired registry mutex. 
~Creating, reading or updating IIS registry key for a distribution point. 
~IISPortsList in the SCF is "80". 
~IISSSLPortsList in the SCF is "443". 
~IISWebSiteName in the SCF is "". 
~IISSSLState in the SCF is 448. 
~Creating, reading or updating IIS registry key for a distribution point. 
~IISPortsList in the SCF is "80". 
~IISSSLPortsList in the SCF is "443". 
~IISWebSiteName in the SCF is "". 
~IISSSLState in the SCF is 448. 
~Creating, reading or updating IIS registry key for a distribution point. 
~IISPortsList in the SCF is "80". 
~IISSSLPortsList in the SCF is "443". 
~IISWebSiteName in the SCF is "". 
~IISSSLState in the SCF is 448. 
~Acquired registry mutex. 
STATMSG: ID=2375 SEV=I LEV=M SOURCE="SMS Server" COMP="SMS_DISTRIBUTION_MANAGER" SYS=MYSECONDARY.MYDOMAIN.NET SITE=SEC PID=2916 TID=11960 GMTDATE=mar. déc. 11 14:43:04.150 2018 ISTR0="["Display=\\MYPULLDP.MYDOMAIN.NET\"]MSWNET:["SMS_SITE=SEC"]\\MYPULLDP.MYDOMAIN.NET\" ISTR1="" ISTR2="" ISTR3="" ISTR4="" ISTR5="" ISTR6="" ISTR7="" ISTR8="" ISTR9="" NUMATTRS=1 AID0=404 AVAL0="["Display=\\MYPULLDP.MYDOMAIN.NET\"]MSWNET:["SMS_SITE=SEC"]\\MYPULLDP.MYDOMAIN.NET\" 
Configure IIS virtual directories successfully on the distribution point MYPULLDP.MYDOMAIN.NET 
Initialize monitoring task on MYPULLDP.MYDOMAIN.NET 
DP settings have been updated to MYPULLDP.MYDOMAIN.NET. 
Initialize usage gathering task on MYPULLDP.MYDOMAIN.NET 
DP settings have been updated to MYPULLDP.MYDOMAIN.NET. 
No DMP found.. 
ConfigureDP 
~IISPortsList in the SCF is "80". 
~IISSSLPortsList in the SCF is "443". 
~IISWebSiteName in the SCF is "". 
~IISSSLState in the SCF is 448. 
DP registry settings have been successfully updated on MYPULLDP.MYDOMAIN.NET 
STATMSG: ID=9501 SEV=I LEV=M SOURCE="SMS Server" COMP="SMS_DISTRIBUTION_MANAGER" SYS=MYSECONDARY.MYDOMAIN.NET SITE=SEC PID=2916 TID=11960 GMTDATE=mar. déc. 11 14:43:10.196 2018 ISTR0="["Display=\\MYPULLDP.MYDOMAIN.NET\"]MSWNET:["SMS_SITE=SEC"]\\MYPULLDP.MYDOMAIN.NET\" ISTR1="" ISTR2="" ISTR3="" ISTR4="" ISTR5="" ISTR6="" ISTR7="" ISTR8="" ISTR9="" NUMATTRS=1 AID0=404 AVAL0="["Display=\\MYPULLDP.MYDOMAIN.NET\"]MSWNET:["SMS_SITE=SEC"]\\MYPULLDP.MYDOMAIN.NET\" 
STATMSG: ID=9503 SEV=I LEV=M SOURCE="SMS Server" COMP="SMS_DISTRIBUTION_MANAGER" SYS=MYSECONDARY.MYDOMAIN.NET SITE=SEC PID=2916 TID=11960 GMTDATE=mar. déc. 11 14:43:10.212 2018 ISTR0="["Display=\\MYPULLDP.MYDOMAIN.NET\"]MSWNET:["SMS_SITE=SEC"]\\MYPULLDP.MYDOMAIN.NET\" ISTR1="" ISTR2="" ISTR3="" ISTR4="" ISTR5="" ISTR6="" ISTR7="" ISTR8="" ISTR9="" NUMATTRS=1 AID0=404 AVAL0="["Display=\\MYPULLDP.MYDOMAIN.NET\"]MSWNET:["SMS_SITE=SEC"]\\MYPULLDP.MYDOMAIN.NET\" 
ConfigurePXE 
Creating, reading and or updating Operations Management server role registry keys for a Distribution Point ... 
PullDP ["Display=\\MYPULLDP.MYDOMAIN.NET\"]MSWNET:["SMS_SITE=SEC"]\\MYPULLDP.MYDOMAIN.NET\ is marked Uninstalled 
user(NT AUTHORITY\SYSTEM) runing application(SMS_DISTRIBUTION_MANAGER) from machine (MYSECONDARY.MYDOMAIN.NET) is submitting SDK changes from site(SEC) 
user(NT AUTHORITY\SYSTEM) runing application(SMS_DISTRIBUTION_MANAGER) from machine (MYSECONDARY.MYDOMAIN.NET) is submitting SDK changes from site(SEC) 
STATMSG: ID=2399 SEV=I LEV=M SOURCE="SMS Server" COMP="SMS_DISTRIBUTION_MANAGER" SYS=MYSECONDARY.MYDOMAIN.NET SITE=SEC PID=2916 TID=11960 GMTDATE=mar. déc. 11 14:43:16.431 2018 ISTR0="["Display=\\MYPULLDP.MYDOMAIN.NET\"]MSWNET:["SMS_SITE=SEC"]\\MYPULLDP.MYDOMAIN.NET\" ISTR1="MYPULLDP.MYDOMAIN.NET" ISTR2="" ISTR3="" ISTR4="" ISTR5="" ISTR6="" ISTR7="" ISTR8="" ISTR9="" NUMATTRS=1 AID0=404 AVAL0="["Display=\\MYPULLDP.MYDOMAIN.NET\"]MSWNET:["SMS_SITE=SEC"]\\MYPULLDP.MYDOMAIN.NET\" 
~DPID 98 - NAL Path ["Display=\\MYPULLDP.MYDOMAIN.NET\"]MSWNET:["SMS_SITE=SEC"]\\MYPULLDP.MYDOMAIN.NET\ , ServerName = MYPULLDP.MYDOMAIN.NET, DPDrive = , IsMulticast = 0, PXE = 0, RemoveWDS = 0  $
ConfigurePullDP 
~NAL Path ["Display=\\MYPULLDP.MYDOMAIN.NET\"]MSWNET:["SMS_SITE=SEC"]\\MYPULLDP.MYDOMAIN.NET\ is a Pull DP 
For server MYPULLDP.MYDOMAIN.NET processor architecture is x64~ 
Installing PullDP, check \\MYPULLDP.MYDOMAIN.NET\SMS_DP$\sms\logs\smsdpprov.log and \\MYPULLDP.MYDOMAIN.NET\SMS_DP$\sms\logs\pulldp_install.log 
PullDP ["Display=\\MYPULLDP.MYDOMAIN.NET\"]MSWNET:["SMS_SITE=SEC"]\\MYPULLDP.MYDOMAIN.NET\ is marked Installed 
 


To be sure all is OK, redistribute 1 package (\Administration\Overview\Site Configuration\Servers and Site System Roles for printscreen but script is better :) because after you perhaps need to redistribute all package again  -> please verify all seems work correctly after on your PullDP)


And now all seems OK





Good. Now, I can Re-Push Pull Distribution Point :)

No comments: