<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/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>Русский блог команды разработки Powershell</title><link>http://blogs.technet.com/b/powershell_ru/</link><description /><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Управление службами Remote Desktop (так же известны как службы терминалов) с помощью Windows PowerShell</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/03/23/remote-desktop-windows-powershell.aspx</link><pubDate>Mon, 23 Mar 2009 13:52:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3213589</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3213589</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/03/23/remote-desktop-windows-powershell.aspx#comments</comments><description>&lt;P&gt;Всем привет, 
&lt;P&gt;Мы рады сообщить, что бета-версия Windows server 2008 R2 поддерживает использование PowerShell в &lt;A href="http://blogs.msdn.com/ts/archive/2008/11/03/terminal-services-renamed-remote-desktop-services-at-teched-emea.aspx" mce_href="http://blogs.msdn.com/ts/archive/2008/11/03/terminal-services-renamed-remote-desktop-services-at-teched-emea.aspx"&gt;службах Remote Desktop&lt;/A&gt;. Теперь вы можете настраивать и управлять всеми службами и компонентами ролей RDS с помощью PowerShell. Например, ниже приведены несколько задач управления, которые теперь можно выполнять с помощью PowerShell 
&lt;OL&gt;
&lt;LI&gt;Просмотр и редактирование настроек конфигурации сервера удаленного рабочего стола 
&lt;LI&gt;Публикация приложений RemoteApp 
&lt;LI&gt;Настройка сервера лицензий 
&lt;LI&gt;Создание и настройка фермы сервера удаленного рабочего стола 
&lt;LI&gt;Настройка и назначение виртуальных IP-адресов для сеансов и приложений 
&lt;LI&gt;Создание и управление RDV (VDI пулами) 
&lt;LI&gt;Создание и управление политиками Gateway Resource Access и Client Access&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Разумеется, с помощью Windows PowerShell можно сделать еще многое и многое другое. Установите бета-версию Windows Server 2008 R2 и давайте попробуем. Как всегда, мы очень хотим услышать, что вы думаете, и важно, чтобы вы как можно скорее дали нам знать, что вам понравилось, и что не понравилось. 
&lt;P&gt;Читайте дальше, чтобы подробно разобраться в PowerShell RDS. 
&lt;P&gt;&lt;B&gt;PowerShell&lt;/B&gt;&lt;B&gt; в службах удаленного рабочего стола&lt;/B&gt; 
&lt;P&gt;После установки роли служб Remote Desktop устанавливается провайдер PowerShell. Этот провайдер (в дальнейшем мы будем называть его провайдером RDS) позволит вам просматривать и управлять конфигурацией всех служб роли и компонентов служб Remote Desktop. 
&lt;P&gt;Думайте о провайдере RDS как о чем-то вроде провайдера файловой системы и провайдера реестра, &lt;A href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;i=1664&amp;amp;g=6" mce_href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;i=1664&amp;amp;g=6"&gt;провайдера IIS&lt;/A&gt;. Вы можете просматривать, обозревать свойства и работать с провайдером RDS так же, как и с любым другим провайдером. 
&lt;P&gt;&lt;A title=_Toc207704242 name=_Toc207704242&gt;&lt;/A&gt;&lt;B&gt;Работа с &lt;/B&gt;&lt;B&gt;RDS&lt;/B&gt;&lt;B&gt; &lt;/B&gt;&lt;B&gt;из &lt;/B&gt;&lt;B&gt;PowerShell&lt;/B&gt;&lt;B&gt;&lt;/B&gt; 
&lt;P&gt;Чтобы начать работу, сперва установите роль служб Remote Desktop и запустите RDS PowerShell. 
&lt;P&gt;Шаг 1: Установите роль служб Remote Desktop 
&lt;P&gt;RDS PowerShell устанавливается при установке роли служб Remote Desktop. Роль служб Remote Desktop можно установить с помощью Server Manager. 
&lt;P&gt;Шаг 2: Запустите RDS PowerShell 
&lt;P&gt;Щелкните левой кнопкой мыши на Start Menu -&amp;gt; All Programs -&amp;gt; Administrative Tools -&amp;gt; Remote desktop services -&amp;gt; «Remote Desktop Services PowerShell» и выберите «Run as Administrator». 
&lt;P&gt;После щелчка по этой ссылке вы увидите окно PowerShell, подсказка будет указывать на устройство RDS. Это он – ваш провайдер RDS. 
&lt;P&gt;&lt;A title=_Toc207704244 name=_Toc207704244&gt;&lt;/A&gt;Отметим, что когда вы используете команду dir, вы увидите представление со следующими шестью столбцами. 
&lt;P&gt;&lt;B&gt;Name (Имя)&lt;/B&gt;: Имя контейнера/параметра 
&lt;P&gt;&lt;B&gt;Type (Тип)&lt;/B&gt;: Тип элемента. Существует три возможных значения типа – Container (Контейнер), Integer (Целое число) и String (Строка). Контейнер (Узел) определяет элемент контейнера, а Целое и Строка обозначают настройки. Входить командой CD можно только в элементы контейнеров. Контейнеры соответствуют группам настроек или логической сущности, тогда как настройки соответствуют параметрам конфигурации. Например, роли, такие как RDS и Connection Broker, и сущности, такие как объекты соединений и RemoteApps, представляются в форме контейнеров, а режим стока сервера (drain mode) представлен как параметр. 
&lt;P&gt;&lt;B&gt;CurrentValue (Текущее значение)&lt;/B&gt;: Значение, назначенное элементу (применимо только для элементов типа «Integer» или «String») 
&lt;P&gt;&lt;B&gt;GP&lt;/B&gt;: Указывает, управляется ли элемент с помощью групповых политик 
&lt;P&gt;&lt;B&gt;PermissibleValues (Разрешенные значения)&lt;/B&gt;: Возможные значения, которые может иметь элемент настроек 
&lt;P&gt;&lt;B&gt;PermissibleOperations (Разрешенные операции)&lt;/B&gt;: Операции (коммандлеты), которые могут применяться к элементу 
&lt;P&gt;Пользователи могут выбирать, какие столбцы должны выводиться при использовании коммандлета Format-table. Например, команда &lt;B&gt;Get&lt;/B&gt;&lt;B&gt;-&lt;/B&gt;&lt;B&gt;Item&lt;/B&gt;&lt;B&gt; * | &lt;/B&gt;&lt;B&gt;format&lt;/B&gt;&lt;B&gt;-&lt;/B&gt;&lt;B&gt;table&lt;/B&gt;&lt;B&gt; -&lt;/B&gt;&lt;B&gt;Property&lt;/B&gt;&lt;B&gt; &lt;/B&gt;&lt;B&gt;Name&lt;/B&gt;&lt;B&gt;, &lt;/B&gt;&lt;B&gt;CurrentValue&lt;/B&gt; выводит только столбцы Name и CurrentValue. Можно использовать также &lt;B&gt;dir&lt;/B&gt;&lt;B&gt; * | &lt;/B&gt;&lt;B&gt;ft&lt;/B&gt;&lt;B&gt; -&lt;/B&gt;&lt;B&gt;Property&lt;/B&gt;&lt;B&gt; &lt;/B&gt;&lt;B&gt;N&lt;/B&gt;&lt;B&gt;*,&lt;/B&gt;&lt;B&gt;C&lt;/B&gt;&lt;B&gt;* , , &lt;/B&gt;вы получите&lt;B&gt; &lt;/B&gt;тот же результат. 
&lt;P&gt;Можно также изменить вид по умолчанию. Дополнительные сведения об этом см. в следующем сообщении. 
&lt;P&gt;&lt;B&gt;Как прочитать справочное руководство&lt;/B&gt;&lt;B&gt;?&lt;/B&gt; 
&lt;P&gt;Одна из выдающихся возможностей PowerShell состоит в том, что он упрощает получение информации и справки по различным вопросам. Это преимущество сохраняется и для поставщика RDS. Существует свойство с именем Description (Описание), ассоциированное с каждым элементом, которое успешно описывает отдельные параметры. 
&lt;P&gt;Например&lt;A title=_Toc207704243 name=_Toc207704243&gt;&lt;/A&gt;, &lt;B&gt;PS&lt;/B&gt;&lt;B&gt; &lt;/B&gt;&lt;B&gt;RDS&lt;/B&gt;&lt;B&gt;:\&lt;/B&gt;&lt;B&gt;RDSConfiguration&lt;/B&gt;&lt;B&gt;&amp;gt; &lt;/B&gt;&lt;B&gt;get&lt;/B&gt;&lt;B&gt;-&lt;/B&gt;&lt;B&gt;item&lt;/B&gt;&lt;B&gt; .\&lt;/B&gt;&lt;B&gt;DrainMode&lt;/B&gt;&lt;B&gt;| &lt;/B&gt;&lt;B&gt;fl&lt;/B&gt; выводит информацию об элементе DrainMode. Также можно изменить представление по умолчанию так, чтобы в нем всегда показывалось содержимое столбца Description. 
&lt;P&gt;Теперь давайте рассмотрим примеры. 
&lt;P&gt;&lt;A title=_Toc207704247 name=_Toc207704247&gt;&lt;/A&gt;&lt;B&gt;Пример&lt;/B&gt;&lt;B&gt; &lt;A title=_Toc207704248 name=_Toc207704248&gt;&lt;/A&gt;1: Установка уровня шифрования &lt;/B&gt;&lt;B&gt;RDP&lt;/B&gt; 
&lt;P&gt;Шаг 1: Просмотр текущего уровня шифрования 
&lt;P&gt;&lt;B&gt;PS&lt;/B&gt;&lt;B&gt; &lt;/B&gt;&lt;B&gt;RDS&lt;/B&gt;&lt;B&gt;:\&lt;/B&gt;&lt;B&gt;RDSConfiguration&lt;/B&gt;&lt;B&gt;\&lt;/B&gt;&lt;B&gt;Connections&lt;/B&gt;&lt;B&gt;\&lt;/B&gt;&lt;B&gt;RDP&lt;/B&gt;&lt;B&gt;-&lt;/B&gt;&lt;B&gt;Tcp&lt;/B&gt;&lt;B&gt;\&lt;/B&gt;&lt;B&gt;SecuritySettings&lt;/B&gt;&lt;B&gt;&amp;gt; &lt;/B&gt;&lt;B&gt;dir&lt;/B&gt;&lt;B&gt; .\&lt;/B&gt;&lt;B&gt;EncryptionLevel&lt;/B&gt;&lt;B&gt; | &lt;/B&gt;&lt;B&gt;fl&lt;/B&gt;&lt;B&gt;&lt;/B&gt; 
&lt;P&gt;Шаг 2: Установка требуемого значения элемента EncryptionLevel 
&lt;P&gt;&lt;B&gt;PS RDS:\RDSConfiguration\Connections\RDP-Tcp\SecuritySettings&amp;gt; Set-Item .\EncryptionLevel 2&lt;/B&gt; 
&lt;P&gt;&lt;A title=_Toc207704249 name=_Toc207704249&gt;&lt;/A&gt;&lt;B&gt;Пример&lt;/B&gt;&lt;B&gt; 2: Определение серверов лицензий, которые будут использоваться сервером &lt;/B&gt;&lt;B&gt;Remote&lt;/B&gt;&lt;B&gt; &lt;/B&gt;&lt;B&gt;Desktop&lt;/B&gt;&lt;B&gt;&lt;/B&gt; 
&lt;P&gt;Шаг 1: Просмотр текущего списка используемых серверов лицензий 
&lt;P&gt;&lt;B&gt;PS RDS:\RDSConfiguration\LicensingSettings\SpecifiedLicenseServers&amp;gt; dir&lt;/B&gt; 
&lt;P&gt;Шаг 2: Просмотр списка серверов лицензий, зарегистрированных на контроллере домена. 
&lt;P&gt;&lt;B&gt;PS RDS:\RDSConfiguration\LicensingSettings\RegisteredLicenseServers&amp;gt; dir&lt;/B&gt; 
&lt;P&gt;Шаг 3: добавление сервера лицензий к списку SpecifiedLicenseServers 
&lt;P&gt;Простейший способ добавления сервера лицензий состоит в том, чтобы использовать коммандлет new-item и указать имя добавляемого сервера лицензий. 
&lt;P&gt;&lt;B&gt;PS RDS:\RDSConfiguration\LicensingSettings\SpecifiedLicenseServers&amp;gt; New-Item -name ls.contoso.com&lt;/B&gt; 
&lt;P&gt;Вы можете использовать приведенную ниже команду для добавления всех серверов лицензий из списка зарегистрированных серверов лицензий к указанному списку серверов лицензий. 
&lt;P&gt;&lt;B&gt;PS RDS:\RDSConfiguration\LicensingSettings\SpecifiedLicenseServers&amp;gt; dir ..\RegisteredLicenseServers | new-item –force&lt;/B&gt; 
&lt;P&gt;&lt;B&gt;Пример&lt;/B&gt;&lt;B&gt; 3: &lt;A title=_Toc207704250 name=_Toc207704250&gt;&lt;/A&gt;Подключение сервера &lt;/B&gt;&lt;B&gt;Remote&lt;/B&gt;&lt;B&gt; &lt;/B&gt;&lt;B&gt;Desktop&lt;/B&gt;&lt;B&gt; к ферме &lt;/B&gt;&lt;B&gt;Session&lt;/B&gt;&lt;B&gt; &lt;/B&gt;&lt;B&gt;Broker&lt;/B&gt;&lt;B&gt;&lt;/B&gt; 
&lt;P&gt;&lt;B&gt;PS RDS:\RDSConfiguration\ConnectionBrokerSettings&amp;gt; Set-Item MemberOfFarm 1 -FarmName testFarm -sessionbroker contoso-sb-test -CurrentRedirectableAddresses 65.52.65.53&lt;/B&gt; 
&lt;P&gt;&lt;A title=_Toc207704252 name=_Toc207704252&gt;&lt;/A&gt;&lt;B&gt;Пример&lt;/B&gt;&lt;B&gt; 4: Добавление&lt;/B&gt;&lt;B&gt; &lt;/B&gt;&lt;B&gt;RemoteApp&lt;/B&gt;&lt;B&gt;&lt;/B&gt; 
&lt;P&gt;&lt;B&gt;PS RDS:\RemoteApps\PublishedApplications&amp;gt; New-Item -Name "IExplore" -ApplicationPath "c:\Program Files\Internet Explorer\iexplore.exe" -ApplicationName "Internet Explorer" -ShowInPortal 1&lt;/B&gt;&lt;B&gt;&lt;/B&gt; 
&lt;P&gt;Эти примеры демонстрируют лишь некоторые из различных новых возможностей. Практически любые задачи настройки, относящиеся к конфигурации сервера RD, RemoteApp, Gateway, сервера лицензий и RDV (VDI пулами) теперь можно выполнять с использованием провайдера RDS. 
&lt;P&gt;Кроме того, истинный потенциал провайдера RDS реализуется при написании сценариев для 
&lt;P&gt;1. формирования последовательности из различных операций настройки 
&lt;P&gt;2. выполнения настройки нескольких серверов 
&lt;P&gt;Один из сценариев, наилучшим образом демонстрирующих указанное выше, это создание ферм серверов RD. Сценарий, приводимый в качестве примера в конце этой записи, принимает в качестве входных данных список серверов и приложений, создает ферму сервера RD и создает RemoteApp на всех этих серверах. Создайте два текстовых файла, один со с��иском серверов и другой со списком путей к приложениям (можно использовать пути с переменными среды, такими как %windir%), и передайте имена этих файлов сценарию в качестве входных параметров. 
&lt;P&gt;Поскольку эти сценарии используют удаленное исполнение PowerShell, перед выполнением сценария убедитесь, что вы включили удаленное исполнение PowerShell (для включения удаленного исполнения выполните коммандлет Enable-PSRemoting в окне PowerShell запущеном с повышеными привилегиями). 
&lt;P&gt;Разумеется, это очень простой сценарий – вы можете легко нарастить его дополнительными специальными функциями в соответствии с вашими потребностями. Кроме того, по нашему мнению, одно из важных преимуществ провайдера RDS состоит в том, что вам нет нужды быть программистом, чтобы написать такой сценарий, как CreateRDFarm. Все, что нужно знать – это основы языка сценариев PowerShell. 
&lt;P&gt;Я надеюсь, что вы, так же как мы, поражены открывающимися возможностями. Сообщите нам что вы думаете об этом. И оставайтесь с нами, чтобы увидеть другие сценарии, которые вы также сможете пустить в дело. 
&lt;P&gt;Приложение: Пример сценария 
&lt;DIV&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;P&gt;&lt;FONT color=#0000ff&gt;#Windows PowerShell script to create a RD Server farm.

