从C#wpf执行PowerShell脚本

从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

我有一个PowerShell脚本,它在PowerShell脚本中执行SQL文件(其中包含用于将数据从XML文件导出到SQL Server数据库表的命令):

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
标志或类似标志),因此让方法通过解析输入进行“猜测”,这似乎很糟糕。