从C#wpf执行PowerShell脚本
我有一个PowerShell脚本,它在PowerShell脚本中执行SQL文件(其中包含用于将数据从XML文件导出到SQL Server数据库表的命令):从C#wpf执行PowerShell脚本,c#,sql-server,wpf,powershell,C#,Sql Server,Wpf,Powershell,我有一个PowerShell脚本,它在PowerShell脚本中执行SQL文件(其中包含用于将数据从XML文件导出到SQL Server数据库表的命令): Function Export-Data { $srvrInst = $env:COMPUTERNAME; $db = "DataModel.PAModel"; $apc = "C:\DCT\SQL\AccountingPeriodCases.sql"; Invoke-Sqlcmd -InputFile $ap
Function Export-Data
{
$srvrInst = $env:COMPUTERNAME;
$db = "DataModel.PAModel";
$apc = "C:\DCT\SQL\AccountingPeriodCases.sql";
Invoke-Sqlcmd -InputFile $apc -ServerInstance $srvrInst -Database $db;
}
Export-Data;
我需要从WPF-C#代码调用这个Smpl.ps1文件。
也就是说,当选中与数据导出对应的复选框时,应该调用并执行此Smpl.ps1
我有一个C代码片段:
int DataBox_Execute()
{
Runspace rs = RunspaceFactory.CreateRunspace();
rs.ThreadOptions = PSThreadOptions.UseCurrentThread;
rs.Open();
int k = 0;
PowerShell ps = PowerShell.Create();
if (DataBox.IsChecked ?? true)
{
ps.Runspace = rs;
ps.AddScript(@"C:\DCT\LogCapture\Smpl.ps1").Invoke();
k = 1;
}
rs.Close();
return k;
}
但我不明白为什么它没有被执行。当我返回并检入SQL server数据库时,应该包含数据的表一直是空的
我确信该脚本工作正常,因为当我尝试仅通过PowerShell执行脚本时,SQL数据库表中会出现我希望它工作的xml文件中导出的值
所以我想知道WPF-C中的程序部分是否有任何问题。
有人能帮帮忙吗 阅读评论并检查:
检查AddScript路径是否包含布尔值。希望您传递脚本的实际内容,而不仅仅是磁盘上文件的路径。因此,是否有其他方法可以传递脚本文件@boxdog您可以尝试使用
Get Content
读取脚本,并将其传递。@boxdog:根据这一点:AddScript需要脚本的路径。@Palldue,我不相信文档是准确的。例如,我刚刚意识到我最初链接到的页面上有使用AddScript
的示例,但实际上没有使用该方法!有一件事我100%确信,传递一段可执行代码确实有效,因为我已经多次使用这种技术。它可以接受路径或代码片段,但它不允许用户明确说出他们使用了哪一个(例如,使用IsScriptPath
标志或类似标志),因此让方法通过解析输入进行“猜测”,这似乎很糟糕。