Visual Studio - 程序包管理器控制台 - 以编程方式运行命令

时间:2012-08-23 15:29:00

标签: .net visual-studio-2010 powershell package-managers

好,

每次我更新生产网站时,我都需要运行5个命令,这些命令只是名称不同。

我想自动化这个(将来,我可能需要100次运行这些命令)。

我的工作是:

Update-Database -ConfigurationTypeName "SlaveConfiguration" -StartupProjectName "FacturatieMVCv2.Data" -Verbose -ConnectionString "Server=PC-1\SQLEXPRESS;Persist Security Info=True;Initial Catalog=Database1;uid=prog;password=ndp103@50;" -ConnectionProviderName "System.Data.SqlClient" 
Update-Database -ConfigurationTypeName "SlaveConfiguration" -StartupProjectName "FacturatieMVCv2.Data" -Verbose -ConnectionString "Server=PC-1\SQLEXPRESS;Persist Security Info=True;Initial Catalog=Database2;uid=prog;password=ndp103@50;" -ConnectionProviderName "System.Data.SqlClient" 
Update-Database -ConfigurationTypeName "SlaveConfiguration" -StartupProjectName "FacturatieMVCv2.Data" -Verbose -ConnectionString "Server=PC-1\SQLEXPRESS;Persist Security Info=True;Initial Catalog=Database3;uid=prog;password=ndp103@50;" -ConnectionProviderName "System.Data.SqlClient" 
Update-Database -ConfigurationTypeName "SlaveConfiguration" -StartupProjectName "FacturatieMVCv2.Data" -Verbose -ConnectionString "Server=PC-1\SQLEXPRESS;Persist Security Info=True;Initial Catalog=Database4;uid=prog;password=ndp103@50;" -ConnectionProviderName "System.Data.SqlClient" 
Update-Database -ConfigurationTypeName "SlaveConfiguration" -StartupProjectName "FacturatieMVCv2.Data" -Verbose -ConnectionString "Server=PC-1\SQLEXPRESS;Persist Security Info=True;Initial Catalog=Database5;uid=prog;password=ndp103@50;" -ConnectionProviderName "System.Data.SqlClient" 

我怎么能写i脚本,所以,当我输入控制台管理器时:

Update-Database -type Production -version latest

它运行上面的所有命令,没有任何干扰。 (所有连接字符串都位于.XML文件中,如:

 <databases>
    <type>Production
        <database>Database1</database>
        <database>Database2</database>
        <database>Database3</database>
        <database>Database4</database>
        <database>Database5</database>
    </type>
 </databases>

希望任何人都可以提供帮助:)

友好的问候, Nico Sap

2 个答案:

答案 0 :(得分:7)

如果我正确理解您的问题,您只需询问如何在包管理器控制台中编写和执行powershell脚本。

1)使用记事本在当前目录中创建一个新脚本:

notepad newScript.ps1

2)将命令粘贴到记事本中

Update-Database...
Update-Datebase...
Update-Database...

3)保存记事本文件

4)通过在包管理器控制台中输入以下内容来执行记事本文件:

.\newScript.ps1

请注意,使用powershell函数和参数超出了本答案的范围。

答案 1 :(得分:3)

我对包管理器控制台本身一无所知,但如果目标是从XML中读取一堆数据库名称,将它们弹出到连接字符串中,并将它们传递给cmdlet,下面应该让你去:

$config = [xml](gc c:\path\to\config.xml)
$dbNames= $config.Databases.Type.Database

$dbNames|%{
  $connStr = "Server=PC-1\SQLEXPRESS;Persist Security Info=True;Initial Catalog=$_;uid=prog;password=ndp103@50;"
  Update-Database -ConfigurationTypeName "SlaveConfiguration" -StartupProjectName "FacturatieMVCv2.Data" -Verbose -ConnectionString $connStr -ConnectionProviderName "System.Data.SqlClient"
}