<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>PowerShell и другие скрипты</title>
	<atom:link href="http://xaegr.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://xaegr.wordpress.com</link>
	<description>Get-Command &#124; Out-Blog</description>
	<pubDate>Thu, 08 May 2008 10:49:06 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
	<language>ru</language>
			<item>
		<title>Запись вебкаста про управление Vista</title>
		<link>http://xaegr.wordpress.com/2008/05/08/vistamanagementrecording/</link>
		<comments>http://xaegr.wordpress.com/2008/05/08/vistamanagementrecording/#comments</comments>
		<pubDate>Thu, 08 May 2008 10:45:15 +0000</pubDate>
		<dc:creator>Xaegr</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://xaegr.wordpress.com/2008/05/08/vistamanagementrecording/</guid>
		<description><![CDATA[Андрей Бешков&#160;опубликовал вопросы с прошедшего вебкаста &#8220;Управление Windows Vista с помощью PowerShell&#8221;. Запись самого каста можно посмотреть или скачать вот тут.
Вебкаст продолжался 2 часа вместо часа как обычно. При этом никаких затягиваний я не заметил  Контента было много, как и демонстраций. Рекомендую  
PS: Я уезжаю в отпуск, а вернусь сразу к началу переезда [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://blogs.technet.com/abeshkov/default.aspx">Андрей Бешков</a>&nbsp;<a href="http://blogs.technet.com/abeshkov/archive/2008/05/08/3052036.aspx">опубликовал</a> вопросы с прошедшего вебкаста &#8220;Управление Windows Vista с помощью PowerShell&#8221;. Запись самого каста можно посмотреть или скачать вот <a href="http://www.microsoft.com/Rus/events/detail.mspx?eventid=1032378589">тут</a>.</p>
<p>Вебкаст продолжался 2 часа вместо часа как обычно. При этом никаких затягиваний я не заметил <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Контента было много, как и демонстраций. Рекомендую <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>PS: Я уезжаю в отпуск, а вернусь сразу к началу переезда моей фирмы в другой офис. Так что в ближайшее время врядли будет очень много постов&#8230; Всем нужно иногда отдыхать <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/xaegr.wordpress.com/270/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/xaegr.wordpress.com/270/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/xaegr.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/xaegr.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/xaegr.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/xaegr.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/xaegr.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/xaegr.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/xaegr.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/xaegr.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/xaegr.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/xaegr.wordpress.com/270/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=xaegr.wordpress.com&blog=1963309&post=270&subd=xaegr&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://xaegr.wordpress.com/2008/05/08/vistamanagementrecording/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/xaegr-128.jpg" medium="image">
			<media:title type="html">Xaegr</media:title>
		</media:content>
	</item>
		<item>
		<title>Готовьте ваши вопросы ;)</title>
		<link>http://xaegr.wordpress.com/2008/05/07/preparequestions/</link>
		<comments>http://xaegr.wordpress.com/2008/05/07/preparequestions/#comments</comments>
		<pubDate>Wed, 07 May 2008 06:21:58 +0000</pubDate>
		<dc:creator>Xaegr</dc:creator>
		
		<category><![CDATA[PowerShell]]></category>

		<category><![CDATA[Scripting]]></category>

		<guid isPermaLink="false">http://xaegr.wordpress.com/2008/05/07/preparequestions/</guid>
		<description><![CDATA[Традиционно напоминаю о вебкасте который начнётся сегодня в 12:00 MSK. Мы с Андреем Бешковым расскажем про администрирование Vista с помощью PowerShell, и постараемся ответить на ваши вопросы.
Регистрироваться можно тут, - на онлайн мероприятия у MS места не ограничены пока  Для участия понадобится клиент Live Meeting 2007.
Кстати сегодня вечером, в 21:00 MSK состоится еще одна [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Традиционно напоминаю о вебкасте который начнётся сегодня в 12:00 MSK. Мы с Андреем Бешковым расскажем про администрирование Vista с помощью PowerShell, и постараемся ответить на ваши вопросы.</p>
<p>Регистрироваться можно <a href="http://www.microsoft.com/Rus/events/detail.mspx?eventid=1032378588">тут</a>, - на онлайн мероприятия у MS места не ограничены пока <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> Для участия понадобится клиент <a href="http://office.microsoft.com/search/redir.aspx?AssetID=XT102227921033&amp;CTT=5&amp;Origin=HA101733831033">Live Meeting 2007</a>.</p>
<p>Кстати сегодня вечером, в 21:00 MSK состоится еще одна интересная онлайн встреча - &#8220;<a href="http://www.exchangerus.ru/2008/05/07/vebkast-razgovory-ob-it-sostoitsya-7-mayasreda-s-2100-2300msk/">Разговоры об ИТ</a>&#8221; у Паши Нагаева. Там меня (и не только меня <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) можно будет помучать вопросами более основательно <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Вопросы можно будет задавать с помощью голоса (если есть микрофон) или в Q/A.</p>
<p>UPD: Запись вебкаста доступна <a href="http://www.microsoft.com/Rus/events/detail.mspx?eventid=1032378589">тут</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/xaegr.wordpress.com/269/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/xaegr.wordpress.com/269/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/xaegr.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/xaegr.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/xaegr.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/xaegr.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/xaegr.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/xaegr.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/xaegr.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/xaegr.wordpress.com/269/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/xaegr.wordpress.com/269/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/xaegr.wordpress.com/269/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=xaegr.wordpress.com&blog=1963309&post=269&subd=xaegr&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://xaegr.wordpress.com/2008/05/07/preparequestions/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/xaegr-128.jpg" medium="image">
			<media:title type="html">Xaegr</media:title>
		</media:content>
	</item>
		<item>
		<title>PowerShell V2 CTP2</title>
		<link>http://xaegr.wordpress.com/2008/05/03/powershell-v2-ctp2/</link>
		<comments>http://xaegr.wordpress.com/2008/05/03/powershell-v2-ctp2/#comments</comments>
		<pubDate>Sat, 03 May 2008 08:46:37 +0000</pubDate>
		<dc:creator>Xaegr</dc:creator>
		
		<category><![CDATA[PowerShell]]></category>

		<category><![CDATA[Scripting]]></category>

		<guid isPermaLink="false">http://xaegr.wordpress.com/2008/05/03/powershell-v2-ctp2/</guid>
		<description><![CDATA[Буквально &#8220;несколько часов назад&#8221;  стал доступен публике второй CTP PowerShell V2. И еще раз напоминаю - CTP (Community Technology Preview) - это не бета, это сырее беты!  CTP выпускается для того чтобы продемонстрировать сообществу новые возможности продукта, и чтобы сообщество могло на эти возможности повлиять.

Но вернемся ко второму CTP. В нем разработчики демонстрируют [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Буквально &#8220;несколько часов назад&#8221; <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> стал доступен публике второй CTP PowerShell V2. И еще раз напоминаю - CTP (Community Technology Preview) - это не бета, это сырее беты! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> CTP выпускается для того чтобы продемонстрировать сообществу новые возможности продукта, и чтобы сообщество могло на эти возможности повлиять.</p>
<p><span id="more-268"></span>
<p>Но вернемся ко второму CTP. В нем разработчики демонстрируют нам кучу новых фич (которыми давно не терпелось поделиться <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ):</p>
<p>Интерактивное удаленное подключение (типа telnet, но с помощью winrm). Делается с помощью команд Push/Pull-Runspace:</p>
<pre>PS C:\Root&gt; Push-Runspace remotepc
[remotepc]: PS C:\Windows\System32&gt; hostname.exe
remotepc
[remotepc]: PS C:\Windows\System32&gt; Pop-Runspace
PS C:\Root&gt;
</pre>
<p>Появилась возможность создавать &#8220;модули&#8221; содержащие внутренние переменные и функции. Очень удобная фича для организации функционала.</p>
<p>Появилась поддержка транзакций в движке и API PowerShell&#8217;а. А так же обновлён провайдер Registry как раз для возможности их использования.</p>
<p>Появилась поддержка событий (Eventing). Теперь их можно слушать, перенаправлять и выполнять действия при возникновении событий.</p>
<p>В ScriptCmdlets можно использовать несколько наборов параметров.</p>
<p>Разработчики могут хостить PowerShell в IIS и запускать несколько сессий PoSh в одном процессе.</p>
<p>Ну и множество мелких обновлений типа новых командлетов и параметров <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Скачивать <a href="http://go.microsoft.com/fwlink/?LinkID=107395">тут</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/xaegr.wordpress.com/268/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/xaegr.wordpress.com/268/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/xaegr.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/xaegr.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/xaegr.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/xaegr.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/xaegr.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/xaegr.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/xaegr.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/xaegr.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/xaegr.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/xaegr.wordpress.com/268/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=xaegr.wordpress.com&blog=1963309&post=268&subd=xaegr&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://xaegr.wordpress.com/2008/05/03/powershell-v2-ctp2/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/xaegr-128.jpg" medium="image">
			<media:title type="html">Xaegr</media:title>
		</media:content>
	</item>
		<item>
		<title>Управление Vista (и не только) с помощью PowerShell</title>
		<link>http://xaegr.wordpress.com/2008/05/01/managingvistawithposh/</link>
		<comments>http://xaegr.wordpress.com/2008/05/01/managingvistawithposh/#comments</comments>
		<pubDate>Thu, 01 May 2008 06:24:08 +0000</pubDate>
		<dc:creator>Xaegr</dc:creator>
		
		<category><![CDATA[PowerShell]]></category>

		<category><![CDATA[Scripting]]></category>

		<category><![CDATA[Vista]]></category>

		<guid isPermaLink="false">http://xaegr.wordpress.com/2008/05/01/managingvistawithposh/</guid>
		<description><![CDATA[7го мая, в среду, в 12:00 MSK, мы с Андреем Бешковым проведем интересный (очень надеюсь  ) вебкаст &#8220;Управление Vista с помощью PowerShell&#8221;. На самом деле многие вещи о которых там расскажем относятся не только к Vista, но и к остальным ОС. Ну и кроме того немаленькая часть будет посвящена идеологии и устройству PowerShell.
Регистрироваться тут.
PS: [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>7го мая, в среду, в 12:00 MSK, мы с <a href="http://blogs.technet.com/abeshkov/">Андреем Бешковым</a> проведем интересный (очень надеюсь <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) вебкаст <a href="http://www.microsoft.com/Rus/events/detail.mspx?eventid=1032378588">&#8220;Управление Vista с помощью PowerShell&#8221;</a>. На самом деле многие вещи о которых там расскажем относятся не только к Vista, но и к остальным ОС. Ну и кроме того немаленькая часть будет посвящена идеологии и устройству PowerShell.</p>
<p>Регистрироваться <a href="http://www.microsoft.com/Rus/events/detail.mspx?eventid=1032378588">тут</a>.</p>
<p>PS: Готовьте свои вопросы. Если не смогу ответить на вебкасте - постараюсь потом в блоге.</p>
<p>UPD: Запись вебкаста доступна <a href="http://www.microsoft.com/Rus/events/detail.mspx?eventid=1032378589">тут</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/xaegr.wordpress.com/267/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/xaegr.wordpress.com/267/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/xaegr.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/xaegr.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/xaegr.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/xaegr.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/xaegr.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/xaegr.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/xaegr.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/xaegr.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/xaegr.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/xaegr.wordpress.com/267/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=xaegr.wordpress.com&blog=1963309&post=267&subd=xaegr&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://xaegr.wordpress.com/2008/05/01/managingvistawithposh/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/xaegr-128.jpg" medium="image">
			<media:title type="html">Xaegr</media:title>
		</media:content>
	</item>
		<item>
		<title>AD Domains</title>
		<link>http://xaegr.wordpress.com/2008/04/29/ad-domains/</link>
		<comments>http://xaegr.wordpress.com/2008/04/29/ad-domains/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 12:42:10 +0000</pubDate>
		<dc:creator>Xaegr</dc:creator>
		
		<category><![CDATA[Learn]]></category>

		<category><![CDATA[PowerShell]]></category>

		<category><![CDATA[Practice]]></category>

		<category><![CDATA[Scripting]]></category>

		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://xaegr.wordpress.com/2008/04/29/ad-domains/</guid>
		<description><![CDATA[Продолжая тему Active Directory и PowerShell, приведу несколько команд (точнее методов .Net), которые бывают полезны в скриптах.
Серьезный, &#8220;продакшн&#8221; скрипт, не должен требовать указывать ему имя домена, а использовать по умолчанию домен того компьютера на котором он запущен. А как его определить? Вызвать статический метод GetCurrentDomain() класса System.DirectoryServices.ActiveDirectory.Domain:

&#160;
PS:&#62; [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()

Forest        [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://xaegr.wordpress.com/2008/04/28/set-adproperty/">Продолжая</a> тему Active Directory и PowerShell, приведу несколько команд (точнее методов .Net), которые бывают полезны в скриптах.</p>
<p>Серьезный, &#8220;продакшн&#8221; скрипт, не должен требовать указывать ему имя домена, а использовать по умолчанию домен того компьютера на котором он запущен. А как его определить? Вызвать статический метод GetCurrentDomain() класса System.DirectoryServices.ActiveDirectory.Domain:</p>
<p><span id="more-266"></span>
<p>&nbsp;</p>
<pre>PS:&gt; [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()

Forest                  : МойДомен.local
DomainControllers       : {dc1.МойДомен.local, dc2.МойДомен.local, &#8230;}
Children                : {}
DomainMode              : Windows2003Domain
Parent                  :
PdcRoleOwner            : dc1.МойДомен.local
RidRoleOwner            : dc2.МойДомен.local
InfrastructureRoleOwner : dc3.МойДомен.local
Name                    : МойДомен.local
</pre>
<p>Звучит сложно, но сделать в PowerShell - просто (особенно если работает автодополнение <a href="http://xaegr.wordpress.com/2008/02/04/powertab-screencast/">PowerTab</a> <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ).</p>
<p>В результатах предыдущей команды видно поле DomainControllers, в котором содержатся все контроллеры данного домена (хотя в одной строчке не много отобразятся). Можно легко получить их список, и даже отобрать лишь нужные свойства, но сначала, для читабельности скрипта, я помещу объект домена, в переменную $domain:</p>
<pre>PS:&gt; $domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()
PS:&gt; $domain.DomainControllers | Format-Table Name, OSVersion, IPAddress, SiteName

Name                  OSVersion           IPAddress   SiteName
&#8212;-                  &#8212;&#8212;&#8212;           &#8212;&#8212;&#8212;   &#8212;&#8212;&#8211;
dc1.МойДомен.local    Windows Server 2003 192.168.0.1 Default-First-Site
dc2.МойДомен.local    Windows Server 2003 192.168.0.2 Default-First-Site
dc3.МойДомен.local    Windows Server 2003 192.168.0.3 Default-First-Site
</pre>
<p>Ну и напоследок - получение DN (Distinguished Name) всех этих объектов. Домена:</p>
<pre>PS:&gt; $domain.GetDirectoryEntry().distinguishedName
DC=МойДомен,DC=local
</pre>
<p>И контроллеров:</p>
<pre>PS:&gt; $domain.DomainControllers | foreach {$_.GetDirectoryEntry().distinguishedName}
CN=dc1,CN=Servers,CN=Default-First-Site,CN=Sites,CN=Configuration,DC=МойДомен,DC=local
CN=dc2,CN=Servers,CN=Default-First-Site,CN=Sites,CN=Configuration,DC=МойДомен,DC=local
CN=dc3,CN=Servers,CN=Default-First-Site,CN=Sites,CN=Configuration,DC=МойДомен,DC=local
</pre>
<p> Вопросы и пожелания приветствуются <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/xaegr.wordpress.com/266/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/xaegr.wordpress.com/266/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/xaegr.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/xaegr.wordpress.com/266/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/xaegr.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/xaegr.wordpress.com/266/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/xaegr.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/xaegr.wordpress.com/266/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/xaegr.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/xaegr.wordpress.com/266/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/xaegr.wordpress.com/266/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/xaegr.wordpress.com/266/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=xaegr.wordpress.com&blog=1963309&post=266&subd=xaegr&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://xaegr.wordpress.com/2008/04/29/ad-domains/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/xaegr-128.jpg" medium="image">
			<media:title type="html">Xaegr</media:title>
		</media:content>
	</item>
		<item>
		<title>Set-AdProperty</title>
		<link>http://xaegr.wordpress.com/2008/04/28/set-adproperty/</link>
		<comments>http://xaegr.wordpress.com/2008/04/28/set-adproperty/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 12:44:55 +0000</pubDate>
		<dc:creator>Xaegr</dc:creator>
		
		<category><![CDATA[Learn]]></category>

		<category><![CDATA[PowerShell]]></category>

		<category><![CDATA[Practice]]></category>

		<category><![CDATA[Scripting]]></category>

		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://xaegr.wordpress.com/2008/04/28/set-adproperty/</guid>
		<description><![CDATA[Сегодня из общения с Пашей Дугаевым &#8220;узнал&#8221; что людям &#8220;иногда&#8221; бывает нужно задать из PowerShell атрибут какого нибудь объекта в Active Directory  . Процесс не сложный, но в PowerShell 1.0 не очень &#8220;красивый&#8221;. Поэтому для удобного использования стоит завернуть его в такую вот функцию:

&#160;
function Set-ADProperty ($DN, $Property, $Value)
{
	$Obj = [adsi]&#8220;LDAP://$DN&#8221;
	$Obj.psbase.InvokeSet($Property,$Value)
	$Obj.psbase.CommitChanges()
}

Функцию можно поместить в профиль, [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Сегодня из общения с <a href="http://www.exchangerus.ru/">Пашей Дугаевым</a> &#8220;узнал&#8221; что людям &#8220;иногда&#8221; бывает нужно задать из PowerShell атрибут какого нибудь объекта в Active Directory <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Процесс не сложный, но в PowerShell 1.0 не очень &#8220;красивый&#8221;. Поэтому для удобного использования стоит завернуть его в такую вот функцию:</p>
<p><span id="more-265"></span>
<p>&nbsp;</p>
<pre>function Set-ADProperty ($DN, $Property, $Value)
{
	$Obj = [adsi]&#8220;LDAP://$DN&#8221;
	$Obj.psbase.InvokeSet($Property,$Value)
	$Obj.psbase.CommitChanges()
}
</pre>
<p>Функцию можно поместить в профиль, для того чтобы она была всегда под рукой. Ну или скопипастить прямо в командную строку если на один раз. Использование:</p>
<pre>Set-ADProperty "CN=Василий Гусев,OU=Юзеры,DC=Домен,DC=Local" "displayName" "Гусев Василий"
</pre>
<p> PS: AD Cmdlets не требует <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/xaegr.wordpress.com/265/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/xaegr.wordpress.com/265/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/xaegr.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/xaegr.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/xaegr.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/xaegr.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/xaegr.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/xaegr.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/xaegr.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/xaegr.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/xaegr.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/xaegr.wordpress.com/265/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=xaegr.wordpress.com&blog=1963309&post=265&subd=xaegr&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://xaegr.wordpress.com/2008/04/28/set-adproperty/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/xaegr-128.jpg" medium="image">
			<media:title type="html">Xaegr</media:title>
		</media:content>
	</item>
		<item>
		<title>CTP2 &#34;Breaking Changes&#34;</title>
		<link>http://xaegr.wordpress.com/2008/04/26/ctp2-breaking-changes/</link>
		<comments>http://xaegr.wordpress.com/2008/04/26/ctp2-breaking-changes/#comments</comments>
		<pubDate>Sat, 26 Apr 2008 07:50:31 +0000</pubDate>
		<dc:creator>Xaegr</dc:creator>
		
		<category><![CDATA[PowerShell]]></category>

		<category><![CDATA[Scripting]]></category>

		<guid isPermaLink="false">http://xaegr.wordpress.com/2008/04/26/ctp2-breaking-changes/</guid>
		<description><![CDATA[Те самые люди которые подарили нам PowerShell  

А сейчас они заняты подготовкой следующей версии&#8230;

В ближайшее время станет доступен PowerShell 2.0 CTP2. То есть это будет второй Community Technology Preview. На всякий случай еще раз напоминаю: CTP - это даже не бета, это гораздо сырее, до релиза в ней многое изменится - не стоит привыкать. [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Те самые люди которые подарили нам PowerShell <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://blogs.msdn.com/blogfiles/powershell/WindowsLiveWriter/ThePowerShellTeam_DF36/teamphoto_2.jpg"><img src="http://blogs.msdn.com/blogfiles/powershell/WindowsLiveWriter/ThePowerShellTeam_DF36/teamphoto_thumb.jpg"></a></p>
<p>А сейчас они заняты подготовкой следующей версии&#8230;</p>
<p><span id="more-264"></span>
<p>В ближайшее время станет доступен PowerShell 2.0 CTP2. То есть это будет второй Community Technology Preview. На всякий случай еще раз напоминаю: CTP - это даже не бета, это гораздо сырее, до релиза в ней многое изменится - не стоит привыкать. Это лишь версия для демонстрации новых возможностей сообществу, чтобы сообщество могло повлиять на эти возможности и подсказать как их можно поменять. В бете сильных изменений уже не произойдет (ну кроме исправления багов конечно).</p>
<p>Итак, для тех кто полностью осознает что такое CTP, Jeffrey Snower <a href="http://blogs.msdn.com/powershell/archive/2008/04/24/changes-in-upcoming-ctp.aspx">огласил список</a> этих самых &#8220;breaking changes&#8221; которые произойдут в CTP2.</p>
<p>Синтаксис атрибутов для скриптовых командлетов стал более похожим на таковой в C#. Единообразие - хорошо <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Возможности удаленного выполнения команд убраны из командлетов Invoke-Expression и Start-PSJob. Для запуска команд удаленно теперь используется только Invoke-Command. Ну и к нему же добавлен ключ -AsJob.</p>
<p>Теперь ждем &#8220;New Features&#8221; там должно быть куда больше интересного <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/xaegr.wordpress.com/264/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/xaegr.wordpress.com/264/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/xaegr.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/xaegr.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/xaegr.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/xaegr.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/xaegr.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/xaegr.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/xaegr.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/xaegr.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/xaegr.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/xaegr.wordpress.com/264/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=xaegr.wordpress.com&blog=1963309&post=264&subd=xaegr&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://xaegr.wordpress.com/2008/04/26/ctp2-breaking-changes/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/xaegr-128.jpg" medium="image">
			<media:title type="html">Xaegr</media:title>
		</media:content>

		<media:content url="http://blogs.msdn.com/blogfiles/powershell/WindowsLiveWriter/ThePowerShellTeam_DF36/teamphoto_thumb.jpg" medium="image" />
	</item>
		<item>
		<title>Option Explicit</title>
		<link>http://xaegr.wordpress.com/2008/04/24/option-explicit/</link>
		<comments>http://xaegr.wordpress.com/2008/04/24/option-explicit/#comments</comments>
		<pubDate>Thu, 24 Apr 2008 05:08:34 +0000</pubDate>
		<dc:creator>Xaegr</dc:creator>
		
		<category><![CDATA[Learn]]></category>

		<category><![CDATA[PowerShell]]></category>

		<category><![CDATA[Scripting]]></category>

		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://xaegr.wordpress.com/2008/04/24/option-explicit/</guid>
		<description><![CDATA[Скриптерам и программерам на Visual Basic наверняка знакома эта &#8220;ключевая фраза&#8221;. Дело в том что по умолчанию, если использовать не объявленную заранее переменную, то ошибки не произойдет ни в Visual Basic ни в PowerShell. Просто вместо несуществующей переменной будет подставлено пустое значение. Обычно это является нормальным поведением, но иногда может привести и к логическим ошибкам. [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Скриптерам и программерам на Visual Basic наверняка знакома эта &#8220;ключевая фраза&#8221;. Дело в том что по умолчанию, если использовать не объявленную заранее переменную, то ошибки не произойдет ни в Visual Basic ни в PowerShell. Просто вместо несуществующей переменной будет подставлено пустое значение. Обычно это является нормальным поведением, но иногда может привести и к логическим ошибкам. Ведь достаточно ошибится на одну букву в имени переменной, и логика скрипта может сильно изменится. Для таких случаев и был сделан Option Explit. При объявлении в начале скрипта этой директивы, при обращении к несуществующей переменной выдается ошибка. Аналог разумеется есть и в PowerShell - команда Set-PsDebug с ключем -Strict</p>
<p><span id="more-263"></span>
</p>
<p>Вызов несуществующей переменной в обычном режиме (никакой ошибки):</p>
<pre>[PS &lt;50&gt; C:\Root] $несуществующаяПеременная
</pre>
<p>и при включении Set-PSDebug -Strict:</p>
<pre>[PS &lt;51&gt; C:\Root] Set-PSDebug -Strict
[PS &lt;52&gt; C:\Root] $несуществующаяПеременная
The variable $несуществующаяПеременная cannot be retrieved because it has not been set yet.
At line:1 char:26
+ $несуществующаяПеременная &lt;&lt;&lt;&lt;
</pre>
<p>Однако если предварительно назначить переменной значение - всё будет в порядке:</p>
<pre>[PS &lt;53&gt; C:\Root] $несуществующаяПеременная = 123
[PS &lt;54&gt; C:\Root] $несуществующаяПеременная
123</pre>
<p>Отключить режим можно использовав ключ -Off:</p>
<pre>[PS &lt;55&gt; C:\Root] Set-PSDebug -Off</pre>
<p>Или задав ключу -Strict значение $False следующим образом:</p>
<pre>[PS &lt;56&gt; C:\Root] Set-PSDebug -Strict:$False</pre>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/xaegr.wordpress.com/263/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/xaegr.wordpress.com/263/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/xaegr.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/xaegr.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/xaegr.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/xaegr.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/xaegr.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/xaegr.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/xaegr.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/xaegr.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/xaegr.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/xaegr.wordpress.com/263/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=xaegr.wordpress.com&blog=1963309&post=263&subd=xaegr&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://xaegr.wordpress.com/2008/04/24/option-explicit/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/xaegr-128.jpg" medium="image">
			<media:title type="html">Xaegr</media:title>
		</media:content>
	</item>
		<item>
		<title>Try/Catch/Finally в PowerShell</title>
		<link>http://xaegr.wordpress.com/2008/04/23/try-catch-and-misc/</link>
		<comments>http://xaegr.wordpress.com/2008/04/23/try-catch-and-misc/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 05:19:34 +0000</pubDate>
		<dc:creator>Xaegr</dc:creator>
		
		<category><![CDATA[Learn]]></category>

		<category><![CDATA[PowerShell]]></category>

		<category><![CDATA[Scripting]]></category>

		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://xaegr.wordpress.com/2008/04/23/try-catch-and-misc/</guid>
		<description><![CDATA[PowerShell очень классный язык, но тем не менее очень молодой. И по этой причине в нём зачастую нет того чего хочется. Пока нет.
Но так как он всё же очень классный - то чего нет можно дописать  Вот к примеру если кому то не хватает привычной конструкции Try/Catch/Finally то Adam Weigert её написал  За [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>PowerShell очень классный язык, но тем не менее очень молодой. И по этой причине в нём зачастую нет того чего хочется. Пока нет.</p>
<p>Но так как он всё же очень классный - то чего нет можно дописать <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> Вот к примеру если кому то не хватает привычной конструкции Try/Catch/Finally то <a href="http://weblogs.asp.net/adweigert/default.aspx">Adam Weigert</a> её <a href="http://weblogs.asp.net/adweigert/archive/2007/10/10/powershell-try-catch-finally-comes-to-life.aspx">написал</a> <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> За что ему большое спасибо <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> (и ajax76 спасибо что напомнил <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</p>
<p><span id="more-262"></span>
<p>Достаточно добавить в свой профиль следующую функцию:</p>
<pre>function Try
{
    param
    (
        [ScriptBlock]$Command = $(throw &#8220;The parameter -Command is required.&#8221;),
        [ScriptBlock]$Catch   = { throw $_ },
        [ScriptBlock]$Finally = {}
    )
    &amp; {
        $local:ErrorActionPreference = &#8220;SilentlyContinue&#8221;
        trap
        {
            trap
            {
                &amp; {
                    trap { throw $_ }
                    &amp;$Finally
                }
                throw $_
            }
            $_ | &amp; { &amp;$Catch }
        }
        &amp;$Command
    }
    &amp; {
        trap { throw $_ }
        &amp;$Finally
    }
}
</pre>
<p>И можно использовать:</p>
<pre>Try {
    echo " ::Do some work..."
    echo " ::Try divide by zero: $(0/0)"
} -Catch {
    echo "  ::Cannot handle the error (will rethrow): $_"
    #throw $_
} -Finally {
    echo " ::Cleanup resources..."
}
</pre>
<p>Опишу несколько неочевидных моментов из скрипта:</p>
<p>В качестве параметров для функции принимаются [ScriptBlock], то есть грубо говоря &#8220;куски кода&#8221;. Передаются они (как в видно в примере) заключенными в фигурные скобки, как и везде в PowerShell: в командлетах - foreach-object {скриптблок}, конструкциях - if () {скриптблок} или ключевых словах - trap {скриптблок}. </p>
<p>Выполнить переменную содержащую скриптблок можно используя оператор Invoke - &#8220;&amp;&#8221;:</p>
<pre>&amp;$Command
</pre>
<p>Когда выполняется скриптблок указанный для throw, то в пределах этого скриптблока, в переменную $_ помещается объект текущей ошибки.</p>
<p>Ключевое слово Throw используется для вызова ошибки. То есть просто указываем ему в качестве аргумента объект ошибки или какое-нибудь сообщение:</p>
<pre>[PS &lt;4&gt; C:\Root] throw &#8220;Ошипко&#8221;
Ошипко
At line:1 char:6
+ throw &lt;&lt;&lt;&lt;  &#8220;Ошипко&#8221;
</pre>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/xaegr.wordpress.com/262/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/xaegr.wordpress.com/262/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/xaegr.wordpress.com/262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/xaegr.wordpress.com/262/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/xaegr.wordpress.com/262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/xaegr.wordpress.com/262/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/xaegr.wordpress.com/262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/xaegr.wordpress.com/262/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/xaegr.wordpress.com/262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/xaegr.wordpress.com/262/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/xaegr.wordpress.com/262/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/xaegr.wordpress.com/262/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=xaegr.wordpress.com&blog=1963309&post=262&subd=xaegr&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://xaegr.wordpress.com/2008/04/23/try-catch-and-misc/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/xaegr-128.jpg" medium="image">
			<media:title type="html">Xaegr</media:title>
		</media:content>
	</item>
		<item>
		<title>Не все $Errors одинаково критичны</title>
		<link>http://xaegr.wordpress.com/2008/04/18/nonterminatingerrors/</link>
		<comments>http://xaegr.wordpress.com/2008/04/18/nonterminatingerrors/#comments</comments>
		<pubDate>Fri, 18 Apr 2008 05:17:45 +0000</pubDate>
		<dc:creator>Xaegr</dc:creator>
		
		<category><![CDATA[Learn]]></category>

		<category><![CDATA[PowerShell]]></category>

		<category><![CDATA[Scripting]]></category>

		<guid isPermaLink="false">http://xaegr.wordpress.com/2008/04/18/nonterminatingerrors/</guid>
		<description><![CDATA[В PowerShell ошибки делятся на 2 категории:
Terminating Errors - критичные для выполнения команды, ошибки синтаксиса, и т.п. При возникновении такой ошибки дальнейшее выполнение команды прерывается (по умолчанию), и если установлен trap, то выполняется определённый в нём скриптблок.
Non terminating Errors - ошибки которые можно и стерпеть  Это ошибки несмотря на которые выполнение команды можно продолжить [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>В PowerShell ошибки делятся на 2 категории:</p>
<p>Terminating Errors - критичные для выполнения команды, ошибки синтаксиса, и т.п. При возникновении такой ошибки дальнейшее выполнение команды прерывается (по умолчанию), и если установлен <a href="http://xaegr.wordpress.com/2008/04/15/trap/">trap</a>, то выполняется определённый в нём скриптблок.</p>
<p>Non terminating Errors - ошибки которые можно и стерпеть <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> Это ошибки несмотря на которые выполнение команды можно продолжить (и даже получить еще ошибок <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ). О них и поговорим сегодня.</p>
<p><span id="more-261"></span>
</p>
<p>Для примера разберём два типа ошибок у командлета Copy-Item. Первая ошибка - это несуществующий путь в параметре -Destination:</p>
<pre>[PS &lt;6&gt; C:\Root] trap {&#8221;Ошибка!&#8221;}; Copy-Item -Path test.txt -Destination \\сервер\шара
Ошибка!
Copy-Item : Не найдено сетевое имя.
At line:1 char:28
+ trap {&#8221;Ошибка!&#8221;}; Copy-Item &lt;&lt;&lt;&lt;  -Path test.txt -Destination \\сервер\шара
</pre>
<p>Путь указанный в -Destination критичен для командлета Copy-Item, без него невозможна дальнейшая работа, ведь именно в это место должны копироваться все указанные файлы. Поэтому в этом случае ошибка является Terminating, и прерывая действие командлета, вызывает блок кода из конструкции <a href="http://xaegr.wordpress.com/2008/04/15/trap/">trap</a>.</p>
<p>Теперь вызовем другую ошибку:</p>
<pre>[PS &lt;9&gt; C:\Root] trap {&#8221;Ошибка!&#8221;}; Copy-Item -Path файл.txt -Destination \\сервер\шара
Copy-Item : Cannot find path &#8216;C:\Root\файл.txt&#8217; because it does not exist.
At line:1 char:28
+ trap {&#8221;Ошибка!&#8221;}; Copy-Item &lt;&lt;&lt;&lt;  -Path файл.txt -Destination \\сервер\шара
</pre>
<p>На этот раз командлет не смог найти файл для копирования, но тем не менее не вызвал блок trap! Дело в том что отсутствие файла источника не является критической (Terminating) ошибкой. Ведь этих файлов может быть указано много, что с того что один из них не существует? Поэтому прерывания команды и не произошло. Вот пример того, какую пользу это может принести:</p>
<pre>[PS &lt;10&gt; C:\Root] trap {&#8221;Ошибка!&#8221;}; Copy-Item -Path файл.txt,file.txt -Destination \\localhost\c$\temp
Copy-Item : Cannot find path &#8216;C:\Root\файл.txt&#8217; because it does not exist.
At line:1 char:28
+ trap {&#8221;Ошибка!&#8221;}; Copy-Item &lt;&lt;&lt;&lt;  -Path файл.txt,file.txt -Destination \\localhost\c$\temp
[PS &lt;11&gt; C:\Root] Test-Path \\localhost\c$\temp\file.txt
True
</pre>
<p>Тут в качестве источника было указано несколько файлов, и командлет вызвав ошибку, всё же продолжил дальнейшую работу, и скопировал существующий файл file.txt.</p>
<p>Действительно, в большинстве случаев, указывая командлету задачу скопировать несколько файлов, мы хотим чтобы он скопировал все которые сможет, а не прерывался после первой же ошибки. Но может возникнуть и обратная ситуация, когда критичен каждый файл. В таком случае можно сказать командлету о том что все ошибки надо считать Terminating. Делается это указанием параметра -ErrorAction &#8220;Stop&#8221; (или -EA 1):</p>
<pre>[PS &lt;14&gt; C:\Root] del \\localhost\c$\temp\file.txt
[PS &lt;15&gt; C:\Root] trap {&#8221;Ошибка!&#8221;}; Copy-Item -Path файл.txt,file.txt -Destination \\localhost\c$\temp -ea 1
Ошибка!
Copy-Item : Command execution stopped because the shell variable &#8220;ErrorActionPreference&#8221; is set to Stop: Cannot find pa
th &#8216;C:\Root\файл.txt&#8217; because it does not exist.
At line:1 char:28
+ trap {&#8221;Ошибка!&#8221;}; Copy-Item &lt;&lt;&lt;&lt;  -Path файл.txt,file.txt -Destination \\localhost\c$\temp -ea 1
[PS &lt;16&gt; C:\Root] Test-Path \\localhost\c$\temp\file.txt
False
</pre>
<p>И вот что произошло. Так как я сказал командлету останавливаться на любых ошибках - он и остановился после того как не смог скопировать первый же файл, и второй файл скопирован не был. Кроме того был вызван скриптблок указанный в trap.</p>
<p>Можно и повторить тот же эффект, но в пределах всего скрипта, установив в его начале значение специальной переменной $ErrorActionPreference:</p>
<pre>$ErrorActionPreference = "Stop"
</pre>
<p>Ну и третий вариант - когда не надо прерывать выполнение команды, но о наличии Non terminating ошибок узнать всё таки хочется. Просто проверяем количество элементов в переменной указанной в параметре <a href="http://xaegr.wordpress.com/2008/04/11/errorvariable/">-ErrorVariable</a>:</p>
<pre>[PS &lt;23&gt; C:\Root] trap {&#8221;Ошибка!&#8221;}; Copy-Item -Path файл.txt,file.txt -Destination \\localhost\c$\temp -ErrorVariable e
Copy-Item : Cannot find path &#8216;C:\Root\файл.txt&#8217; because it does not exist.
At line:1 char:28
+ trap {&#8221;Ошибка!&#8221;}; Copy-Item &lt;&lt;&lt;&lt;  -Path файл.txt,file.txt -Destination \\localhost\c$\temp -ErrorVariable e
[PS &lt;24&gt; C:\Root] if ($e.Count -ge 1) {&#8221;При выполнении команды произошли ошибки.&#8221;}
При выполнении команды произошли ошибки.
</pre>
<p> &#8212;</p>
<p>PS: Напоминалка <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <a href="http://www.microsoft.com/rus/events/detail.mspx?eventid=1032375213">Заходим</a> сегодня, в 12:00 по Москве, на <a href="http://www.microsoft.com/rus/events/detail.mspx?eventid=1032375213">вебкаст</a> <a href="http://blogs.technet.com/abeshkov/default.aspx">Андрея</a>, слушать про использование NPS (тот что раньше звался IAS, а по сути RADIUS), в NAP.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/xaegr.wordpress.com/261/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/xaegr.wordpress.com/261/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/xaegr.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/xaegr.wordpress.com/261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/xaegr.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/xaegr.wordpress.com/261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/xaegr.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/xaegr.wordpress.com/261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/xaegr.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/xaegr.wordpress.com/261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/xaegr.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/xaegr.wordpress.com/261/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=xaegr.wordpress.com&blog=1963309&post=261&subd=xaegr&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://xaegr.wordpress.com/2008/04/18/nonterminatingerrors/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/xaegr-128.jpg" medium="image">
			<media:title type="html">Xaegr</media:title>
		</media:content>
	</item>
	</channel>
</rss>