2

每次更新生产网站时,我都需要运行 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>
4

2 回答 2

8

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

1)用记事本在当前目录新建脚本:

notepad newScript.ps1

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

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

3) 保存记事本文件

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

.\newScript.ps1

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

于 2012-08-23T16:48:14.127 回答
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"
}
于 2012-08-23T17:26:45.613 回答