Below a script permitting to add Package to Distribution Point/Pull DP
Option -ForceToDeletePackageBeforeIfExist delete 1st and add when there is a problem
Example :
.\SCCM_AddPackageToDP.ps1 -DistPoint "SERVER01" -Package "ABC00123"
Example if you want to use a .csv file like this below
"PackageID";"DistributionPoint";"SiteCode"
"XXX00233";"computerdp1";"ABC"
"XXX00233";"computerdp2";"ABC"
.\SCCM_AddPackageToDP.ps1 -ImportFilePath .\mydp.csv
<#
.Synopsis
Add Package to Distribution Point
.EXAMPLE
SCCM_AddPackageToDP.ps1 -DistPoint "SERVER01" -Package "ABC00123"
#>
[cmdletbinding()]
Param(
[String]$ImportFilePath=""
,[String]$DistPoint=""
,[String]$Package=""
,[String]$CM="mycm.mydomain.net"
,[String]$PrimarySiteCode="XXX"
,[switch]$ForceToDeletePackageBeforeIfExist
)
# For Time checking
$MeasureCommandBegin = Get-Date
$strCurDir = Split-Path -parent $MyInvocation.MyCommand.Path
$strScriptName = $MyInvocation.MyCommand.Name
$date_for_file = Get-Date -format "yyyy-MM-dd_HHmmss"
#Import the Module
Import-Module $env:SMS_ADMIN_UI_PATH.Replace("\bin\i386","\bin\configurationmanager.psd1")
# to do BEFORE cd ABC: sitecode
#
[ARRAY]$arrItems = @()
if ($ImportFilePath -ne "") {
If ( (Test-Path -Path "$ImportFilePath") -eq $False ) {
Write-host -ForegroundColor Red "file '$($ImportFilePath)' NOT exist. Please indicate real file path."
cd $strCurDir
Exit
}
Write-Host "Get '$($ImportFilePath)' content"
$arrItems = Import-Csv $ImportFilePath -Delimiter ';' #Import CSV into array
Write-Host "Number of line: $($arrItems.Count)"
if ($arrItems.Count -eq 0) {
Write-host "file '$($ImportFilePath)' NO line. Please check It. Must have this header:" -ForegroundColor Red
Write-host "DistributionPoint;PackageId" -ForegroundColor Red
cd $strCurDir
Exit
}
}
$Error.Clear()
if ($PrimarySiteCode) {
Set-Location "$($PrimarySiteCode):\"
} else {
$CMSITE = Get-PSDrive -PSProvider CMSITE # multiple not work
if ($CMSITE.GetType().Name -eq "Object[]") {
$sitecodes = ""
$CMSITE | ForEach-Object { $sitecodes = $_.Name + " " + $sitecodes }
Write-Host "Please indicate Which Site Code to use in parameter 'PrimarySiteCode'. Choose using one of them: $sitecodes"
Exit
} else {
Set-Location "$($CMSITE.Name):\"
}
}
if ($Error) {
$Error
Write-Host "if not found can be necessary to do a 'Remove-Module ConfigurationManager' "
cd $strCurDir
Exit
}
if ($ImportFilePath -eq "") {
if ($DistPoint -eq "" -or $Package -eq "") {
Write-Host "You need at least Parameter 1 -DistPoint for 'Distribution Point' and -Package for package(s)"
Write-Host "either -DistPoint for 'Distribution Point' and -Package for package(s)"
Write-Host "either -ImportFilePath for path with all DistributionPoint;PackageId lines"
cd $strCurDir
Exit
}
$Query = "Select NALPath,Name From SMS_DistributionPointInfo Where ServerName Like '%$DistPoint%'"
[Array] $arrDistributionPoint = @()
$arrDistributionPoint = @(Get-WmiObject -Namespace "root\SMS\Site_$PrimarySiteCode" -Query $Query -ComputerName $CM)
if($arrDistributionPoint.Count -ne 1) {
Foreach($DP in $arrDistributionPoint) {
Write-host $DP.Name -ForegroundColor Yellow
}
Write-host "Found $($arrDistributionPoint.Count) matching Distribution Points. Please redefine query." -ForegroundColor Red
cd $strCurDir
Exit
}
else
{
$ServerNalPath = $arrDistributionPoint.NALPath -replace "([\[])",'[$1]' -replace "(\\)",'\$1'
$DPname = $arrDistributionPoint.Name
Write-Host "Distribution Point: $ServerNalPath"
}
Foreach ($pkg in $Package) {
$item = New-Object –TypeNamePSObject
$item | Add-Member –MemberTypeNoteProperty –Name DistributionPoint –Value $DPname
$item | Add-Member –MemberTypeNoteProperty –Name PackageId –Value $pkg
$arrItems += $item
}
}
# Get all packages
#
Write-Host "Get all Packages"
[HashTable] $hashPackageType = @{}
$arrSMS_PackageBaseclass = @(Get-WmiObject -Namespace "root\SMS\Site_$PrimarySiteCode" -Class SMS_PackageBaseclass -ComputerName $CM)
Foreach ($SMS_PackageBaseclass in $arrSMS_PackageBaseclass) {
if ($hashPackageType.ContainsKey($SMS_PackageBaseclass.PackageID) ) {
# Should not arrive problem in DB
} else {
$hashPackageType[$($SMS_PackageBaseclass.PackageID)] = $($SMS_PackageBaseclass.PackageType)
}
}
[ARRAY] $arrCmdRemoveContent = @()
[ARRAY] $arrCmdAddContent = @()
[HashTable] $hashDPExist = @{}
[HashTable] $hashDPExistingPackages = @{}
$NbItemStay = $($arrItems.Count)
Foreach ($item in $arrItems) {
Write-host "-----------------------"
Write-host "Nb of items remaining: $($NbItemStay)"
$NbItemStay = $NbItemStay -1
$bError = $false
$DistributionPoint = $item.DistributionPoint
if ($DistributionPoint.length -eq 0) {
Write-host "Value SiteServer $($DistributionPoint) NOT exist" -ForegroundColor Red
$bError = $True
} else {
if ( $hashDPExist.ContainsKey($DistributionPoint) ){
# OK already do some actions to verify it exist
} else {
<#
# DNS test
Try {
$result = Resolve-DNSName -Name $DistributionPoint -Type A -ErrorAction Stop
Write-host "SiteServer $($DistributionPoint) DNS OK"
$hashDPExist[$DistributionPoint]= 1
} Catch {
Write-host "Cannot Resolve DNS for $($DistributionPoint) " -ForegroundColor Red
$bError = $True
}
#>
$Query = "Select NALPath,Name From SMS_DistributionPointInfo Where ServerName Like '%$DistributionPoint%'"
[Array]$arrDistributionPoint = @()
$arrDistributionPoint = @(Get-WmiObject -Namespace "root\SMS\Site_$PrimarySiteCode" -Query $Query -ComputerName $CM)
if($arrDistributionPoint.Count -ne 1) {
Foreach($DP in $arrDistributionPoint) {
Write-host $DP.Name -ForegroundColor Yellow
}
Write-host "Found $($arrDistributionPoint.Count) matching Distribution Points. Please redefine query." -ForegroundColor Red
$bError = $True
}
else
{
$ServerNalPath = $arrDistributionPoint.NALPath -replace "([\[])",'[$1]' -replace "(\\)",'\$1'
$DPname = $arrDistributionPoint.Name
Write-Host "Distribution Point: $ServerNalPath"
$hashDPExist[$DistributionPoint] = $DPname
$Query = "Select PackageID From SMS_PackageStatusDistPointsSummarizer Where ServerNALPath Like '$ServerNALPath'"
[ARRAY]$arrPackages = @() # to be sure to count to be an array (else string not count work)
$arrPackages = Get-WmiObject -Namespace "root\SMS\Site_$PrimarySiteCode" -Query $Query -ComputerName $CM
Foreach ($pkg in $arrPackages) {
$hashline = $DPname + "_" + $pkg.PackageID
$hashDPExistingPackages[$hashline] = 1
}
}
}
}
$PackageID = $item.PackageID
if ($PackageID.length -eq 0) {
Write-host "Value SiteServer $($DistributionPoint) NOT exist" -ForegroundColor Red
$bError = $True
} else {
if ( ($PackageID.Substring(3,5) -eq "00003") -or ($PackageID.Substring(3,5) -eq "00008") ) {
Write-host "Package $PackageID cannot be redistribute - it is hidden package"
continue
}
if ( $hashPackageType.ContainsKey($PackageID) ) {
# OK already do some actions to verify it exist
} else {
Write-host -ForegroundColor Red "Package $($PackageID) NOT exist"
$bError = $True
}
}
if ($bError) {
Write-host "Error line $($item) - NOT DONE -" -ForegroundColor Red
continue
}
$DPname = $hashDPExist[$DistributionPoint]
$DPType = $hashPackageType[$PackageID]
Write-Host $DistributionPoint - $DPname - $PackageID - $DPType
if (!$DPname -or !$PackageID) {
Write-Host "Error: DistributionPoint:$($DistributionPoint) - DPname:$($DPname) - PackageID:$($PackageID) - DPType:$($DPType)"
continue
}
$hashline = $DPname + "_" + $PackageID
if ( ($hashDPExistingPackages.ContainsKey($hashline)) -and (!$ForceToDeletePackageBeforeIfExist) ) {
#
Write-Host " DP '$DPname' has already $PackageID - NOT Distribute it again - Use -Force to remove and add it"
continue
} else {
$hashDPExistingPackages[$hashline] = 1
$ContDistCmdParam = ""
Switch ($DPType) {
0 {
$DPTypeValue = "Standard Package"
$ContDistCmdParam = "-PackageID"
}
3 {
$DPTypeValue = "Driver Package"
$ContDistCmdParam = "-DriverPackageId"
}
4 {
$DPTypeValue = "Task Sequence Package"
$ContDistCmdParam = "-TaskSequenceId"
}
5 {
$DPTypeValue = "Software Update Package"
$ContDistCmdParam = "-DeploymentPackageId"
}
6 {
$DPTypeValue = "Device Setting Package"
}
7 {
$DPTypeValue = "Virtual App Package"
}
8 {
$DPTypeValue = "Application Package"
$ContDistCmdParam = "-ApplicationId"
}
257 {
$DPTypeValue = "Operating system Image Package"
$ContDistCmdParam = "-OperatingSystemImageId"
}
258 {
$DPTypeValue = "Boot Image Package"
$ContDistCmdParam = "-BootImageId"
}
259 {
$DPTypeValue = "Operating System Upgrade Package"
$ContDistCmdParam = "-OperatingSystemInstallerId"
}
260 {
$DPTypeValue = "VHD package"
Write-Host "Distribute '$DPTypeValue' to DP '$DPname'"
}
} # switch end
if ($ContDistCmdParam) {
if ($ForceToDeletePackageBeforeIfExist) {
Write-Host "Force: Remove $PackageID '$DPTypeValue' from DP '$DPname'"
$cmd = "Remove-CMContentDistribution $ContDistCmdParam $PackageID -DistributionPointName $DPname -Force"
$arrCmdRemoveContent += $cmd
#Invoke-Expression $cmd
#Write-Host "Wait 15 sec"
#Start-Sleep -s 15
}
Write-Host "Distribute $PackageID '$DPTypeValue' to DP '$DPname'"
$cmd = "Start-CMContentDistribution $ContDistCmdParam $PackageID -DistributionPointName $DPname"
$arrCmdAddContent += $cmd
#Invoke-Expression $cmd
} else {
Write-Host "NOT Distribute $PackageID '$DPTypeValue' to DP '$DPname'"
}
}
}
Foreach ($cmd in $arrCmdRemoveContent) {
Write-Host $cmd
Invoke-Expression $cmd
}
Write-Host "Wait 15 sec"
Start-Sleep -s 15
Foreach ($cmd in $arrCmdAddContent) {
Write-Host $cmd
Invoke-Expression $cmd
}
cd $strCurDir
$MeasureCommandEnd = Get-Date
$MeasureCommandTime = $MeasureCommandEnd - $MeasureCommandBegin
Write-host "Script Executing in $($MeasureCommandTime.Day) day(s) $($MeasureCommandTime.Hour) hour(s) $($MeasureCommandTime.Minutes) minute(s) $($MeasureCommandTime.Seconds) second(s) "
Monday, January 21, 2019
Thursday, January 10, 2019
SCCM - Package Distribution: identify, enumerate and resolve 'in progress' status
For direct solution go to the end of this article
A common problem in SCCM is Package 'in progress' in some Distribution Points
Here some of errors we can find and that never been distributed
"2335" = "Distribution Manager instructed Scheduler and Sender to send package "PRI00123" to child site "SEC".
"2372","The content files for package "PRI00123" have not yet arrived from the source site PRI. Distribution Manager will try again later to distribute the content."
"2380","Start to evaluate package "PRI00123" on distribution point "["Display=\\MYCOMPUTER.mydom.net\"]MSWNET:["SMS_SITE=PRI"]\\MYCOMPUTER.mydom.net\"
"30010","User "MYDOM\myuser" modified a distribution point on \\MYPULLDP.mydom.net at site "SEC - MyCompany - SEC Secondary Site" for a package with package ID PRI00123."
"Informational"
As you can see below in \Monitoring\Overview\Distribution Status\Content Status in this "Software Update Package" example, a lot of targeted are "pending"
Here we can see there is 2315 targeted Distribution Point and 219 pending since at least 5 days
Solution 1
You try to redistribute a package (manually it is "\Administration\Overview\Site Configuration\Servers and Site System Roles" then in "Distribution Point" properties then in tab "content". Select package then click on button redistribute )
-> here in my example that failed for these 219 servers (sure I use a script to do it)
Solution 2
You try to "Update Distribution Points" with create a new version for your package (manually for Software Updates it is in \Software Library\Overview\Software Updates\Deployment Packages, right button "Update Distribution Points, same thing for package or any other content)
-> here in my example that failed for these 219 servers
Solution3
You delete Package from your Distribution Point, then after waiting some minutes you "Distribute Content" on the same DP
-> here in my example that work
Things is I surely have other package for some Distribution Point with same problem.
So I decide to find how to find them. Are you ready ?
I first try to find in SQL some related table
I found DistributionJobs table could be a good table
but when I try my query on my Secondary I finally see number found does correspond to this problem:
"2357","Distribution Manager instructed Package Transfer manager to send package "PRI00233" to distribution point "["Display=\\MYCOMPUTER.mydom.net\"]MSWNET:["SMS_SITE=PRI"]\\MYCOMPUTER.mydom.net\" ."
and these Distribution Points found in this query seems just works
Below query to find number of DistributionJobs for a package:
Select count(*)
From [DistributionJobs] as DJ
JOIN [DistributionPoints] as DP
ON DJ.DPID = DP.DPID
WHERE PkgID = 'PRI00233'
For information to see DP name use for example (here secondary XXH have 2 rows with same message):
Select DP.ServerName, DJ.*
From [DistributionJobs] as DJ
JOIN [DistributionPoints] as DP
ON DJ.DPID = DP.DPID
WHERE PkgID = 'PRI00233'
Then I found a Microsoft Article Understanding and Troubleshooting Content Distribution in Microsoft Configuration Manager https://support.microsoft.com/en-ae/help/4000401/content-distribution-in-mcm
in Useful query with a view
-- All Package/DPs in InProgress state for more than 3 days
SELECT distinct DPSD.DPName, DPSD.PackageID, SP.Name, DPSD.MessageState, DPSD.LastStatusTime, DPSD.SiteCode
FROM vSMS_DPStatusDetails DPSD
JOIN SMSPackages_All SP ON DPSD.PackageID = SP.PkgID
WHERE DPSD.LastStatusTime > DATEAdd(dd,-3,GETDate())
AND MessageState = 2
and another interesting article with table https://blogs.technet.microsoft.com/umairkhan/2014/10/02/the-case-of-the-unexplained-the-package-gets-distributed-successfully-but-does-not-show-in-the-console/
select * from PkgServers_G where pkgid = 'PRI00233'
select * from ContentDistributionNotification where pkgid = 'PRI00233'
select * from ContentDistribution where pkgid = 'PRI00233'
So as you can see in my example table ContentDistributionNotification is OK
SELECT count(*)
FROM [ContentDistributionNotification]
WHERE PkgID = 'PRI00233'
(No column name)
2315
Table ContentDistribution is OK too in my example
SELECT count(*)
FROM ContentDistribution
WHERE PkgID = 'PRI00233'
(No column name)
2315
Table PkgServers is OK too in my example
SELECT *
FROM PkgServers_G
WHERE PkgID = 'PRI00233'
Table PkgStatus has not same number BUT perhaps it is normal
SELECT count(*) FROM PkgStatus_G as PKGS
JOIN DistributionPoints as DP ON PKGS.PkgServer = DP.NALPath
WHERE ID = 'PRI00233'
(No column name)
2095--
GOOD CATCH
Try testing some Distribution Points I see computer NOT in PkgStatus_G table are those with problems
For example we can see below %17% computer displayed in PkgStatus_G and not %36%
here %36% Distribution Point is 'in progress'
here %17% Distribution Point is 'Success'
So now I give you SQL Query to find ALL Distribution Points with this problem
-- Find Distribution Point 'in progress' with problems
-- by F.RICHARD 2019-01
-- Declare the variables to store the values returned by FETCH.
DECLARE @PackageID varchar(50);
DECLARE @tblResult TABLE (PackageID varchar(50), ServerName varchar(255), SiteCode varchar(10));
DECLARE PackageID_cursor CURSOR FOR
SELECT DISTINCT PackageId
FROM vSMS_DPStatusDetails DPSD
JOIN SMSPackages_All SP ON DPSD.PackageID = SP.PkgID
WHERE 1=1
AND DPSD.LastStatusTime < DATEAdd(dd,-3,GETDate())
AND MessageState = 2
OPEN PackageID_cursor;
FETCH NEXT FROM PackageID_cursor INTO @PackageID
WHILE @@FETCH_STATUS = 0
BEGIN
print @PackageID
-- create temp table after drop
if(OBJECT_ID('tempdb..#TempPkgStatusServerName') Is Not Null)
Begin
Drop Table #TempPkgStatusServerName
End
CREATE TABLE #TempPkgStatusServerName
(
PkgServer Varchar(255)
,ServerName Varchar(255)
,PkgID varchar(50)
);
-- insert data
INSERT INTO #TempPkgStatusServerName
SELECT PkgServer
,ServerName =
CASE
WHEN CHARINDEX('\\', Pkgserver) > 0
THEN SUBSTRING(Pkgserver, CHARINDEX('\\', Pkgserver) + 2, CHARINDEX('"]', Pkgserver) - CHARINDEX('\\', Pkgserver) - 3 )
ELSE
Pkgserver
END
,ID
FROM PkgStatus
WHERE 1=1
AND ID = @PackageID
INSERT @tblResult
SELECT
PackageID, DPSD.DPName, DPSD.SiteCode
FROM vSMS_DPStatusDetails DPSD
JOIN SMSPackages_All SP ON DPSD.PackageID = SP.PkgID
WHERE 1=1
AND DPSD.LastStatusTime < DATEAdd(dd,-3,GETDate())
AND MessageState = 2
AND PackageID = @PackageID
AND DPSD.DPName NOT IN
(
SELECT TMPTABLE.ServerName FROM #TempPkgStatusServerName as TMPTABLE
)
-- drop temp table
Drop Table #TempPkgStatusServerName
-- next data
FETCH NEXT FROM PackageID_cursor INTO @PackageID
END
CLOSE PackageID_cursor;
DEALLOCATE PackageID_cursor;
SELECT PackageID, ServerName, SiteCode FROM @tblResult
And as I am really a nice guy I give the same in powershell
below
<#
.Synopsis
SCCM_Get-Problematic-SMS_PackageStatus.ps1
.EXAMPLE
.\SCCM_Get-Problematic-SMS_PackageStatus.ps1
.NOTES
Version: 1.0
Author: Franck RICHARD
Creation Date: 2019-01
Purpose/Change:
#>
[cmdletbinding()]
Param(
[String]$CM="mycm.mydomain.net"
,[String]$PrimarySiteCode="XXX"
)
# *************************
# For Time checking
$MeasureCommandBegin = Get-Date
$strCurDir = Split-Path -parent $MyInvocation.MyCommand.Path
$strScriptName = $MyInvocation.MyCommand.Name
$date_for_file = Get-Date -format "yyyy-MM-dd_HHmmss"
$strSaveFile = $strCurDir + "\" + $date_for_file + "_" + $Hostname + "_" + $strScriptName.replace(".ps1",".csv")
# Get all packages
#
Write-Host "Get all Packages"
[HashTable] $hashPackageByPackageID = @{}
$arrSMS_PackageBaseclass = @(Get-WmiObject -Namespace "root\SMS\Site_$PrimarySiteCode" -Class SMS_PackageBaseclass -ComputerName $CM)
Foreach ($SMS_PackageBaseclass in $arrSMS_PackageBaseclass) {
if (!$hashPackageByPackageID.ContainsKey($SMS_PackageBaseclass.PackageID) ) {
$hashPackageByPackageID[$($SMS_PackageBaseclass.PackageID)] = $SMS_PackageBaseclass
}
}
Write-Host "Nb Package : $($hashPackageByPackageID.count)"
# Date Min = date LastStatusTime
#
$Nbdays = 3
$DateMin = (Get-date).AddDays(-$Nbdays)
# Get all SMS_DPStatusDetails 'in progress'
#
Write-Host "Get all SMS_DPStatusDetails 'in progress' "
$Query = @"
SELECT * FROM SMS_DPStatusDetails as DPS
WHERE DPS.MessageState='2'
AND DPS.LastStatusTime <= '$DateMin'
AND DPS.PackageID <> ''
"@
$arrSMS_DPStatusDetails = Get-WmiObject -Namespace "root\SMS\Site_$PrimarySiteCode" -ComputerName $CM -Query $Query
Write-Host "Nb SMS_DPStatusDetails 'in progress' > $Nbdays days: $($arrSMS_DPStatusDetails.count)"
# Get Distinct PackageID 'in progress'
#
Write-Host "Get Distinct PackageID 'in progress' "
[HashTable] $hashDistinctPackageID = @{}
Foreach ($SMS_DPStatusDetails in $arrSMS_DPStatusDetails) {
if ($hashPackageByPackageID.ContainsKey($SMS_DPStatusDetails.PackageID) ) {
if (!$hashDistinctPackageID.ContainsKey($SMS_DPStatusDetails.PackageID) ) {
$hashDistinctPackageID[$($SMS_DPStatusDetails.PackageID)] = 1
}
}
}
Write-Host "Nb Distinct PackageID : $($hashDistinctPackageID.count)"
# For each PackageID we get
#
[ARRAY] $arrInfos=@()
Foreach ($PackageID in $hashDistinctPackageID.Keys) {
$SMS_PackageBaseclass = $hashPackageByPackageID[$($PackageID)]
Write-Host "-> Check PackageID $PackageID 'in progress' ($($SMS_PackageBaseclass.Name))"
# Get All SMS_PackageStatus for $PackageID
#
Write-Host "Get All SMS_PackageStatus for $($PackageID) "
[HashTable] $hashPackageIDByPkgServer = @{}
#$Query = @"
#SELECT * FROM SMS_PackageStatus WHERE PackageID='$PackageID'
#"@
#$Query = @"
$Query = "SELECT PkgServer FROM SMS_PackageStatus WHERE PackageID='$PackageID'"
#"@
$arrSMS_PackageStatus = Get-WmiObject -Namespace "root\SMS\Site_$PrimarySiteCode" -ComputerName $CM -Query $Query
Foreach ($SMS_PackageStatus in $arrSMS_PackageStatus) {
$ServerNALPath = $SMS_PackageStatus.PkgServer
# ex: ["Display=\\MYCOMPUTER.mydom.net\"]MSWNET:["SMS_SITE=XXX"]\\MYCOMPUTER.mydom.net\
# -> MYCOMPUTER.mydom.net
$PkgServer = $ServerNALPath.Substring($ServerNALPath.LastIndexOf("]")+3).Trim("\")
if (!$hashPackageIDByPkgServer.ContainsKey($PkgServer) ) {
$hashPackageIDByPkgServer[$($PkgServer)] = 1 # $SMS_PackageStatus.PackageID
}
}
# Check if exist in SMS_DPStatusDetails but NOT in SMS_PackageStatus
#
Write-Host "Check if exist in SMS_DPStatusDetails but NOT in SMS_PackageStatus for $($PackageID) "
Foreach ($SMS_DPStatusDetails in $arrSMS_DPStatusDetails) {
if ($SMS_DPStatusDetails.PackageID -eq $PackageID) {
if ($hashPackageByPackageID.ContainsKey($SMS_DPStatusDetails.PackageID) ) {
if (!$hashPackageIDByPkgServer.ContainsKey($SMS_DPStatusDetails.DPName) ) {
$custObj = New-Object -TypeName psobject
$custObj | Add-Member -MemberType NoteProperty -Name PackageID -Value $SMS_DPStatusDetails.PackageID
$custObj | Add-Member -MemberType NoteProperty -Name DistributionPoint -Value $SMS_DPStatusDetails.DPName
$custObj | Add-Member -MemberType NoteProperty -Name SiteCode -Value $SMS_DPStatusDetails.SiteCode
$arrInfos += $custObj
}
}
}
}
}
Write-Host "Write file with all package informations"
$arrInfos | Export-Csv -NoType -Path $strSaveFile -Delimiter ";"
#$strContent | Out-File -FilePath "$strSaveFile
$MeasureCommandEnd = Get-Date
$MeasureCommandTime = $MeasureCommandEnd - $MeasureCommandBegin
Write-host "Script Executing in $($MeasureCommandTime.Day) day(s) $($MeasureCommandTime.Hour) hour(s) $($MeasureCommandTime.Minutes) minute(s) $($MeasureCommandTime.Seconds) second(s) "
[EDIT 2019-01-21]
Please here SCCM_AddPackageToDP.ps1 (https://franckrichard.blogspot.com/2019/01/sccm-powershell-script-to-add-package.html) powershell solution to remove and add content and resolve this problem
.\SCCM_AddPackageToDP.ps1 -CM mycm.mydomain.net -PrimarySiteCode XXX -ForceToDeletePackageBeforeIfExist -ImportFilePath file_generated_by_SCCM_Get-Problematic-SMS_PackageStatus.csv
A common problem in SCCM is Package 'in progress' in some Distribution Points
Here some of errors we can find and that never been distributed
"2335" = "Distribution Manager instructed Scheduler and Sender to send package "PRI00123" to child site "SEC".
"2372","The content files for package "PRI00123" have not yet arrived from the source site PRI. Distribution Manager will try again later to distribute the content."
"2380","Start to evaluate package "PRI00123" on distribution point "["Display=\\MYCOMPUTER.mydom.net\"]MSWNET:["SMS_SITE=PRI"]\\MYCOMPUTER.mydom.net\"
"30010","User "MYDOM\myuser" modified a distribution point on \\MYPULLDP.mydom.net at site "SEC - MyCompany - SEC Secondary Site" for a package with package ID PRI00123."
"Informational"
As you can see below in \Monitoring\Overview\Distribution Status\Content Status in this "Software Update Package" example, a lot of targeted are "pending"
Here we can see there is 2315 targeted Distribution Point and 219 pending since at least 5 days
Solution 1
You try to redistribute a package (manually it is "\Administration\Overview\Site Configuration\Servers and Site System Roles" then in "Distribution Point" properties then in tab "content". Select package then click on button redistribute )
-> here in my example that failed for these 219 servers (sure I use a script to do it)
Solution 2
You try to "Update Distribution Points" with create a new version for your package (manually for Software Updates it is in \Software Library\Overview\Software Updates\Deployment Packages, right button "Update Distribution Points, same thing for package or any other content)
-> here in my example that failed for these 219 servers
Solution3
You delete Package from your Distribution Point, then after waiting some minutes you "Distribute Content" on the same DP
-> here in my example that work
Things is I surely have other package for some Distribution Point with same problem.
So I decide to find how to find them. Are you ready ?
I first try to find in SQL some related table
I found DistributionJobs table could be a good table
but when I try my query on my Secondary I finally see number found does correspond to this problem:
"2357","Distribution Manager instructed Package Transfer manager to send package "PRI00233" to distribution point "["Display=\\MYCOMPUTER.mydom.net\"]MSWNET:["SMS_SITE=PRI"]\\MYCOMPUTER.mydom.net\" ."
and these Distribution Points found in this query seems just works
Below query to find number of DistributionJobs for a package:
Select count(*)
From [DistributionJobs] as DJ
JOIN [DistributionPoints] as DP
ON DJ.DPID = DP.DPID
WHERE PkgID = 'PRI00233'
For information to see DP name use for example (here secondary XXH have 2 rows with same message):
Select DP.ServerName, DJ.*
From [DistributionJobs] as DJ
JOIN [DistributionPoints] as DP
ON DJ.DPID = DP.DPID
WHERE PkgID = 'PRI00233'
Then I found a Microsoft Article Understanding and Troubleshooting Content Distribution in Microsoft Configuration Manager https://support.microsoft.com/en-ae/help/4000401/content-distribution-in-mcm
in Useful query with a view
-- All Package/DPs in InProgress state for more than 3 days
SELECT distinct DPSD.DPName, DPSD.PackageID, SP.Name, DPSD.MessageState, DPSD.LastStatusTime, DPSD.SiteCode
FROM vSMS_DPStatusDetails DPSD
JOIN SMSPackages_All SP ON DPSD.PackageID = SP.PkgID
WHERE DPSD.LastStatusTime > DATEAdd(dd,-3,GETDate())
AND MessageState = 2
and another interesting article with table https://blogs.technet.microsoft.com/umairkhan/2014/10/02/the-case-of-the-unexplained-the-package-gets-distributed-successfully-but-does-not-show-in-the-console/
select * from PkgServers_G where pkgid = 'PRI00233'
select * from ContentDistributionNotification where pkgid = 'PRI00233'
select * from ContentDistribution where pkgid = 'PRI00233'
So as you can see in my example table ContentDistributionNotification is OK
SELECT count(*)
FROM [ContentDistributionNotification]
WHERE PkgID = 'PRI00233'
(No column name)
2315
Table ContentDistribution is OK too in my example
SELECT count(*)
FROM ContentDistribution
WHERE PkgID = 'PRI00233'
(No column name)
2315
Table PkgServers is OK too in my example
SELECT *
FROM PkgServers_G
WHERE PkgID = 'PRI00233'
Table PkgStatus has not same number BUT perhaps it is normal
JOIN DistributionPoints as DP ON PKGS.PkgServer = DP.NALPath
WHERE ID = 'PRI00233'
(No column name)
2095--
GOOD CATCH
Try testing some Distribution Points I see computer NOT in PkgStatus_G table are those with problems
For example we can see below %17% computer displayed in PkgStatus_G and not %36%
here %36% Distribution Point is 'in progress'
here %17% Distribution Point is 'Success'
So now I give you SQL Query to find ALL Distribution Points with this problem
-- Find Distribution Point 'in progress' with problems
-- by F.RICHARD 2019-01
-- Declare the variables to store the values returned by FETCH.
DECLARE @PackageID varchar(50);
DECLARE @tblResult TABLE (PackageID varchar(50), ServerName varchar(255), SiteCode varchar(10));
DECLARE PackageID_cursor CURSOR FOR
SELECT DISTINCT PackageId
FROM vSMS_DPStatusDetails DPSD
JOIN SMSPackages_All SP ON DPSD.PackageID = SP.PkgID
WHERE 1=1
AND DPSD.LastStatusTime < DATEAdd(dd,-3,GETDate())
AND MessageState = 2
OPEN PackageID_cursor;
FETCH NEXT FROM PackageID_cursor INTO @PackageID
WHILE @@FETCH_STATUS = 0
BEGIN
print @PackageID
-- create temp table after drop
if(OBJECT_ID('tempdb..#TempPkgStatusServerName') Is Not Null)
Begin
Drop Table #TempPkgStatusServerName
End
CREATE TABLE #TempPkgStatusServerName
(
PkgServer Varchar(255)
,ServerName Varchar(255)
,PkgID varchar(50)
);
-- insert data
INSERT INTO #TempPkgStatusServerName
SELECT PkgServer
,ServerName =
CASE
WHEN CHARINDEX('\\', Pkgserver) > 0
THEN SUBSTRING(Pkgserver, CHARINDEX('\\', Pkgserver) + 2, CHARINDEX('"]', Pkgserver) - CHARINDEX('\\', Pkgserver) - 3 )
ELSE
Pkgserver
END
,ID
FROM PkgStatus
WHERE 1=1
AND ID = @PackageID
INSERT @tblResult
SELECT
PackageID, DPSD.DPName, DPSD.SiteCode
FROM vSMS_DPStatusDetails DPSD
JOIN SMSPackages_All SP ON DPSD.PackageID = SP.PkgID
WHERE 1=1
AND DPSD.LastStatusTime < DATEAdd(dd,-3,GETDate())
AND MessageState = 2
AND PackageID = @PackageID
AND DPSD.DPName NOT IN
(
SELECT TMPTABLE.ServerName FROM #TempPkgStatusServerName as TMPTABLE
)
-- drop temp table
Drop Table #TempPkgStatusServerName
-- next data
FETCH NEXT FROM PackageID_cursor INTO @PackageID
END
CLOSE PackageID_cursor;
DEALLOCATE PackageID_cursor;
SELECT PackageID, ServerName, SiteCode FROM @tblResult
And as I am really a nice guy I give the same in powershell
below
<#
.Synopsis
SCCM_Get-Problematic-SMS_PackageStatus.ps1
.EXAMPLE
.\SCCM_Get-Problematic-SMS_PackageStatus.ps1
.NOTES
Version: 1.0
Author: Franck RICHARD
Creation Date: 2019-01
Purpose/Change:
#>
[cmdletbinding()]
Param(
[String]$CM="mycm.mydomain.net"
,[String]$PrimarySiteCode="XXX"
)
# *************************
# For Time checking
$MeasureCommandBegin = Get-Date
$strCurDir = Split-Path -parent $MyInvocation.MyCommand.Path
$strScriptName = $MyInvocation.MyCommand.Name
$date_for_file = Get-Date -format "yyyy-MM-dd_HHmmss"
$strSaveFile = $strCurDir + "\" + $date_for_file + "_" + $Hostname + "_" + $strScriptName.replace(".ps1",".csv")
# Get all packages
#
Write-Host "Get all Packages"
[HashTable] $hashPackageByPackageID = @{}
$arrSMS_PackageBaseclass = @(Get-WmiObject -Namespace "root\SMS\Site_$PrimarySiteCode" -Class SMS_PackageBaseclass -ComputerName $CM)
Foreach ($SMS_PackageBaseclass in $arrSMS_PackageBaseclass) {
if (!$hashPackageByPackageID.ContainsKey($SMS_PackageBaseclass.PackageID) ) {
$hashPackageByPackageID[$($SMS_PackageBaseclass.PackageID)] = $SMS_PackageBaseclass
}
}
Write-Host "Nb Package : $($hashPackageByPackageID.count)"
# Date Min = date LastStatusTime
#
$Nbdays = 3
$DateMin = (Get-date).AddDays(-$Nbdays)
# Get all SMS_DPStatusDetails 'in progress'
#
Write-Host "Get all SMS_DPStatusDetails 'in progress' "
$Query = @"
SELECT * FROM SMS_DPStatusDetails as DPS
WHERE DPS.MessageState='2'
AND DPS.LastStatusTime <= '$DateMin'
AND DPS.PackageID <> ''
"@
$arrSMS_DPStatusDetails = Get-WmiObject -Namespace "root\SMS\Site_$PrimarySiteCode" -ComputerName $CM -Query $Query
Write-Host "Nb SMS_DPStatusDetails 'in progress' > $Nbdays days: $($arrSMS_DPStatusDetails.count)"
# Get Distinct PackageID 'in progress'
#
Write-Host "Get Distinct PackageID 'in progress' "
[HashTable] $hashDistinctPackageID = @{}
Foreach ($SMS_DPStatusDetails in $arrSMS_DPStatusDetails) {
if ($hashPackageByPackageID.ContainsKey($SMS_DPStatusDetails.PackageID) ) {
if (!$hashDistinctPackageID.ContainsKey($SMS_DPStatusDetails.PackageID) ) {
$hashDistinctPackageID[$($SMS_DPStatusDetails.PackageID)] = 1
}
}
}
Write-Host "Nb Distinct PackageID : $($hashDistinctPackageID.count)"
# For each PackageID we get
#
[ARRAY] $arrInfos=@()
Foreach ($PackageID in $hashDistinctPackageID.Keys) {
$SMS_PackageBaseclass = $hashPackageByPackageID[$($PackageID)]
Write-Host "-> Check PackageID $PackageID 'in progress' ($($SMS_PackageBaseclass.Name))"
# Get All SMS_PackageStatus for $PackageID
#
Write-Host "Get All SMS_PackageStatus for $($PackageID) "
[HashTable] $hashPackageIDByPkgServer = @{}
#$Query = @"
#SELECT * FROM SMS_PackageStatus WHERE PackageID='$PackageID'
#"@
#$Query = @"
$Query = "SELECT PkgServer FROM SMS_PackageStatus WHERE PackageID='$PackageID'"
#"@
$arrSMS_PackageStatus = Get-WmiObject -Namespace "root\SMS\Site_$PrimarySiteCode" -ComputerName $CM -Query $Query
Foreach ($SMS_PackageStatus in $arrSMS_PackageStatus) {
$ServerNALPath = $SMS_PackageStatus.PkgServer
# ex: ["Display=\\MYCOMPUTER.mydom.net\"]MSWNET:["SMS_SITE=XXX"]\\MYCOMPUTER.mydom.net\
# -> MYCOMPUTER.mydom.net
$PkgServer = $ServerNALPath.Substring($ServerNALPath.LastIndexOf("]")+3).Trim("\")
if (!$hashPackageIDByPkgServer.ContainsKey($PkgServer) ) {
$hashPackageIDByPkgServer[$($PkgServer)] = 1 # $SMS_PackageStatus.PackageID
}
}
# Check if exist in SMS_DPStatusDetails but NOT in SMS_PackageStatus
#
Write-Host "Check if exist in SMS_DPStatusDetails but NOT in SMS_PackageStatus for $($PackageID) "
Foreach ($SMS_DPStatusDetails in $arrSMS_DPStatusDetails) {
if ($SMS_DPStatusDetails.PackageID -eq $PackageID) {
if ($hashPackageByPackageID.ContainsKey($SMS_DPStatusDetails.PackageID) ) {
if (!$hashPackageIDByPkgServer.ContainsKey($SMS_DPStatusDetails.DPName) ) {
$custObj = New-Object -TypeName psobject
$custObj | Add-Member -MemberType NoteProperty -Name PackageID -Value $SMS_DPStatusDetails.PackageID
$custObj | Add-Member -MemberType NoteProperty -Name DistributionPoint -Value $SMS_DPStatusDetails.DPName
$custObj | Add-Member -MemberType NoteProperty -Name SiteCode -Value $SMS_DPStatusDetails.SiteCode
$arrInfos += $custObj
}
}
}
}
}
Write-Host "Write file with all package informations"
$arrInfos | Export-Csv -NoType -Path $strSaveFile -Delimiter ";"
#$strContent | Out-File -FilePath "$strSaveFile
$MeasureCommandEnd = Get-Date
$MeasureCommandTime = $MeasureCommandEnd - $MeasureCommandBegin
Write-host "Script Executing in $($MeasureCommandTime.Day) day(s) $($MeasureCommandTime.Hour) hour(s) $($MeasureCommandTime.Minutes) minute(s) $($MeasureCommandTime.Seconds) second(s) "
[EDIT 2019-01-21]
Please here SCCM_AddPackageToDP.ps1 (https://franckrichard.blogspot.com/2019/01/sccm-powershell-script-to-add-package.html) powershell solution to remove and add content and resolve this problem
.\SCCM_AddPackageToDP.ps1 -CM mycm.mydomain.net -PrimarySiteCode XXX -ForceToDeletePackageBeforeIfExist -ImportFilePath file_generated_by_SCCM_Get-Problematic-SMS_PackageStatus.csv
Labels:
configmgr,
Configuration Manager,
Distribution Point,
DP,
in progress,
sccm,
SQL,
status
Monday, January 7, 2019
Update Pack Installation Status - Detailed status for Configuration Manager 1810
When you update to 1810 below Detailed status for Configuration Manager 1810 below:
How to update in 1810:
\Administration\Overview\Updates and Servicing
right click on "Configuration Manager 1810" then "Install Update Pack"
Warning: don't forget to upgrade sql server native client before if it is not already done:
https://blogs.technet.microsoft.com/arnabm/2018/11/28/sql-server-native-client-update-warning-prerequisite-for-configmgr-1810/
Download
Process update package
[Completed]:Processing update package. Check dmpdownloader.log for details.
Download update package cab file
[Not started]:If your service connection point is online, the update package cab is downloaded. If your service connection point is offline, this step is skipped. Check dmpdownloader.log for details.
Extract update package payload
[Not started]:Extracting update package payload. Check dmpdownloader.log for details.
Download redist
[Not started]:If redistributable files are required and not included with the update, they are downloaded. If files do not need to be downloaded, this step is skipped. Check dmpdownloader.log and ConfigMgrSetup.log for details.
Report Package as downloaded
[Completed]:The update package has been reported as downloaded. Check dmpdownloader.log and hman.log for details.
Replication
Create or update software distribution package
[Completed]:Creating or updating Configuration Manager Update Package. Check hman.log for details.
Update content library
[Completed]:Saving the content into content library on the site server. Check distmgr.log for details.
Prerequisite Check
SQL Server Native Client Version
[Completed]:Verifies that the version of Microsoft SQL Server Native Client installed on the site server meets the minimum requirements to enable TLS 1.2 support.
SQL Server Configuration for site upgrde
[Completed]:Checks if the specified SQL Server meets the minimum requirements for site upgrade.
Potential SQL server performance issue caused by change tracking retention period
[Completed]:Checks if the specified SQL Server meets the minimum requirements for site upgrade.
Administrative rights on site system
[Completed]:Verifies that the logged on user account has administrative rights on the site system computer.
Administrative rights on central administration site
[Completed]:Verifies that the user running Setup has local administrator rights on the central administration site server.
Connection to SQL Server on the central administration site
[Completed]:Checks if the user account running Setup has sysadmin rights on the SQL Server for the CAS.
Check Server Service is running
[Completed]:Check Server Service (LanmanServer) is running.
Domain membership
[Completed]:Verifies that the computer specified for installation is a member of a Windows domain.
Active Directory domain Functional level Check
[Completed]:Verify that the Active Directory domain functional level is Windows Server 2003 or later.
Free disk space on site server
[Completed]:Checks that the site server computer has sufficient available disk space to install the site server.
Pending system restart
[Completed]:Checks if a system restart is pending.
Read-Only Domain Controller
[Completed]:Checking unsupported Read-Only Domain Controller on site server.
Site Server FQDN Length.
[Completed]:Checking Site Server FQDN Length.
Microsoft XML Core Services 6.0 (MSXML60)
[Completed]:Verifies that the Microsoft Core XML Services (MSXML) version 6.0 or later libraries are installed.
Windows Server 2003-based schannel hotfix
[Completed]:Determines if the Windows Server 2003-based schannel hotfix is installed on the site server.
Microsoft Remote Differential Compression (RDC) library registered
[Completed]:Verifies that the Microsoft Remote Differential Compression (RDC) library is registered on the computer specified for Configuration Manager site server installation.
Microsoft Windows Installer
[Completed]:Checking Windows Installer Version >= 4.5.
Existing Configuration Manager server components on site server
[Completed]:Checks if the target site server computer already has existing Configuration Manager server components installed.
Firewall exception for SQL Server
[Completed]:Checks if the Windows Firewall is disabled or if a relevant Windows Firewall exception exists for SQL Server.
Firewall exception for SQL Server (stand-alone primary site)
[Completed]:Checks if the Windows Firewall is disabled or if a relevant Windows Firewall exception exists for SQL Server.
SQL Server service running account.
[Completed]:Check SQL Server service running account.
Dedicated SQL Server instance
[Completed]:Check to see if the selected SQL Server instance is already in use by another Configuration Manager site
Parent/child database collation
[Completed]:Verifies that the site server's database collation matches the database collation of its parent site.
Minimum .NET Framework version for Configuration Manager site server
[Completed]:Verifies that the Microsoft .NET Framework version 3.5 is installed on Configuration Manager central administration site servers, primary site servers, and secondary site servers.
Windows Deployment Tools installed
[Completed]:Checks whether the Windows Deployment Tools component of Windows Assessment and Deployment Kit (ADK) for Windows 10 is installed.
User State Migration Tool (USMT) installed
[Completed]:Checks whether the User State Migration Tool (USMT) component of Windows Assessment and Deployment Kit (ADK) for Windows 10 is installed.
Primary FQDN
[Completed]:Checks if the FQDN provided for the site system uses the primary DNS hostname for the computer.
Site code in use
[Completed]:Checks if the specified site code is already in use by another site in your hierarchy.
Verify Central Administration Site Version
[Completed]:Check the parent Central Administration Site has the same version.
Required SQL Server collation
[Completed]:Verifies that the SQL Server instance and Configuration Manager site database (if present) are configured to use a supported collation.
Backlogged inboxes
[Completed]:Verifies that the site server is processing critical inboxes in a timely fashion, and that inboxes do not contain files older than one day.
Distribution point package version
[Completed]:Verifies that all distribution points in the site have the latest version of software distribution packages.
SQL Server database collation
[Completed]:Verifies that the SQL Server database collation settings of the tempdb database and site database to be upgraded are the same.
Share Name in Package
[Completed]:Share Name in Package has invalid character: #.
Software update points in NLB Configuration
[Completed]:Verifies that SUM is not using any virtual locations for active SUPs.
Migration active source hierarchy
[Completed]:Verifies that no active source hierarchy is currently configured for migration.
Unsupported upgrade path
[Completed]:Verifies that all site servers in the hierarchy meet the Configuration Manager minimum version that is required for upgrade
Active MP Replica
[Completed]:No Active MP Replica detected
Parent site replication status
[Completed]:Verifies that the replication status of the parent site is Replication Active (corresponds to status=125).
Unsupported system role 'Out of band service point'
[Completed]:Checking that the site system role 'Out of band service point' is not deployed.
System Health Validation site system role is no longer supported
[Completed]:Checking whether the site system role 'System Health Validator' exists in the hierarchy.
Network Access Protection (NAP) is no longer supported
[Completed]:Checking whether there are software updates that are enabled for NAP
Verify database consistency
[Completed]:Pre-requisite rule to verify database consistency
SQL Server sysadmin rights
[Completed]:Verifies that the user account running Configuration Manager Setup has been granted sysadmin SQL Server role permissions on the SQL Server instance selected for site database installation. SQL Server sysadmin role permissions are required in order to create the site database and configure necessary database role and login permissions for Configuration Manager sites.
SQL Server sysadmin rights for reference site
[Completed]:Verifies that the user account running Configuration Manager Setup has been granted sysadmin SQL Server role permissions on the SQL Server instance selected for reference site database installation. SQL Server sysadmin role permissions are required in order to modify the site database.
Site server compute administrative right
[Completed]:Verifies that the site server computer account has administrative rights on the SQL Server and management point.
SQL Server version
[Completed]:Verifies that the version of Microsoft SQL Server installed on the computer selected to host the site database meets the minimum requirements.
SQL Server Edition
[Completed]:Checking the site SQL Server is not Express Edition.
SQL Server Tcp Port
[Completed]:Checking the site SQL Server Tcp is enabled and set to Static port.
Case-insensitive collation on SQL Server
[Completed]:Checks if the SQL Server hosting the Configuration Manager site database is using a case-insensitive collation.
Validate FQDN of SQL Server
[Completed]:Check that the specified FQDN for the SQL Server computer is valid.
Windows Preinstallation Environment installed
[Completed]:Checks whether the Windows Preinstallation Environment component of Windows Assessment and Deployment Kit (ADK) for Windows 10 is installed.
SMS Provider machine has same domain as site server
[Completed]:Checks if SMS Provider machine has same domain as site server.
Custom Client Agent Settings have NAP enabled
[Completed]:Checking whether there are custom Client Agent Settings that enable NAP
Default Client Agent Settings have NAP enabled
[Completed]:Checking whether the default Client Agent Settings enable NAP
SQL availability group configured for readable secondaries
[Completed]:Checking secondary read state of availability group replicas
SQL availability group configured for manual failover
[Completed]:Checking failover state of availability group replicas
SQL availability group replicas on default instance
[Completed]:Checking availability group replicas for instance configuration
SQL Index Create Memory option
[Completed]:Checks if default value is set for SQL Index Create Memory
SQL Server supported version
[Completed]:Starting with version 1702, Configuration Manager does not support SQL Server 2008 R2. https://go.microsoft.com/fwlink/?linkid=841654. This check verifies that the version of Microsoft SQL Server installed on the computer selected to host the site database meets the minimum requirements of SQL Server 2012 with SP2.
Software Update Points using a Load Balancer (NLB/HLB) is no longer supported
[Completed]:Starting with version 1702, Configuration Manager does not support Software Update Points on Loadbalancers (NLB/HLB).
Upgrade Assessment Toolkit is no longer supported
[Completed]:Starting with version 1706, Upgrade Assessment Toolkit is no longer supported. https://go.microsoft.com/fwlink/?linkid=841654
Unsupported site server operating system version for Setup
[Completed]:Verifies that the site server operating system meets the minimum requirement for site server installation. https://go.microsoft.com/fwlink/?linkid=841654
Unsupported operating system version for site system role
[Completed]:Verifies that the site system to be upgraded meets the minimum operating system requirement for site system installation. https://go.microsoft.com/fwlink/?linkid=841654
Using HTTP management point with cloud management gateway is not supported
[Completed]:Checking if HTTP management point is enabled for cloud management gateway
SQL Server Always On availability groups
[Completed]:Checks if the specified SQL Server meets the minimum requirements to host an Always On availability group. https://go.microsoft.com/fwlink/?linkid=873403
Max Text Repl Size for SQL Server Always On availability groups
[Completed]:Checks if the max text repl size for the specified SQL Server is configured properly. https://go.microsoft.com/fwlink/?linkid=873403
Pending configuration item policy updates
[Completed]:Checks if there are many pending configuration item policy updates. https://go.microsoft.com/fwlink/?linkid=2006830
SQL Server Configuration for site upgrade
[Completed]:Checks if the specified SQL Server meets the minimum requirements for site upgrade.
SQL Server Native Client version
[Completed]:Verifies that the version of Microsoft SQL Server Native Client installed on the site server meets the minimum requirements to enable TLS 1.2 support. https://go.microsoft.com/fwlink/?linkid=2026746
Potential SQL server performance issue caused by change tracking retention period
[Completed]:The site database has a backlog of SQL change tracking data. For more information, see https://go.microsoft.com/fwlink/?linkid=2027576
Installation
Check Site Server readiness
[Completed]:Checking if Site Server is ready to apply the update. Check hman.log for details.
Stop CONFIGURATION_MANAGER_UPDATE service
[Completed]:Stopping CONFIGURATION_MANAGER_UPDATE service. Check hman.log for details.
Update CONFIGURATION_MANAGER_UPDATE service
[Completed]:Updating CONFIGURATION_MANAGER_UPDATE service. Check hman.log for details.
Start CONFIGURATION_MANAGER_UPDATE service
[Completed]:Starting CONFIGURATION_MANAGER_UPDATE service. Check hman.log for details.
Extract Update package
[Completed]:Extracting update package from content library on site server. Check cmupdate.log for details.
Validate redistributable
[Completed]:Validating redistributable files. Check cmupdate.log for details.
Check site readiness
[Completed]:Checking if CONFIGURATION_MANAGER_UPDATE service is updated. Check hman.log and cmupdate.log for details.
Check Service Window
[Completed]:Checking if update is allowed to be applied. Check cmupdate.log for details.
Turn off SQL Server Service Broker
[Completed]:Turning off SQL Server Service Broker. Check cmupdate.log for details
Stop ConfigMgr services
[Completed]:Stopping ConfigMgr services. Check cmupdate.log for details.
Unload WMI provider
[Completed]:Unloading WMI provider. Check cmupdate.log for details.
Delete SMSDBMON triggers
[Completed]:Deleting SMSDBMON triggers. Check cmupdate.log for details.
Save site control settings
[Completed]:Saving site control settings. Check cmupdate.log for details.
Upgrade ConfigMgr database
[Completed]:Upgrading ConfigMgr database. Check cmupdate.log for details.
Update SQL registry
[Completed]:Updating SQL Server’s registry. Check cmupdate.log for details.
Update RCM registry
[Completed]:Updating RCM registry. Check cmupdate.log for details.
Install files
[Completed]:Installing files required for the update. Check cmupdate.log for details.
Install language pack
[Completed]:Installing required language pack(s). Check cmupdate.log for details.
Install component
[Completed]:Installing required components. Check cmupdate.log for details.
Install controls
[Completed]:Installing required controls. Check cmupdate.log for details.
Upgrade site control settings
[Completed]:Upgrading site control settings. Check cmupdate.log for details.
Configure SQL Server Service Broker
[Completed]:Configuring SQL Server Service Broker. Check cmupdate.log for details.
Installing ConfigMgr configurations
[Completed]:Installing required ConfigMgr configurations. Check cmupdate.log for details.
Start WMI
[Completed]:Starting WMI provider. Check cmupdate.log for details.
Install services
[Completed]:Installing required services. Check cmupdate.log for details.
Update Sites table
[Completed]:Updating Sites table. Check cmupdate.log for details.
Update Admin Console binaries
[Completed]:Updating Admin Console binaries. Check cmupdate.log for details.
Turn on SQL Server Service Broker
[Completed]:Turning on activation of SQL Server Service Broker queues. Check cmupdate.log for details.
Post Installation
Installing SMS_EXECUTIVE service
[Completed]:Installing SMS_EXECUTIVE service on Site Server. Check sitecomp.log for details.
Installing SMS_DATABASE_NOTIFICATION_MONITOR componen
[Completed]:Installing SMS_DATABASE_NOTIFICATION_MONITOR component on Site Server. Check sitecomp.log and smsexec.log for details.
Installing SMS_HIERARCHY_MANAGER component
[Completed]:Installing SMS_HIERARCHY_MANAGER component on Site Server. Check sitecomp.log and smsexec.log for details.
Installing SMS_REPLICATION_CONFIGURATION_MONITOR component
[Completed]:Installing SMS_REPLICATION_CONFIGURATION_MONITOR component on Site Server. Check sitecomp.log and smsexec.log for details.
Monitoring replication initialization
[Completed]:Monitoring database replication initialization. Check cmupdate.log and rcmctrl.log for details.
Updating Configuration Manager Client Preproduction Package
[Completed]:Updating StagingClient folder used by Configuration Manager Client Preproduction Package. Check hman.log for details.
Updating Client folder on Site Server
[Completed]:Updating Client folder on the Site Server from the installed Configuration Manager Update Package. Check hman.log for details.
Updating Configuration Manager Client Package
[Completed]:Updating Client folder used by Configuration Manager Client Package. Check hman.log for details.
Turning on Features
[Completed]:Turning on Features. Please reopen ConfigMgr Console to see the new features. Check hman.log for details.
How to update in 1810:
\Administration\Overview\Updates and Servicing
right click on "Configuration Manager 1810" then "Install Update Pack"
Warning: don't forget to upgrade sql server native client before if it is not already done:
https://blogs.technet.microsoft.com/arnabm/2018/11/28/sql-server-native-client-update-warning-prerequisite-for-configmgr-1810/
Download
Process update package
[Completed]:Processing update package. Check dmpdownloader.log for details.
Download update package cab file
[Not started]:If your service connection point is online, the update package cab is downloaded. If your service connection point is offline, this step is skipped. Check dmpdownloader.log for details.
Extract update package payload
[Not started]:Extracting update package payload. Check dmpdownloader.log for details.
Download redist
[Not started]:If redistributable files are required and not included with the update, they are downloaded. If files do not need to be downloaded, this step is skipped. Check dmpdownloader.log and ConfigMgrSetup.log for details.
Report Package as downloaded
[Completed]:The update package has been reported as downloaded. Check dmpdownloader.log and hman.log for details.
Replication
Create or update software distribution package
[Completed]:Creating or updating Configuration Manager Update Package. Check hman.log for details.
Update content library
[Completed]:Saving the content into content library on the site server. Check distmgr.log for details.
Prerequisite Check
SQL Server Native Client Version
[Completed]:Verifies that the version of Microsoft SQL Server Native Client installed on the site server meets the minimum requirements to enable TLS 1.2 support.
SQL Server Configuration for site upgrde
[Completed]:Checks if the specified SQL Server meets the minimum requirements for site upgrade.
Potential SQL server performance issue caused by change tracking retention period
[Completed]:Checks if the specified SQL Server meets the minimum requirements for site upgrade.
Administrative rights on site system
[Completed]:Verifies that the logged on user account has administrative rights on the site system computer.
Administrative rights on central administration site
[Completed]:Verifies that the user running Setup has local administrator rights on the central administration site server.
Connection to SQL Server on the central administration site
[Completed]:Checks if the user account running Setup has sysadmin rights on the SQL Server for the CAS.
Check Server Service is running
[Completed]:Check Server Service (LanmanServer) is running.
Domain membership
[Completed]:Verifies that the computer specified for installation is a member of a Windows domain.
Active Directory domain Functional level Check
[Completed]:Verify that the Active Directory domain functional level is Windows Server 2003 or later.
Free disk space on site server
[Completed]:Checks that the site server computer has sufficient available disk space to install the site server.
Pending system restart
[Completed]:Checks if a system restart is pending.
Read-Only Domain Controller
[Completed]:Checking unsupported Read-Only Domain Controller on site server.
Site Server FQDN Length.
[Completed]:Checking Site Server FQDN Length.
Microsoft XML Core Services 6.0 (MSXML60)
[Completed]:Verifies that the Microsoft Core XML Services (MSXML) version 6.0 or later libraries are installed.
Windows Server 2003-based schannel hotfix
[Completed]:Determines if the Windows Server 2003-based schannel hotfix is installed on the site server.
Microsoft Remote Differential Compression (RDC) library registered
[Completed]:Verifies that the Microsoft Remote Differential Compression (RDC) library is registered on the computer specified for Configuration Manager site server installation.
Microsoft Windows Installer
[Completed]:Checking Windows Installer Version >= 4.5.
Existing Configuration Manager server components on site server
[Completed]:Checks if the target site server computer already has existing Configuration Manager server components installed.
Firewall exception for SQL Server
[Completed]:Checks if the Windows Firewall is disabled or if a relevant Windows Firewall exception exists for SQL Server.
Firewall exception for SQL Server (stand-alone primary site)
[Completed]:Checks if the Windows Firewall is disabled or if a relevant Windows Firewall exception exists for SQL Server.
SQL Server service running account.
[Completed]:Check SQL Server service running account.
Dedicated SQL Server instance
[Completed]:Check to see if the selected SQL Server instance is already in use by another Configuration Manager site
Parent/child database collation
[Completed]:Verifies that the site server's database collation matches the database collation of its parent site.
Minimum .NET Framework version for Configuration Manager site server
[Completed]:Verifies that the Microsoft .NET Framework version 3.5 is installed on Configuration Manager central administration site servers, primary site servers, and secondary site servers.
Windows Deployment Tools installed
[Completed]:Checks whether the Windows Deployment Tools component of Windows Assessment and Deployment Kit (ADK) for Windows 10 is installed.
User State Migration Tool (USMT) installed
[Completed]:Checks whether the User State Migration Tool (USMT) component of Windows Assessment and Deployment Kit (ADK) for Windows 10 is installed.
Primary FQDN
[Completed]:Checks if the FQDN provided for the site system uses the primary DNS hostname for the computer.
Site code in use
[Completed]:Checks if the specified site code is already in use by another site in your hierarchy.
Verify Central Administration Site Version
[Completed]:Check the parent Central Administration Site has the same version.
Required SQL Server collation
[Completed]:Verifies that the SQL Server instance and Configuration Manager site database (if present) are configured to use a supported collation.
Backlogged inboxes
[Completed]:Verifies that the site server is processing critical inboxes in a timely fashion, and that inboxes do not contain files older than one day.
Distribution point package version
[Completed]:Verifies that all distribution points in the site have the latest version of software distribution packages.
SQL Server database collation
[Completed]:Verifies that the SQL Server database collation settings of the tempdb database and site database to be upgraded are the same.
Share Name in Package
[Completed]:Share Name in Package has invalid character: #.
Software update points in NLB Configuration
[Completed]:Verifies that SUM is not using any virtual locations for active SUPs.
Migration active source hierarchy
[Completed]:Verifies that no active source hierarchy is currently configured for migration.
Unsupported upgrade path
[Completed]:Verifies that all site servers in the hierarchy meet the Configuration Manager minimum version that is required for upgrade
Active MP Replica
[Completed]:No Active MP Replica detected
Parent site replication status
[Completed]:Verifies that the replication status of the parent site is Replication Active (corresponds to status=125).
Unsupported system role 'Out of band service point'
[Completed]:Checking that the site system role 'Out of band service point' is not deployed.
System Health Validation site system role is no longer supported
[Completed]:Checking whether the site system role 'System Health Validator' exists in the hierarchy.
Network Access Protection (NAP) is no longer supported
[Completed]:Checking whether there are software updates that are enabled for NAP
Verify database consistency
[Completed]:Pre-requisite rule to verify database consistency
SQL Server sysadmin rights
[Completed]:Verifies that the user account running Configuration Manager Setup has been granted sysadmin SQL Server role permissions on the SQL Server instance selected for site database installation. SQL Server sysadmin role permissions are required in order to create the site database and configure necessary database role and login permissions for Configuration Manager sites.
SQL Server sysadmin rights for reference site
[Completed]:Verifies that the user account running Configuration Manager Setup has been granted sysadmin SQL Server role permissions on the SQL Server instance selected for reference site database installation. SQL Server sysadmin role permissions are required in order to modify the site database.
Site server compute administrative right
[Completed]:Verifies that the site server computer account has administrative rights on the SQL Server and management point.
SQL Server version
[Completed]:Verifies that the version of Microsoft SQL Server installed on the computer selected to host the site database meets the minimum requirements.
SQL Server Edition
[Completed]:Checking the site SQL Server is not Express Edition.
SQL Server Tcp Port
[Completed]:Checking the site SQL Server Tcp is enabled and set to Static port.
Case-insensitive collation on SQL Server
[Completed]:Checks if the SQL Server hosting the Configuration Manager site database is using a case-insensitive collation.
Validate FQDN of SQL Server
[Completed]:Check that the specified FQDN for the SQL Server computer is valid.
Windows Preinstallation Environment installed
[Completed]:Checks whether the Windows Preinstallation Environment component of Windows Assessment and Deployment Kit (ADK) for Windows 10 is installed.
SMS Provider machine has same domain as site server
[Completed]:Checks if SMS Provider machine has same domain as site server.
Custom Client Agent Settings have NAP enabled
[Completed]:Checking whether there are custom Client Agent Settings that enable NAP
Default Client Agent Settings have NAP enabled
[Completed]:Checking whether the default Client Agent Settings enable NAP
SQL availability group configured for readable secondaries
[Completed]:Checking secondary read state of availability group replicas
SQL availability group configured for manual failover
[Completed]:Checking failover state of availability group replicas
SQL availability group replicas on default instance
[Completed]:Checking availability group replicas for instance configuration
SQL Index Create Memory option
[Completed]:Checks if default value is set for SQL Index Create Memory
SQL Server supported version
[Completed]:Starting with version 1702, Configuration Manager does not support SQL Server 2008 R2. https://go.microsoft.com/fwlink/?linkid=841654. This check verifies that the version of Microsoft SQL Server installed on the computer selected to host the site database meets the minimum requirements of SQL Server 2012 with SP2.
Software Update Points using a Load Balancer (NLB/HLB) is no longer supported
[Completed]:Starting with version 1702, Configuration Manager does not support Software Update Points on Loadbalancers (NLB/HLB).
Upgrade Assessment Toolkit is no longer supported
[Completed]:Starting with version 1706, Upgrade Assessment Toolkit is no longer supported. https://go.microsoft.com/fwlink/?linkid=841654
Unsupported site server operating system version for Setup
[Completed]:Verifies that the site server operating system meets the minimum requirement for site server installation. https://go.microsoft.com/fwlink/?linkid=841654
Unsupported operating system version for site system role
[Completed]:Verifies that the site system to be upgraded meets the minimum operating system requirement for site system installation. https://go.microsoft.com/fwlink/?linkid=841654
Using HTTP management point with cloud management gateway is not supported
[Completed]:Checking if HTTP management point is enabled for cloud management gateway
SQL Server Always On availability groups
[Completed]:Checks if the specified SQL Server meets the minimum requirements to host an Always On availability group. https://go.microsoft.com/fwlink/?linkid=873403
Max Text Repl Size for SQL Server Always On availability groups
[Completed]:Checks if the max text repl size for the specified SQL Server is configured properly. https://go.microsoft.com/fwlink/?linkid=873403
Pending configuration item policy updates
[Completed]:Checks if there are many pending configuration item policy updates. https://go.microsoft.com/fwlink/?linkid=2006830
SQL Server Configuration for site upgrade
[Completed]:Checks if the specified SQL Server meets the minimum requirements for site upgrade.
SQL Server Native Client version
[Completed]:Verifies that the version of Microsoft SQL Server Native Client installed on the site server meets the minimum requirements to enable TLS 1.2 support. https://go.microsoft.com/fwlink/?linkid=2026746
Potential SQL server performance issue caused by change tracking retention period
[Completed]:The site database has a backlog of SQL change tracking data. For more information, see https://go.microsoft.com/fwlink/?linkid=2027576
Installation
Check Site Server readiness
[Completed]:Checking if Site Server is ready to apply the update. Check hman.log for details.
Stop CONFIGURATION_MANAGER_UPDATE service
[Completed]:Stopping CONFIGURATION_MANAGER_UPDATE service. Check hman.log for details.
Update CONFIGURATION_MANAGER_UPDATE service
[Completed]:Updating CONFIGURATION_MANAGER_UPDATE service. Check hman.log for details.
Start CONFIGURATION_MANAGER_UPDATE service
[Completed]:Starting CONFIGURATION_MANAGER_UPDATE service. Check hman.log for details.
Extract Update package
[Completed]:Extracting update package from content library on site server. Check cmupdate.log for details.
Validate redistributable
[Completed]:Validating redistributable files. Check cmupdate.log for details.
Check site readiness
[Completed]:Checking if CONFIGURATION_MANAGER_UPDATE service is updated. Check hman.log and cmupdate.log for details.
Check Service Window
[Completed]:Checking if update is allowed to be applied. Check cmupdate.log for details.
Turn off SQL Server Service Broker
[Completed]:Turning off SQL Server Service Broker. Check cmupdate.log for details
Stop ConfigMgr services
[Completed]:Stopping ConfigMgr services. Check cmupdate.log for details.
Unload WMI provider
[Completed]:Unloading WMI provider. Check cmupdate.log for details.
Delete SMSDBMON triggers
[Completed]:Deleting SMSDBMON triggers. Check cmupdate.log for details.
Save site control settings
[Completed]:Saving site control settings. Check cmupdate.log for details.
Upgrade ConfigMgr database
[Completed]:Upgrading ConfigMgr database. Check cmupdate.log for details.
Update SQL registry
[Completed]:Updating SQL Server’s registry. Check cmupdate.log for details.
Update RCM registry
[Completed]:Updating RCM registry. Check cmupdate.log for details.
Install files
[Completed]:Installing files required for the update. Check cmupdate.log for details.
Install language pack
[Completed]:Installing required language pack(s). Check cmupdate.log for details.
Install component
[Completed]:Installing required components. Check cmupdate.log for details.
Install controls
[Completed]:Installing required controls. Check cmupdate.log for details.
Upgrade site control settings
[Completed]:Upgrading site control settings. Check cmupdate.log for details.
Configure SQL Server Service Broker
[Completed]:Configuring SQL Server Service Broker. Check cmupdate.log for details.
Installing ConfigMgr configurations
[Completed]:Installing required ConfigMgr configurations. Check cmupdate.log for details.
Start WMI
[Completed]:Starting WMI provider. Check cmupdate.log for details.
Install services
[Completed]:Installing required services. Check cmupdate.log for details.
Update Sites table
[Completed]:Updating Sites table. Check cmupdate.log for details.
Update Admin Console binaries
[Completed]:Updating Admin Console binaries. Check cmupdate.log for details.
Turn on SQL Server Service Broker
[Completed]:Turning on activation of SQL Server Service Broker queues. Check cmupdate.log for details.
Post Installation
Installing SMS_EXECUTIVE service
[Completed]:Installing SMS_EXECUTIVE service on Site Server. Check sitecomp.log for details.
Installing SMS_DATABASE_NOTIFICATION_MONITOR componen
[Completed]:Installing SMS_DATABASE_NOTIFICATION_MONITOR component on Site Server. Check sitecomp.log and smsexec.log for details.
Installing SMS_HIERARCHY_MANAGER component
[Completed]:Installing SMS_HIERARCHY_MANAGER component on Site Server. Check sitecomp.log and smsexec.log for details.
Installing SMS_REPLICATION_CONFIGURATION_MONITOR component
[Completed]:Installing SMS_REPLICATION_CONFIGURATION_MONITOR component on Site Server. Check sitecomp.log and smsexec.log for details.
Monitoring replication initialization
[Completed]:Monitoring database replication initialization. Check cmupdate.log and rcmctrl.log for details.
Updating Configuration Manager Client Preproduction Package
[Completed]:Updating StagingClient folder used by Configuration Manager Client Preproduction Package. Check hman.log for details.
Updating Client folder on Site Server
[Completed]:Updating Client folder on the Site Server from the installed Configuration Manager Update Package. Check hman.log for details.
Updating Configuration Manager Client Package
[Completed]:Updating Client folder used by Configuration Manager Client Package. Check hman.log for details.
Turning on Features
[Completed]:Turning on Features. Please reopen ConfigMgr Console to see the new features. Check hman.log for details.
Labels:
1810,
configmgr,
Configuration Manager,
status,
update pack installation
Subscribe to:
Posts (Atom)