Sto tentando di eseguire un cmdlet invoke-command utilizzando C# ma non riesco a capire la sintassi corretta. Voglio solo eseguire questo semplice comando:Richiama il comando powershell remoto da C#
invoke-command -ComputerName mycomp.mylab.com -ScriptBlock {"get-childitem C:\windows"}
Nel codice C#, ho fatto quanto segue:
InitialSessionState initial = InitialSessionState.CreateDefault();
Runspace runspace = RunspaceFactory.CreateRunspace(initial);
runspace.Open();
PowerShell ps = PowerShell.Create();
ps.Runspace = runspace;
ps.AddCommand("invoke-command");
ps.AddParameter("ComputerName", "mycomp.mylab.com");
ps.AddParameter("ScriptBlock", "get-childitem C:\\windows");
foreach (PSObject obj in ps.Invoke())
{
// Do Something
}
Quando eseguo questo, ottengo un'eccezione:
Cannot bind parameter 'ScriptBlock'. Cannot convert the "get-childitem C:\windows" value of type "System.String" to type "System.Management.Automation.ScriptBlock".
Sto indovinando che ho bisogno di usare il tipo ScriptBlock qui da qualche parte, ma non so come. Questo è solo un semplice esempio per iniziare, il caso di utilizzo reale implicherebbe l'esecuzione di un blocco di script più grande con più comandi al suo interno, quindi qualsiasi aiuto su come farlo sarebbe molto apprezzato.
Grazie
ah bello, mi salva da fare un oggetto filtro esplicito, grazie – NullPointer