一直在使用:
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"/>
添加了 ping 命令作为测试。那确实返回数据。任何帮助,将不胜感激!