if ($args[0] -eq $null -or $args[1] -eq $null -or $args[2] -eq $null ){
    Write-Host "Insuffecient parameters.`nUsage: CreateRDFarm.ps1 SessionBroker Farmname &lt;SPAN style="COLOR: #0000ff"&gt;&amp;lt;&lt;/SPAN&gt;File containing list of RDS servers &amp;gt; &amp;lt; File containing Applications to publish &amp;gt;
    exit
}else{
    $sb = $args[0]
    $farmname = $args[1]
}

$rdsarr = get-content $args[2]
if ($rdsarr -eq $null){
    Write-Host "$args[2] cannot be read or is empty.`nUsage: CreateRDFarm.ps1 SessionBroker Farmname &amp;lt; File containing TS servers &amp;gt; &amp;lt; File containing Applications to publish &amp;gt;
    exit
}

if ($args[3] -eq $null){
    Write-Host "No file containing Apps Servers specifed. TS Remote Apps will not be published.`nUsage: CreateFarm.ps1 SessionBroker Farmname &amp;lt; File containing TS servers &amp;gt; &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt; txt file containing Applications to publish &amp;gt; .`n Farm creation will continue" -ForegroundColor yellow
}else{
    $apparr = get-content $args[3]
    if ($apparr -eq $null){
    Write-Host "$args[3] cannot be read or is empty.`nUsage: CreateRDFarm.ps1 SessionBroker Farmname &amp;lt; File containing TS servers &amp;gt; &amp;lt; File containing Applications to publish &amp;gt;"
}
}

# Check whether session broker service is running on the remote machine

$sbservice = Get-Service -ComputerName $sb -Name Tssdis
if( $sbservice.status -ne "Running"){
Write-host "Session Broker service is not running on $sb. Exiting farm creation"
exit
}


if ($rdsarr[0] -eq $null){
    Write-Host "No TS Server specified. Atleast one TS Server need to be specified.`nUsage: CreateFarm.ps1 SessionBroker Farmname TS1 TS2 ..."
    exit
}

#create a run space to run remote commands on the Session Broker server
$sb_remotesession = New-PSSession -ComputerName $sb

