<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://dotnet.lv/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Ivara blogs : PowerShell</title><link>http://dotnet.lv/blogs/ia/archive/tags/PowerShell/default.aspx</link><description>Tagi: PowerShell</description><dc:language /><generator>CommunityServer 2008 SP1 (Build: 30619.63)</generator><item><title>Konfigurācijas failu labošana ar PowerShell</title><link>http://dotnet.lv/blogs/ia/archive/2011/10/06/konfigur-cijas-failu-labo-ana-ar-powershell.aspx</link><pubDate>Thu, 06 Oct 2011 09:23:55 GMT</pubDate><guid isPermaLink="false">245d81fd-b543-41d7-a051-d8603c6e9e31:232501</guid><dc:creator>ivars.arins</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.lv/blogs/ia/rsscomments.aspx?PostID=232501</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.lv/blogs/ia/commentapi.aspx?PostID=232501</wfw:comment><comments>http://dotnet.lv/blogs/ia/archive/2011/10/06/konfigur-cijas-failu-labo-ana-ar-powershell.aspx#comments</comments><description>&lt;p&gt;Pāris dienas atpakaļ, automatizējot dažādus sīkumus, radās vajadzība pamainīt web.config failu no skripta. Konkrētāk, vajadzēja pamainīt datubāzes konfigurāciju, kura glabājas atsevišķā konfigurācijas sekcijā.&lt;/p&gt;  &lt;p&gt;Atbilstošais web.config fragments ir apmēram šāds:&lt;/p&gt;  &lt;div class="le-cah-container"&gt;   &lt;div style="background:#ddd;max-height:350px;overflow:auto;"&gt;     &lt;ol style="padding-bottom:0px;margin:0px 0px 0px 20px;padding-left:0px;padding-right:0px;white-space:nowrap;background:#10100d;padding-top:0px;"&gt;       &lt;li&gt;&lt;font face="Times New Roman"&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;&lt;font style="font-size:12pt;"&gt;&amp;lt;?&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#d6d694"&gt;xml&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a1b070"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#009b00"&gt;version&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#c3c567"&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#44b1e3"&gt;1.0&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#c3c567"&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a1b070"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#009b00"&gt;encoding&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#c3c567"&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#44b1e3"&gt;utf-8&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#c3c567"&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:12pt;" color="#a1b070"&gt;?&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt; &lt;/li&gt;        &lt;li&gt;&lt;font face="Times New Roman"&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;&lt;font style="font-size:12pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#d6d694"&gt;configuration&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:12pt;" color="#a1b070"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt; &lt;/li&gt;        &lt;li&gt;&lt;font face="Times New Roman"&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;&lt;font style="font-size:12pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#d6d694"&gt;connections&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:12pt;" color="#a1b070"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt; &lt;/li&gt;        &lt;li&gt;&lt;font face="Times New Roman"&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;&lt;font style="font-size:12pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#d6d694"&gt;Main&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a1b070"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#009b00"&gt;server&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#c3c567"&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#44b1e3"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:12pt;" color="#c3c567"&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt; &lt;/li&gt;        &lt;li&gt;&lt;font face="Times New Roman"&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;&lt;font style="font-size:12pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#009b00"&gt;database&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#c3c567"&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#44b1e3"&gt;Main&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:12pt;" color="#c3c567"&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt; &lt;/li&gt;        &lt;li&gt;&lt;font face="Times New Roman"&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;&lt;font style="font-size:12pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#009b00"&gt;user&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#c3c567"&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#44b1e3"&gt;MainSite&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:12pt;" color="#c3c567"&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt; &lt;/li&gt;        &lt;li&gt;&lt;font face="Times New Roman"&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;&lt;font style="font-size:12pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#009b00"&gt;password&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#c3c567"&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#44b1e3"&gt;BEwTIDU&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#c3c567"&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:12pt;" color="#a1b070"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt; &lt;/li&gt;        &lt;li&gt;&lt;font face="Times New Roman"&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;&lt;font style="font-size:12pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#d6d694"&gt;Main&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:12pt;" color="#a1b070"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt; &lt;/li&gt;        &lt;li&gt;&lt;font face="Times New Roman"&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;&lt;font style="font-size:12pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#d6d694"&gt;Log&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a1b070"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#009b00"&gt;server&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#c3c567"&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#44b1e3"&gt;.&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:12pt;" color="#c3c567"&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt; &lt;/li&gt;        &lt;li&gt;&lt;font face="Times New Roman"&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;&lt;font style="font-size:12pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#009b00"&gt;database&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#c3c567"&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#44b1e3"&gt;Log&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:12pt;" color="#c3c567"&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt; &lt;/li&gt;        &lt;li&gt;&lt;font face="Times New Roman"&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;&lt;font style="font-size:12pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#009b00"&gt;user&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#c3c567"&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#44b1e3"&gt;AuditWriter&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:12pt;" color="#c3c567"&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt; &lt;/li&gt;        &lt;li&gt;&lt;font face="Times New Roman"&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;&lt;font style="font-size:12pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#009b00"&gt;password&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#c3c567"&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#44b1e3"&gt;TIDUaEAL1&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#c3c567"&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:12pt;" color="#a1b070"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt; &lt;/li&gt;        &lt;li&gt;&lt;font face="Times New Roman"&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;&lt;font style="font-size:12pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#d6d694"&gt;Log&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:12pt;" color="#a1b070"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt; &lt;/li&gt;        &lt;li&gt;&lt;font face="Times New Roman"&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;&lt;font style="font-size:12pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#d6d694"&gt;connections&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:12pt;" color="#a1b070"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt; &lt;/li&gt;        &lt;li&gt;&lt;font face="Times New Roman"&gt;&lt;span&gt;&lt;font color="#a1b070"&gt;&lt;font style="font-size:12pt;"&gt;&amp;lt;/&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#d6d694"&gt;configuration&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:12pt;" color="#a1b070"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt; &lt;/li&gt;     &lt;/ol&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Sportiskas intereses vadīts, nolēmu, ka šis varētu būt darbs, kuru lieliski varētu paveikt ar PowerShell. Pirmā doma bija to izdarīt ar regulārajām izteiksmēm. Nu, jūs jau ziniet… &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Some people, when confronted with a problem, think &amp;quot;I know, I&amp;#39;ll use regular expressions.&amp;quot; Now they have two problems. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Un tad man ienāca prātā doma, ka web.config taču ir tikai XML fails, kuru lieliski varētu arī kā tādu apstrādāt. Palaidu uzticamo PowerShell ISE un sāku eksperimentēt (t.i., meklēt internetā piemērus, ko pielāgot).&lt;/p&gt;  &lt;p&gt;Gala rezultātā izrādījās, ka viss ģeniālais ir vienkāršs un recepte konfigurācijas faila labošanai ir pavisam vienkārša:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Izveido &lt;a href="http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.aspx"&gt;XmlDocument&lt;/a&gt; instanci &lt;/li&gt;    &lt;li&gt;Ielasa failu &lt;/li&gt;    &lt;li&gt;Izmaina atbilstošā elementa vērtību &lt;/li&gt;    &lt;li&gt;Saglabā &lt;a href="http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.aspx"&gt;XmlDocument&lt;/a&gt; failā &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Ja to uzraksta kā skriptu:&lt;/p&gt;  &lt;div class="le-cah-container"&gt;   &lt;div style="background:#ddd;max-height:300px;overflow:auto;"&gt;     &lt;ol style="padding-bottom:0px;margin:0px 0px 0px 20px;padding-left:0px;padding-right:0px;white-space:nowrap;background:#10100d;padding-top:0px;"&gt;       &lt;li&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:12pt;" color="#a79a86"&gt;param([string]$webConfig = &amp;#39;&amp;#39;, [string]$server = &amp;#39;.\sql2008&amp;#39; )&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; &lt;/li&gt;        &lt;li&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:12pt;" color="#a79a86"&gt;$xml = New-Object System.Xml.XmlDocument&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; &lt;/li&gt;        &lt;li&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:12pt;" color="#a79a86"&gt;$xml.Load($webConfig)&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; &lt;/li&gt;        &lt;li&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:12pt;" color="#a79a86"&gt;$doc = $xml.get_DocumentElement();&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; &lt;/li&gt;        &lt;li&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:12pt;" color="#a79a86"&gt;$doc.connections.Main.server = $server&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; &lt;/li&gt;        &lt;li&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:12pt;" color="#a79a86"&gt;$doc.connections.Log.server = $server&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; &lt;/li&gt;        &lt;li&gt;&lt;span&gt;&lt;font face="Times New Roman"&gt;&lt;font style="font-size:12pt;" color="#a79a86"&gt;$xml.Save($webConfig)&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; &lt;/li&gt;     &lt;/ol&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Visvairāk man šajā pieejā patīk tas, ka līdz atbilstošajam elementam var nokļūt izmantojot “strongly typed” sintaksi, kā tas ir redzams skripta 5. un 6. rindā.&lt;/p&gt;  &lt;p&gt;Veiksmīgu skriptēšanu!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=232501" width="1" height="1"&gt;</description><category domain="http://dotnet.lv/blogs/ia/archive/tags/code/default.aspx">code</category><category domain="http://dotnet.lv/blogs/ia/archive/tags/PowerShell/default.aspx">PowerShell</category></item></channel></rss>