Использование хеш-таблицы между несколькими функциями дает мне System.Collections.Hashtable - PullRequest
0 голосов
/ 05 января 2019

Я вызываю скрипт и передаю около 50 аргументов для создания хеш-таблицы. в скрипте у меня есть функция, которую я вызываю для создания хэш-таблицы. в этой функции он вызывает несколько переменных из $env:, которые установлены и основаны на этом. Я анализирую свою хэш-таблицу для конкретного сервера и возвращаю ее в сценарий. Так что сгенерируйте 1 большой многоуровневый хеш, а затем создайте новый $hash из этого на основе информации о сервере с помощью ключей. Затем этот новый $var используется последним в сценариях для вызова других сценариев и другого сценария, передающего этот специфичный для сервера хэш, но вместо полезной информации я получаю System.Collections.Hashtable. В конечном итоге это $hash заканчивается запланированным заданием, но к этому моменту оно просто System.Collections.Hashtable.

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

Вторая проблема заключается в том, что я унаследовал эти сценарии, и они вызываются другим методом, поэтому устранение неполадок и получение журналов было настоящей болью. У меня есть куча вызовов журнала, которые в конечном итоге попадают в файл, и я не уверен, что функциональность журнала также вызывает некоторые проблемы сверху, к тому, что действительно есть в $hash.

Мои сценарии имеют кодовую подпись, есть ли проблема с этим?

Если я вызываю функцию или ps1, могу ли я передать ей $hash? Есть ли что-то особенное, что я должен сделать?

Я просто хочу передать $hash со всей информацией:

foo-dostuff $hash

Начинаю думать, что не могу.

Ответы [ 2 ]

0 голосов
/ 14 января 2019

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

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

Проблема, с которой я столкнулся при попытке передать переменную с данными Hash в это запланированное задание. Я закончил выводом хеша в файл и затем импортировал его снова.

Так что не пытайтесь использовать хэш-таблицу с запланированными задачами.

0 голосов
/ 05 января 2019

Скорее всего, вы приводите / приводите этот хеш-таблицу к строке. Метод tostring () в хеш-таблице, по сути, просто выводит имя типа:

(@{name = 'whatev'}).ToString()

Проверьте, имеет ли один из параметров функции, в котором вы используете хеш-таблицу, тип [string].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...