foreach ($rds in $rdsarr){

    #add ts server to Session Broker Computers group on SB server
    $tst = $rds+"$"
    invoke-command $sb_remotesession -ScriptBlock {
    net localgroup 'Session Broker Computers'  /add $args[0] 2&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt;$null;`
    } -ArgumentList $tst
    
    #join each ts server to sb farm. 
        
        Write-Host "Joining RD server $rds to $farmname farm" -ForegroundColor magenta
        
        $rds_remotesession = New-PSSession -ComputerName $rds

        invoke-command $rds_remotesession -ScriptBlock { `
            import-module RemoteDesktopServices ;`
            $cipaddr = dir RDS:\RDSConfiguration\ConnectionBrokerSettings\RedirectableAddresses ;`
            Set-Item RDS:\RDSConfiguration\ConnectionBrokerSettings\MemberOfFarm 1 -FarmName $args[0] -sessionbroker $args[1] -IPAddressRedirection 0 -CurrentRedirectableAddresses $cipaddr[0].Name ;`
            }`
            -ArgumentList $farmname,$sb

    #create ts remote apps
        if ($args[3] -ne $null){

            foreach ($app in $apparr){
                
                Write-Host Publishing $app on $rds -ForegroundColor magenta
                
                $ind = $app.LastIndexof("\")
                $alias = $app.SubString($ind+1,$app.LastIndexOf(".")-$ind-1)
                
                invoke-command $rds_remotesession -ScriptBlock { `
                new-item -Path RDS:\RemoteApps\PublishedApplications -Name $args[0] -ApplicationPath $args[1]`
                }`
                -ArgumentList $alias,$app
            }
        }

    #close the remote session
    Remove-PSSession $rds_remotesession
}

#close the sb runspace
Remove-PSSession $sb_remotesession&lt;/FONT&gt;
&lt;/P&gt;&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;Шанмугам Каландайвел (Shanmugam Kulandaivel)&lt;BR&gt;Remote Desktop Virtualization Services Team&lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3213589" width="1" height="1"&gt;</description></item><item><title>Использование PowerShell для защиты от Conficker (включение и отключение AutoRun.inf)</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/03/17/3213902.aspx</link><pubDate>Tue, 17 Mar 2009 15:29:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3213902</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3213902</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/03/17/3213902.aspx#comments</comments><description>&lt;P&gt;На главной странице MSN.com сегодня приведены сведения о новом черве, &lt;A href="http://tech.msn.com/news/articlepcw.aspx?cp-documentid=16883197&amp;amp;GT1=40000" mce_href="http://tech.msn.com/news/articlepcw.aspx?cp-documentid=16883197&amp;amp;GT1=40000"&gt;Conficker&lt;/A&gt;, который распространяется через старые добрые трюки с autorun.inf. Он инфицирует устройства USB так, что при подключении этих устройств в другой компьютер вредоносный код автоматически запускается и поражает машину. Статья ссылается на публикацию в &lt;A href="http://nick.brown.free.fr/blog/2007/10/memory-stick-worms.html" mce_href="http://nick.brown.free.fr/blog/2007/10/memory-stick-worms.html"&gt;блоге Ника Брауна (Nick Brown)&lt;/A&gt;, который описывает различные способы отключения файлов autorun.inf и дает файл .REG для отключения autorun.inf. 
&lt;P&gt;Вот этот файл .REG: 
&lt;DIV&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\Autorun.inf]
@="@SYS:DoesNotExist"
&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;Недавно я полюбил превращать мелкие хаки реестра в функции. Вот вам пара функций, которые я написал для автоматического внесения этих изменений в реестр с помощью PowerShell. 
&lt;DIV&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;function Disable-AutoRun
{
    $item = Get-Item `
        "REGISTRY::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping\AutoRun.inf" `
        -ErrorAction SilentlyContinue
    if (-not $item) {
        $item = New-Item "REGISTRY::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping\AutoRun.inf"
    }
    Set-ItemProperty $item.PSPath "(default)" "@SYS:DoesNotExist"
}
&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Вот пояснения Ника о том, как это работает: 
&lt;P&gt;Этот хак предлагает Windows очистить AUTORUN.INF так, как если бы он был файлом конфигурации старого приложения до времен Windows 95. IniFileMapping – это ключ, который сообщает Windows, как работать с файлами .INI, которые это приложение обычно использует для хранения данных о настройках (практиковалось до появления реестра). В этом случае он сообщает: «когда начнете работать с файлом AUTORUN.INF, не используйте значения из файла. Используйте альтернативные значения из HKEY_LOCAL_MACHINE\SOFTWARE\DoesNotExist». И поскольку этот ключ, точно, не создан, дело обстоит так, как если бы AUTORUN.INF был совершенно пуст, так что никакого автозапуска, и к двойному щелчку в Обозревателе ничего не добавляется. Результат: черви не запускаются – если только вы двойным щелчком не запустите исполняемые файлы, чтобы посмотреть, что они делают. В этом случае вы заслужили, чтобы ваш ПК был заражен. 
&lt;P&gt;Если вы захотите отменить изменения в реестре и снова включить автозапуск, можно использовать приведенную ниже функцию: 
&lt;DIV&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;function Enable-AutoRun
{
    Remove-Item "REGISTRY::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping\AutoRun.inf" -Force
}
&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;Надеюсь, это вам поможет, 
&lt;P&gt;Джеймс Брандейдж (James Brundage) [MSFT]&lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3213902" width="1" height="1"&gt;</description></item><item><title>Коммандлеты групповых политик в Windows 7</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/03/17/3213908.aspx</link><pubDate>Tue, 17 Mar 2009 14:04:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3213908</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3213908</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/03/17/3213908.aspx#comments</comments><description>&lt;P&gt;Лилия Гутник (Lilia Gutnik) опубликовала &lt;A href="http://blogs.technet.com/grouppolicy/archive/2009/01/14/introduction-to-windows-powershell-cmdlets-in-windows-7.aspx" mce_href="http://blogs.technet.com/grouppolicy/archive/2009/01/14/introduction-to-windows-powershell-cmdlets-in-windows-7.aspx"&gt;ЗДЕСЬ&lt;/A&gt; запись с примером коммандлетов групповых политик Windows 7. Посмотрите. 
&lt;P&gt;Экспериментируйте, не скучайте, подключайтесь! 
&lt;P&gt;Джеффри Сновер (Jeffrey Snover) [MSFT] &lt;BR&gt;Windows Management Partner Architect &lt;BR&gt;Посетите английский блог команды&amp;nbsp; Windows PowerShell:&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://blogs.msdn.com/PowerShell" mce_href="http://blogs.msdn.com/PowerShell"&gt;http://blogs.msdn.com/PowerShell&lt;/A&gt;&lt;BR&gt;Посетите Windows PowerShell ScriptCenter:&amp;nbsp; &lt;A href="http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx" mce_href="http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx"&gt;http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3213908" width="1" height="1"&gt;</description></item><item><title>Отладка сценария PowerShell с помощью редактора ISE</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/03/17/3213840.aspx</link><pubDate>Tue, 17 Mar 2009 13:56:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3213840</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3213840</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/03/17/3213840.aspx#comments</comments><description>&lt;p&gt;Привет, писатели и потребители сценариев с ошибками.&lt;br&gt;В этом сообщении описываются основы рабо��ы с графическим отладчиком в ISE. Здесь приведено множество отличных рекомендаций, а также несколько советов и трюков.&lt;br&gt;Отладчик поддерживает как коммандлеты, так и пользовательский интерфейс. Коммандлеты включают Enable/Disable/Get/Set/Remove-PsBreakpoint и Get-PsCallStack.&lt;br&gt;Основной способ работы – расставить в сценарии точки останова, продолжать работу (F5) для перехода от одной точки останова до другой и проходить функции, входить и выходить из них для перемещения по программе. Также можно использовать стек вызовов и указывать на переменные для получения их значений.&lt;/p&gt; &lt;p&gt;&lt;br&gt;&lt;b&gt;Точки останова&lt;br&gt;&lt;/b&gt;&lt;br&gt;Добавить точку остановка в строку просто, в любом сценарии нужно нажать клавишу F9 или воспользоваться контекстным меню (Enable Breakpoint). Однако их можно добавлять только в сохраненные сценарии. Так что если у вас есть файл untitled.ps1, сначала сохраните его с именем «powershellmademesaveyou.ps1». Так же можно работать с файлами psm1. Точки останова можно ставить на самые разные строки, вы сможете увидеть как они работают в любых циклах, в блоках сценариев, в блоках if-else, в ловушках и т.д..&lt;br&gt;Специальные точки останова можно добавлять с помощью Set-PSBreakpoint (сокращение «sbp»). Например, «sbp -command write-error» перенесет вас к команде, когда она будет исполняться, а «sbp -variable servername» будет останавливать исполнение при изменении содержимого (или обращении) к переменной $servername. Эти точки останова не выводятся на экран и должны устанавливаться/удаляться через командную строку.&lt;br&gt;Чтобы просмотреть список таких точек, перейдите к Debug-&amp;gt;List Breakpoints.&lt;br&gt;Их можно также легко удалить через контекстное меню или клавишей F9 (или через меню Debug, а также коммандлетом remove-psbreakpoint)&lt;br&gt;Точки останова также можно добавлять при остановке отладчика, но не во время активного исполнения сценария.&lt;/p&gt; &lt;p&gt;&lt;br&gt;&lt;b&gt;Навигация и исследование&lt;/b&gt;&lt;/p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;p&gt;&lt;br&gt;Навигация и исследование в ISE оформлены очень аккуратно. Для перехода от одной точки останова к другой воспользуйтесь командой Continue (F5). Чтобы перешагнуть функции нажмите F10, для входа в функцию - F11, а для выхода из функции - Shift-F11. Во время навигации легко добавить новые контрольные точки, которые можно использоваться для перешагивания через функции.&lt;br&gt;ISE автоматически откроет сценарий, в котором находится вызванная функция.&lt;br&gt;Оказавшись в интересующей вас точке, вы можете:&lt;br&gt;- Установить курсор на переменную, чтобы увидеть ее значение. Это очень быстрый способ узнать, что происходит&lt;br&gt;- Выполнить выделенный фрагмент с помощью клавиши F6. Вы можете выполнить условие блока if, чтобы узнать результат. Вы можете выполнить часть строки сценария, независимо от остального фрагмента.&lt;br&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Выполнить команду в панели команд. Вы можете проверить сложное выражение с полными настройками. Также здесь можно изменить значения переменных.&lt;br&gt;- Получить стек вызовов (Ctrl-Shift-D), чтобы узнать, как глубоко лежит ваша проблема&lt;br&gt;- Запросить справку по коммандлету, выбрав его с помощью мыши и нажав F1&lt;br&gt;Возможно это подходящий момент прекратить отладку (Shift-F5) и перезапуститься. Во время отладки сценарии блокируются, так что для продолжения редактирования вам следует прекратить отладку.&lt;/p&gt; &lt;p&gt;&lt;br&gt;&lt;b&gt;Получайте удовольствие от отладки с &lt;/b&gt;&lt;b&gt;ISE Extensions&lt;/b&gt;&lt;br&gt;&lt;/p&gt; &lt;p&gt;- Получить последнее исключение&lt;br&gt;o&amp;nbsp;&amp;nbsp; $psISE.CustomMenu.Submenus.Add('Show Exception', {$error[$Error.Count - 1].Exception | fl -f *}, "Ctrl+Shift+E")&lt;br&gt;- Информация о выборе дампа&lt;br&gt;o&amp;nbsp;&amp;nbsp; $psISE.CustomMenu.Submenus.Add('Get-Member', {iex $psISE.CurrentOpenedFile.Editor.SelectedText | gm | ft; iex $psISE.CurrentOpenedFile.Editor.SelectedText | fl -f *; }, "Ctrl+D")&lt;br&gt;- Переход к определению&lt;br&gt;o&amp;nbsp;&amp;nbsp; function GotoDefinition($commandName)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $command = gcm -CommandType Function $commandName&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $file = $command.ScriptBlock.File&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $position = $command.ScriptBlock.StartPosition&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $runspace = $psISE.CurrentOpenedRunspace&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $runspace.OpenedFiles.Add($file)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ($runspace.OpenedFiles | ?{$_.FullPath -eq $file}).Editor.SetCaretPosition($position.StartLine, $position.StartColumn)&lt;br&gt;}&lt;br&gt;$psISE.CustomMenu.Submenus.Add("GotoDefinition", {GotoDefinition $psISE.CurrentOpenedFile.Editor.SelectedText}, "Ctrl+Shift+G")&lt;br&gt;GotoDefinition не будет работать, пока функции не определены, но вы можете дополнить ее, чтобы она выполняла дополнительную работу.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/powershell_ru/WindowsLiveWriter/APIpsISE_9A0D/powershell_debugger_2.png" target="_blank" mce_href="http://blogs.technet.com/blogfiles/powershell_ru/WindowsLiveWriter/APIpsISE_9A0D/powershell_debugger_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="powershell_debugger" border="0" alt="powershell_debugger" src="http://blogs.technet.com/blogfiles/powershell_ru/WindowsLiveWriter/APIpsISE_9A0D/powershell_debugger_thumb.png" width="644" height="362" mce_src="http://blogs.technet.com/blogfiles/powershell_ru/WindowsLiveWriter/APIpsISE_9A0D/powershell_debugger_thumb.png"&gt;&lt;/a&gt; &lt;a href="http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx" mce_href="http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Надеюсь, это вам поможет,  &lt;p&gt;Ибрагим Абдул Рахим (Ibrahim Abdul Rahim) [MSFT]&lt;/p&gt; &lt;p&gt;Перевод: &lt;a href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3213840" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/powershell_ru/archive/tags/CTP3/">CTP3</category><category domain="http://blogs.technet.com/b/powershell_ru/archive/tags/PowerShell+V2/">PowerShell V2</category><category domain="http://blogs.technet.com/b/powershell_ru/archive/tags/PowerShell+ISE/">PowerShell ISE</category></item><item><title>Управление Windows Update из PowerShell</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/03/17/3213794.aspx</link><pubDate>Tue, 17 Mar 2009 11:03:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3213794</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3213794</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/03/17/3213794.aspx#comments</comments><description>&lt;P&gt;Джеймс О’Нил (James O’Neil) написал, как &lt;A href="http://blogs.technet.com/jamesone/archive/2009/01/27/managing-windows-update-with-powershell.aspx" mce_href="http://blogs.technet.com/jamesone/archive/2009/01/27/managing-windows-update-with-powershell.aspx"&gt;управлять Windows Update с помощью Windows PowerShell&lt;/A&gt; 
&lt;P&gt;Вот краткий пример того, что он может делать: 
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;EM&gt;Add&lt;/EM&gt;&lt;EM&gt;-&lt;/EM&gt;&lt;EM&gt;WindowsUpdate&lt;/EM&gt;&lt;EM&gt; –&lt;/EM&gt;&lt;EM&gt;Auto&lt;/EM&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; для загрузки обновлений и перезапуска системы, если это необходимо, &lt;BR&gt;&lt;FONT color=#0000ff&gt;&lt;EM&gt;Set&lt;/EM&gt;&lt;EM&gt;-&lt;/EM&gt;&lt;EM&gt;WindowsUpdateConfig&lt;/EM&gt;&lt;EM&gt; &lt;/EM&gt;&lt;EM&gt;-&lt;/EM&gt;&lt;EM&gt;n&lt;/EM&gt;&lt;EM&gt; 4 –&lt;/EM&gt;&lt;EM&gt;i&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/EM&gt;для установки времени проверки обновлений (включая рекомендованные) &lt;BR&gt;&lt;FONT color=#0000ff&gt;&lt;EM&gt;Get&lt;/EM&gt;&lt;EM&gt;-&lt;/EM&gt;&lt;/FONT&gt;&lt;EM&gt;&lt;FONT color=#0000ff&gt;WindowsUpdateConfig&lt;/FONT&gt;&amp;nbsp;&amp;nbsp; для проверки настроек Windows Update&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Посмотрите: 
&lt;P&gt;&lt;A href="http://blogs.technet.com/jamesone/archive/2009/01/27/managing-windows-update-with-powershell.aspx" mce_href="http://blogs.technet.com/jamesone/archive/2009/01/27/managing-windows-update-with-powershell.aspx"&gt;http://blogs.technet.com/jamesone/archive/2009/01/27/managing-windows-update-with-powershell.aspx&lt;/A&gt; 
&lt;P&gt;Надеюсь, это вам поможет, 
&lt;P&gt;Джеймс Брандейдж (James Brundage) [MSFT] &lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3213794" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/powershell_ru/archive/tags/Windows+Update/">Windows Update</category></item><item><title>Управление компонентами (Features) сервера Windows 2008 Server R2 Beta с помощью коммандлетов PowerShell</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/03/17/3213815.aspx</link><pubDate>Tue, 17 Mar 2009 10:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3213815</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3213815</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/03/17/3213815.aspx#comments</comments><description>&lt;P&gt;Если вы уже использовали Windows Server 2008, у вас, возможно, есть опыт в &lt;A href="http://technet.microsoft.com/en-us/library/cc732131.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc732131.aspx"&gt;управлении компонентами сервера.&lt;/A&gt; Server Manager – Это традиционный способ установки/удаления компонентов сервера. В &lt;A href="http://www.microsoft.com/windowsserver2008/en/us/R2-Beta.aspx" mce_href="http://www.microsoft.com/windowsserver2008/en/us/R2-Beta.aspx"&gt;Windows 2008 Server R2 Beta&lt;/A&gt; Windows PowerShell обеспечивает новый подход к управлению компонентами сервера с помощью коммандлетов PowerShell для Server Manager. В этой заметке мы поговорим о том как устанавливать компоненты сервера с помощью этих коммандлетов. 
&lt;P&gt;Для использования коммандлетов Server Manager нам требуется импортировать модуль servermanager, выполнив команду PowerShell «Import-Module servermanager». Это необходимо потому, что нужные нам коммандлеты находятся в модуле servermanager, а не являются частью встроенных коммандлетов PowerShell. 
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/powershell_ru/WindowsLiveWriter/FeaturesWindows2008ServerR2BetaPowerShel_8C6F/powershell_ws2008_2.png" target=_blank mce_href="http://blogs.technet.com/blogfiles/powershell_ru/WindowsLiveWriter/FeaturesWindows2008ServerR2BetaPowerShel_8C6F/powershell_ws2008_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="powershell server manager windows server 2008 r2" border=0 alt="powershell server manager windows server 2008 r2" src="http://blogs.technet.com/blogfiles/powershell_ru/WindowsLiveWriter/FeaturesWindows2008ServerR2BetaPowerShel_8C6F/powershell_ws2008_thumb.png" width=692 height=212 mce_src="http://blogs.technet.com/blogfiles/powershell_ru/WindowsLiveWriter/FeaturesWindows2008ServerR2BetaPowerShel_8C6F/powershell_ws2008_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;На снимке консоли выше мы видим, что модуль servermanager содержит три коммандлета PowerShell. Запустим командлет «Get-WindowsFeature», который выдаст нам список имен компонентов Windows. У нас получится довольно длинный список, поэтому я не буду приводить здесь снимок экрана. Если взять в качестве примера .NET Framework 3.5.1, имя компонента будет «NET-Framework». Мы можем пойти дальше и установить эту функцию. Следует предупредить, что для того, чтобы «Add-WindowsFeature» сработала, следует запустить PowerShell с правами администратора. 
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/powershell_ru/WindowsLiveWriter/FeaturesWindows2008ServerR2BetaPowerShel_8C6F/powershell_ws2008_1_2.png" target=_blank mce_href="http://blogs.technet.com/blogfiles/powershell_ru/WindowsLiveWriter/FeaturesWindows2008ServerR2BetaPowerShel_8C6F/powershell_ws2008_1_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="powershell add role windows server 2008 r2" border=0 alt="powershell add role windows server 2008 r2" src="http://blogs.technet.com/blogfiles/powershell_ru/WindowsLiveWriter/FeaturesWindows2008ServerR2BetaPowerShel_8C6F/powershell_ws2008_1_thumb.png" width=699 height=349 mce_src="http://blogs.technet.com/blogfiles/powershell_ru/WindowsLiveWriter/FeaturesWindows2008ServerR2BetaPowerShel_8C6F/powershell_ws2008_1_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Обратите внимание что после выполнения коммандлета «Add-WindowsFeature» в столбце «Display Name» появился знак [X]. Он указывает на то, что компонент добавлен. Чтобы убедиться в этом, всегда можно сверить результаты с тем что показывает графический интерфейс Server Manager. Кстати, эти коммандлеты позволяют управлять не только компонентами, но и ролями сервера. Так, команда «Add-WindowsFeature Web-Server» устанавливает роль Web Server (IIS). 
&lt;P&gt;Все просто, верно? 
&lt;P&gt;Ксин Ли (Xin Li) 
&lt;P&gt;Windows PowerShell Team &lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3213815" width="1" height="1"&gt;</description></item><item><title>Остановка любого экземпляра PowerShell.exe (кроме текущего)</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/03/17/3213780.aspx</link><pubDate>Tue, 17 Mar 2009 07:18:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3213780</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3213780</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/03/17/3213780.aspx#comments</comments><description>&lt;P&gt;Наш архитектор тестирования недавно ввалился ко мне в офис и подбросил вопрос по PowerShell с очень, очень интересным ответом. 
&lt;P&gt;Он захотел остановить любой процесс с указанным именем, кроме экземпляра, в котором выполняется сценарий. 
&lt;P&gt;Это можно сделать одним хорошим конвейером: 
&lt;DIV&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;FONT color=#0000ff&gt;
Get-Process Powershell  | Where-Object { $_.ID -ne $pid } | Stop-Process
&lt;/FONT&gt;&lt;/PRE&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;Get-Process получает позиционный параметр (имя), которое является шаблоном, описывающим имя искомого процесса. Он возвращает кучу объектов ProcessInfo, которые имеют свойство, ID (ID процесса). $pid – это переменная, которая сообщает вам ID текущего процесса в PowerShell. Where-Object { $_.ID -ne $pid } просто возвращает каждый экземпляр, который не является текущим. Stop-Process извлекает нужные данные из каждого объекта ProcessInfo и останавливает переданный ему процесс (здесь это любой экземпляр PowerShell, кроме текущего). 
&lt;P&gt;Еще один день и еще один вопрос о PowerShell получил свой ответ. 
&lt;P&gt;Надеюсь, это вам поможет. 
&lt;P&gt;Джеймс Брандейдж (James Brundage) [MSFT] &lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3213780" width="1" height="1"&gt;</description></item><item><title>Бесплатная электронная книга по PowerShell</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/03/09/3214035.aspx</link><pubDate>Mon, 09 Mar 2009 06:00:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3214035</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3214035</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/03/09/3214035.aspx#comments</comments><description>&lt;P&gt;PowerShell MVP и замечательный блоггер специализирующийся на PowerShell &lt;A href="http://keithhill.spaces.live.com/default.aspx" mce_href="http://keithhill.spaces.live.com/default.aspx"&gt;Кит Хилл (Keith Hill)&lt;/A&gt; собрал заметки из своей популярнейшей серии Effective PowerShell в БЕСПЛАТНУЮ электронную книгу. Ее можно загрузить &lt;A href="http://keithhill.spaces.live.com/blog/cns!5A8D2641E0963A97!6930.entry" mce_href="http://keithhill.spaces.live.com/blog/cns!5A8D2641E0963A97!6930.entry"&gt;ЗДЕСЬ&lt;/A&gt;. 
&lt;P&gt;Смотрите, что вы получите: 
&lt;P&gt;&lt;B&gt;Содержание&lt;/B&gt;&lt;BR&gt;Введение ...................................................................................................................................................................1 &lt;BR&gt;Глава 1: Четыре коммандлета – ключ к информации в PowerShell ..................................................................1 &lt;BR&gt;Ключ №1: Get-Command ..........................................................................................................................................1 &lt;BR&gt;Ключ №2: Get-Help ...................................................................................................................................................2 &lt;BR&gt;Ключ №3: Get-Member ............................................................................................................................................5 &lt;BR&gt;Ключ №4: Get-PSDrive ..............................................................................................................................................6 &lt;BR&gt;Обновления в PowerShell 2.0.....................................................................................................................................7 &lt;BR&gt;Глава 2: Разбираемся с выводом................................................................................................................................8 &lt;BR&gt;Вывод – всегда объект .NET....................................................................................................................................8 &lt;BR&gt;Вывод функции содержит все, что не перехвачено.................................................................................................9 &lt;BR&gt;Другие типы вывода, которые не перехватываются.............................................................................................. 11 &lt;BR&gt;Глава 3: Узнайте, какие объекты идут по конвейеру........................................................................................... 12 &lt;BR&gt;Глава 4: Вывод множеств - скаляры, коллекции и пустые наборы – о боже! ................................................. 15 &lt;BR&gt;Работа со скалярами.............................................................................................................................................. 15 &lt;BR&gt;Работа с коллекциями........................................................................................................................................... 16 &lt;BR&gt;Работа с пустыми наборами................................................................................................................................. 17 &lt;BR&gt;Глава 5: Используй объекты, Люк. Используй объекты! ................................................................................. 19 &lt;BR&gt;Глава 6: Узнайте форматирование вывода.......................................................................................................... 22 &lt;BR&gt;Глава 7: Режимы разбора PowerShell ................................................................................................................ 31 &lt;BR&gt;Глава 8: Параметры связывания конвейера ByPropertyName .......................................................................... 35 &lt;BR&gt;Глава 9: Параметры связывания конвейера ByValue ......................................................................................... 38 &lt;BR&gt;Глава 10: Регулярные выражения – один из мощных инструментов PowerShell ............................................. 42 &lt;BR&gt;Обновления в PowerShell 2.0 ................................................................................................................................. 43 &lt;BR&gt;Глава 11: Сравнение массивов................................................................................................................................ 43 &lt;BR&gt;Глава 12: Используйте в сценариях Set-PSDebug -Strict - добросовестно.......................................................... 45 &lt;BR&gt;Обновления в PowerShell 2.0 .................................................................................................................................. 47 &lt;BR&gt;Глава 13: Комментирование строк в файле сценария.......................................................................................... 47 &lt;BR&gt;Обновления в PowerShell 2.0 .................................................................................................................................. 48 
&lt;P&gt;Экспериментируйте, не скучайте, подключайтесь! 
&lt;P&gt;Джеффри Сновер (Jeffrey Snover) [MSFT] &lt;BR&gt;Windows Management Partner Architect &lt;BR&gt;Посетите английский блог команды&amp;nbsp; Windows PowerShell:&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://blogs.msdn.com/PowerShell" mce_href="http://blogs.msdn.com/PowerShell"&gt;http://blogs.msdn.com/PowerShell&lt;/A&gt;&lt;BR&gt;Посетите Windows PowerShell ScriptCenter:&amp;nbsp; &lt;A href="http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx" mce_href="http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx"&gt;http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3214035" width="1" height="1"&gt;</description></item><item><title>Саммит MVP 2009</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/03/02/3214042.aspx</link><pubDate>Mon, 02 Mar 2009 04:28:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3214042</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3214042</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/03/02/3214042.aspx#comments</comments><description>&lt;P&gt;Вчера начался саммит MVP, а сегодня мы встретились с нашими MVP. Это одно из самых любимых событий года. MVP – это люди сообщества, которые очень активны (и полезны [да – и то, и другое :-)] ). Каждый из них занимается в сообществе определенной технологией. Мы каждый год собираем их вместе и получаем отличный обмен идеями. Мы говорим им, что мы делаем и чего хотим добиться, а они дают нам свои комментарии и отзывы. MVP – это неоценимый источник связи с реальным миром по нашей технологии. 
&lt;P&gt;В этом году я действительно поражен, потому что я участвовал организации и выступал во время дискуссии «Состояние PowerShell» вместе с Кеннетом Хансеном (Kenneth Hansen). Кен был председателем, и я был действительно поражен его подходом. Мы с Кеном пришли к выводу, что не знаем, видят ли люди все аспекты «большой картины», и мы пытались понять, как о них говорить. Мы с Кеном в пятницу просматривали слайды презентации, и я подумал, что он сделал отличное дело, представив эти идеи. Это был один из тех разговоров «за сценой», в которых мы обсуждали, что представляет собой проблема, как мы будем подходить к ней, где мы находимся и куда направляемся. К счастью, это было общение после которого люди расходятся, говоря «ТЕПЕРЬ я понимаю, зачем ты это делал». 
&lt;P&gt;MVP великолепны, поскольку они всегда скажут вам, если вы делаете что то непонятное или очевидное. &lt;B&gt;&lt;I&gt;Честное зеркало&lt;/I&gt;&lt;/B&gt; трудно найти, и оно исключительно ценно. Мы сегодня обнаружили, что проговорили до 9. 
&lt;P&gt;Экспериментируйте, не скучайте, подключайтесь!&lt;/P&gt;
&lt;P&gt;Джеффри Сновер (Jeffrey Snover) [MSFT] &lt;BR&gt;Windows Management Partner Architect &lt;BR&gt;Посетите английский блог команды&amp;nbsp; Windows PowerShell:&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://blogs.msdn.com/PowerShell" mce_href="http://blogs.msdn.com/PowerShell"&gt;http://blogs.msdn.com/PowerShell&lt;/A&gt;&lt;BR&gt;Посетите Windows PowerShell ScriptCenter:&amp;nbsp; &lt;A href="http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx" mce_href="http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx"&gt;http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3214042" width="1" height="1"&gt;</description></item><item><title>Фолксономия PowerShell – вы в теме?</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/03/01/3214116.aspx</link><pubDate>Sun, 01 Mar 2009 09:14:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3214116</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3214116</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/03/01/3214116.aspx#comments</comments><description>&lt;P&gt;Недавно я провел несколько экспериментов с &lt;A href="http://en.wikipedia.org/wiki/Folksonomy" mce_href="http://en.wikipedia.org/wiki/Folksonomy"&gt;фолксономией&lt;/A&gt; PowerShell. Идея состояла в том, чтобы пометить содержимое Интернета (блоги, комментарии, ответы в группах новостей и т.д.) уникальными тегами, которые могли бы воспринимать поисковые машины, чтобы облегчить извлечение необходимой информации. 
&lt;P&gt;Эти усилия были результатом битвы связанной с созданием документации. Особенно ожесточенно мы вели борьбу за использование термина &lt;B&gt;коммандлет&lt;/B&gt;. Коммандлет - это слово, который я создал, чтобы описывать команды PowerShell. Я хотел показать, что это такие маленькие штучки, которые соединяются с другими маленькими штучками для решения больших проблем. Одной из причин, по которым я был предан идее «маленьких» коммандлетов, было то, что я знал, что группа разработки сопротивлялась «налогу» на написание слова «комманды». Я хотел быть в состоянии начать целую дискуссию с исходным условием, что мы просим их проделать совсем немного добавочной работы. 
&lt;P&gt;&lt;I&gt;Позвольте, я поправлю запись об этом.&lt;/I&gt;&lt;I&gt; &lt;/I&gt;&lt;I&gt;&lt;/I&gt;&lt;I&gt;Джим Трухер (&lt;/I&gt;&lt;I&gt;Jim&lt;/I&gt;&lt;I&gt; &lt;/I&gt;&lt;I&gt;Truher&lt;/I&gt;&lt;I&gt;)напомнил мне, чтов начале я пытался протоклнуть термин «Функциональный элемент» (&lt;/I&gt;&lt;I&gt;Functional&lt;/I&gt;&lt;I&gt; &lt;/I&gt;&lt;I&gt;Unit&lt;/I&gt;&lt;I&gt;, &lt;/I&gt;&lt;I&gt;FU&lt;/I&gt;&lt;I&gt;) [надеюсь вы поняли мою хитрость?] и что на самом деле термин «коммандлет» придумал он, а не я.&lt;/I&gt;&lt;I&gt; &lt;/I&gt;&lt;I&gt;&lt;/I&gt;&lt;I&gt;Попытка внедрить «&lt;/I&gt;&lt;I&gt;FU&lt;/I&gt;&lt;I&gt;» напомнила мне о замечательной истории Дейва Катлера (&lt;/I&gt;&lt;I&gt;Dave&lt;/I&gt;&lt;I&gt; &lt;/I&gt;&lt;I&gt;Cutler&lt;/I&gt;&lt;I&gt;), которую я как-то слышал.&lt;/I&gt;&lt;I&gt; &lt;/I&gt;&lt;I&gt;&lt;/I&gt;&lt;I&gt;Не ждите – я не расскажу ТУ историю в блоге – никогда, просто не обращайте на нее внимания. &lt;/I&gt;
&lt;P&gt;Перспектива документирования была такой, что мы не должны изобретать новые слова, ведь имеется отличный устоявшийся термин («команда»). Мы рассмотрели ситуацию с разных сторон, решающим аргументом стало то, что происходит после ввода предполагаемых ключевых слов в поисковые машины. 
&lt;TABLE border=1 cellSpacing=0 cellPadding=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=163&gt;
&lt;P&gt;Слово для поиска&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=165&gt;
&lt;P&gt;Live Search&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=165&gt;
&lt;P&gt;Google&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=163&gt;
&lt;P&gt;Команда&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=165&gt;
&lt;P&gt;102,000,000&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=165&gt;
&lt;P&gt;200,000,000&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=163&gt;
&lt;P&gt;Коммандлет&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=166&gt;
&lt;P&gt;29,600&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=166&gt;
&lt;P&gt;107,000&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=163&gt;
&lt;P&gt;Соотношение&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=166&gt;
&lt;P&gt;3446x&lt;/P&gt;&lt;/TD&gt;
&lt;TD vAlign=top width=166&gt;
&lt;P&gt;1869x&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Используя термин «коммандлет», мы повышаем соотношение сигнал-шум для поисковых машин и обеспечиваем нашим потребителям гораздо более полезный результат. 
&lt;P&gt;Я начал думать об этом и мне стало любопытно, нельзя ли еще более улучшить ситуацию, введя уникальный тег PSMDTAG&amp;nbsp; (PowerShell MetaData TAG) и соглашение по его использованию так, чтобы люди могли использовать этот тег, чтобы более точно находить требуемое. 
&lt;P&gt;Я приправлял все создаваемое мной содержимое этим тегом, экспериментировал с различными тегами-расширениями и смотрел, как на них реагируют поисковые машины. В некоторых случаях я отвлекался и прекращал это делать, но кто-то каждый раз снова об этом упоминал, и я возвращался к экспериментам. &lt;B&gt;Для достижения успеха нужно участие всего сообщества, поэтому я хотел бы узнать действительно ли то в чем все заинтересованы поучаствовать&lt;/B&gt;. 
&lt;P&gt;Давайте начнем с простого – зайдите в свой любимый поисковик, наберите PSMDTAG:FAQ&amp;nbsp; и посмотрите на результаты поиска. Вы найдете не слишком много, поскольку я занимаюсь этим не так давно. Заметьте, что результаты поиска выдают вам большинство типичных часто встречающихся вопросов FAQ. Затем попробуйте что-нибудь вроде: 
&lt;P&gt;psmdtag:faq prompt &lt;BR&gt;psmdtag:faq delegate &lt;BR&gt;psmdtag:faq wmi method &lt;BR&gt;psmdtag:faq base64 
&lt;P&gt;Скажу еще раз – вы не сойдете с ума от изобилия, поскольку я пока расставил не слишком много тегов. Вопросы, которые я хочу задать: 
&lt;OL&gt;
&lt;LI&gt;Полезно ли это? 
&lt;LI&gt;Достаточно или это полезно для вас, чтобы вы начали помечать тегом свои материалы или добавлять теги в комментарии к материалам других людей? 
&lt;OL&gt;
&lt;LI&gt;Посмотрите на &lt;A href="http://mshforfun.blogspot.com/2006/05/perfect-prompt-for-windows-powershell.html" mce_href="http://mshforfun.blogspot.com/2006/05/perfect-prompt-for-windows-powershell.html"&gt;ЭТО&lt;/A&gt;. Я использую комментарии для пометки тегами чужих материалов. &lt;/LI&gt;&lt;/OL&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;PSMDTAG:FAQ Что такое PSMDTAG? &lt;BR&gt;PSMDTAG:FAQ&amp;nbsp; Будет ли PowerShell иметь собственную фолксономию? 
&lt;P&gt;Экспериментируйте, не скучайте, подключайтесь! 
&lt;P&gt;Джеффри Сновер (Jeffrey Snover) [MSFT] &lt;BR&gt;Windows Management Partner Architect &lt;BR&gt;Посетите английский блог команды&amp;nbsp; Windows PowerShell:&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://blogs.msdn.com/PowerShell" mce_href="http://blogs.msdn.com/PowerShell"&gt;http://blogs.msdn.com/PowerShell&lt;/A&gt;&lt;BR&gt;Посетите Windows PowerShell ScriptCenter:&amp;nbsp; &lt;A href="http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx" mce_href="http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx"&gt;http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3214116" width="1" height="1"&gt;</description></item><item><title>Откуда это взялось?</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/03/01/3214135.aspx</link><pubDate>Sun, 01 Mar 2009 08:37:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3214135</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3214135</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/03/01/3214135.aspx#comments</comments><description>&lt;P&gt;Доводилось ли вам раньше задавать себе вопрос: «откуда ЭТО взялось?» 
&lt;P&gt;В PowerShell мы постарались дать вам механизм, который можно использовать для ответов на подобные вопросы. Мы потратили для этого дополнительные ресурсы (память, циклы ЦПУ и т.д.), для нас важнее производительность ЛЮДЕЙ, использующих наши программы, а не на производительность кода. Когда что-то принимает неправильную форму, важно, как быстро человек может понять, что происходит и исправить положение. 
&lt;P&gt;Раньше мы немного говорили об этом, но лишь в контексте обширной информации об ошибках, которую мы собираем. Но в этом блоге я хочу обсудить другую функцию V1, а затем рассказать вам о ДРУГОМ любимом мною V2-изме. 
&lt;P&gt;Вы знаете, что переменные выступают в качестве устройства и с ними можно делать такие вещи:&lt;/P&gt;
&lt;DIV&gt;&lt;PRE class=csharpcode&gt;&lt;FONT color=#8000ff&gt;PS&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt; dir Variable:s* 
Name                           Value 
----                           ----- 
ShellId                        Microsoft.PowerShell&lt;/FONT&gt;
&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;А так вы пробовали? 
&lt;DIV&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;FONT color=#8000ff&gt;PS&lt;SPAN style="COLOR: #0000ff"&gt;&amp;gt;&lt;/SPAN&gt; dir Variable:s* |ft Name,&lt;FONT color=#ff0000&gt;Description&lt;/FONT&gt; -auto 
Name       Description 
----       ----------- 
ShellId    The ShellID identifies the current shell.  This is used by #Requires. 
StackTrace&lt;/FONT&gt;
&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;Вы об этом знали? Переменные содержат гораздо больше сведений, чем может увидеть невооруженный глаз! Вы можете задать описание переменной, используя команду Set-Variable&amp;nbsp; 
&lt;DIV&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;FONT color=#0000ff&gt;
PS&amp;gt; Set-Variable X 15 -Description "This is a test" 
PS&amp;gt; Get-Variable x |fl * 
Name        : x 
Description : This is a test 
Value       : 15 
Visibility  : Public 
Module      : 
ModuleName  : 
Options     : None 
Attributes  : {}

&lt;/FONT&gt;&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;Это работало, начиная с PowerShell V1, но тогда мы были не в состоянии ответить на вопрос – откуда взялась эта &lt;B&gt;функция&lt;/B&gt;? 
&lt;P&gt;Каждый раз когда я начинаю работать с PowerShell, первым делом с поvощью механизма dotsourcing я подключаю множество сценариев, которые определяют функции. Иногда я решал, что одна из постоянно используемых функций, нуждается в улучшении и должна работать иначе. Возникал вопрос, в каком файле была описана эта функция? Нормального способа ответить на этот вопрос не было. В PowerShell V2 все изменилось. 
&lt;P&gt;В V2 мы расширили объект SCRIPTBLOCK добавив в него параметр FILE, благодаря которому можно посмотреть в каком файле была объявлена функция.&amp;nbsp; Для получения всей информации о Scriptblock, необходимо использовать флаг -FORCE в командах форматирования. 
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;FONT color=#0000ff&gt;
[4376:0]PS&amp;gt; (dir function:prompt ).scriptblock |fl * 
    if ($PSDebugContext) 
    { "DBG&amp;gt;" 
    } 
    else 
    { 
        "[{0}:{1}]PS&amp;gt; " -f $PID, $NestedPromptLevel 
    } 
[4376:0]PS&amp;gt; (dir function:prompt ).scriptblock |fl * &lt;FONT color=#ff0000&gt;-force&lt;/FONT&gt; 
IsFilter      : False 
StartPosition : System.Management.Automation.PSToken 
&lt;FONT color=#ff0000&gt;File          : D:\ps\profile.ps1&lt;/FONT&gt; 
Attributes    : {} 
Module        :
&lt;/FONT&gt;&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;Теперь мы получили все что нам нужно, и можем обращаться к этим сведениям напрямую: 
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;FONT color=#0000ff&gt;
[4376:0]PS&amp;gt; (dir function:prompt ).scriptblock.file 
D:\ps\profile.ps1

&lt;/FONT&gt;&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;PSMDTAG:FAQ: Как узнать, где определена функция? &lt;BR&gt;(dir function:X).ScriptBlock.File 
&lt;P&gt;Экспериментируйте, не скучайте, подключайтесь! 
&lt;P&gt;Джеффри Сновер (Jeffrey Snover) [MSFT] &lt;BR&gt;Windows Management Partner Architect &lt;BR&gt;Посетите английский блог команды&amp;nbsp; Windows PowerShell:&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://blogs.msdn.com/PowerShell" mce_href="http://blogs.msdn.com/PowerShell"&gt;http://blogs.msdn.com/PowerShell&lt;/A&gt;&lt;BR&gt;Посетите Windows PowerShell ScriptCenter:&amp;nbsp; &lt;A href="http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx" mce_href="http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx"&gt;http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3214135" width="1" height="1"&gt;</description></item><item><title>Преобразование в массив</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/02/27/3214144.aspx</link><pubDate>Fri, 27 Feb 2009 12:27:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3214144</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3214144</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/02/27/3214144.aspx#comments</comments><description>&lt;P&gt;При запуске конвейера PowerShell этот конвейер может вернуть 0, 1 или несколько элементов. Если вы присваиваете результат конвейера переменной, вы получите $null, один элемент или массив элементов, соответственно. Часще всего вы не обращаете внимание на то какие типы возвращаются, но иногда вы предпочли бы принудительно приводить результат, чтобы он всегда представлял собой массив. В этих случаях вы можете использовать @( ... ). Например: 
&lt;DIV&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;FONT color=#0000ff&gt;$a = @(get-childitem)
&lt;/FONT&gt;&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;При этом выражение, заключенное в скобки, вычисляется и результаты помещаются в массив. Если результаты отсутствуют, вы получите массив нулевой длины. 
&lt;P&gt;Это обычно работает достаточно хорошо, но я обнаружил, что я обычно решаю, что мне нужен массив, уже глубоко закопавшись в написание конвейера. После этого мне приходится сдвигать курсор к началу конвейера, чтобы вставить «@(». Несколько раз повторив эту операцию, я устал и решил, что лучше буду добавлять в конец конвейера что-нибудь, что преобразует результаты в массив. Так родилась моя функция ToArray. 
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;FONT color=#0000ff&gt;
function ToArray
{
  begin
  {
    $output = @(); 
  }
  process
  {
    $output += $_; 
  }
  end
  {
    return ,$output; 
  }
}

&lt;/FONT&gt;&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;Достаточно просто, да? Начальный блок создает новый пустой массив. Блок обработки, который вызывается для каждого элемента конвейера, добавляет элемент к массиву, а конечный блок просто помещает этот массив в массив длиной 1 и записывает его в конвейер. Мне приходится помещать массив $output в массив из 1-го элемента, поскольку конвейер раскрывает все перечисления (ну ладно, почти все). Этот способ просто раскрывает массив из 1-го элемента и находит, что осталось в моем исходном массиве. 
&lt;P&gt;Вы должны знать, что это не самый производительный способ. Для каждого элемента я создаю новый массив. Если я помещаю в конвейер множество элементов, мне веросятно было бы лучше использовать ArrayList, в конце преобразуя его в массив. Я оставляю это вам в качестве упражнения. 
&lt;P&gt;Для меня это срабатывает. Это несложно и упрощает мне жизнь. Теперь если мне нужно создать массив результатов, я просто передаю их в ToArray. Мне больше не нужно возвращаться в начало конвейера. :-) 
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;FONT color=#0000ff&gt;$a = get-childitem | ToArray
&lt;/FONT&gt;&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;- Марсель Ортиц Сото (Marcel Ortiz Soto) [MSFT] 
&lt;P&gt;P.S. Если вам кажется, что ToArray – это слишком длинно, создайте сокращение.&lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3214144" width="1" height="1"&gt;</description></item><item><title>Разговор на JAOO</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/02/10/3213782.aspx</link><pubDate>Tue, 10 Feb 2009 04:51:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3213782</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3213782</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/02/10/3213782.aspx#comments</comments><description>&lt;P&gt;В прошлом году я был рад выступить на конференции JAOO. Это отличная конференция по языкам программирования. Я был рад обнаружить, что хотя у меня был доклад по технологиям Microsoft (AndersH дал мне один из ключевых докладов), большинство людей и докладов не имели отношения к Microsoft. Это позволило мне побеседовать на самые разные темы. Дало возможность вернуться к основам и объяснить, что мы делаем и как мы это делаем, людям, которым не обязательно имели хотя бы базовую подготовку и которые потенциально не особенно дружественно настроены по отношению к Microsoft. (У меня есть веселая история по этому поводу – спросите меня как-нибудь лично и я расскажу.) 
&lt;P&gt;Надеюсь, вы получите удовольствие от &lt;A href="http://blog.jaoo.dk/2009/02/09/windows-powershell-a-command-line-shell-and-scripting-language/" mce_href="http://blog.jaoo.dk/2009/02/09/windows-powershell-a-command-line-shell-and-scripting-language/"&gt;ЭТОГО&lt;/A&gt; выступления. 
&lt;P&gt;Экспериментируйте, не скучайте, подключайтесь! 
&lt;P&gt;Джеффри Сновер (Jeffrey Snover) [MSFT] &lt;BR&gt;Windows Management Partner Architect &lt;BR&gt;Посетите английский блог команды&amp;nbsp; Windows PowerShell:&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://blogs.msdn.com/PowerShell" mce_href="http://blogs.msdn.com/PowerShell"&gt;http://blogs.msdn.com/PowerShell&lt;/A&gt;&lt;BR&gt;Посетите Windows PowerShell ScriptCenter:&amp;nbsp; &lt;A href="http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx" mce_href="http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx"&gt;http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3213782" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/powershell_ru/archive/tags/Video/">Video</category></item><item><title>Разница между версиями Windows PowerShell</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/02/06/3213792.aspx</link><pubDate>Fri, 06 Feb 2009 10:36:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3213792</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3213792</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/02/06/3213792.aspx#comments</comments><description>&lt;P&gt;MVP по PowerShell Ойсин Грехан (Oisín Grehan) сделал действительно большую работу, описав то чем отличаются друг от друга разные выпуски PowerShell. 
&lt;P&gt;V1 и CTP3 &lt;A href="http://www.nivot.org/2009/02/04/DifferencesBetweenPowerShell10RTMAndPowershell20CTP3Win7Beta.aspx" mce_href="http://www.nivot.org/2009/02/04/DifferencesBetweenPowerShell10RTMAndPowershell20CTP3Win7Beta.aspx"&gt;http://www.nivot.org/2009/02/04/DifferencesBetweenPowerShell10RTMAndPowershell20CTP3Win7Beta.aspx&lt;/A&gt; 
&lt;P&gt;CTP2 и CTP3 &lt;A href="http://www.nivot.org/2008/12/23/PowerShell20CTP3HasArrived.aspx" mce_href="http://www.nivot.org/2008/12/23/PowerShell20CTP3HasArrived.aspx"&gt;http://www.nivot.org/2008/12/23/PowerShell20CTP3HasArrived.aspx&lt;/A&gt; 
&lt;P&gt;Ойсин, большое спасибо!. 
&lt;P&gt;Осама Саджид (Osama Sajid) [MSFT] &lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3213792" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/powershell_ru/archive/tags/CTP3/">CTP3</category></item><item><title>Rename-Drive : Переименование устройств с помощью PowerShell и WMI</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/01/27/3213801.aspx</link><pubDate>Tue, 27 Jan 2009 12:31:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3213801</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3213801</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/01/27/3213801.aspx#comments</comments><description>&lt;P&gt;Шейн Бартон (Shane Burton) из &lt;A href="http://www.compellent.com/" mce_href="http://www.compellent.com/"&gt;Compellent&lt;/A&gt; попросил меня помочь ему с переименованием устройства в PowerShell. Для переименования устройства можно использовать разные классы WMI, &lt;A href="http://msdn.microsoft.com/en-us/library/aa394515.aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa394515.aspx"&gt;Win32_Volume&lt;/A&gt;, и &lt;A href="http://msdn.microsoft.com/en-us/library/aa394173.aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa394173.aspx"&gt;Win32_LogicalDisk&lt;/A&gt;. Устройство изменяется путем выбора имени свойства объекта WMI (Label в Win32_Volume и VolumeName в Win32_LogicalDisk) с последующим возвращением его в репозиторий WMI с помощью метода Put(). @", @" WMI и PowerShell вместе позволяют сделать множество отличных штук. Если вы хотите быстро найти, что можно сделать с помощью WMI в PowerShell, просмотрите мою раннюю заметку: &lt;A href="http://blogs.msdn.com/powershell/archive/2007/09/24/get-wmihelp-search-wmihelp.aspx" mce_href="http://blogs.msdn.com/powershell/archive/2007/09/24/get-wmihelp-search-wmihelp.aspx"&gt;Get-WmiHelp / Search-WMIHelp&lt;/A&gt;. 
&lt;P&gt;Вот моя функция Rename-Drive: 
&lt;P&gt;Rename-Drive 
&lt;P&gt;&lt;B&gt;Краткое описание:&lt;/B&gt; 
&lt;P&gt;Переименовывает устройство с помощью WMI 
&lt;P&gt;&lt;B&gt;Синтаксис:&lt;/B&gt; 
&lt;P&gt;Rename-Drive [[-deviceID] [&amp;lt;Object&amp;gt;]] [[-name] [&amp;lt;Object&amp;gt;]] [&amp;lt;CommonParameters&amp;gt;] 
&lt;P&gt;&lt;B&gt;Подробное&lt;/B&gt;&lt;B&gt; описание&lt;/B&gt;&lt;B&gt;:&lt;/B&gt; 
&lt;P&gt;Использует класс Win32_LogicalDisk для переименования устройства с помощью WMI. Должна запускаться с правами администратора 
&lt;P&gt;Примеры: 
&lt;DIV&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;FONT color=#8000ff&gt;-------------------------- Пример 1 --------------------------

# Sets the name of C: to FooBar
Rename-Drive C: FooBar

    
    -------------------------- Пример 2 --------------------------

# Resets the name of C:
Rename-Drive C:&lt;/FONT&gt;
&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Текст функции Rename-Drive:&lt;/P&gt;
&lt;DIV&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;FONT color=#8000ff&gt;function Rename-Drive {
              
    #.Synopsis
    #    Renames a drive with WMI
    #.Description 
    #    Uses the Win32_LogicalDisk class to rename a drive using WMI.  Must be running as administrator to use    
    #.Example    
    #    # Sets the name of C: to FooBar
    #    Rename-Drive C: FooBar
    #.Example
    #    # Resets the name of C:
    #    Rename-Drive C:     
    param($deviceID = "C:", $name)
$drive = Get-WmiObject "Win32_LogicalDisk WHERE DeviceID='$deviceID'"
    if (-not $drive) { return }                      
    $drive.VolumeName = $name
    $null = $drive.Put()

}&lt;/FONT&gt;
&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;Надеюсь, это вам поможет, 
&lt;P&gt;Джеймс Брандейдж (James Brundage) [MSFT]&lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3213801" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/powershell_ru/archive/tags/WMI/">WMI</category></item><item><title>Почему следует проводить тестирование с помощью PowerShell?</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/01/19/3213903.aspx</link><pubDate>Mon, 19 Jan 2009 12:40:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3213903</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3213903</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/01/19/3213903.aspx#comments</comments><description>&lt;P&gt;Сегодня в нашем внутреннем списке рассылки кто-то спросил, есть ли преимущества у тестирования с использованием PowerShell против C#. 
&lt;P&gt;Я смог назвать 10 кратких причин для тестирования с помощью PowerShell: 
&lt;OL&gt;
&lt;LI&gt;В PowerShell проще запускать программы с командной строкой 
&lt;LI&gt;Динамическая генерация кода или тестовых данные (значительно облегчается размываемое или управляемое данными тестирование) 
&lt;LI&gt;Упрощается доступ к COM при использовании PowerShell 
&lt;LI&gt;Возможность вставлять PowerShell в C# (так можно уйти от необходимости написания тестовой среды, просто враивайте PowerShell в вашу инфраструктуру) 
&lt;LI&gt;Возможность использования в PowerShell переменных со слабой типизацией 
&lt;LI&gt;Возможность тестирования API в командной строке. Сначала тестируете вручную а затем автоматизируете процесс 
&lt;LI&gt;Получение истории команд для извлечения проанализированных последовательностей и перевода их в ранг сценария тестирования 
&lt;LI&gt;Возможность жесткого задания или принудительной установки типов 
&lt;LI&gt;Поддержка потоков расширенного вывода, предупреждений и отладочной информации, предоставление дополнительной информации о тестировании 
&lt;LI&gt;Возможность использования административных функций PowerShell для создания или очистки тестовой среды &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Я надеюсь, эти причины помогут убедить тестировщиков программного обеспечения использовать PowerShell. Это действительно может сильно упростить тестирование.&lt;/P&gt;
&lt;P&gt;Надеюсь, это вам поможет, 
&lt;P&gt;Джеймс Брандейдж (James Brundage) [MSFT]&lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3213903" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/powershell_ru/archive/tags/PHILOSOPHY/">PHILOSOPHY</category><category domain="http://blogs.technet.com/b/powershell_ru/archive/tags/Testing/">Testing</category></item><item><title>Как создать ваш собственный репозиторий модулей</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/01/16/3213927.aspx</link><pubDate>Fri, 16 Jan 2009 11:52:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3213927</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3213927</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/01/16/3213927.aspx#comments</comments><description>&lt;P&gt;Энди Шнайдер (Andy Schneider) (из &lt;A href="http://get-powershell.com/" mce_href="http://get-powershell.com/"&gt;Get-PowerShell.com&lt;/A&gt;) недавно спросил меня, как он может проверить, что каждый из сотрудников &lt;A href="http://www.avanade.com/" mce_href="http://www.avanade.com/"&gt;Avanade&lt;/A&gt; может получить целостный набор модулей. Я столкнулся с похожей проблемой здесь, в Microsoft, когда захотел взять сценарии, которые написал для работы с внутренними приложениями, и упростить их использование для других людей, даже для тех кто не умеет работать с PowerShell. Я не хотел делать сценарии широкодоступными (кроме всего прочего, что люди вне Microsoft будут делать со сценарием, который работает с Product Studio?), но я хотел, чтобы сценарии (и PowerShell) устанавливались или обновлялись одним щелчком мыши. 
&lt;P&gt;На самом деле Сделать это просто. Все, что мне понадобилось, это совместное использование файлов в Windows. Я поместил этот небольшой командный файл (InstallModule.cmd) и создал две подпапки, x86 (куда поместил файл x86 CTP3 msi) и amd64 (для amd64 CTP msi). Когда я опубликовал файл .CMD в блоге команды PowerShell, мне захотелось принять душ, но в данном случае это было необходимое зло. 
&lt;P&gt;Вот модуль InstallModule.cmd: 
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;if exist %windir%\system32\WindowsPowerShell\v1.0\powershell.exe goto :AlreadyInstalled
\\MyServer\MyShare\%processor_architecture%\PowerShell_Setup.msi
:AlreadyInstalled
echo %~dp0
xcopy "%~dp0\%1" "%userprofile%\Documents\WindowsPowerShell\Modules\%1" /y /s /i /d
&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Простите, я тут принимал душ... Вы все еще здесь? Я чувствую себя лучше. Опубликовав этот сценарий .CMD в блоге PowerShell, я почувствовал себя грязным , но примерно через 5 минут отдыха в положении плода мне стало достаточно комфортно, чтобы привести пояснения. 
&lt;P&gt;Первая строка переходит в каталог Windows (%windir%) и проверяет наличие там powershell.exe. Если он там есть, происходит переход на метку :AlreadyInstalled, и процедура установки пропускается. Если его там нет, сценарий переходит в каталог с соответствующим .MSI и устанавливает PowerShell. echo %~dp0 производит вывод места, где находится файл .CMD InstallModule.cmd. Это был искусственный объект, когда я его писал, но для следующего, кто запустит этот сценарий, это будет нормальной проверкой. В последней строке для установки модуля используется особая магия командных файлов и команда xcopy. %~dp0\%1 переводит работу в подкаталог каталога, где находится InstallModule.cmd + первый аргумент, так что если вы скажете \\MyServer\MyShare\InstallModule FooBar, сценарий будет копировать из \\MyServer\MyShare\FooBar. Место назначения немного проще: это %userprofile% (в моем случае C:\Users\JamesBru) + \Documents\WindowsPowerShell\Modules\&lt;EM&gt;ModuleName&lt;/EM&gt;. Первый флаг (/y) скрывает подсказки ввода. Второй флаг (/s) копирует подкаталоги. Третий флаг (/i) указывает, что место назначения является каталогом. Последний флаг (/d) указывает, что если каталог уже создан, я хочу копировать файлы, которые &lt;EM&gt;новее, &lt;/EM&gt;чем файлы в этом каталоге. Это означает, что я могу обновлять модули, просто помещая новые файлы в папку с общим доступом, и затем запускаю InstallModule.cmd. XCopy работает, но мне нужно снова принять душ. 
&lt;P&gt;Вы все еще здесь? Хорошо. 
&lt;P&gt;Теперь можно просто создать в \\MyServer\MyShare множество папок, содержащих модули. Для этого сценария не имеет значения, что это за модули – скомпилированные программы или сценарии. Если вы хотите упростить установку одного модуля, вы можете поместить его в небольшой файл, такой как InstallMyModule.cmd. InstallMyModule.cmd всегда очень прост. Вот, например: \\myServer\MyShare\InstallModule.cmd MyModule. Поскольку каждый модуль устанавливается в каталог пользователя, вам даже не надо беспокоиться о запуске InstallMyModule.cmd с повышеными привилегиями. 
&lt;P&gt;Я искренне извиняюсь за то что опубликовал скрипты для CMD в блоге команды PowerShell. Но надеюсь эта полезная информация позволит вам устанавливать столько репозиториев мелких модулей, сколько потребуется, и упростит обычным пользователям начало использования PowerShell. 
&lt;P&gt;Надеюсь, это вам поможет, 
&lt;P&gt;Джеймс Брандейдж (James Brundage) [MSFT]&lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3213927" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/powershell_ru/archive/tags/CTP3/">CTP3</category><category domain="http://blogs.technet.com/b/powershell_ru/archive/tags/Module/">Module</category></item><item><title>Присоединяйтесь ко мне в ночном подкасте Power Scripting @ 9PM EST (6PM PST)</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/01/15/3213929.aspx</link><pubDate>Thu, 15 Jan 2009 09:28:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3213929</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3213929</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/01/15/3213929.aspx#comments</comments><description>&lt;P&gt;Я собираюсь провести ночной подкаст PowerScripting @ 9PM EST. Это живой чат, в котором вы можете задавать вопросы и вынимать мозг тестеру/заядлому сценаристу из команды PowerShell. 
&lt;P&gt;Это должно быть здорово. Я надеюсь увидеть здесь ваши вопросы. 
&lt;P&gt;&lt;A href="http://powerscripting.wordpress.com/2009/01/14/tomorrow-on-powerscripting-live-james-brundage/" mce_href="http://powerscripting.wordpress.com/2009/01/14/tomorrow-on-powerscripting-live-james-brundage/"&gt;http://powerscripting.wordpress.com/2009/01/14/tomorrow-on-powerscripting-live-james-brundage/&lt;/A&gt; 
&lt;P&gt;Надеюсь, это вам поможет, 
&lt;P&gt;Джеймс Брандейдж (James Brundage) [MSFT] &lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3213929" width="1" height="1"&gt;</description></item><item><title>Устранение неполадок в Windows 7</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/01/14/windows-7.aspx</link><pubDate>Wed, 14 Jan 2009 21:57:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3213619</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3213619</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/01/14/windows-7.aspx#comments</comments><description>&lt;P&gt;Windows 7 имеет новую отличную расширяемую систему поиска и устранения неполадок, которая полностью базируется на сценариях PowerShell. Рафаэль Ривера (Rafael Rivera) написал &lt;A href="http://www.withinwindows.com/2009/01/12/crash-course-on-authoring-windows-7-troubleshooting-packs/" mce_href="http://www.withinwindows.com/2009/01/12/crash-course-on-authoring-windows-7-troubleshooting-packs/"&gt;ЗДЕСЬ&lt;/A&gt; очень хорошее пошаговое руководство о том, как создать пакет для поиска неполадок в Win7. 
&lt;P&gt;Посмотрите его. 
&lt;P&gt;Экспериментируйте, не скучайте, подключайтесь! 
&lt;P&gt;Джеффри Сновер (Jeffrey Snover) [MSFT] &lt;BR&gt;Windows Management Partner Architect &lt;BR&gt;Посетите английский блог команды&amp;nbsp; Windows PowerShell:&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://blogs.msdn.com/PowerShell" mce_href="http://blogs.msdn.com/PowerShell"&gt;http://blogs.msdn.com/PowerShell&lt;/A&gt;&lt;BR&gt;Посетите Windows PowerShell ScriptCenter:&amp;nbsp; &lt;A href="http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx" mce_href="http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx"&gt;http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3213619" width="1" height="1"&gt;</description></item><item><title>Подкаст с обсуждением WSMAN 1/14/2008</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/01/14/wsman-1-14-2008.aspx</link><pubDate>Wed, 14 Jan 2009 09:28:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3213622</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3213622</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/01/14/wsman-1-14-2008.aspx#comments</comments><description>&lt;P&gt;Завтра вечером я собираюсь сделать подкаст на сайте &lt;A href="http://www.mindofroot.com/" mce_href="http://www.mindofroot.com/"&gt;Разум Root`a&lt;/A&gt; со Стивом Муравски (Steve Murawski) с обсуждением WSMAN. WSMAN – это новый стандартный протокол управления для работы со всеми видами гетерогенных устройств, на котором базируется удаленная работа в PowerShell. Как правило, чтобы протокол управления стал распространенным, нужна вечность, но я верю, что WSMAN распространится как пожар. В подкасте я буду рассказывать, почему. Дополнительные сведения можно найти &lt;A href="http://www.mindofroot.com/2009/01/13/up-this-week-on-the-live-stream-jeffrey-snover/" mce_href="http://www.mindofroot.com/2009/01/13/up-this-week-on-the-live-stream-jeffrey-snover/"&gt;ЗДЕСЬ&lt;/A&gt;. 
&lt;P&gt;Экспериментируйте, не скучайте, подключайтесь! 
&lt;P&gt;Джеффри Сновер (Jeffrey Snover) [MSFT] &lt;BR&gt;Windows Management Partner Architect &lt;BR&gt;Посетите английский блог команды&amp;nbsp; Windows PowerShell:&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://blogs.msdn.com/PowerShell" mce_href="http://blogs.msdn.com/PowerShell"&gt;http://blogs.msdn.com/PowerShell&lt;/A&gt;&lt;BR&gt;Посетите Windows PowerShell ScriptCenter:&amp;nbsp; &lt;A href="http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx" mce_href="http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx"&gt;http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3213622" width="1" height="1"&gt;</description></item><item><title>Интерактивная работа с удаленными системами в CTP3</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/01/13/ctp3.aspx</link><pubDate>Tue, 13 Jan 2009 10:12:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3213624</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3213624</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/01/13/ctp3.aspx#comments</comments><description>&lt;P&gt;Давайте поговорим сегодня об одной из отличных новых возможностей Windows PowerShell V2 – интерактивной работе с удаленными объектами. 
&lt;P&gt;Начнем с примера: 
&lt;DIV&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;FONT color=#0000ff&gt;
PS&amp;gt; $env:COMPUTERNAME # Check local computer name.                                                                      
VLADIMIA64                                                                                                              
PS&amp;gt; Enter-PSSession Vladimia06 # Remote to other computer.                                                              
[vladimia06]: PS C:\Users\Vladimia\Documents&amp;gt; $env:COMPUTERNAME # Check remote computer name.                           
Vladimia06                                                                                                              
[vladimia06]: PS C:\Users\Vladimia\Documents&amp;gt; $PSVersionTable # Check powershell version on remote computer.            
                                                                                                                        
Name                           Value                                                                                    
----                           -----                                                                                    
CLRVersion                     2.0.50727.3521                                                                           
BuildVersion                   6.1.7015.0                                                                               
PSVersion                      2.0                                                                                      
PSCompatibleVersions           {1.0, 2.0}                                                                               
                                                                                                                        
                                                                                                                        
[vladimia06]: PS C:\Users\Vladimia\Documents&amp;gt; function prompt {} # See how prompt function is always prefixed by [&lt;COMPU tername&gt;]: in interactive remoting.                                                                                     
[vladimia06]: PS&amp;gt;Exit-PSSession # Exit remote session.                                                                  
PS&amp;gt;

&lt;/FONT&gt;&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;Как можно увидеть, &lt;STRONG&gt;Enter-&lt;/STRONG&gt;&lt;STRONG&gt;PSSession&lt;/STRONG&gt; начинает сеанс работы с удаленными системами, а &lt;STRONG&gt;Exit-&lt;/STRONG&gt;&lt;STRONG&gt;PSSession&lt;/STRONG&gt; завершает его. Сокращения для этих команд – &lt;STRONG&gt;etsn&lt;/STRONG&gt; и &lt;STRONG&gt;exsn&lt;/STRONG&gt;. Вместо &lt;STRONG&gt;Exit-&lt;/STRONG&gt;&lt;STRONG&gt;PSSession&lt;/STRONG&gt;&lt;STRONG&gt; &lt;/STRONG&gt;&lt;STRONG&gt;можно &lt;/STRONG&gt;также использовать ключевое слово &lt;STRONG&gt;exit&lt;/STRONG&gt;. 
&lt;P&gt;Интерактивная сессия с удаленными системами использует ту же инфраструктуру удаленной работы, что и другие коммандлеты удаленной работы PowerShell. WinRM обеспечивает транспорт и поддерживает службу приемника (listener), которая отвечает за создание удаленных сеансов PowerShell. 
&lt;P&gt;Аналогично Invoke-Command, для организации удаленного соединения вы можете использовать имя компьютера. В этом случае удаленная сессия PSSession неявно создается при входе и закрывается после выхода. 
&lt;P&gt;С другой стороны, вы можете создать постоянный сеанс, используя команду &lt;STRONG&gt;New&lt;/STRONG&gt;&lt;STRONG&gt;-&lt;/STRONG&gt;&lt;STRONG&gt;PSSession&lt;/STRONG&gt; в паре с &lt;STRONG&gt;Enter&lt;/STRONG&gt;&lt;STRONG&gt;-&lt;/STRONG&gt;&lt;STRONG&gt;PSSession&lt;/STRONG&gt;. В этом случае сеанс не будет закрыт после окончания работы, и в него можно входить в любой момент, когда это понадобится. 
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;FONT color=#0000ff&gt;
PS&amp;gt; $s = nsn vladimia06  # Create a persistent remote session.                                                          
PS&amp;gt; etsn $s                                                                                                             
[vladimia06]: PS C:\Users\Vladimia\Documents&amp;gt; $x = 123  # Create a variable.                                            
[vladimia06]: PS C:\Users\Vladimia\Documents&amp;gt; exsn                                                                      
PS&amp;gt; etsn $s                                                                                                             
[vladimia06]: PS C:\Users\Vladimia\Documents&amp;gt; $x # Check that a variable is still there                                 
123                                                                                                                     
[vladimia06]: PS C:\Users\Vladimia\Documents&amp;gt; exsn                                                                      
PS&amp;gt; icm $s {$x}  # The variable created in interactive remoting can also be accessed using remote invocation.           
123                                                                                                                     
PS&amp;gt; rsn $s  # Close the remote session.                                                                                 
PS&amp;gt;

&lt;/FONT&gt;&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;Учтите, что переменные, созданные в сеансе удаленной работы, не будут доступны в вашем локальном пространстве после выхода из сеанса. Чтобы получить к ним доступ со стороны клиента, необходимо использовать &lt;STRONG&gt;Invoke-&lt;/STRONG&gt;&lt;STRONG&gt;Command&lt;/STRONG&gt;. Соответствующий объект будет передан через сеть и собран на другой стороне. Примитивные типы будут восстановлены в полнофункциональные «живые» объекты, но более сложные объекты будут сведены к десериализованным «наборам свойств». Мы еще поговорим о сериализации в одном из следующих сообщений. 
&lt;P&gt;Пробуйте, используйте, любите! &lt;BR&gt;Владимир Аверкин (Vladimir Averkin) &lt;BR&gt;Windows PowerShell Team&lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3213624" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/powershell_ru/archive/tags/CTP3/">CTP3</category><category domain="http://blogs.technet.com/b/powershell_ru/archive/tags/Remoting/">Remoting</category></item><item><title>Как копировать сценарий с синтаксической разметкой из PowerShell ISE</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/01/13/3213634.aspx</link><pubDate>Tue, 13 Jan 2009 05:02:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3213634</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3213634</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/01/13/3213634.aspx#comments</comments><description>&lt;P&gt;&lt;STRONG&gt;ОБНОВЛЕНО 03 февраля 2009:&lt;/STRONG&gt; 
&lt;P&gt;Ли Холмс (Lee Holmes) опубликовал &lt;A href="http://www.leeholmes.com/blog/MorePowerShellSyntaxHighlighting.aspx" mce_href="http://www.leeholmes.com/blog/MorePowerShellSyntaxHighlighting.aspx"&gt;&lt;FONT color=#0033cc&gt;обновленную версию сценария&lt;/FONT&gt;&lt;/A&gt;, который гораздо лучше производит копирование и вставку HTML. Он также вставляет номера строк и имеет массу других усовершенствований. 
&lt;P&gt;В предыдущей статье мы демонстрировали, как использовать сценарий &lt;A href="http://blogs.msdn.com/powershell/attachment/9306712.ashx" mce_href="http://blogs.msdn.com/powershell/attachment/9306712.ashx"&gt;&lt;FONT color=#0033cc&gt;Console-Copy&lt;/FONT&gt;&lt;/A&gt; для создания цветной копии экрана консоли и его помещения в системный буфер. Как насчет того чтобы сделать то же самое с этим замечательным цветным сценарием, который вы видите в PowerShell ISE? Прямое копирование по Ctrl-C приведет к копированию только текста, без разметки. Но сильная сторона PowerShell ISE – его расширяемость, а это значит, что если вам нужна возможность – просто напишите для нее сценарий! Давайте пойдем по этому пути и посмотрим, что нам на нем попадется. 
&lt;P&gt;Начнем с конца и посмотрим, как нам присоединить сценарий расширяющий возможности пользовательского интерфейса PowerShell ISE. В примере ниже мы создаем новый элемент меню, который будет выводиться как команда меню &lt;STRONG&gt;Copy &lt;/STRONG&gt;&lt;STRONG&gt;Script&lt;/STRONG&gt; в меню &lt;STRONG&gt;Custom&lt;/STRONG&gt;. Щелчок по этому пункту меню приведет к автоматическому выполнению функции Copy-Script. Третий параметр, как вы уже возможно догадались, устанавливает сочетание клавиш. Если вам не нужен быстрый доступ, просто установите это значение в $null. 
&lt;DIV&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;FONT color=#0000ff&gt;
$psise.CustomMenu.Submenus.Add("Copy Script", {Copy-Script}, "Shift+Ctrl+S")
&lt;/FONT&gt;&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;А теперь перейдем к сценарию. Сначала вы должны проверить, открыто ли вообще окно сценария. 
&lt;DIV&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;FONT color=#0000ff&gt;
function Copy-Script
{
if (-not $psise.CurrentOpenedFile)
    {
Write-Error 'No script is available for copying.'
return
} 
&lt;/FONT&gt;&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;Если окно сценария открыто, захватим текст из редактора и проведем его разбор. 
&lt;DIV&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;FONT color=#0000ff&gt;
$text = $psise.CurrentOpenedFile.Editor.Text 

    trap { break } 

    # Выполняем синтаксический разбор. 
    $errors = $null 
$tokens = [system.management.automation.psparser]::Tokenize($Text, [ref] $errors) 

&lt;/FONT&gt;&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;Парсер может сгенерировать ошибку и выбросить исключение с помощью “throw”, поэтому перед тем, как его вызвать, вам следует настроить обработку ошибок. 
&lt;P&gt;В этой задаче мы можем игнорировать $errors, поскольку единственное, что нас заботит, это набор лексем, используемых для окрашивания. Ниже приведен список лексем, которые может содержать код PowerShell: 
&lt;P&gt;&lt;FONT color=#0000ff&gt;PS D:\&amp;gt; [Enum]::GetNames([System.Management.Automation.PSTokenType]) &lt;BR&gt;Unknown &lt;BR&gt;Command &lt;BR&gt;CommandParameter &lt;BR&gt;CommandArgument &lt;BR&gt;Number &lt;BR&gt;String &lt;BR&gt;Variable &lt;BR&gt;Member &lt;BR&gt;LoopLabel &lt;BR&gt;Attribute &lt;BR&gt;Type &lt;BR&gt;Operator &lt;BR&gt;GroupStart &lt;BR&gt;GroupEnd &lt;BR&gt;Keyword &lt;BR&gt;Comment &lt;BR&gt;StatementSeparator &lt;BR&gt;NewLine &lt;BR&gt;LineContinuation &lt;BR&gt;Position&lt;/FONT&gt; 
&lt;P&gt;Парсер возвратит набор лексем, которые можно перебирать, создавая цветные блоки RTF и строки HTML по методике, описанной в заметке &lt;A href="http://blogs.msdn.com/powershell/archive/2009/01/11/colorized-capture-of-console-screen-in-html-and-rtf.aspx" mce_href="http://blogs.msdn.com/powershell/archive/2009/01/11/colorized-capture-of-console-screen-in-html-and-rtf.aspx"&gt;&lt;FONT color=#0033cc&gt;Захват синтаксически раскрашеного экрана консоли в HTML и RTF.&lt;/FONT&gt;&lt;/A&gt; 
&lt;P&gt;После того, как вы это сделаете, вам следует воспользоваться System.Windows.Clipboard и сохранить данные из него, которые можно получить в трех вариантах: UnicodeText, HTML и RTF: 
&lt;DIV&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;FONT color=#0000ff&gt;$dataObject = New-Object Windows.DataObject 
    $dataObject.SetText([string]$text, [Windows.TextDataFormat]"UnicodeText") 
    $dataObject.SetText([string]$rtf, [Windows.TextDataFormat]"Rtf") 
    $dataObject.SetText([string]$html, [Windows.TextDataFormat]"Html") 
    [Windows.Clipboard]::SetDataObject($dataObject, $true)&lt;/FONT&gt;
&lt;/PRE&gt;&lt;/DIV&gt;К заметке присоединен файл со сценарием.&amp;nbsp; 
&lt;P&gt;Не скучайте! &lt;BR&gt;Владимир Аверкин (Vladimir Averkin) &lt;BR&gt;Windows PowerShell Team &lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3213634" width="1" height="1"&gt;</description></item><item><title>Нам нужны ваши отзывы</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/01/12/3213637.aspx</link><pubDate>Mon, 12 Jan 2009 07:17:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3213637</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3213637</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/01/12/3213637.aspx#comments</comments><description>&lt;P&gt;После выпуска бета-версии Win7/WS08R2 мы официально вступили в завершающую фазу работы над PowerShell V2. Во время этой фазы мы реагируем только на отзывы пользователей о продукте, опираясь на них мы можем опередить, готов ли продукт к выпуску финальной версии. Другими словами – наступило время, когда нам очень важно выслушать вас. 
&lt;UL&gt;
&lt;LI&gt;Пожалуйста, &lt;STRONG&gt;пользуйтесь&lt;/STRONG&gt; PowerShell V2 
&lt;UL&gt;
&lt;LI&gt;Вы можете использовать версию CTP3 или версию, поступившую с Win7/WS08R2 (это практически одно и то же). &lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;Пользуйтесь всеми возможностями продукта - &lt;STRONG&gt;экспериментируйте&lt;/STRONG&gt; с новыми возможностями и проверяйте старые и любимые 
&lt;LI&gt;Пожалуйста, &lt;STRONG&gt;сообщайте о проблемах обратной совместимости&lt;/STRONG&gt;. Это ОЧЕНЬ ОЧЕНЬ важно для нас, так что если что-то СТАРОЕ работало, а теперь не работает, - эта проблема ставится в начало очереди на исправление. 
&lt;LI&gt;Пожалуйста, &lt;STRONG&gt;сообщайте об ошибках и своих предложениях по улучшению языка&lt;/STRONG&gt;. Дайте нам знать, что вас злит, что не работает, как по вашему мнению это должно работать. Мы любим читать ваши письма, так что пожалуйста – включите фонтан. 
&lt;LI&gt;Пожалуйста, &lt;STRONG&gt;делитесь&lt;/STRONG&gt;. Пишите в блог, почтой, в твиттер, говорите, демонстрируйте, показывайте – выбирайте свой любимый способ поделиться, но делитесь. PowerShell представляет собой результат работы сообщества. Я учусь у вас, вы учитесь у меня, другие учатся у нас. Чем большим мы делимся, тем лучше наше сообщество и тем быстрее мы учимся. 
&lt;LI&gt;Пожалуйста, &lt;STRONG&gt;поощряйте&lt;/STRONG&gt; своих друзей, коллег, приятелей по Интернет-серфингу присоединиться к нам и использовать V2. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Я очень рад тому, что нового мы сделали в PowerShell V2. Как сообщество, мы намерены вместе использовать этот продукт много-много лет, обеспечивая его наилучшие возможности. 
&lt;P&gt;Экспериментируйте, не скучайте, подключайтесь! 
&lt;P&gt;Джеффри Сновер (Jeffrey Snover) [MSFT] &lt;BR&gt;Windows Management Partner Architect &lt;BR&gt;Посетите английский блог команды&amp;nbsp; Windows PowerShell:&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://blogs.msdn.com/PowerShell" mce_href="http://blogs.msdn.com/PowerShell"&gt;http://blogs.msdn.com/PowerShell&lt;/A&gt;&lt;BR&gt;Посетите Windows PowerShell ScriptCenter:&amp;nbsp; &lt;A href="http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx" mce_href="http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx"&gt;http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3213637" width="1" height="1"&gt;</description></item><item><title>Копирование экрана консоли в системный буфер</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/01/12/3213639.aspx</link><pubDate>Mon, 12 Jan 2009 05:13:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3213639</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3213639</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/01/12/3213639.aspx#comments</comments><description>&lt;P&gt;В предыдущем &lt;A href="http://blogs.msdn.com/powershell/archive/2009/01/11/colorized-capture-of-console-screen-in-html-and-rtf.aspx" mce_href="http://blogs.msdn.com/powershell/archive/2009/01/11/colorized-capture-of-console-screen-in-html-and-rtf.aspx"&gt;примере&lt;/A&gt; мы рассмотрели, как создать цветную копию консоли в формате HTML и RTF. Однако вывод этого сценария нельзя немедленно использовать для вставки в приложения для веб или обработки текстов. Чтобы вставить его в статью в формате MS Word, следует сделать несколько шагов: создать строку RTF, сохранить ее в файл RTF, затем открыть файл в MS Word, скопировать его содержимое, и наконец вставить его в документ. Нельзя ли сократить пару шагов: запустить сценарий, который копирует экран консоли в системный буфер, а потом вставить результат в MS Word? Действительно мы можем это сделать. Но чтобы реализовать такую возможность, нам надо изучить, как работать с буфером обмена в Windows PowerShell. 
&lt;P&gt;Ниже приведены основы для тех, кто не слишком хорошо знает механизм работы с буфером обмена. Когда вы копируете что либо из оконного приложения, приложение создает объект данных, который содержит ссылку или сериализованную копию выбранных данных. Данные могут сохраняться в различных форматах, чтобы повысить шанс того, что целевое приложение, требований которого к формату вы можете не знать, сможет получить их. Например, приложение Windows Mail в Vista может получать данные, представленные в формате текста или HTML, но не понимает RTF. Microsoft Word, с другой стороны, при вставке будет рад получить текст или RTF, но не сможет работать с HTML. Блокнот возьмет только текст, игнорируя и HTML, и RTF. Поэтому при копировании форматированного текста обычно полезно помещать данные в буфер как минимум в трех популярных форматах – Текст, HTML и RTF. Самый простой способ это сделать – использовать класс System.Windows.Forms.Clipboard, который является частью .NET Framework. 
&lt;P&gt;Короче говоря, вот вам пример: 
&lt;P style="MARGIN: 0in 10pt; FONT-FAMILY: lucida console; FONT-SIZE: 10pt"&gt;&lt;SPAN style="COLOR: #006400"&gt;# Load System.Windows.Forms assembly.&lt;/SPAN&gt; &lt;BR&gt;&lt;SPAN style="COLOR: #ff4500"&gt;$null&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a9a9a9"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;[Reflection.Assembly]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a9a9a9"&gt;::&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;LoadWithPartialName&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #8b0000"&gt;"System.Windows.Forms"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR: #006400"&gt;# Create a data object.&lt;/SPAN&gt; &lt;BR&gt;&lt;SPAN style="COLOR: #ff4500"&gt;$dataObject&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a9a9a9"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;New-Object&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #8a2be2"&gt;windows.forms.dataobject&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR: #006400"&gt;# Add generated strings to the data object.&lt;/SPAN&gt; &lt;BR&gt;&lt;SPAN style="COLOR: #ff4500"&gt;$dataObject&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a9a9a9"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;SetData&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;[Windows.Forms.DataFormats]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a9a9a9"&gt;::&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;UnicodeText&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a9a9a9"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff4500"&gt;$true&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a9a9a9"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff4500"&gt;$text&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;/SPAN&gt; &lt;BR&gt;&lt;SPAN style="COLOR: #ff4500"&gt;$dataObject&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a9a9a9"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;SetData&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;[Windows.Forms.DataFormats]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a9a9a9"&gt;::&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;RTF&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a9a9a9"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff4500"&gt;$true&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a9a9a9"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff4500"&gt;$rtf&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;/SPAN&gt; &lt;BR&gt;&lt;SPAN style="COLOR: #ff4500"&gt;$dataObject&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a9a9a9"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;SetData&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;[Windows.Forms.DataFormats]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a9a9a9"&gt;::&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;HTML&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a9a9a9"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff4500"&gt;$true&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a9a9a9"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff4500"&gt;$html&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR: #006400"&gt;# Place the data object in the system clipboard.&lt;/SPAN&gt; &lt;BR&gt;&lt;SPAN style="COLOR: #008080"&gt;[Windows.Forms.Clipboard]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a9a9a9"&gt;::&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;SetDataObject&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff4500"&gt;$dataObject&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a9a9a9"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff4500"&gt;$true&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 10pt; FONT-FAMILY: lucida console; FONT-SIZE: 10pt"&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Учтите, что работа с буфером обмена системы имеет одно важное ограничение. Класс Clipboard можно использовать только из потоков, которые переключены в однопоточный режим (single thread apartment, STA). ISE Windows Powershell запускается в режиме STA по умолчанию, но стандартный режим работы консоли Windows PowerShell – MTA. Чтобы обойти это ограничение в консоли Windows PowerShell, вам следует запустить консоль Windows PowerShell с переключателем -sta, который доступен в версии CTP3 Windows PowerShell V2. 
&lt;P&gt;В прикрепленном сценарии мы повторно используем код из сообщений &lt;A href="http://blogs.msdn.com/powershell/archive/2009/01/10/capture-console-screen.aspx" mce_href="http://blogs.msdn.com/powershell/archive/2009/01/10/capture-console-screen.aspx"&gt;Захват экрана консоли&lt;/A&gt; и &lt;A href="http://blogs.msdn.com/powershell/archive/2009/01/11/colorized-capture-of-console-screen-in-html-and-rtf.aspx" mce_href="http://blogs.msdn.com/powershell/archive/2009/01/11/colorized-capture-of-console-screen-in-html-and-rtf.aspx"&gt;Захват экрана консоли с синтаксической подсветкой в HTML и RTF&lt;/A&gt; для захвата буфера экрана консоли и преобразования его в три базовых текстовых формата (Текст Unicode, HTML и RTF). Затем мы помещаем результат в системный буфер, как показано в фрагменте кода выше. 
&lt;P&gt;Для использования этого сценария необходимо установить на вашу машину PowerShell V2 CTP3. Для выполнения сценария запустите консоль Windows PowerShell в режиме STA или запустите сценарий, используя командную строку &lt;STRONG&gt;powershell –&lt;/STRONG&gt;&lt;STRONG&gt;sta –&lt;/STRONG&gt;&lt;STRONG&gt;command &amp;lt;&lt;/STRONG&gt;&lt;STRONG&gt;scriptpath&amp;gt;&lt;/STRONG&gt;. &lt;/P&gt;&lt;PRE style="LINE-HEIGHT: normal; MARGIN: 0in 10pt; FONT-FAMILY: consolas,courier new; FONT-SIZE: 10pt"&gt;&lt;SPAN style="BACKGROUND: #012456; COLOR: #eeedf0"&gt;Windows PowerShell V2 (Community Technology Preview - Features Subject to Change)                                       &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: #012456; COLOR: #eeedf0"&gt;Copyright (C) 2008 Microsoft Corporation. All rights reserved.                                                          &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: #012456; COLOR: #eeedf0"&gt;                                                                                                                        &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: #012456; COLOR: #eeedf0"&gt;PS C:\Users\Vladimir&amp;gt; cd E:\MyScripts                                                                                   &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: #012456; COLOR: #eeedf0"&gt;PS E:\MyScripts&amp;gt;                                                                                                        &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: #012456; COLOR: #eeedf0"&gt;PS E:\MyScripts&amp;gt; .\Copy-Console.ps1                                                                                     &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: #012456; COLOR: yellow"&gt;The script cannot be run in MTA mode.&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: #012456; COLOR: #eeedf0"&gt;                                                                                   &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: #012456; COLOR: yellow"&gt;Start Windows Powershell with -STA switch, or rerun the script using powershell -sta -command &amp;lt;scriptpath&amp;gt;.&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: #012456; COLOR: #eeedf0"&gt;             &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: #012456; COLOR: yellow"&gt;Example:&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: #012456; COLOR: #eeedf0"&gt;                                                                                                                &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: #012456; COLOR: yellow"&gt;    powershell -noprofile -sta -command d:\myscripts\Copy-Console.ps1&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: #012456; COLOR: #eeedf0"&gt;                                                   &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: #012456; COLOR: #eeedf0"&gt;PS E:\MyScripts&amp;gt; powershell -noprofile -sta -command e:\myscripts\Copy-Console.ps1                                      &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: #012456; COLOR: #eeedf0"&gt;The console screen has been copied to system clipboard.                                                                 &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: #012456; COLOR: #eeedf0"&gt;You can now paste it to any application that supports text, HTML or RTF pasting.                                        &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: #012456; COLOR: #eeedf0"&gt;PS E:\MyScripts&amp;gt;                                                                                                        &lt;/SPAN&gt;&lt;BR&gt;&lt;/PRE&gt;
&lt;P&gt;Результаты выполнения сценария приведены выше. Я просто запустил сценарий и перенес результаты в редактор сообщений в блогах. 
&lt;P&gt;Учтите, что команду &lt;STRONG&gt;powershell&lt;/STRONG&gt;&lt;STRONG&gt; –&lt;/STRONG&gt;&lt;STRONG&gt;sta&lt;/STRONG&gt;&lt;STRONG&gt; –&lt;/STRONG&gt;&lt;STRONG&gt;command&lt;/STRONG&gt;&lt;STRONG&gt; &lt;/STRONG&gt;&lt;STRONG&gt;Copy&lt;/STRONG&gt;&lt;STRONG&gt;-&lt;/STRONG&gt;&lt;STRONG&gt;Console&lt;/STRONG&gt;&lt;STRONG&gt;.&lt;/STRONG&gt;&lt;STRONG&gt;ps&lt;/STRONG&gt;&lt;STRONG&gt;1 &lt;/STRONG&gt;можно запустить не только из консоли Windows PowerShell, но и из обычной консоли CMD. Это означает, что вы можете использовать этот сценарий для захвата цветного вывода из любого консольного приложения Windows. &lt;/P&gt;&lt;PRE style="LINE-HEIGHT: normal; MARGIN: 0in 10pt; FONT-FAMILY: consolas,courier new; FONT-SIZE: 10pt"&gt;&lt;SPAN style="BACKGROUND: black; COLOR: gray"&gt;Microsoft Windows [Version 6.0.6001]                                                                                    &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: black; COLOR: gray"&gt;Copyright (c) 2006 Microsoft Corporation.  All rights reserved.                                                         &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: black; COLOR: gray"&gt;                                                                                                                        &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: black; COLOR: gray"&gt;C:\Windows\System32&amp;gt;cd WindowsPowerShell                                                                                &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: black; COLOR: gray"&gt;                                                                                                                        &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: black; COLOR: gray"&gt;C:\Windows\System32\WindowsPowerShell&amp;gt;dir                                                                               &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: black; COLOR: gray"&gt; Volume in drive C has no label.                                                                                        &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: black; COLOR: gray"&gt; Volume Serial Number is D67B-C7C5                                                                                      &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: black; COLOR: gray"&gt;                                                                                                                        &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: black; COLOR: gray"&gt; Directory of C:\Windows\System32\WindowsPowerShell                                                                     &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: black; COLOR: gray"&gt;                                                                                                                        &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: black; COLOR: gray"&gt;09/08/2008  07:08 PM    &amp;lt;DIR&amp;gt;          .                                                                                &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: black; COLOR: gray"&gt;09/08/2008  07:08 PM    &amp;lt;DIR&amp;gt;          ..                                                                               &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: black; COLOR: gray"&gt;01/10/2009  05:24 PM    &amp;lt;DIR&amp;gt;          v1.0                                                                             &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: black; COLOR: gray"&gt;               0 File(s)              0 bytes                                                                           &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: black; COLOR: gray"&gt;               3 Dir(s)  55,533,215,744 bytes free                                                                      &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: black; COLOR: gray"&gt;                                                                                                                        &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND: black; COLOR: gray"&gt;C:\Windows\System32\WindowsPowerShell&amp;gt;powershell -noprofile -sta -command e:\myscripts\Copy-Console.ps1                 &lt;/SPAN&gt;&lt;BR&gt;&lt;/PRE&gt;
&lt;P&gt;Не скучайте! 
&lt;P&gt;Владимир Аверкин (Vladimir Averkin) 
&lt;P&gt;Windows PowerShell team&lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3213639" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/powershell_ru/archive/tags/CTP3/">CTP3</category><category domain="http://blogs.technet.com/b/powershell_ru/archive/tags/console/">console</category><category domain="http://blogs.technet.com/b/powershell_ru/archive/tags/Copy_2D00_Console/">Copy-Console</category><category domain="http://blogs.technet.com/b/powershell_ru/archive/tags/Clipboard/">Clipboard</category></item><item><title>Test-PSCmdlet</title><link>http://blogs.technet.com/b/powershell_ru/archive/2009/01/11/3213686.aspx</link><pubDate>Sun, 11 Jan 2009 15:59:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3213686</guid><dc:creator>Andrey Beshkov</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/powershell_ru/rsscomments.aspx?WeblogPostID=3213686</wfw:commentRss><comments>http://blogs.technet.com/b/powershell_ru/archive/2009/01/11/3213686.aspx#comments</comments><description>&lt;P&gt;Всем следует приобрести хорошие навыки работы с расширенными функциями – это самый простой путь к хорошей семантике. В предыдущих сообщениях мы рассмотрели, как можно добавить несколько простых атрибутов и бесплатно получить ТОННЫ полезных вещей бесплатно. О расширенных функциях можно сказать ЗНАЧИТЕЛЬНО больше. Благодаря расширенным функциям, вы можете продвинуться ГОРАЗДО ГОРАЗДО дальше. Я не могу придумать чего либо что можно было бы сделать с помощью C# и нельзя повторить командлетами на PowerShell. Многие из этих функций доступны вам через переменную $PsCmdlet. 
&lt;P&gt;Так, если вы пишете коммандлет, который использует несколько ParameterSet, вам нужно быть в курсе, какой ParameterSet выбрал пользователь. Вот способ это узнать: 
&lt;P&gt;$PsCmdlet.ParameterSetName 
&lt;P&gt;Теперь у вас есть ТОННА всякого добра в функции $PSCmdlet, но поскольку она еще не слишком хорошо документирована, вопрос состоит в том, как его использовать. Вы, разумеется УЖЕ знаете ответ – 
&lt;P&gt;&lt;STRONG&gt;Используйте &lt;/STRONG&gt;&lt;STRONG&gt;PowerShell для самостоятельного изучения и исследования (и напишите об этом в свой блог, чтобы об этом могли узнать другие)&lt;/STRONG&gt; 
&lt;P&gt;Сегодня я написал много сценариев и не мог запомнить, как использовать $PsCmdlet для того, что я сделал, так что я решил написать функцию, которая позволит мне протестировать PsCmdlet. Я даю ее вам, чтобы вы могли использовать ее и наслаждаться ею (запомните – исследовать, изучить, написать в блог/выложить в свободный доступ).&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2 face=Consolas&gt;function Test-PsCmdlet &lt;BR&gt;{ &lt;BR&gt;&lt;FONT color=#008000&gt;&amp;lt;# &lt;BR&gt;.Synopsis &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Test/Explore the $PsCmdlet variable &lt;BR&gt;.Description &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; This command creates a nested prompt with $PsCmdlet set so that you explore &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; the capabilities of the parameter. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; When you write an advanced function, you use $PsCmdlet to give you access to the &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PowerShell engine and a rich set of functions.&amp;nbsp; Use this function to explore what &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; is available to you.&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; This command copies $PsCmdlet to $p so you can use it and reduce typing. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; This is implemented by using $host.EnterNestedPrompt() which means that you have &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; to type EXIT to get out of this mode. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2 face=Consolas&gt;&lt;FONT color=#008000&gt;.Example &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Test-PsCmdlet &lt;BR&gt;.ReturnValue &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; None &lt;BR&gt;.Link &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; about_functions_advanced &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; about_functions_advanced_methods &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; about_functions_advanced_parameters &lt;BR&gt;.Notes &lt;BR&gt;NAME:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Test-PsCmdlet &lt;BR&gt;AUTHOR:&amp;nbsp;&amp;nbsp;&amp;nbsp; RugratsVista\jsnover &lt;BR&gt;LASTEDIT:&amp;nbsp; 01/10/2009 16:25:42 &lt;BR&gt;#&amp;gt; &lt;BR&gt;&lt;/FONT&gt;[CmdletBinding()] &lt;BR&gt;param() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host -ForegroundColor RED "Interactively explore `$PsCmdlet .&amp;nbsp; Copied `$PsCmdlet to `$p " &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host -ForegroundColor RED 'Type "Exit" to return' &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $p = $pscmdlet &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; function Prompt {"Test-PsCmdlet&amp;gt; "} &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $host.EnterNestedPrompt() &lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2 face=Consolas&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2 face=Consolas&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2 face=Consolas&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2 face=Consolas&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Давайте используем и изучим функцию:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2 face=Consolas&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2 face=Consolas&gt;PS&amp;gt; &lt;STRONG&gt;Test-PScmdlet &lt;BR&gt;&lt;/STRONG&gt;&lt;FONT color=#ff0000&gt;Interactively explore $PsCmdlet .&amp;nbsp; Copied $PsCmdlet to $p &lt;BR&gt;Type "Exit" to return &lt;BR&gt;&lt;/FONT&gt;Test-PsCmdlet&amp;gt; $p |gm &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2 face=Consolas&gt;&amp;nbsp;&amp;nbsp; TypeName: System.Management.Automation.PSScriptCmdlet &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2 face=Consolas&gt;Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MemberType Definition &lt;BR&gt;----&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ---------- ---------- &lt;BR&gt;CurrentProviderLocation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Management.Automat... &lt;BR&gt;Dispose&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Void Dispose() &lt;BR&gt;Equals&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Boolean Equals(Obj... &lt;BR&gt;GetDynamicParameters&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Object GetDynamicP... &lt;BR&gt;GetHashCode&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Int32 GetHashCode() &lt;BR&gt;GetResolvedProviderPathFromPSPath&amp;nbsp;&amp;nbsp; Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Collections.Object... &lt;BR&gt;GetResourceString&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.String GetResource... &lt;BR&gt;GetType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Type GetType() &lt;BR&gt;GetUnresolvedProviderPathFromPSPath Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.String GetUnresolv... &lt;BR&gt;GetVariableValue&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Object GetVariable... &lt;BR&gt;Invoke&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Invoke(), System.Collect... &lt;BR&gt;ShouldContinue&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Boolean ShouldCont... &lt;BR&gt;ShouldProcess&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Boolean ShouldProc... &lt;BR&gt;ThrowTerminatingError&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Void ThrowTerminat... &lt;BR&gt;ToString&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.String ToString() &lt;BR&gt;TransactionAvailable&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Boolean Transactio... &lt;BR&gt;WriteCommandDetail&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Void WriteCommandD... &lt;BR&gt;WriteDebug&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Void WriteDebug(St... &lt;BR&gt;WriteError&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Void WriteError(Er... &lt;BR&gt;WriteObject&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Void WriteObject(O... &lt;BR&gt;WriteProgress&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Void WriteProgress... &lt;BR&gt;WriteVerbose&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Void WriteVerbose(... &lt;BR&gt;WriteWarning&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Method&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Void WriteWarning(... &lt;BR&gt;CommandOrigin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Property&amp;nbsp;&amp;nbsp; System.Management.Automat... &lt;BR&gt;CommandRuntime&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Property&amp;nbsp;&amp;nbsp; System.Management.Automat... &lt;BR&gt;CurrentPSTransaction&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Property&amp;nbsp;&amp;nbsp; System.Management.Automat... &lt;BR&gt;Events&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Property&amp;nbsp;&amp;nbsp; System.Management.Automat... &lt;BR&gt;Host&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Property&amp;nbsp;&amp;nbsp; System.Management.Automat... &lt;BR&gt;InvokeCommand&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Property&amp;nbsp;&amp;nbsp; System.Management.Automat... &lt;BR&gt;InvokeProvider&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Property&amp;nbsp;&amp;nbsp; System.Management.Automat... &lt;BR&gt;JobRepository&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Property&amp;nbsp;&amp;nbsp; System.Management.Automat... &lt;BR&gt;MyInvocation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Property&amp;nbsp;&amp;nbsp; System.Management.Automat... &lt;BR&gt;ParameterSetName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Property&amp;nbsp;&amp;nbsp; System.String ParameterSe... &lt;BR&gt;SessionState&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Property&amp;nbsp;&amp;nbsp; System.Management.Automat... &lt;BR&gt;Stopping&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Property&amp;nbsp;&amp;nbsp; System.Boolean Stopping {... &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2 face=Consolas&gt;Test-PsCmdlet&amp;gt; $p.CurrentProviderLocation &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2 face=Consolas&gt;MemberType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : Method &lt;BR&gt;OverloadDefinitions : {System.Management.Automation.PathInfo CurrentProvide &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rLocation(String providerId)} &lt;BR&gt;TypeNameOfValue&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : System.Management.Automation.PSMethod &lt;BR&gt;Value&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : System.Management.Automation.PathInfo CurrentProvider &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Location(String providerId) &lt;BR&gt;Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : CurrentProviderLocation &lt;BR&gt;IsInstance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : True &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2 face=Consolas&gt;Test-PsCmdlet&amp;gt; $p.CurrentProviderLocation("FileSystem") &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2 face=Consolas&gt;Path &lt;BR&gt;---- &lt;BR&gt;C:\temp &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2 face=Consolas&gt;Test-PsCmdlet&amp;gt; $p.CurrentProviderLocation("registry") &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2 face=Consolas&gt;Path &lt;BR&gt;---- &lt;BR&gt;HKLM:\ &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2 face=Consolas&gt;Test-PsCmdlet&amp;gt; exit &lt;BR&gt;PS&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Кстати, когда вы пишете сценарий и хотите записать файл в текущий каталог, вам не следует использовать текущий каталог, поскольку в PowerShell это может быть реестр, хранилище сертификатов, хранилище настроек WSMAN и т.д.. Вам НА САМОМ ДЕЛЕ следует записать файл в текущий каталог FILESYSTEM. Вот метод, с помощью которого можно узнать текущий каталог. $psCmdlet.CurrentProviderLocation() – это метод, который возвращает текущее место для конкретного провайдера (которой вы передали в строке). Так, для получения текущего каталога filesystem следует ввести:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2 face=Consolas&gt;$psCmdlet.CurrentProviderLocation("FileSystem") &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Помните – все это работает, только если у вас есть набор $psCmdlet, о котором мы говорили, обсуждая расширенные функции. Я уже упоминал, что следует всегда использовать расширенные функции? Идите в ногу с современным программированием. 
&lt;P&gt;Наслаждайтесь! 
&lt;P&gt;Джеффри Сновер (Jeffrey Snover) [MSFT] &lt;BR&gt;Windows Management Partner Architect &lt;BR&gt;Посетите английский блог команды&amp;nbsp; Windows PowerShell:&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://blogs.msdn.com/PowerShell" mce_href="http://blogs.msdn.com/PowerShell"&gt;http://blogs.msdn.com/PowerShell&lt;/A&gt;&lt;BR&gt;Посетите Windows PowerShell ScriptCenter:&amp;nbsp; &lt;A href="http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx" mce_href="http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx"&gt;http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Перевод: &lt;A href="http://pwrshell.blogspot.com/" mce_href="http://pwrshell.blogspot.com/  "&gt;Виктор Горбунков&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3213686" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/powershell_ru/archive/tags/Jeffrey+Snover/">Jeffrey Snover</category><category domain="http://blogs.technet.com/b/powershell_ru/archive/tags/CTP3/">CTP3</category><category domain="http://blogs.technet.com/b/powershell_ru/archive/tags/PowerShell+V2/">PowerShell V2</category><category domain="http://blogs.technet.com/b/powershell_ru/archive/tags/Advanced+Functions/">Advanced Functions</category></item></channel></rss>
