Как импортировать хеш-таблицу в powershell для соответствия существующему формату - PullRequest
0 голосов
/ 02 мая 2018

TLDR: Как мне импортировать эту хеш-таблицу для использования в приведенном ниже коде?

Я работаю над созданием написанного мной модульного сценария, чтобы я мог быстро менять переменные. В настоящее время скрипт ссылается на:

$MenuGroups = @{
    "1. Internet & Network tools" = "Microsoft Edge", "Internet Explorer"
    "2. Microsoft Office" = "Excel 2016","Outlook 2016","PowerPoint 2016","Publisher 2016","Word 2016"
    "3. Text, file & programming tools" = "Calculator","Notepad++"
    "4. Media tools" = "XBOX", "NONE"
    "5. Scientific software" = "Calculator"
    "6. Administrator" = "Control Panel"
    "7. Other tools" = "Search Google", "Store locator"
}

Для использования следующим сегментом кода:

foreach ($MenuGroup in $MenuGroups.Keys | Sort-Object) {
    # Init xml element for software group
    $SoftwareGroupXml = $StartMenuXml.CreateElement("start","Group", "http://schemas.microsoft.com/Start/2014/StartLayout")
    $SoftwareGroupXml.SetAttribute('Name',$MenuGroup.Substring(3))
    # Init row and col
    $col = 0
    $row = 0
    # Looping all software links in start menu
    foreach ($Software in $MenuGroups[$MenuGroup]) {
        # Check if it is time for a new col
        if (($col%($NumCol-1) -eq 1) -and ($col -ne 1)) {
            $row +=2
            $col = 0
        }

Я пытаюсь заменить хеш-таблицу $ MenuGroups файлом, который я могу заменить при необходимости. Я попытался поместить текст в текстовый файл и использовал следующий код: $MenuGroups = Get-content "C:\Menugroups.txt", но мой вывод пуст. Я попробовал это как CSV также, но это все еще пусто. Когда я запускаю get get для файлов CSV и TXT по отдельности, содержимое отображается в powershell. Я знаю, что мне не хватает чего-то маленького. Как мне правильно импортировать это из CSV, TXT или XML, чтобы соответствовать этому коду?

Однако меня немного смущает вопрос, почему я не могу просто использовать '$ MenuGroups = @ (Get-Content -Path C: \ MenuGroups.txt | Out-String) | ConvertFrom-StringData) и почему это не работает. Проблема в том, что я пытаюсь использовать существующий код с тем, что импортирую.

Я попытался экспортировать хеш-таблицу в JSON, а затем использовать ее с командой импорта. Когда я проверяю, есть ли данные, меня приветствуют мои данные, но когда я пытаюсь их использовать, мой сценарий возвращает пустые данные.

Любая помощь приветствуется! Если требуется дополнительная информация, пожалуйста, дайте мне знать, и я немедленно обновлю.

...