Здравствуйте, я пытаюсь выполнить встроенный файл сценария 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