Термин не распознается как командлет, функция, исполняемая программа или файл сценария

Я пытаюсь выполнить команды powershell на удаленной машине, используя следующий код:

        string shellUri = "http://schemas.microsoft.com/powershell/Microsoft.PowerShell";
        PSCredential remoteCredential = new PSCredential("User", StringToSecureString("password"));

        WSManConnectionInfo connectionInfo = new WSManConnectionInfo(
            false, "ipaddress", 5985, "/wsman", shellUri, remoteCredential, 1 * 60 * 1000);

        Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo);
        runspace.Open();

        using (PowerShell ps = PowerShell.Create())
        {
            ps.Runspace = runspace;
            ps.AddCommand("get-process");

            Collection<PSObject> res = ps.Invoke();
        }

Список методов StringToSecureString:

    private SecureString StringToSecureString(string str)
    {
        SecureString secureStr = new SecureString();

        foreach(char c in str)
        {
            secureStr.AppendChar(c);
        }

        return secureStr;
    }

Я могу успешно выполнить некоторые команды, такие как get-process или get-service.

Но есть некоторые команды (например, $env:username), которые выдают следующую ошибку:

Этот термин не распознается как командлет, функция, исполняемая программа или файл сценария.

Но команда $env:username будет успешно выполнена, если я подключусь напрямую с помощью powershell:

Enter-PSSession -ComputerName ipaddress -Credential username

Есть некоторые другие команды, не связанные с переменными среды, которые я тоже не могу выполнить (команда приложения CLI не работает с использованием кода или powershell).

Я новичок в powershell и WinRM и понятия не имею, что не так. Кто-нибудь знает причину?


person Vladyslav Tyshchenko    schedule 05.07.2021    source источник
comment
$env:username не является командой. Используйте AddScript() вместо AddCommand()   -  person Mathias R. Jessen    schedule 05.07.2021
comment
@MathiasR.Jessen, большое спасибо! Именно то, что я искал.   -  person Vladyslav Tyshchenko    schedule 05.07.2021
comment
Связанный пост не является точной копией, но объясняет, когда вам нужно .AddScript() против .AddCommand() в PowerShell SDK.   -  person mklement0    schedule 05.07.2021