Private/Get-PassportForWorkData.ps1
|
<#
.SYNOPSIS This function will retrieve Passport for Work related settings from the registry. .DESCRIPTION #************************************************************************************************************ # Disclaimer # # This sample script is not supported under any Microsoft standard support program or service. This sample # script is provided AS IS without warranty of any kind. Microsoft further disclaims all implied warranties # including, without limitation, any implied warranties of merchantability or of fitness for a particular # purpose. The entire risk arising out of the use or performance of this sample script and documentation # remains with you. In no event shall Microsoft, its authors, or anyone else involved in the creation, # production, or delivery of this script be liable for any damages whatsoever (including, without limitation, # damages for loss of business profits, business interruption, loss of business information, or other # pecuniary loss) arising out of the use of or inability to use this sample script or documentation, even # if Microsoft has been advised of the possibility of such damages. # #************************************************************************************************************ #> function Get-PassportForWorkSettings { param ( [string]$ResourceName ) $basePath = "HKLM:\SOFTWARE\Microsoft\Policies\PassportForWork" $passportForWorkSettings = Get-ChildItem $basePath -Recurse -ErrorAction SilentlyContinue $outList = [System.Collections.Generic.List[pscustomobject]]::new() foreach ($setting in $passportForWorkSettings) { $shortPathSplit = ($setting.PSParentPath -split 'SOFTWARE\\Microsoft\\Policies') $shortPath = '{0}\{1}' -f ($shortPathSplit[1] -replace '^\\'), $setting.PSChildName $valueNames = $setting.GetValueNames() foreach($valueName in $valueNames) { $tmpObj = [ordered]@{ Path = '{0}\{1}' -f $shortPath, $valueName Value = $setting.GetValue($valueName) } $outList.Add([PSCustomObject]$tmpObj) } } if($ResourceName) { $resourceNameSplit = $ResourceName -split '\/MSFT\/' $searchString = $resourceNameSplit[1] -replace '/', '\' [array]$returnList = $outList | Where-Object { $_.Path -like "$($searchString)*" } return $returnList } else { return $outList } } |