PowerShell: ADMX Auslesen, Semikolon als Trennzeichen

  • PowerShell

    PowerShell: ADMX Auslesen, Semikolon als Trennzeichen

    Hallo!

    Wie kann man folgenden Code so umschreiben dass das Semikolon als Trennzeichen verwendet wird anstatt das standardmäßige Komma? Und vielleicht kann jemand den Code so erweitern dass alles aus den ADMX-Files ausgelesen wird, derzeit "fehlen" ja noch ein paar Dinge. (Der Autor hat gerade "keine Zeit" zum Anpassn. Der Code ist aber Freeware). Danke!

    SQL-Abfrage

    1. $language = "de-DE"
    2. $root = "C:\Windows\PolicyDefinitions"
    3. $output = @()
    4. $admx_files = Get-ChildItem $root -Filter "*.admx"
    5. foreach ($admx in $admx_files) {
    6. $admx_file = Split-Path $admx -Leaf
    7. $adml = "C:\Windows\PolicyDefinitions\$($language)\$($admx_file.TrimEnd('x'))l"
    8. if (Test-Path $adml) {
    9. $admx_data = [xml](Get-Content $admx.FullName)
    10. $adml_data = [xml](Get-Content $adml -Encoding UTF8)
    11. $adml_strings = $adml_data.policyDefinitionResources.resources.stringTable.GetEnumerator()
    12. $policies = $admx_data.policyDefinitions.policies
    13. foreach ($pol in $policies.policy) {
    14. $dn_string = $pol.displayName.Substring(9, ($pol.displayName.Length - 10))
    15. $et_string = $pol.explainText.Substring(9, ($pol.explainText.Length - 10))
    16. $policy_name = ($adml_strings.Where({$_.id -eq $dn_string})).'#text'
    17. $adml_strings.Reset()
    18. $policy_desc = ($adml_strings.Where({$_.id -eq $et_string})).'#text'
    19. $adml_strings.Reset()
    20. if ($pol.elements.HasChildNodes) {
    21. $els = $pol.elements.GetEnumerator()
    22. foreach ($el in $els) {
    23. $reg_value = "$($pol.Key)\$($el.valueName)"
    24. $reg_type = ""
    25. switch ($el.Name) {
    26. 'boolean' { $reg_type = 'REG_DWORD (1)' }
    27. 'decimal' { $reg_type = 'REG_DWORD' }
    28. 'text' {
    29. if ($el.expandable) {
    30. $reg_type = 'REG_EXPAND_SZ'
    31. } else {
    32. $reg_type = 'REG_SZ'
    33. }
    34. }
    35. 'enum' {
    36. $ex = $el.FirstChild.FirstChild.FirstChild.Name
    37. switch ($ex) {
    38. 'decimal' { $reg_type = 'REG_DWORD' }
    39. 'text' {
    40. if ($el.expandable) {
    41. $reg_type = 'REG_EXPAND_SZ'
    42. } else {
    43. $reg_type = 'REG_SZ'
    44. }
    45. }
    46. }
    47. }
    48. 'list' {
    49. $reg_type = 'REG_SZ (list)'
    50. $reg_value = $el.Key
    51. }
    52. default {
    53. Write-Host $el.Name -ForegroundColor Cyan
    54. $reg_type = $el.Name
    55. $reg_value = $el.Key
    56. }
    57. }
    58. $out_item = New-Object PSObject -Property @{'RegPath' = $reg_value; 'RegType' = $reg_type; 'PolicyTitle' = $policy_name; 'PolicyDescription' = $policy_desc; 'ADMXFile' = $admx_file}
    59. $output += $out_item
    60. }
    61. } else {
    62. $reg_value = "$($pol.Key)\$($pol.valueName)"
    63. $reg_type = 'REG_DWORD (1)'
    64. $out_item = New-Object PSObject -Property @{'RegPath' = $reg_value; 'RegType' = $reg_type; 'PolicyTitle' = $policy_name; 'PolicyDescription' = $policy_desc; 'ADMXFile' = $admx_file }
    65. $output += $out_item
    66. }
    67. }
    68. } else {
    69. Write-Host "ADML in $language not found: $adml" -ForegroundColor Yellow
    70. }
    71. }
    72. $output | Export-CSV c:\temp\admx.csv -Encoding UTF8

    Quelle: it-pro-berlin.de/2017/06/power…r-versuch-admx-zu-parsen/