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