Сохранение пользовательских переменных $ для доступа к различным сеансам PS - PullRequest
0 голосов
/ 25 февраля 2019

Таким образом, я все еще довольно новичок в powershell, поэтому извиняюсь, если пропустил что-то очевидное.

У меня есть пара команд сценариев, которые я регулярно выполняю, чтобы выполнять связанные с AD вещи нанаши RDS серверы.Имеется 3 сервера, и пользователь может быть добавлен на любой из них при входе в систему. Многие команды, которые я хочу сделать, не работают, если вы укажете неправильный компьютер и проверяете, на каком из них находится пользовательЭто боль.

Я хочу сделать переменную $ RDS_Servers, которая сохраняется между сеансами PS и перезагрузками, чтобы мне не приходилось каждый раз печатать ее и выполнять работу.Я хочу, чтобы это была переменная $ специально для универсальности.Я выяснил, как сохранить его как скрипт, чтобы он мог вызываться через RDS_Servers.ps1, но это неуклюже и сложно вставить в скрипт, написанный на лету, в отличие от красивой переменной $.

Пока я выполнил следующее:

$ RDS_Servers = Get-ADComputer -Filter * -SearchBase "OU = 2016 RDS, OU = Удаленный рабочий стол, OU = Серверы, OU= Компьютеры, OU = XXX, DC = XXX, DC = XXX, DC = XXX "

Возвращает список всех объектов в подразделении RDS-сервера, что мне и нужно.Переменная, которая содержит объекты, которые могут быть вызваны по требованию.Он присваивается $ RDS_Servers и может быть выгружен в сценарий, например, для поиска объекта AD пользователя через что-то вроде Get-ADuser -computer $ RDS_Server -user UserX, так что он может найти их без необходимости искать, на каком сервере они работают.

Проблема здесь в том, что, хотя это работает нормально и прекрасно для каждой сессии, я хочу как-то сохранить $ RDS_Servers как переменную «по умолчанию», которая сохраняется между сеансами,так что если я хочу выполнить какую-то работу в PS для пользователя AD, я могу просто каждый раз вставлять $ RDS_Servers вместо необходимости указывать переменную в каждом сеансе.

tl; dr не знает, как сохранять переменные междусеансы, пожалуйста, halp: o

/ подробный

1 Ответ

0 голосов
/ 25 февраля 2019

Переменные имеют область действия, и они доступны только в определенной области.Это задокументировано во встроенных файлах справки здесь:

About_Scopes

Get-Help -Name about_Scopes

После закрытия сеанса все ресурсы исчезают.

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

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

About_Profiles

Get-Help -Name about_Profiles

Профиль - это просто еще один .ps1 файл, который находится в папке профиля текущего пользователя.Все данные в профиле загружаются при каждом запуске PowerShell.Независимо от того, что вы будете делать после загрузки PowerShell.

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