Powershell脚本不能完全从C#应用程序执行

时间:2018-10-15 20:11:12

标签: c# powershell csv console

所以我试图从C#运行Powershell脚本

        string text = System.IO.File.ReadAllText(@"C:\Users\nameofuser\Desktop\script.ps1");

        using (PowerShell PowerShellInstance = PowerShell.Create())
        {
            PowerShellInstance.AddScript(text);

            PowerShellInstance.Invoke();
            if (PowerShellInstance.Streams.Error.Count > 0)
            {
                Console.Write("Error");
            }
            Console.ReadKey();

这是脚本文件

$username = "xxx"
$password = "xxx"
$server = "xxx"
$database = "xxx"
$currentuser = "xxx"
$homepath = "C:\Users\$currentuser\Desktop"

mkdir "$homepath\csvs"
mkdir "$homepath\csvs\$database"
$AttachmentPath = "$homepath\csvs\$database\name.csv"
$QueryFmt = "SELECT * FROM TEST"
Invoke-Sqlcmd -User $username -Password $password -ServerInstance $server - 
Database $database -Query $QueryFmt | Export-CSV $AttachmentPath

但是,该脚本仅运行到mkdir“ $ homepath \ csvs \ $ database”行,然后停止工作。换句话说,脚本内部的查询未执行。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

尝试添加

Import-Module Sqlps

在powershell脚本的开头,看看是否是因为您的c#上下文在运行时未加载sql模块。

答案 1 :(得分:1)

您可能需要启用PowerShell脚本才能在计算机上执行。您的C#正在运行,但是默认情况下,Windows不允许PowerShell执行。

使用“以管理员身份运行”选项启动Windows PowerShell。只有计算机上Administrators组的成员才能更改执行策略。

通过输入以下命令启用运行未签名的脚本:     设置执行策略远程签名

这将允许运行您在本地计算机上编写的未签名脚本和来自Internet的已签名脚本。