function Get-SystemWebSettingsInventory { <# .SYNOPSIS Returns an OrderedDictionary that Represents the System Web Settings Inventory. #> [CmdletBinding()] Param() $logLead = (Get-LogLeadName); $providerStopWatch = [System.Diagnostics.StopWatch]::StartNew() $systemWebSettingsDetails = @{ httpRuntime = @{}; processModel = @{} machineKey = @{}; } $desiredSystemWebNodes = @{ "httpRuntime" = @{"minFreeThreads" = 0; "minLocalRequestFreeThreads" = 0}; "processModel" = @{"autoConfig" = ""; "maxWorkerThreads" = 0; "maxIoThreads" = 0; "minWorkerThreads" = 0; "minIoThreads" = 0}; "machineKey" = @{"validationKey" = ""; "decryptionKey" = ""; "decryption" = ""}; } $systemWebSettingsDictionary = New-Object System.Collections.Specialized.OrderedDictionary Write-Verbose "$logLead : [$($providerStopWatch.Elapsed)] : Getting Machine Config Data" [xml]$machineConfigRaw = Read-MachineConfig Write-Verbose "$logLead : [$($providerStopWatch.Elapsed)] : Machine Config Data Retrieved" try { foreach ($nodeKey in $desiredSystemWebNodes.keys) { $tempXmlNode = ([xml]$machineConfigRaw).SelectNodes("//system.web/$nodeKey") foreach ($keyname in $desiredSystemWebNodes.$nodeKey.keys) { $systemWebSettingsDetails.$nodeKey[$keyname] = $tempXmlNode.$keyname } } } catch { $systemWebSettingsDetails["Error"] = $_.Exception.ToString() } $systemWebSettingsDictionary.Add("systemWebSettings", $systemWebSettingsDetails) Write-Verbose "$logLead : [$($providerStopWatch.Elapsed)] : Provider Complete" $providerStopWatch.Stop() return $systemWebSettingsDictionary }