Встроенный файл сценария PowerShell на удаленном сервере с помощью ac # - PullRequest
0 голосов
/ 08 марта 2019

Здравствуйте, я пытаюсь выполнить встроенный файл сценария powershell на удаленном сервере, используя метод c #.

Мой файл powershell содержит следующее:

param(
[System.Management.Automation.PSCredential]$Credential           
)

try {
    Write-Host 'Do Some work here'

}
catch{
    Write-Host  $_.Exception.Message
}

**My calling code is as follows** 

private void InvokeScript(string computerName)
{
    const string shellUri = "http://schemas.microsoft.com/powershell/Microsoft.PowerShell";
    var netCreds = new PSCredential(@"XXX", ConvertToSecureString("XXX"));

    var connectionInfo = new WSManConnectionInfo(false, computerName, 5985, "/wsman", shellUri, netCreds);
    using (var runspace = RunspaceFactory.CreateRunspace(connectionInfo))
    {
        var credentials = new PSCredential(@"XXX\XXX", ConvertToSecureString("XXX"));
        runspace.Open();

        var pipeline = runspace.CreatePipeline();
        var scriptCommand = new Command(GetScript());

        var commandParmeter = new CommandParameter("$Credential", credentials);
        scriptCommand.Parameters.Add(commandParmeter);
        pipeline.Commands.Add(scriptCommand);
        var results = pipeline.Invoke();
    }
}

private static string GetScript()
{
    var assembly = Assembly.GetExecutingAssembly();
    var resourceName = "TestProject.Scripts.RemoteShell.ps1";

    using (var stream = assembly.GetManifestResourceStream(resourceName))
    using (var reader = new StreamReader(stream))
    {
        var script = reader.ReadToEnd();
        return script;
    }
}

private static SecureString ConvertToSecureString(string password)
{
    var securePassword = new SecureString();

    foreach (var c in password)
    {
        securePassword.AppendChar(c);
    }

    securePassword.MakeReadOnly();
    return securePassword;
}

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

System.Management.Automation.RemoteException HResult = 0x80131501
Сообщение = термин «парам ( [System.Management.Automation.PSCredential] $ Credential)

try {Write-Host 'Добавление компьютера в домен' } catch {Write-Host $ _. Exception.Message}

'не распознается как имя командлета, функции, файла сценария или работоспособная программа. Проверьте правильность написания имени, или если путь был включите, проверьте правильность пути и повторите попытку.
Источник = System.Management.Automation

...