Tunnused
Pärast järgmiste oktoobrikuu Microsoft SharePoint Serveri turbevärskenduste installimist võivad mõned Microsoft SharePoint 2010 töövoostsenaariumid olla blokeeritud. Lisaks logitakse "6ksbk" sündmusesildid SharePointi ühtse logimissüsteemi (ULS) logidesse.
-
SharePoint Foundation 2013 turbevärskenduse kirjeldus: 11. oktoober 2022 (KB5002284)
-
SharePoint Enterprise Server 2016 turbevärskenduse kirjeldus: 11. oktoober 2022 (KB5002287)
-
SharePoint Server 2019 turbevärskenduse kirjeldus: 11. oktoober 2022 (KB5002278)
-
SharePoint Serveri tellimisväljaanne turbevärskenduse kirjeldus: 11. oktoober 2022 (KB5002290)
Põhjus
SharePointi töövoogude turvalisuse tugevdamiseks toetab SharePoint nüüd ainult UTF-8 märgikodeeringut töövoo XOML-failide jaoks.
Märkus.: SharePointi töövootööriistad (nt SharePoint Designer, Microsoft Visual Studio ja Nintex) loovad töövoo XOML-failid vaikimisi UTF-8 märgikodeeringu abil. See turbetäiustus ei mõjuta kliente, v.a juhul, kui nad on oma töövoo XOML-faile käsitsi redigeerinud ja teisendanud need mõneks muuks märgikodeeringuks. See probleem on esitatud selles teabebaasiartiklis äärmiselt harvaesinev võimalus, et kliendid on otsustanud seda teha.
Ajutine lahendus
Kui olete töövoo XOML-faili käsitsi redigeerinud ja teisendanud selle märgikodeeringuks peale UTF-8, peate faili uuesti redigeerima, et teisendada see tagasi UTF-8-ks. Veenduge, et faili XML-deklaratsioon määratleks kodeeringu UTF-8-na, salvestage fail tekstiredaktoriga UTF-8 märgikodeerimisvormingus ja seejärel juurutage see uuesti.
SharePointi halduskestas saab kasutada järgmist PowerShelli skripti SharePointi saidikogumi töövoo XOML-failide kontrollimiseks, et teha kindlaks, kas see muudatus neid mõjutab. IsGoodWorkflow väljund True töövoo XOML-failide jaoks, mis kasutavad UTF-8 märgikodeeringut ja ühilduvad selle muudatusega. IsGoodWorkflow väljund False töövoo XOML-failide jaoks, mis ei kasuta UTF-8 märgikodeeringut ja mida on vaja muuta.
<#
.SYNOPSIS
Script to check character encoding of workflow .xoml files found in a site collection.
.DESCRIPTION
This script checks the character encoding of workflow .xoml files found in a site collection based
on the security improvement documented here: https://support.microsoft.com/topic/sharepoint-2010-workflows-might-be-blocked-by-enhanced-security-policy-kb5020238-eb91e24d-eea4-4490-a281-86503adc8b27
This could be altered to take an SPWebApplication object, iterate through all SPSite objects in the Sites SPSiteCollection,
and then iterate through all SPWeb subsites in the AllWebs SPWebCollection.
.EXAMPLE
Get-WorkflowStatusForSite -SiteCollectionUrl https://sharepoint
.EXAMPLE
Get-WorkflowStatusForSite -SiteCollectionUrl https://sharepoint -IgnoreSubSites
.INPUTS
None
.OUTPUTS
PSCustomObject with Site, Web, WorkflowFileName and IsGoodWorkflow Result
Site Web WorkflowFileName IsGoodWorkflow
---- --- ---------------- --------------
SPSite Url=http://sharepoint http://sharepoint/WorkflowTest 2010 Log Workflow.xoml True
SPSite Url=http://sharepoint http://sharepoint/WorkflowTest Another Test Log.xoml True
.NOTES
Version .1
#>
param(
[Parameter(Position=2,HelpMessage="The site collection URL to validate.")]
[string]$SiteCollectionUrl,
[Parameter(Position=3,HelpMessage="Ignore subsites below the top-level site in the site collection.")]
[switch]$IgnoreSubSites
)
function IsGoodWorkflow
{
param
(
[Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)]
[System.Xml.XmlReader]$xmlReader
)
try {
$xDoc = [System.Xml.Linq.XDocument]::Load($xmlReader)
if ($null -ne $xDoc -and $null -ne $xDoc.Declaration -and $null -ne $xDoc.Declaration.Encoding)
{
if ($xdoc.Declaration.Encoding.ToLower() -ne "utf-8")
{
return $false
}
}
}
catch
{
return $false
}
return $true
}
function CheckWorkflowFile
{
param
(
[Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)]
[Microsoft.SharePoint.SPFile]$SPFile
)
$xmlReader = [System.Xml.XmlReader]::Create($SPFile.OpenBinaryStream())
if ($null -ne $xmlReader)
{
$isGood = $xmlReader | IsGoodWorkflow
$xmlReader.Close()
$xmlReader.Dispose()
return [PSCustomObject]@{
Site = $SPFile.Item.Web.Site
Web = $SPFile.Item.Web.Url
WorkflowFileName = $SPFile.Name
IsGoodWorkflow = $isGood
}
}
}
function CheckWorkflowsForWeb
{
param
(
[Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)]
[Microsoft.SharePoint.SPWeb]$SPWeb
)
write-host "Checking $SPweb"
$WorkflowsList = $SPWeb.Lists["Workflows"]
$results = @()
if ($WorkflowsList)
{
Write-Host "Found: " $WorkflowsList.Title
foreach ($listItem in $WorkflowsList.Items)
{
if ($listItem.File -and $listItem.File.Name.ToLower().EndsWith(".xoml"))
{
Write-Host "Found Workflow: " $listItem.File.Name
$results += (CheckWorkflowFile $listItem.File)
}
}
}
return $results
}
function CheckWorkflowsForSite
{
param
(
[Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)]
[Microsoft.SharePoint.SPSite]$SPSite,
[switch]$IgnoreSubSites
)
$results = @()
if ($IgnoreSubSites)
{
$SPWeb = $SPSite.RootWeb
$results += CheckWorkflowsForWeb $SPWeb
$SPWeb.Dispose()
}
else
{
foreach ($SPWeb in $SPSite.AllWebs)
{
$results += CheckWorkflowsForWeb $SPWeb
$SPWeb.Dispose()
}
}
return $results
}
if ([string]::IsNullOrEmpty($SiteCollectionUrl))
{
$SiteCollectionUrl = Read-Host "Please provide a site collection URL (Default: http://sharepoint)"
if ([String]::IsNullOrEmpty($SiteCollectionUrl))
{
$SiteCollectionUrl = "http://sharepoint"
}
}
$SPSite = Get-SPSite $SiteCollectionUrl -ErrorAction SilentlyContinue
if ($null -eq $SPSite)
{
Write-Host "Site collection $SiteCollectionUrl not found." -ForegroundColor Red
return;
}
$results = CheckWorkflowsForSite $SPSite
# Dispose of the Site
$SPSite.Dispose()
# Results can be exported to a CSV or manipulated
$results
Muudatuste ajalugu
Järgmises tabelis on kokkuvõte selle teema olulisematest muudatustest.
Kuupäev |
Kirjeldus |
---|---|
22. november 2022 |
Lisati jaotisse "Põhjus" märkus ja värskendati jaotist "Ajutine lahendus" PowerShelli skriptiga töövoo XOML-failide skannimiseks. |