Я подключаюсь к удаленной машине через C# библиотеки Powershell и хочу получить переменные окружения с этой машины через код C#. При поиске в других потоках переполнения стека я подумал, что будет работать что-то вроде следующего:
using (var psShell = PowerShell.Create())
{
using (var remoteRunspace = RunspaceFactory.CreateRunspace(CreateSession()))
{
remoteRunspace.Open();
psShell.Runspace = remoteRunspace;
string userProfilePath = remoteRunspace.SessionStateProxy.PSVariable.GetValue("env:USERPROFILE").ToString();
}
}
Однако это не работает. Я получаю исключение Specified method is not supported
... Продолжая сверление, я вижу, что SessionStateProxy
имеет свойства, которые не инициированы из-за PSNotSupportedException
:
Глядя на код powershell, это тоже имеет смысл: https://github.com/PowerShell/PowerShell/blob/b1e998046e12ebe5da9dee479f20d479aa2256d7/src/System.Management.Automation/engine/remoting/client/remoterunspace.cs#L3310
Итак, как мне получить значение переменной среды с помощью C# удаленного кода powershell, БЕЗ простого запуска удаленный сценарий для вывода значения или что-то (что я не хочу делать, поскольку это не правильно)?