![](/img/trans.png)
[英]Executing PowerShell Script with Invoke-SqlCmd cmdlet from C#
[英]Running sqlcmd or invoke-sqlcmd in powershell script in c#
正在使用:
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命令作為測試。 那確實返回了數據。 任何幫助,將不勝感激!
這可能對您有所幫助
字符串腳本=“ invoke-sqlcmd -Query \\”使用pos設置nocount; SELCECT System_date FROM location_codes \\“ -serverinstance databaseName | out-string”;
至
字符串腳本= @“ invoke-sqlcmd-查詢'使用pos設置nocount進行定位。System_date FROM location_codes'-serverinstance databaseName | out-string”;
我使用單個冒號的原因是,For Powershell''用於表示字符串,而我不認為Powershell識別';' 用於sql分隔符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.