Para chamar um arquivo de script PowerShell (example.ps1) de c #
Eu tentei executar um script localwindows.ps1 de c # usando o seguinte código:
PSCredential credential = new PSCredential(userName, securePassword);
WSManConnectionInfo connectionInfo = new WSManConnectionInfo(false, "machineName", 5985, "/wsman", shellUri, credential);
using (Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo))
{
runspace.Open();
String file = "C:\\localwindows.ps1";
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.AddScript(file);
pipeline.Commands.Add("Out-String");
Collection<PSObject> results = pipeline.Invoke();
}
Mas recebendo exceção: 'O termo' C: \ localwindows.ps1 'não é reconhecido como o nome de um cmdlet, função, arquivo de script ou programa operável.
Então eu tentei o seguinte:
PSCredential credential = new PSCredential(userName, securePassword);
WSManConnectionInfo connectionInfo = new WSManConnectionInfo(false, "machineName", 5985, "/wsman", shellUri, credential);
using (Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo))
{
runspace.Open();
using (PowerShell powershell = PowerShell.Create())
{
powershell.Runspace = runspace;
PSCommand new1 = new PSCommand();
String machinename = "machinename";
String file = "C:\\localwindows.ps1";
new1.AddCommand("Invoke-Command");
new1.AddParameter("computername", machinename);
new1.AddParameter("filepath", file);
powershell.Commands = new1;
Console.WriteLine(powershell.Commands.ToString());
Collection<PSObject> results = powershell.Invoke();
}
Estou recebendo o erro: "Não é possível encontrar o caminho 'C: \ localwindows.ps1' porque ele não existe."
Mas usando o comando 'Invoke-Command -ComputerName "machineName" -filepath C: \ localwindows.ps1', a partir do powershell na máquina local criou uma nova conta na máquina remota.
Como chamar o script localwindows.ps1 de c #? Como executar o comando 'Invoke-Command -ComputerName "machineName" -filepath C: \ localwindows.ps1' através de C #?
O script localwindows.ps1 é
$comp = [adsi]“WinNT://machinename,computer”
$user = $comp.Create(“User”, "account3")
$user.SetPassword(“change,password.10")
$user.SetInfo()