Использовал:
private string RunScript(string storeNumber)
{
//string importSQL = "Import-Module sqlserver -DisableNameChecking";
//string executionPolicy = "Set-ExecutionPolicy -ExecutionPolicy Unrestricted";
//string script = "ping databaseName";
//string script = "sqlcmd - h - 1 - Q \"set nocount on;SELECT System_Date FROM Location_Codes\" - d pos - S databaseName | out-string";
string script = "invoke-sqlcmd -Query \"use pos set nocount on; SELCECT System_date FROM location_codes\" -serverinstance databaseName| out-string";
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
Pipeline pipeline = runspace.CreatePipeline();
//pipeline.Commands.AddScript(importSQL);
//pipeline.Commands.AddScript(executionPolicy);
pipeline.Commands.AddScript(script);
Collection<PSObject> results = pipeline.Invoke();
runspace.Close();
StringBuilder stringBuilder = new StringBuilder();
foreach(PSObject obj in results)
{
stringBuilder.AppendLine(obj.ToString());
}
MessageBox.Show(stringBuilder.ToString());
return stringBuilder.ToString();
}
При попытке sqlcmd я не получаю ошибок, но ничего не возвращается (хотя ввод команды непосредственно в powershell дает мне нужные мне данные)
При попытке invoke-sqlcmd я получаю исключение CmdletInvocationException. Для этой ошибки я добавил
<startup useLegacyV2RunttimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
Added the ping command as a test. That does return back data. Any help would be appreciated!