Symptom
URL och Målvärddatorns namn kolumner i web proxy loggen för Microsoft Forefront Threat Management Gateway 2010 kan visas som oläsbara värden. Det här problemet uppstår när användarna komma åt webbplatser med ett internationellt domännamn (IDN) och poster i loggen hämtas från disken. Obs! IDN är domännamn som kan innehålla Unicode-tecken och nås via Punycode skrivfel. Threat Management Gateway konverterar Punycode namn till Unicode-representationen när poster i loggen visas i vyn loggning i snapin-modulen Forefront TMG hantering av Microsoft Management Console (MMC). Men när poster i loggen hämtas från disken, ersätts icke-ASCII-tecken i Unicode-strängen med ett frågetecken (?) som vi förklarar i avsnittet ”orsak”.
Orsak
Det här problemet uppstår eftersom kolumnerna i Threat Management Gateway loggning sparas i ASCII-format, och när loggposter skrivs till disk, värdena i URL och Målvärddatorns namn kolumner konverteras från Unicode till ASCII. Detta medför ett ASCII-värde i värde som ska ersättas med ett frågetecken (?).
Lösning
Lös det här problemet installerar samlad 4 för Forefront Threat Management Gateway 2010 Service Pack 2 och kör skriptet i avsnittet ”Mer Information”.
Status
Microsoft har bekräftat att detta är ett problem i Microsoft-produkterna som nämns i avsnittet ”gäller”.
Mer information
Kopiera och klistra in följande skript i Notepad.exe och sedan spara filen som ”SetPersistLogAsPunycode.vbs”.
'Define the constants needed.Const strVpsGUID = "{143F5698-103B-12D4-FF34-1F34767DEABC}"Const strVpsPropertyName = "PersistLogAsPunycode"Const Error_FileNotFound = &H80070002Set objArgs = wscript.ArgumentsfInvalidParameterValue = Falseif objArgs.Count > 0 then if objArgs(0) = "0" then fPersistLogAsPunycode = False elseif objArgs(0) = "1" then fPersistLogAsPunycode = True else fInvalidParameterValue = True end ifend ifif objArgs.Count <> 1 or fInvalidParameterValue then wscript.echo "Usage: SetPersistLogAsPunycode.vbs <0|1>" wscript.echo wscript.echo "Control how log fields that may contain punycode-encoded parts are" wscript.echo "stored in the persistent log." wscript.echo wscript.echo " 0 - Persist the applicable log fields as ASCII (the default behavior)" wscript.echo " 1 - Persist the applicable log fields as Punycode" wscript.Quit 2end ifset objLogging = CreateObject("FPC.Root").GetContainingArray().LoggingSet objVPSet = OpenVPSet(objLogging, strVpsGUID)objVPSet.Value(strVpsPropertyName) = fPersistLogAsPunycodeobjLogging.Savefunction OpenVPSet(objParent, strVpsGUID) Set objVPSets = objParent.VendorParametersSets On Error Resume Next Set OpenVPSet = objVPSets.Item(strVpsGUID) ' Save the Err properties in case it needs to be re-raised errNumber = Err.Number errSource = Err.Source errDescription = Err.Description errHelpFile = Err.HelpFile errHelpContext = Err.HelpContext On Error GoTo 0 if errNumber = Error_FileNotFound Then Set OpenVPSet = objVPSets.Add(strVpsGUID) Elseif errNumber < 0 Then ' An error other than "file not found" occured -- re-raise the error, ' this time not under "On Error Resume Next" Err.Raise errNumber, errSource, errDescription, errHelpFile, errHelpContext End Ifend function
Aktivera Threat Management Gateway till beständiga loggposter som Punycode värden genom att köra följande kommando:
cscript.exe SetPersistLogAsPunycode.vbs 1Om du vill återställa Threat Management Gateway till dess standardbeteendet för fält som ASCII-tecken, kör du följande kommando:
cscript.exe SetPersistLogAsPunycode.vbs 0
Referenser
Se den terminologin som Microsoft använder för att beskriva programuppdateringar.