所以我试图从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”行,然后停止工作。换句话说,脚本内部的查询未执行。
任何帮助将不胜感激!
答案 0 :(得分:1)
尝试添加
Import-Module Sqlps
在powershell脚本的开头,看看是否是因为您的c#上下文在运行时未加载sql模块。
答案 1 :(得分:1)
您可能需要启用PowerShell脚本才能在计算机上执行。您的C#正在运行,但是默认情况下,Windows不允许PowerShell执行。
使用“以管理员身份运行”选项启动Windows PowerShell。只有计算机上Administrators组的成员才能更改执行策略。
通过输入以下命令启用运行未签名的脚本: 设置执行策略远程签名
这将允许运行您在本地计算机上编写的未签名脚本和来自Internet的已签名脚本。