<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Vadims Podans's blog - PowerShell | WMI</title>
    <link>http://www.sysadmins.lv/</link>
    <description>PowerShell powered</description>
    <image>
      <url>http://www.sysadmins.lv/images/imgusr/bilde.jpg</url>
      <title>Vadims Podans's blog - PowerShell | WMI</title>
      <link>http://www.sysadmins.lv/</link>
    </image>
    <language>en-us</language>
    <copyright>Vadims Podāns</copyright>
    <lastBuildDate>Fri, 24 Jul 2009 20:32:55 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>vpodans@sysadmins.lv</managingEditor>
    <webMaster>vpodans@sysadmins.lv</webMaster>
    <item>
      <trackback:ping>http://www.sysadmins.lv/Trackback.aspx?guid=515f1bd4-d948-4ae8-b890-6159dc58e366</trackback:ping>
      <pingback:server>http://www.sysadmins.lv/pingback.aspx</pingback:server>
      <pingback:target>http://www.sysadmins.lv/PermaLink,guid,515f1bd4-d948-4ae8-b890-6159dc58e366.aspx</pingback:target>
      <dc:creator>Camelot</dc:creator>
      <wfw:comment>http://www.sysadmins.lv/CommentView,guid,515f1bd4-d948-4ae8-b890-6159dc58e366.aspx</wfw:comment>
      <wfw:commentRss>http://www.sysadmins.lv/SyndicationService.asmx/GetEntryCommentsRss?guid=515f1bd4-d948-4ae8-b890-6159dc58e366</wfw:commentRss>
      <title>Замена служебных символов в запросах WMI</title>
      <guid isPermaLink="false">http://www.sysadmins.lv/PermaLink,guid,515f1bd4-d948-4ae8-b890-6159dc58e366.aspx</guid>
      <link>http://www.sysadmins.lv/PermaLink,guid,515f1bd4-d948-4ae8-b890-6159dc58e366.aspx</link>
      <pubDate>Fri, 24 Jul 2009 20:32:55 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;Мне вчера на почту пришёл комментарий на пост: &lt;a href="http://www.sysadmins.lv/PermaLink,guid,243d77ee-4975-4335-9abf-ce8660e9439c.aspx"&gt;Смена владельца папки или файла в PowerShell (часть 2)&lt;/a&gt;, в котором сообщалось об ошибке, которую генерирует скрипт, если в пути есть служебные мета-символы, как апостроф (одиночкая кавычка). А дело было в том, что этот мета-символ нужно дополнительно эскейпить (помимо обратных слешей в пути). То же касается и квадратных скобок. Одиночные кавычки эскейпятся очень просто – одним обратным слешем:&lt;/p&gt;  &lt;div style="width: 900px"&gt;   &lt;blockquote&gt;     &lt;pre style="background-color: #000040; font: 9pt consolas, lucida console"&gt;&lt;font color="#c0c0c0"&gt;&lt;span&gt;&lt;p&gt;&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] $path = &amp;quot;C:\Users\vPodans\text'text.txt&amp;quot;
&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] $path = $path -replace &amp;quot;\\|'&amp;quot;, '\$0'
&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] $path
C:\\Users\\vPodans\\text\'text.txt
&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] gwmi Win32_LogicalFileSecuritySetting -filter &amp;quot;path='$path'&amp;quot;


__GENUS          : 2
__CLASS          : Win32_LogicalFileSecuritySetting
__SUPERCLASS     : Win32_SecuritySetting
__DYNASTY        : CIM_Setting
__RELPATH        : Win32_LogicalFileSecuritySetting.Path=&amp;quot;C:\\Users\\vPodans\\text'text.txt&amp;quot;
&amp;lt;...&amp;gt; &lt;/p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;
  &lt;/blockquote&gt;
&lt;/div&gt;

&lt;p&gt;Но с квадратными скобками такой фокус не прошёл:&lt;/p&gt;

&lt;div style="width: 900px"&gt;
  &lt;blockquote&gt;
    &lt;pre style="background-color: #000040; font: 9pt consolas, lucida console"&gt;&lt;font color="#c0c0c0"&gt;&lt;span&gt;&lt;p&gt;&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] $path = &amp;quot;C:\Users\vPodans\text[text.txt&amp;quot;
&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] $path = $path -replace &amp;quot;\\|\[&amp;quot;, '\$0'
&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] $path
C:\\Users\\vPodans\\text\[text.txt
&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] gwmi Win32_LogicalFileSecuritySetting -filter &amp;quot;path='$path'&amp;quot;
&lt;font color="#ff0000"&gt;Get-WmiObject : Invalid query
At line:1 char:5
+ gwmi &amp;lt;&amp;lt;&amp;lt;&amp;lt;  Win32_LogicalFileSecuritySetting -filter &amp;quot;path='$path'&amp;quot;
    + CategoryInfo          : InvalidOperation: (:) [Get-WmiObject], ManagementException
    + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand&lt;/font&gt;

&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans]&lt;/p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;
  &lt;/blockquote&gt;
&lt;/div&gt;

&lt;p&gt;попытка заэскейпить квадратные скобки при помощи бэктика (&lt;strong&gt;`&lt;/strong&gt;) успехом не увенчалась:&lt;/p&gt;

&lt;div style="width: 900px"&gt;
  &lt;blockquote&gt;
    &lt;pre style="background-color: #000040; font: 9pt consolas, lucida console"&gt;&lt;font color="#c0c0c0"&gt;&lt;span&gt;&lt;p&gt;&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] $path = &amp;quot;C:\Users\vPodans\text[text.txt&amp;quot;
&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] $path = $path -replace &amp;quot;\\&amp;quot;, '\$0'
&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] $path = $path -replace &amp;quot;\[&amp;quot;, '`$0'
&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] gwmi Win32_LogicalFileSecuritySetting -filter &amp;quot;path='$path'&amp;quot;
&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans]&lt;/p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;
  &lt;/blockquote&gt;
&lt;/div&gt;

&lt;p&gt;он вообще файл не нашёл так. На удачу решил опробовать хитрый вариант – не эскейпить символ, а вписать его &lt;strong&gt;char&lt;/strong&gt; номер из таблицы &lt;strong&gt;ASCII&lt;/strong&gt;. И вот что у меня вышло:&lt;/p&gt;

&lt;div style="width: 900px"&gt;
  &lt;blockquote&gt;
    &lt;pre style="background-color: #000040; font: 9pt consolas, lucida console"&gt;&lt;font color="#c0c0c0"&gt;&lt;span&gt;&lt;p&gt;&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] $path = &amp;quot;C:\Users\vPodans\text[text.txt&amp;quot;
&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] $path = $path -replace &amp;quot;\\&amp;quot;, '\$0'
&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] [int][char]&amp;quot;[&amp;quot;
91
&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] $path = $path -replace &amp;quot;\[&amp;quot;, &amp;quot;$([char]91)&amp;quot;
&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] $path
C:\\Users\\vPodans\\text[text.txt
&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] gwmi Win32_LogicalFileSecuritySetting -filter &amp;quot;path='$path'&amp;quot;


__GENUS          : 2
__CLASS          : Win32_LogicalFileSecuritySetting
__SUPERCLASS     : Win32_SecuritySetting
__DYNASTY        : CIM_Setting
__RELPATH        : Win32_LogicalFileSecuritySetting.Path=&amp;quot;C:\\Users\\vPodans\\text[text.txt&amp;quot;
&amp;lt;...&amp;gt;&lt;/p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;
  &lt;/blockquote&gt;
&lt;/div&gt;

&lt;p&gt;И этот финт сработал! Тот же самый манёвр делается и для второй квадратной скобки:&lt;/p&gt;

&lt;div style="width: 900px"&gt;
  &lt;blockquote&gt;
    &lt;pre style="background-color: #000040; font: 9pt consolas, lucida console"&gt;&lt;font color="#c0c0c0"&gt;&lt;span&gt;&lt;p&gt;&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] $path = &amp;quot;C:\Users\vPodans\text[text].txt&amp;quot;
&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] $path = $path -replace &amp;quot;\\&amp;quot;, '\$0'
&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] $path = $path -replace &amp;quot;\[&amp;quot;, &amp;quot;$([char]91)&amp;quot;
&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] [int][char]&amp;quot;]&amp;quot;
93
&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] $path = $path -replace &amp;quot;\]&amp;quot;, &amp;quot;$([char]93)&amp;quot;
&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] $path
C:\\Users\\vPodans\\text[text].txt
&lt;font color="#ff0000"&gt;[↓]&lt;/font&gt; [vPodans] gwmi Win32_LogicalFileSecuritySetting -filter &amp;quot;path='$path'&amp;quot;


__GENUS          : 2
__CLASS          : Win32_LogicalFileSecuritySetting
__SUPERCLASS     : Win32_SecuritySetting
__DYNASTY        : CIM_Setting
__RELPATH        : Win32_LogicalFileSecuritySetting.Path=&amp;quot;C:\\Users\\vPodans\\text[text].txt&amp;quot;
&amp;lt;...&amp;gt;&lt;/p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;
  &lt;/blockquote&gt;
&lt;/div&gt;

&lt;p&gt;Но в именах файлов и папок может содержаться один коварный символ – backtick (&lt;strong&gt;`&lt;/strong&gt;). Его заэскейпить не представляется возможным, поэтому единственный выход с ним – прописывать путь в одинарных кавычках, чтобы этот мета-символ использовался в качестве литерала. В связи с чем я немного подрихтовал пост, ссылка на который приведена в начале этого поста.&lt;/p&gt;&lt;img width="0" height="0" src="http://www.sysadmins.lv/aggbug.ashx?id=515f1bd4-d948-4ae8-b890-6159dc58e366"/&gt;&lt;br/&gt;&lt;hr/&gt;PowerShell Powered - http://www.sysadmins.lv&lt;/div&gt;</description>
      <comments>http://www.sysadmins.lv/CommentView,guid,515f1bd4-d948-4ae8-b890-6159dc58e366.aspx</comments>
      <category>PowerShell</category>
      <category>PowerShell / WMI</category>
    </item>
    <item>
      <trackback:ping>http://www.sysadmins.lv/Trackback.aspx?guid=829a1ecd-f238-4ba1-b9f5-289768dadb40</trackback:ping>
      <pingback:server>http://www.sysadmins.lv/pingback.aspx</pingback:server>
      <pingback:target>http://www.sysadmins.lv/PermaLink,guid,829a1ecd-f238-4ba1-b9f5-289768dadb40.aspx</pingback:target>
      <dc:creator>Camelot</dc:creator>
      <wfw:comment>http://www.sysadmins.lv/CommentView,guid,829a1ecd-f238-4ba1-b9f5-289768dadb40.aspx</wfw:comment>
      <wfw:commentRss>http://www.sysadmins.lv/SyndicationService.asmx/GetEntryCommentsRss?guid=829a1ecd-f238-4ba1-b9f5-289768dadb40</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <title>Восстановление функциональности классов WMI</title>
      <guid isPermaLink="false">http://www.sysadmins.lv/PermaLink,guid,829a1ecd-f238-4ba1-b9f5-289768dadb40.aspx</guid>
      <link>http://www.sysadmins.lv/PermaLink,guid,829a1ecd-f238-4ba1-b9f5-289768dadb40.aspx</link>
      <pubDate>Sat, 18 Jul 2009 13:45:06 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;В своём предыдущем блоге я писал заметку про то, как можно случайно удалить классы WMI – &lt;a href="http://vpodans.spaces.live.com/blog/cns!BB1419A2CFC1E008!192.entry"&gt;PowerShell - убийца WMI классов?&lt;/a&gt; И недавно узнал, как можно восстановить эту функциональность обратно. Сами Win32 классы находятся в библиотеке CIMWIN32.MOF, которая и повреждается при удалении классов. Чтобы вернуть эти классы – достаточно перекомпилировать эту библиотеку:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff"&gt;C:\Windows\System32\wbem\MOFComp CIMWIN32.MOF&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;div style="width: 900px"&gt;   &lt;blockquote&gt;     &lt;pre style="background-color: #000040; font: 9pt consolas, lucida console"&gt;&lt;font color="#c0c0c0"&gt;&lt;span&gt;&lt;p&gt;&lt;font color="#00ff00"&gt;[↑]&lt;/font&gt; [system32] gwmi win32_share

Name                                    Path                                    Description
----                                    ----                                    -----------
ADMIN$                                  C:\Windows                              Remote Admin
C$                                      C:\                                     Default share
D$                                      D:\                                     Default share
IPC$                                                                            Remote IPC
P$                                      P:\                                     Default share
print$                                  C:\Windows\system32\spool\drivers       Printer Drivers
Work                                    D:\Users\vpodans\Work
Z$                                      Z:\                                     Default share
_Shared Documents                       D:\Users\_Shared Documents


&lt;font color="#00ff00"&gt;[↑]&lt;/font&gt; [system32] [wmiclass]'win32_share'


   NameSpace: ROOT\cimv2

Name                                Methods              Properties
----                                -------              ----------
Win32_Share                         {Create, SetShare... {AccessMask, AllowMaximum, Caption, Description...}


&lt;font color="#00ff00"&gt;[↑]&lt;/font&gt; [system32] ([wmiclass]'win32_share').delete()
&lt;font color="#00ff00"&gt;[↑]&lt;/font&gt; [system32] gwmi win32_share
&lt;font color="#ff0000"&gt;Get-WmiObject : Invalid class
At line:1 char:5
+ gwmi &amp;lt;&amp;lt;&amp;lt;&amp;lt;  win32_share
    + CategoryInfo          : InvalidOperation: (:) [Get-WmiObject], ManagementException
    + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand&lt;/font&gt;

&lt;font color="#00ff00"&gt;[↑]&lt;/font&gt; [system32] cd wbem
&lt;font color="#00ff00"&gt;[↑]&lt;/font&gt; [wbem] &lt;font color="#ffffff"&gt;MOFComp CIMWIN32.MOF
Microsoft (R) MOF Compiler Version 6.0.6000.16386
Copyright (c) Microsoft Corp. 1997-2006. All rights reserved.
Parsing MOF file: CIMWIN32.MOF
MOF file has been successfully parsed
Storing data in the repository...
Done!&lt;/font&gt;
&lt;font color="#00ff00"&gt;[↑]&lt;/font&gt; [wbem] gwmi win32_share

Name                                    Path                                    Description
----                                    ----                                    -----------
ADMIN$                                  C:\Windows                              Remote Admin
C$                                      C:\                                     Default share
D$                                      D:\                                     Default share
IPC$                                                                            Remote IPC
P$                                      P:\                                     Default share
print$                                  C:\Windows\system32\spool\drivers       Printer Drivers
Work                                    D:\Users\vpodans\Work
Z$                                      Z:\                                     Default share
_Shared Documents                       D:\Users\_Shared Documents


&lt;font color="#00ff00"&gt;[↑]&lt;/font&gt; [wbem]&lt;/p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;
  &lt;/blockquote&gt;
&lt;/div&gt;

&lt;p&gt;Вот так я сначала показал, как можно убить класс WMI и восстановить его обратно очень простым способом.&lt;/p&gt;&lt;img width="0" height="0" src="http://www.sysadmins.lv/aggbug.ashx?id=829a1ecd-f238-4ba1-b9f5-289768dadb40"/&gt;&lt;br/&gt;&lt;hr/&gt;PowerShell Powered - http://www.sysadmins.lv&lt;/div&gt;</description>
      <comments>http://www.sysadmins.lv/CommentView,guid,829a1ecd-f238-4ba1-b9f5-289768dadb40.aspx</comments>
      <category>PowerShell</category>
      <category>PowerShell / WMI</category>
    </item>
    <item>
      <trackback:ping>http://www.sysadmins.lv/Trackback.aspx?guid=c8b6b0f3-8cb6-42b3-b91d-e6b15d6ef161</trackback:ping>
      <pingback:server>http://www.sysadmins.lv/pingback.aspx</pingback:server>
      <pingback:target>http://www.sysadmins.lv/PermaLink,guid,c8b6b0f3-8cb6-42b3-b91d-e6b15d6ef161.aspx</pingback:target>
      <dc:creator>Camelot</dc:creator>
      <wfw:comment>http://www.sysadmins.lv/CommentView,guid,c8b6b0f3-8cb6-42b3-b91d-e6b15d6ef161.aspx</wfw:comment>
      <wfw:commentRss>http://www.sysadmins.lv/SyndicationService.asmx/GetEntryCommentsRss?guid=c8b6b0f3-8cb6-42b3-b91d-e6b15d6ef161</wfw:commentRss>
      <title>Управление безопасностью общих папок (сетевых шар) в PowerShell (часть 5)</title>
      <guid isPermaLink="false">http://www.sysadmins.lv/PermaLink,guid,c8b6b0f3-8cb6-42b3-b91d-e6b15d6ef161.aspx</guid>
      <link>http://www.sysadmins.lv/PermaLink,guid,c8b6b0f3-8cb6-42b3-b91d-e6b15d6ef161.aspx</link>
      <pubDate>Wed, 04 Mar 2009 14:22:45 GMT</pubDate>
      <description>&lt;div&gt;&lt;P&gt;По просьбе читателей, а так же с учётом востребованности (судя по сообщениям форумов и ньюсгрупп) я нашёл время переписать скрипт ShareUtils.ps1 с поддержкой работы с удалёнными машинами и попутно пофиксив недочёты, которые были найдены за время эксплуатации предыдущей версии скрипта. Предыдущая версия опубликована здесь: &lt;A title=http://vpodans.spaces.live.com/blog/cns!BB1419A2CFC1E008!188.entry href="http://vpodans.spaces.live.com/blog/cns!BB1419A2CFC1E008!188.entry"&gt;http://vpodans.spaces.live.com/blog/cns!BB1419A2CFC1E008!188.entry&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Технический функционал изменился только возможностью работы с удалёнными компьютерами, но синтаксис был изменён (а так же удалены лишние функции) по аналогии с &lt;A href="http://www.sysadmins.lv/PermaLink,guid,22c0550d-0c46-44ca-97ce-2b0bccbb51de.aspx"&gt;PrinterUtils&lt;/A&gt; и имеет примерно следующий вид:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;New-Share –Computer &amp;lt;Computer&amp;gt; –Name &amp;lt;Name&amp;gt; –Path &amp;lt;Path&amp;gt; –Description &amp;lt;Description&amp;gt;&lt;/FONT&gt; &lt;BR&gt;где &lt;STRONG&gt;Computer&lt;/STRONG&gt; – имя или IP адрес компьютера, на котором необходимо расшарить папку. (не обязательный параметр). Если не указан, используется текущий компьютер. &lt;BR&gt;&lt;STRONG&gt;Name&lt;/STRONG&gt; - сетевое имя для папки; &lt;BR&gt;&lt;STRONG&gt;Path&lt;/STRONG&gt; - путь к физической папке; &lt;BR&gt;&lt;STRONG&gt;Description&lt;/STRONG&gt; описание к сетевой папке. При наличии пробелов -&amp;nbsp; заключить в кавычки (не обязательный параметр); 
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Remove-Share –Computer &amp;lt;Computer&amp;gt; –Name &amp;lt;Name&amp;gt;&lt;/FONT&gt; – отменяет расшаривание на папке. Сама папка не удаляется. &lt;BR&gt;где &lt;STRONG&gt;Computer&lt;/STRONG&gt; – имя или IP адрес компьютера, на котором нужно отменить расшаривание папки. (не обязательный параметр). Если не указан, используется текущий компьютер. &lt;BR&gt;&lt;STRONG&gt;Name&lt;/STRONG&gt; - сетевое имя папки; 
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Get-Share –Computer &amp;lt;Computer&amp;gt; –Name &amp;lt;Name&amp;gt;&lt;/FONT&gt; – получает основные сведения и списки DACL Share Permissions с указанных или всех сетевых папок. &lt;BR&gt;где &lt;STRONG&gt;Computer&lt;/STRONG&gt; – имя или IP адрес компьютера, с которого нужно получить сведения о сетевых папках. (не обязательный параметр). Если не указан, используется текущий компьютер. &lt;BR&gt;&lt;STRONG&gt;Name&lt;/STRONG&gt; - имя сетевой папки (не обязательный параметр). Если не указан, то выбираются все сетевые папки с типом &lt;STRONG&gt;Disk Drive&lt;/STRONG&gt; (в которые системные шары не входят). 
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Set-SharePermission –User &amp;lt;User&amp;gt; –AceType &amp;lt;AceType&amp;gt; –AccessMask &amp;lt;AccessMask&amp;gt;&lt;/FONT&gt; – устанавливает единственный Share Permission ACE для указанного в аргументах пользователя. &lt;BR&gt;&lt;STRONG&gt;User&lt;/STRONG&gt; - имя пользователя/группы, которой предоставляется доступ; &lt;BR&gt;&lt;STRONG&gt;AceType&lt;/STRONG&gt; - тип доступа. Этот параметр должен иметь одно из значений &lt;EM&gt;Allow/Deny; &lt;BR&gt;&lt;/EM&gt;&lt;STRONG&gt;AccessMask&lt;/STRONG&gt; - маска доступа. Этот параметр должен иметь одно из значений &lt;EM&gt;FullControl/Change/Read;&lt;/EM&gt; &lt;BR&gt;&lt;EM&gt;&lt;BR&gt;Функция не может быть вначале строки, а только после конвейера Get-Share или другого источника с подходящими данными (например, если данные были сохранены в CSV/XML файле, то их можно использовать в качестве источника: Import-Csv path.csv | Set-SharePermission Everyone Allow Change). При этом все текущие права на сетевую папку будут удалены и записан только указанный в аргументах пользователь/группа.&lt;/EM&gt; 
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Add-SharePermission –User &amp;lt;User&amp;gt; –AceType &amp;lt;AceType&amp;gt; –AccessMask &amp;lt;AccessMask&amp;gt;&lt;/FONT&gt; – добавляет указанного в аргументах пользователя к Share Permissions выбранной сетевой папки (или папок) &lt;BR&gt;&lt;STRONG&gt;User&lt;/STRONG&gt; - имя пользователя/группы, которой предоставляется доступ; &lt;BR&gt;&lt;STRONG&gt;AceType&lt;/STRONG&gt; - тип доступа. Этот параметр должен иметь одно из значений &lt;EM&gt;Allow/Deny;&lt;/EM&gt; &lt;BR&gt;&lt;STRONG&gt;AccessMask&lt;/STRONG&gt; - маска доступа. Этот параметр должен иметь одно из значений &lt;EM&gt;FullControl/Change/Read; &lt;BR&gt;&lt;BR&gt;Функция не может быть вначале строки, а только после конвейера Get-Share или другого источника с подходящими данными (например, если данные были сохранены в CSV/XML файле, то их можно использовать в качестве источника: Import-Csv path.csv | Add-SharePermission Everyone Allow Change).&lt;/EM&gt; 
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Remove-SharePermission –User &amp;lt;User&amp;gt;&lt;/FONT&gt; – удаляет указанного пользователя из DACL выбранной сетевой папки (папок). Не может быть вначале строки, а только на выходе конвейера, откуда поступают объекты сетевых папок. Например, Get-Share | Remove-SharePermission Everyone – удалит группу Everyone из всех SharePermissions всех расшаренных папок на локальном компьютере. Разрешения NTFS при этом не изменяются. &lt;BR&gt;где &lt;STRONG&gt;User&lt;/STRONG&gt; - имя пользователя/группы, которого следует удалить из ACL сетевой папки. &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Примеры использования практически идентичные, как и в PrinterUtils: &lt;A title=http://www.sysadmins.lv/PermaLink,guid,22c0550d-0c46-44ca-97ce-2b0bccbb51de.aspx href="http://www.sysadmins.lv/PermaLink,guid,22c0550d-0c46-44ca-97ce-2b0bccbb51de.aspx"&gt;http://www.sysadmins.lv/PermaLink,guid,22c0550d-0c46-44ca-97ce-2b0bccbb51de.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;И, собственно, сам код:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#######################################################&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; ShareUtils.ps1&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; Version 0.9&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#
#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; Functions for advanced share management&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#
#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; Note:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; Previous version is published at my former blog:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; &lt;/FONT&gt;&lt;A href="http://vpodans.spaces.live.com/blog/cns!BB1419A2CFC1E008!188.entry" target=_blank&gt;&lt;FONT color=#009500 size=2 face=Verdana&gt;http://vpodans.spaces.live.com/blog/cns!BB1419A2CFC1E008!188.entry&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#
#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; Vadims Podans (c) 2009&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; &lt;/FONT&gt;&lt;A href="http://www.sysadmins.lv/"&gt;&lt;FONT color=#009500 size=2 face=Verdana&gt;http://www.sysadmins.lv/&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt;####################################################### &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; внутренняя функция, которая преобразовывает числовой код возврата операции записи DACL&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; в текстовое значение.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #0000ff"&gt;function&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;_ShareUtils_Get-Code&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$write&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;) {
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;switch&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$write&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.ReturnValue) {
   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; {&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Success&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;}
   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;2&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; {&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Access Denied&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;}
   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;8&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; {&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Unknown Failure&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;}
   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;9&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; {&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Invalid Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;}
   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;21&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; {&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Invalid Parameter&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;}
   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;22&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; {&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Duplicate Share&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;}
   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;23&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; {&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Redirected Path&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;}
   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;24&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; {&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Unknown Device or Directory&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;}
   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;25&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; {&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Net Name Not Found&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;}
   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;default&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; {&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Unknown error $write.ReturnValue&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;}
   }
}

&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; функция для извлечения сведений и DACL с существующих сетевых папок.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; обязательна для использования функций Add-SharePermission и Set-SharePermission&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; если компьютер не указан, то используется текущий. Если имя сетевой паки не указано,&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; то возвращается список сведений и DACL всех сетевых папок на локальном или удалённом компьютере&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #0000ff"&gt;function&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;Get-Share&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$computer&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$name&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;) {
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$name&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;) {
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$shares&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;gwmi&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Win32_Share&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-STYLE: italic; COLOR: #5f9ea0"&gt;-ComputerName&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$computer&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-STYLE: italic; COLOR: #5f9ea0"&gt;-Filter&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;name = '$name'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;    } &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&lt;FONT size=2 face=Verdana&gt;else&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt; {
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$shares&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;gwmi&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Win32_Share&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-STYLE: italic; COLOR: #5f9ea0"&gt;-ComputerName&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$computer&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-STYLE: italic; COLOR: #5f9ea0"&gt;-Filter&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;type = 0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;    }
    &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #800080"&gt;$ShareInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt; @()
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;foreach&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$share&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;in&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$shares&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;) {
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$ShareSec&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;gwmi&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Win32_LogicalShareSecuritySetting&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-STYLE: italic; COLOR: #5f9ea0"&gt;-ComputerName&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$computer&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-STYLE: italic; COLOR: #5f9ea0"&gt;-filter&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;name='$($share.name)'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt; 
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$shareSec&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;) {
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$SD&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$sharesec&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.GetSecurityDescriptor()
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$ShareInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;+=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$SD&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Descriptor.DACL | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;%&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt; {
                &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;select&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; @{e&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$share&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.ClassPath.Server};n&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Computer&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;},
                @{e&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$share&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.name};n&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;},
                @{e&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$share&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Path};n&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Path&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;},
                @{e&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$share&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Description};n&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Description&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;},
                AccessMask,
                AceFlags,
                AceType,
                @{e&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.trustee.Name};n&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;User&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;},
                @{e&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.trustee.Domain};n&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Domain&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;},
                @{e&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.trustee.SIDString};n&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;SID&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;}
            }
        } &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;else&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt; {
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;Write-Warning&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Specified share not exist or you may not have sufficient rights to access them!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;        }
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;&lt;FONT size=2 face=Verdana&gt;$ShareInfo&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;    }
}

&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; функция записи обновлённых сведений в сетевые папки. Не может быть первой в строке, а только после&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; конвейера, откуда поступают данные для записи. Если папка не расшарена, то скрипт её расшарит&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; автоматически и запишет необходимые сведения о сетевой папке.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #0000ff"&gt;function&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;Set-Share&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt; {
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$ShareInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; @(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$input&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$ShareInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;select&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-STYLE: italic; COLOR: #5f9ea0"&gt;-unique&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Computer&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Path&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Description&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;%&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt; {
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Computer&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.Computer
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$name&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.name
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$SD&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; ([&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;WMIClass&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;] &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Win32_SecurityDescriptor&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;).CreateInstance()
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$ace&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; ([&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;WMIClass&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;] &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Win32_Ace&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;).CreateInstance()
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Trustee&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; ([&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;WMIClass&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;] &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Win32_Trustee&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;).CreateInstance()
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$sd&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.DACL &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt; @()
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$ShareInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;?&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; {&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Computer &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;-eq&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Computer&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;-and&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.name &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;-eq&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$name&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;} | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;%&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt; {
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$SID&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;new-object&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;security.principal.securityidentifier&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.SID)
            [&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;byte&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;[]] &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$SIDArray&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; ,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$SID&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.BinaryLength
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$SID&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.GetBinaryForm(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$SIDArray&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Trustee&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Name &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.user
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Trustee&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.SID &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$SIDArray&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #800080"&gt;$ace&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.AccessMask &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.AccessMask
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$ace&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.AceType &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.AceType
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$ace&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.AceFlags &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.AceFlags
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$ace&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.trustee &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Trustee&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #800080"&gt;$SD&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.DACL &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;+=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$ace&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.psObject.baseobject
        }
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; проверяется наличие расшаренной папки. Если папка есть, то в неё записывается только SecurityDescriptor&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; в противном случае она расшаривается и в неё производится полная запись всех данных&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$share&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;gwmi&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Win32_Share&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-STYLE: italic; COLOR: #5f9ea0"&gt;-ComputerName&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$computer&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-STYLE: italic; COLOR: #5f9ea0"&gt;-Filter&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;name = '$name'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;        &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$share&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;) {
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$inParams&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$share&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.psbase.GetMethodParameters(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;SetShareInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$inParams&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Access &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$SD&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #800080"&gt;$write&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$share&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.psbase.invokemethod(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;SetShareInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$inParams&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$null&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;Write-Host&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Setting DACL on current share: $name on server $computer&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-STYLE: italic; COLOR: #5f9ea0"&gt;-ForegroundColor&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;green&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;_ShareUtils_Get-Code&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Write&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;        } &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&lt;FONT size=2 face=Verdana&gt;else&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt; {
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$shareobject&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; [&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;wmiClass&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;\\$computer\root\cimv2:win32_Share&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #800080"&gt;$inParams&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$shareobject&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.psbase.GetMethodParameters(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Create&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$inParams&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.name &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.name
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$inParams&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.path &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.path
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$inParams&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Description &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.Description
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$inParams&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Type &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #800080"&gt;$inParams&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Access &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$SD&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #800080"&gt;$write&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$shareobject&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.psbase.invokemethod(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Create&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$inParams&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$null&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;Write-Host&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Processing current share: $name on server $computer&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-STYLE: italic; COLOR: #5f9ea0"&gt;-ForegroundColor&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;green&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;_ShareUtils_Get-Code&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Write&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;        }
    }
}

&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #0000ff"&gt;function&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;_Create-SDObject&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$user&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AceType&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AccessMask&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;) {
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; преобразование текстового вида прав в числовые значения&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$masks&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; @{FullControl &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;2032127&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;; Change &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1245631&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;; Read &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1179817&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;}
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$types&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; @{Allow &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;; Deny &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;}
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; создание необходимых свойств для объекта. Для поддержки удалённого управления&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; было добавлено свойство Computer, которое будет принимать от Get-Share аналогичное&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; значение. Тем самым обеспечивается сквозная трансляция имени компьютера, где&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; находится сетевая папка, по конвейеру для последующей записи&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;New-Object&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;System.Management.Automation.PSObject&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;    &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;Add-Member&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;NoteProperty&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Computer&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;  ([&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;PSObject&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$null&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;Add-Member&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;NoteProperty&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;  ([&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;PSObject&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$null&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;Add-Member&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;NoteProperty&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Path&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;  ([&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;PSObject&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$null&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;Add-Member&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;NoteProperty&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Description&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;  ([&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;PSObject&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$null&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;Add-Member&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;NoteProperty&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;AccessMask&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;  ([&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;uint32&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$null&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;Add-Member&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;NoteProperty&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;AceFlags&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;  ([&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;uint32&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$null&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;Add-Member&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;NoteProperty&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;AceType&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;  ([&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;uint32&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$null&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;Add-Member&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;NoteProperty&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;User&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;  ([&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;PSObject&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$null&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;Add-Member&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;NoteProperty&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Domain&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;  ([&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;PSObject&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$null&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;Add-Member&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;NoteProperty&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;SID&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;  ([&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;PSObject&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$null&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; заполнение объекта данными, которые были указаны в качестве аргументов вызова функции и возврат&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; объекта в вызывающую функцию&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Name &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$name&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;    &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.User &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$user&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;    &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.SID &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;new-object&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;security.principal.ntaccount&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$user&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;).translate([&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;security.principal.securityidentifier&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;])
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.AccessMask &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$masks&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AccessMask&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;    &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.AceType &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$types&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AceType&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;    &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;&lt;FONT size=2 face=Verdana&gt;$AddInfo&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;}

&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #0000ff"&gt;function&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;Set-SharePermission&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$user&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AceType&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AccessMask&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;) {
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; принимаются данные с конвейера &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$ShareInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; @(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$input&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;_Create-SDObject&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$user&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AceType&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AccessMask&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;    &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; в этом цикле перебираются по именам все имена расшаренных папок и для каждой из них&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; записывается указанный в аргументах пользователь с удалением текущих ACE из ACL шары&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; это видно по тому, что никакая часть $ShareInfo не передаётся по конвейеру на запись&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;foreach&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$share&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;in&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$ShareInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;select&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-STYLE: italic; COLOR: #5f9ea0"&gt;-Unique&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Computer&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Name&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)) {
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Computer &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$share&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.Computer
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Name &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$share&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.name
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Description &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Share&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.Description
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;SPAN style="COLOR: #5f9ea0"&gt;Set-Share&lt;/SPAN&gt;
    }
}

&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; просто добавляет нового участника безопасности к текущему DACL расшаренной папки.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; NTFS Acl не изменяется.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #0000ff"&gt;function&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;Add-SharePermission&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$user&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AceType&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AccessMask&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;) {
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$ShareInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; @(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$input&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;); &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$ShareInfoNew&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt; @()
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;_Create-SDObject&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$user&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AceType&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AccessMask&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;    &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #0000ff"&gt;foreach&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Share&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;in&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$ShareInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;select&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-STYLE: italic; COLOR: #5f9ea0"&gt;-Unique&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Computer&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Name&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)) {
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Name &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Share&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.name
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Computer &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Share&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.Computer
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Description &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Share&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.Description
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; вот этой строкой мы из списка всех сетевых папок итеративно перебираем каждую шару&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$ShareInfoNew&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; @(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$ShareInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;?&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.name &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;-eq&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Share&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.name})
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; в хвост списка ACL каждой сетевой шары добавляем новый ACE&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$ShareInfoNew&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;+=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;        &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; и подаём на запись&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$ShareInfoNew&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;Set-Share&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;    }
}

&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; основная функция для удаления единичного ACE из ACL сетевой папки. Процесс сводится к извлечению&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; текущего списка (или списков) ACL и фильтрации ACE в этом списке по методу Not Equal. Всё, что не подпадает под&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; это действие записываются обратно в переменную, а всё, что подпало (указанный пользователь) обратно&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; в переменную $ShareInfo не записывается.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #0000ff"&gt;function&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;Remove-SharePermission&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$user&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;) {
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$shares&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; @(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$input&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; просто берём списки ACL, которые пришли по конвейеру и выкидываем оттуда все ACE,&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; в которых фигурирует указанный в аргументах пользователь/группа и записывем ACE обратно в ACL&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$shares&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;?&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; {&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.user &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;-ne&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$user&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;} | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;Set-Share&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;}

&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; основная функция для создания новых сетевых папок на локальном компьютере. Здесь я использую упрощённый&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; вариант создания сетевой папки, но учитывая один большой нюанс я добавил одно действие. Суть проблемы&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; изложена тут: &lt;/FONT&gt;&lt;A href="http://vpodans.spaces.live.com/blog/cns!BB1419A2CFC1E008!170.entry" target=_blank&gt;&lt;FONT color=#009500 size=2 face=Verdana&gt;http://vpodans.spaces.live.com/blog/cns!BB1419A2CFC1E008!170.entry&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; поэтому при создании новой сетевой папки я вручную создаю с нуля список ACL, который содержит&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; только группу Everyone и с правом Allow Read.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #0000ff"&gt;function&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;New-Share&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$computer&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$env:COMPUTERNAME&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$name&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$path&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Description&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;) {
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$user&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;new-object&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;security.principal.securityidentifier&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;S-1-1-0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;).translate([&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;security.principal.ntaccount&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;])
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;_Create-SDObject&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$user&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.Value Allow Read
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Computer &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$computer&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;    &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Path &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$path&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;    &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Description &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Description&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;    &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #800080"&gt;$AddInfo&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;Set-Share&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;}

&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; отменяет расшаривание сетевой папки. Сама же физическая папка не изменяется.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #0000ff"&gt;function&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;Remove-Share&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$computer&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$name&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;) {
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$share&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;gwmi&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Win32_Share&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-STYLE: italic; COLOR: #5f9ea0"&gt;-ComputerName&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$computer&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-STYLE: italic; COLOR: #5f9ea0"&gt;-Filter&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;name = '$name'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;    &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$share&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;) {
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;Write-Warning&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Specified network share doesn't exist!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;    } &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&lt;FONT size=2 face=Verdana&gt;else&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt; {
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$write&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$share&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.delete()
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;Write-Host&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Deleting network share $name on computer $computer:&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;        &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;_ShareUtils_Get-Code&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$write&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;    }
}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;img width="0" height="0" src="http://www.sysadmins.lv/aggbug.ashx?id=c8b6b0f3-8cb6-42b3-b91d-e6b15d6ef161"/&gt;&lt;br/&gt;&lt;hr/&gt;PowerShell Powered - http://www.sysadmins.lv&lt;/div&gt;</description>
      <comments>http://www.sysadmins.lv/CommentView,guid,c8b6b0f3-8cb6-42b3-b91d-e6b15d6ef161.aspx</comments>
      <category>PowerShell</category>
      <category>PowerShell / ACL</category>
      <category>PowerShell / WMI</category>
    </item>
    <item>
      <trackback:ping>http://www.sysadmins.lv/Trackback.aspx?guid=86f52f41-e341-459c-a781-dbd5e0861113</trackback:ping>
      <pingback:server>http://www.sysadmins.lv/pingback.aspx</pingback:server>
      <pingback:target>http://www.sysadmins.lv/PermaLink,guid,86f52f41-e341-459c-a781-dbd5e0861113.aspx</pingback:target>
      <dc:creator>Camelot</dc:creator>
      <wfw:comment>http://www.sysadmins.lv/CommentView,guid,86f52f41-e341-459c-a781-dbd5e0861113.aspx</wfw:comment>
      <wfw:commentRss>http://www.sysadmins.lv/SyndicationService.asmx/GetEntryCommentsRss?guid=86f52f41-e341-459c-a781-dbd5e0861113</wfw:commentRss>
      <title>Get-SystemUptime</title>
      <guid isPermaLink="false">http://www.sysadmins.lv/PermaLink,guid,86f52f41-e341-459c-a781-dbd5e0861113.aspx</guid>
      <link>http://www.sysadmins.lv/PermaLink,guid,86f52f41-e341-459c-a781-dbd5e0861113.aspx</link>
      <pubDate>Sun, 15 Feb 2009 18:07:38 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;Этот скрипт написал скорее для себя, но весьма полезный. В Windows XP/Windows Server 2003 аптайм можно было легко посмотреть в свойствах сетевого подключения, которое как правило работает постоянно. Но в Windows Vista/Windows Server 2008 до него добираться далеко. Смотреть в Task Manager не удобно, поскольку он показывает аптайм в часах, а в уме высчитывать дни как-то неудобно. Вот и набросал функцию, которую положил себе в профиль:&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;&lt;span style="color: #0000ff"&gt;function&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;Get-SystemUptime&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #800080"&gt;$computer&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;$env:computername&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;&lt;span style="color: #000000"&gt;) {
    &lt;/span&gt;&lt;span style="color: #800080"&gt;$lastboot&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; [&lt;/span&gt;&lt;span style="color: #008080"&gt;System.Management.ManagementDateTimeconverter&lt;/span&gt;&lt;span style="color: #000000"&gt;]::&lt;/span&gt;&lt;span style="color: #8b4513"&gt;ToDateTime&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;&lt;span style="color: #000000"&gt;(
    &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;$((gwmi  Win32_OperatingSystem -computername $computer).LastBootUpTime)&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;&lt;span style="color: #000000"&gt;)
    &lt;/span&gt;&lt;span style="color: #800080"&gt;$uptime&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;Get-Date&lt;/span&gt;&lt;span style="color: #000000"&gt;) &lt;/span&gt;&lt;span style="color: #ff0000"&gt;-&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$lastboot&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="color: #000000"&gt;
&lt;font size="2" face="Verdana"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;Write-Host&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;System Uptime for $computer is: &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$uptime&lt;/span&gt;&lt;span style="color: #000000"&gt;.days &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;days&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$uptime&lt;/span&gt;&lt;span style="color: #000000"&gt;.hours &lt;/span&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;`&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="color: #000000"&gt;
&lt;font size="2" face="Verdana"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;hours&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$uptime&lt;/span&gt;&lt;span style="color: #000000"&gt;.minutes &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;minutes&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$uptime&lt;/span&gt;&lt;span style="color: #000000"&gt;.seconds &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;seconds&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="color: #000000"&gt;
&lt;font size="2" face="Verdana"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Концепция очень простая – берётся дата и время последней загрузки системы и вычитается из текущей даты и времени. Здесь важно отметить, что WMI возвращает нам дату в своём формате, который нужно преобразовать в тип &lt;strong&gt;DateTime&lt;/strong&gt;.&lt;/p&gt;&lt;img width="0" height="0" src="http://www.sysadmins.lv/aggbug.ashx?id=86f52f41-e341-459c-a781-dbd5e0861113"/&gt;&lt;br/&gt;&lt;hr/&gt;PowerShell Powered - http://www.sysadmins.lv&lt;/div&gt;</description>
      <comments>http://www.sysadmins.lv/CommentView,guid,86f52f41-e341-459c-a781-dbd5e0861113.aspx</comments>
      <category>PowerShell</category>
      <category>PowerShell / WMI</category>
    </item>
    <item>
      <trackback:ping>http://www.sysadmins.lv/Trackback.aspx?guid=2a531ba4-0af2-47f7-9d17-e310eb527f2e</trackback:ping>
      <pingback:server>http://www.sysadmins.lv/pingback.aspx</pingback:server>
      <pingback:target>http://www.sysadmins.lv/PermaLink,guid,2a531ba4-0af2-47f7-9d17-e310eb527f2e.aspx</pingback:target>
      <dc:creator>Camelot</dc:creator>
      <wfw:comment>http://www.sysadmins.lv/CommentView,guid,2a531ba4-0af2-47f7-9d17-e310eb527f2e.aspx</wfw:comment>
      <wfw:commentRss>http://www.sysadmins.lv/SyndicationService.asmx/GetEntryCommentsRss?guid=2a531ba4-0af2-47f7-9d17-e310eb527f2e</wfw:commentRss>
      <title>Обзор новых командлетов PowerShell V2 CTP3 - WMI</title>
      <guid isPermaLink="false">http://www.sysadmins.lv/PermaLink,guid,2a531ba4-0af2-47f7-9d17-e310eb527f2e.aspx</guid>
      <link>http://www.sysadmins.lv/PermaLink,guid,2a531ba4-0af2-47f7-9d17-e310eb527f2e.aspx</link>
      <pubDate>Sun, 04 Jan 2009 18:37:15 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;Windows Management Instrumentarion или просто WMI в PowerShell V2 так же претерпел изменения, а точнее дополнения по сравнению с версией 1.0. Я планирую более подробно описать новые и обновлённые параметры командлета &lt;strong&gt;Get-WMIObject&lt;/strong&gt;:&lt;/p&gt; &lt;p&gt;1) &lt;strong&gt;-List&lt;/strong&gt; - ключ. Позволяет получать список классов для системы или список свойств и методов для конкретного класса:&lt;/p&gt; &lt;blockquote&gt;&lt;pre style="background-color: black; font: 9pt courier new; color: #fff"&gt;&lt;font color="#009500"&gt;&lt;span black? background-color: #009500?;&gt;[vPodans] Get-WmiObject -List


   NameSpace: ROOT\cimv2

Name                                Methods              Properties
----                                -------              ----------
__NotifyStatus                      {}                   {StatusCode}
__ExtendedStatus                    {}                   {Description, Operation, ParameterInfo, ProviderName...}
Win32_PrivilegesStatus              {}                   {Description, Operation, ParameterInfo, PrivilegesNotHeld...}
Win32_JobObjectStatus               {}                   {AdditionalDescription, Description, Operation, ParameterIn...
__SecurityRelatedClass              {}                   {}
__Trustee                           {}                   {Domain, Name, SID, SidLength...}
Win32_Trustee                       {}                   {Domain, Name, SID, SidLength...}
__NTLMUser9X                        {}                   {Authority, Flags, Mask, Name...}
....&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;По умолчанию, без указания других параметров, параметр &lt;strong&gt;-List&lt;/strong&gt; выводит список классов, которые расположены в контейнере по умолчанию &lt;strong&gt;Root\CimV2&lt;/strong&gt;. Но можно указывать и другие контейнеры при помощи параметра &lt;strong&gt;-NameSpace&lt;/strong&gt;. Например:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;Get-WmiObject -Namespace root\default -List&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Или для конкретного класса:&lt;/p&gt;
&lt;blockquote&gt;&lt;pre style="background-color: black; font: 9pt courier new; color: #fff"&gt;&lt;font color="#009500"&gt;&lt;span black? background-color: #009500?;&gt;[vPodans] Get-WmiObject Win32_share -List | select * | fl


Name             : Win32_Share
__GENUS          : 1
__CLASS          : Win32_Share
__SUPERCLASS     : CIM_LogicalElement
__DYNASTY        : CIM_ManagedSystemElement
__RELPATH        : Win32_Share
__PROPERTY_COUNT : 10
__DERIVATION     : {CIM_LogicalElement, CIM_ManagedSystemElement}
__SERVER         : THOR
__NAMESPACE      : ROOT\cimv2
__PATH           : \\THOR\ROOT\cimv2:Win32_Share
Path             : \\THOR\ROOT\cimv2:Win32_Share
Derivation       : {CIM_LogicalElement, CIM_ManagedSystemElement}
Methods          : {Create, SetShareInfo, GetAccessMask, Delete}
Scope            : System.Management.ManagementScope
Options          : System.Management.ObjectGetOptions
ClassPath        : \\THOR\ROOT\cimv2:Win32_Share
Properties       : {AccessMask, AllowMaximum, Caption, Description...}
SystemProperties : {__GENUS, __CLASS, __SUPERCLASS, __DYNASTY...}
Qualifiers       : {CreateBy, DeleteBy, dynamic, Locale...}
Site             :
Container        :



[vPodans]&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;здесь мы видим доступные методы (Create, SetShareInfo и другие), а так же свойства объекта класса (AccessMask, AllowMaximum, Caption и другие). Можно и более подробно посмотреть методы или свойства объекта:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;Get-WmiObject Win32_share -List | %{$_.methods}&lt;/font&gt; - получение подробных сведений о методах объекта класса&lt;br&gt;&lt;font color="#0000ff"&gt;Get-WmiObject Win32_share -List | %{$_.properties}&lt;/font&gt; - получение подробных сведений о свойствах объекта класаа&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Кстати говоря, в PowerShell 1.0 параметр &lt;strong&gt;-List&lt;/strong&gt; не работал для конкретных классов, а только для перечисления самих классов. Т.е. приведённые выше 2 команды в 1.0 не работают. Теперь этот недостаток исправлен.&lt;/p&gt;
&lt;p&gt;2) &lt;strong&gt;-AsJob&lt;/strong&gt; - ключ. Позволяет выполнять команду в фоновом режиме. Это новая возможность в PowerShell V2, которая позволяет запускать некоторые команды в фоновом режиме не блокируя при этом саму консоль. Коллега, &lt;a target="_blank" href="http://xaegr.wordpress.com/"&gt;Вася Гусев&lt;/a&gt;, уже делал скринкаст по фоновым работам в PowerShell (и не только о них) на &lt;a target="_blank" href="http://www.techdays.ru/Lecture.aspx?LID=28c60ac7-f774-45ca-9ff9-2f774d2fd70b"&gt;TechDays.ru&lt;/a&gt; (потребуется авторизация с помощью LiveID или OpenID). И я так же планирую обсудить в своём блоге этот вопрос в обозримом будущем.&lt;/p&gt;
&lt;p&gt;3) &lt;strong&gt;-Authentication&lt;/strong&gt; - параметр. Позволяет задавать уровень аутентификации к удалённой машине. Возможные уровни аутентификации могут быть:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-1&lt;/strong&gt; &lt;em&gt;(Unchanged)&lt;/em&gt; - я не смог найти описание этому уровню, но он в Windows XP/Windows Server 2003 используется для локальных подключений на себя. 
&lt;li&gt;&lt;strong&gt;0&lt;/strong&gt; &lt;em&gt;(Default)&lt;/em&gt; - необходимый уровень будет согласовываться между сервером и клиентом в зависимости от настроек Windows Authentication. 
&lt;li&gt;&lt;strong&gt;1&lt;/strong&gt; &lt;em&gt;(None)&lt;/em&gt; - не использует аутентификацию. Все уровни безопасности будут проигнорированы. Не следует использовать этот уровень, поскольку с ним аутентифицироваться не удастся (разве что в случае разрешённых анонимных подключений на сервере).
&lt;li&gt;&lt;strong&gt;2&lt;/strong&gt; &lt;em&gt;(Connect)&lt;/em&gt; - клиент аутентифицируется только при установке подключения. После установки подключения аутентификационные данные не проверяются. 
&lt;li&gt;&lt;strong&gt;3&lt;/strong&gt; &lt;em&gt;(Call)&lt;/em&gt; - пересылаемые учётные данные проверяются при каждом запросе клиента. Учётные данные криптографически подписываются, но не шифруются. Пересылаемые данные во время сессии не подписываются и не шифруются. Гарантируется, что во время пересылки аутентификационных данных они не были никоим образом изменены.
&lt;li&gt;&lt;strong&gt;4&lt;/strong&gt; &lt;em&gt;(Packet)&lt;/em&gt; - похож на уровень &lt;strong&gt;Call&lt;/strong&gt; с учётом того, что сервер проверяет что данные пришли от ожидаемого клиента. Так же учётные данные подписываются и не шифруются. Данные не подписываются и не шифруются (используется по умолчанию при сетевых подключениях). 
&lt;li&gt;&lt;strong&gt;5&lt;/strong&gt; &lt;em&gt;(PacketIntegrity)&lt;/em&gt; - подписываются как учётные данные, так и сами пересылаемые данные. Данный уровень гарантирует, что с момента отправки от клиента до получения данных сервером любые данные не были изменены. Но данные (в том числе учётные) по прежнему не шифруются. 
&lt;li&gt;&lt;strong&gt;6&lt;/strong&gt; &lt;em&gt;(PacketPrivacy)&lt;/em&gt; - все передаваемые данные между клиентом и сервером подписываются и шифруются.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;В версии 1.0 можно было изменять уровни аутентификации, но там были свои сложности. Например, при первом подключении нельзя было указывать свой уровень аутентификации, а только при последующих обращениях к серверу. Например так:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;$a = Get-WmiObject Win32_share -filter "Name = 'sharename'"&lt;br&gt;$a.PSBase.Scope.Options.Authentication = 6&lt;/font&gt;&lt;font color="#000000"&gt; или &lt;/font&gt;&lt;font color="#0000ff"&gt;PacketPrivacy&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;4) &lt;strong&gt;-Authority&lt;/strong&gt; - параметр. Позволяет клиенту выбирать, кто будет его аутентифицировать (например, LSA удалённой машины или сервер Active Directory) при указании параметра &lt;strong&gt;-Credentials&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;5) &lt;strong&gt;-DirectRead&lt;/strong&gt; - ключ. Если указывается, то производится прямой доступ к классу без привязки к нему более высших или производных классов. Реальной пользы я тут пока что не вижу.&lt;/p&gt;
&lt;p&gt;6) &lt;strong&gt;-Impersonation&lt;/strong&gt; - параметр. В этом параметре можно указывать уровень имперсонализации при удалённых подключениях. Может иметь следующие значения:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;0&lt;/strong&gt; &lt;em&gt;(Default)&lt;/em&gt; - так же не смог найти описания для него. Во всяком случае в самом WMI такой уровень нигде не определён и скорее всего это какой-то производный уровень из нескольких внутри самого PowerShell. 
&lt;li&gt;&lt;strong&gt;1&lt;/strong&gt; &lt;em&gt;(Anonymous)&lt;/em&gt; - При указании этого уровня учётные данные клиента скрываются. По факту WMI в современных версиях ОС скорее всего не поддерживает этот уровень, а переводит его в уровень &lt;strong&gt;Identify&lt;/strong&gt; и использует его для имперсонализации клиента. В Windows 2000 было так, во всяком случае. Да и особого смысла в нём нету, поскольку с таким уровнем ничего сделать не удастся в общем смысле. 
&lt;li&gt;&lt;strong&gt;2&lt;/strong&gt; &lt;em&gt;(Identify)&lt;/em&gt; - позволяет объектам запрашивать учётные данные вызывающего пользователя, но не использовать их. Следовательно удалённый объект не сможет установить вас в контексте безопасности (т.е. подтвердить, что вы именно тот за кого себя выдаёте). С таким уровнем обычно можно только прочитать ACL списки объектов (и то не всегда), но не более. 
&lt;li&gt;&lt;strong&gt;3&lt;/strong&gt; &lt;em&gt;(Impersonate)&lt;/em&gt; - позволяет объектам использовать учётные данные вызывающего пользователя. Это в свою очередь позволяет пользователю использовать свои учётные данные для произведения любых операций над объектами в пределах прав пользователя на этот объект (обычно эти права задаются ACL списками). Данный уровень используется в PowerShell по умолчанию. Поэтому для использования уровня &lt;strong&gt;Impersonate&lt;/strong&gt; данный параметр указывать не обязательно. 
&lt;li&gt;&lt;strong&gt;4&lt;/strong&gt; &lt;em&gt;(Delegate)&lt;/em&gt; - это уровень транзитивной делегации учётных данных. Это позволяет удалённым объектам передавать ваши учётные данные другим объектам на других машинах. Иными словами, когда пользователь с машины &lt;strong&gt;A&lt;/strong&gt; подключается к машине &lt;strong&gt;B&lt;/strong&gt;, то в этом случае используется уровень &lt;strong&gt;Impersonate&lt;/strong&gt; между &lt;strong&gt;A&lt;/strong&gt; и &lt;strong&gt;B&lt;/strong&gt;. Но если для завершения операции объекту с машины &lt;strong&gt;B&lt;/strong&gt; нужно получить ещё объект с машины &lt;strong&gt;C&lt;/strong&gt;, то &lt;strong&gt;Delegate&lt;/strong&gt; позволит машине &lt;strong&gt;B&lt;/strong&gt; аутентифицироваться на машине &lt;strong&gt;C&lt;/strong&gt; с учётными данными, которые были получены от машины &lt;strong&gt;A&lt;/strong&gt;. Если совсем грубо, то пользователь просто разрешает запрашиваемым объектам использовать его учётные записи для своих нужд. Безусловно, это большой риск, когда объект может распоряжаться полученными учётными данными как хочет, поэтому все пользователи и компьютеры, которые будут участвовать в транзакции (например, пользователь и компьютеры &lt;strong&gt;A&lt;/strong&gt;, &lt;strong&gt;B&lt;/strong&gt; и &lt;strong&gt;C&lt;/strong&gt;) должны быть помечены как &lt;strong&gt;Trusted For Delegation&lt;/strong&gt; в &lt;strong&gt;Active Directory&lt;/strong&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;В версии 1.0 так же можно было изменять уровень имперсонализации с теми же сложностями, которые были и у параметра &lt;strong&gt;Authentication&lt;/strong&gt;. А именно - нельзя было изменять этот уровень при первом подключении к WMI. Делалось это так:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;$a = Get-WmiObject Win32_share -filter "Name = 'sharename'"&lt;br&gt;$a.PSBase.Scope.Options.Impersonation = 4&lt;/font&gt; или &lt;font color="#0000ff"&gt;Delegate&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;7) &lt;strong&gt;-EnableAllPrivileges&lt;/strong&gt; - ключ. Данный ключ включает все привилегии безопасности (семейство &lt;strong&gt;SeSecurity Privilege&lt;/strong&gt;), которыми обладает пользователь. Я уже не раз отмечал, что при работе в системе из графической оболочки Explorer, &lt;strong&gt;LSA&lt;/strong&gt; &lt;em&gt;(Local Security Authority)&lt;/em&gt; прозрачно для пользователя включает привилегии при необходимости. Однако, в целях безопасности для скриптов LSA по умолчанию не включает их. Привилегии безопасности нужны для многих операций, как смена владельца объектов, редактирования списков ACL множества объектов, выполнение критических для системы операции как удаление журналов событий, восстановления системы из точек восстановления и т.д. И только WMI нам предлагает интерфейс для их использования. Причём теперь это делается простым указанием ключа при использовании командлета &lt;strong&gt;Get-WmiObject&lt;/strong&gt;. В общем смысле в версии 1.0 нельзя было из скриптов включать привилегии, хотя по факту данный функционал был заложен и активно использовался:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;$a = Get-WmiObject Win32_share -filter "Name = 'sharename'"&lt;br&gt;$a.PSBase.Scope.Options.EnablePrivileges = $true&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;В этом отношении PowerShell является менее безопасным, чем, к примеру, VBS, который позволяет включать только необходимые привилегии безопасности (например для смены владельца объекта только &lt;strong&gt;SeRestorePrivilege&lt;/strong&gt; и &lt;strong&gt;SeTakeOwnershipPrivilege&lt;/strong&gt;). Причём VBS может очень гибко работать с подключаемыми привилегиями, что делает код более безопасным. В PowerShell они включаются все сразу и отдельные привилегии включать нельзя.&lt;/p&gt;
&lt;p&gt;Вот, в принципе и рассмотрели основые полезные и интересные нововведения в командлет &lt;strong&gt;Get-WmiObject&lt;/strong&gt; для работы с WMI в PowerShell V2 CTP3. Я допускаю, что эти параметры к релизу вряд ли претерпят существенные изменения и будут справедливы и в финальной версии V2.&lt;/p&gt;&lt;img width="0" height="0" src="http://www.sysadmins.lv/aggbug.ashx?id=2a531ba4-0af2-47f7-9d17-e310eb527f2e"/&gt;&lt;br/&gt;&lt;hr/&gt;PowerShell Powered - http://www.sysadmins.lv&lt;/div&gt;</description>
      <comments>http://www.sysadmins.lv/CommentView,guid,2a531ba4-0af2-47f7-9d17-e310eb527f2e.aspx</comments>
      <category>PowerShell</category>
      <category>PowerShell / PowerShell V2</category>
      <category>PowerShell / WMI</category>
    </item>
    <item>
      <trackback:ping>http://www.sysadmins.lv/Trackback.aspx?guid=6b653dd4-47f2-41b2-b13e-284c1270acd8</trackback:ping>
      <pingback:server>http://www.sysadmins.lv/pingback.aspx</pingback:server>
      <pingback:target>http://www.sysadmins.lv/PermaLink,guid,6b653dd4-47f2-41b2-b13e-284c1270acd8.aspx</pingback:target>
      <dc:creator>Camelot</dc:creator>
      <wfw:comment>http://www.sysadmins.lv/CommentView,guid,6b653dd4-47f2-41b2-b13e-284c1270acd8.aspx</wfw:comment>
      <wfw:commentRss>http://www.sysadmins.lv/SyndicationService.asmx/GetEntryCommentsRss?guid=6b653dd4-47f2-41b2-b13e-284c1270acd8</wfw:commentRss>
      <title>SystemRestore и PowerShell</title>
      <guid isPermaLink="false">http://www.sysadmins.lv/PermaLink,guid,6b653dd4-47f2-41b2-b13e-284c1270acd8.aspx</guid>
      <link>http://www.sysadmins.lv/PermaLink,guid,6b653dd4-47f2-41b2-b13e-284c1270acd8.aspx</link>
      <pubDate>Mon, 22 Dec 2008 13:40:46 GMT</pubDate>
      <description>&lt;div&gt;&lt;P&gt;По мотивам темы на форуме - &lt;A title=http://forums.microsoft.com/TechNet-RU/ShowPost.aspx?PostID=4255895&amp;amp;SiteID=40 href="http://forums.microsoft.com/TechNet-RU/ShowPost.aspx?PostID=4255895&amp;amp;SiteID=40"&gt;http://forums.microsoft.com/TechNet-RU/ShowPost.aspx?PostID=4255895&amp;amp;SiteID=40&lt;/A&gt;. PowerShell без проблем может управлять восстановлением системы - &lt;STRONG&gt;SystemRestore&lt;/STRONG&gt; средствами WMI. За это отвечает классы&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa378951.aspx" target=_blank&gt;SystemRestore&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa378955(VS.85).aspx" target=_blank&gt;SystemRestoreConfig&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Примечание:&lt;/FONT&gt;&lt;/STRONG&gt; SystemRestore доступно только на клиентских версиях - Windows XP/Windows Vista. В серверных редакицях Windows Server нереализовано никак.&lt;/P&gt;
&lt;P&gt;вот так выглядит GUI окно системы восстановления в Windows Vista:&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://www.sysadmins.lv/content/binary/WindowsLiveWriter/SystemRestorePowerShell_112E2/systemrestore_2.jpg"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=475 alt=systemrestore src="http://www.sysadmins.lv/content/binary/WindowsLiveWriter/SystemRestorePowerShell_112E2/systemrestore_thumb.jpg" width=423 border=0&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt; &lt;/P&gt;
&lt;P&gt;Следует так же учесть, что эти классы не находятся в пространстве имён по умолчанию &lt;STRONG&gt;Root\Cimv2&lt;/STRONG&gt;, а в &lt;STRONG&gt;Root\Default&lt;/STRONG&gt;. Для просмотра всех точек восстановления нужно просто получить объект данного класса (&lt;U&gt;если вы работаете под управлением Windows Vista, то потребуется запустить консоль с повышенными привилегиями!&lt;/U&gt;). При получении объекта класса не забудьте указать правильный путь размещения класса в пространстве имён:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE style="FONT: 9pt courier new; COLOR: #fff; BACKGROUND-COLOR: black"&gt;&lt;FONT color=#009500&gt;&lt;SPAN black? background-color: #009500?;&gt;&lt;P&gt;[System32] gwmi -Namespace "root\default" -class systemrestore


__GENUS          : 2
__CLASS          : SystemRestore
__SUPERCLASS     :
__DYNASTY        : SystemRestore
__RELPATH        : SystemRestore.SequenceNumber=473
__PROPERTY_COUNT : 5
__DERIVATION     : {}
__SERVER         : THOR
__NAMESPACE      : root\default
__PATH           : \\THOR\root\default:SystemRestore.SequenceNumber=473
CreationTime     : 20081220184403.157460-000
Description      : Scheduled Checkpoint
EventType        : 100
RestorePointType : 7
SequenceNumber   : 473
......&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;у меня этих точек восстановления несколько, поэтому я показал только первую точку. Здесь нам будут интересны следующие свойства - &lt;STRONG&gt;Description&lt;/STRONG&gt; (название точки восстановления), &lt;STRONG&gt;EventType&lt;/STRONG&gt; (тип точки восстановления) и &lt;STRONG&gt;SequenceNumber&lt;/STRONG&gt; (порядковый номер точки восстановления). Эти значения нам пригодятся для создания новых точек восстановления и отката системы до определённой точки. Если посмотреть методы класса, то получим:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE style="FONT: 9pt courier new; COLOR: #fff; BACKGROUND-COLOR: black"&gt;&lt;FONT color=#009500&gt;&lt;SPAN black? background-color: #009500?;&gt;[System32] gwmi -Namespace "root\default" -class systemrestore | gm


   TypeName: System.Management.ManagementObject#root\default\SystemRestore

Name                MemberType   Definition
----                ----------   ----------
CreationTime        Property     System.String CreationTime {get;set;}
Description         Property     System.String Description {get;set;}
EventType           Property     System.UInt32 EventType {get;set;}
RestorePointType    Property     System.UInt32 RestorePointType {get;set
SequenceNumber      Property     System.UInt32 SequenceNumber {get;set;}
__CLASS             Property     System.String __CLASS {get;set;}
__DERIVATION        Property     System.String[] __DERIVATION {get;set;}
__DYNASTY           Property     System.String __DYNASTY {get;set;}
__GENUS             Property     System.Int32 __GENUS {get;set;}
__NAMESPACE         Property     System.String __NAMESPACE {get;set;}
__PATH              Property     System.String __PATH {get;set;}
__PROPERTY_COUNT    Property     System.Int32 __PROPERTY_COUNT {get;set;
__RELPATH           Property     System.String __RELPATH {get;set;}
__SERVER            Property     System.String __SERVER {get;set;}
__SUPERCLASS        Property     System.String __SUPERCLASS {get;set;}
ConvertFromDateTime ScriptMethod System.Object ConvertFromDateTime();
ConvertToDateTime   ScriptMethod System.Object ConvertToDateTime();
Delete              ScriptMethod System.Object Delete();
GetType             ScriptMethod System.Object GetType();
Put                 ScriptMethod System.Object Put();


[System32]&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Мы здесь не видим никаких методов, которые бы позволяли создавать и откатываться. Получив объект мы можем его только удалить. Сами методы хранятся в самом классе:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE style="FONT: 9pt courier new; COLOR: #fff; BACKGROUND-COLOR: black"&gt;&lt;FONT color=#009500&gt;&lt;SPAN black? background-color: #009500?;&gt;[System32] [wmiclass]'\\.\root\default:systemrestore' | gm -MemberType method


   TypeName: System.Management.ManagementClass#ROOT\default\SystemRestore

Name                 MemberType Definition
----                 ---------- ----------
CreateRestorePoint   Method     System.Management.ManagementBaseObject CreateRestorePoint(System.String Description,...
Disable              Method     System.Management.ManagementBaseObject Disable(System.String Drive)
Enable               Method     System.Management.ManagementBaseObject Enable(System.String Drive, System.Boolean Wa...
GetLastRestoreStatus Method     System.Management.ManagementBaseObject GetLastRestoreStatus()
Restore              Method     System.Management.ManagementBaseObject Restore(System.UInt32 SequenceNumber)


[System32]&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;вот тут и хранятся наши методы. Методы &lt;STRONG&gt;Enable&lt;/STRONG&gt; и &lt;STRONG&gt;Disable&lt;/STRONG&gt; позволяют глобально включать режим восстановления системы или отключать для определённого диска. Чтобы включить мониторинг для всей системы в целом или для конкретного диска нужно выполнить:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; объявляем класс:&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$sysrestore&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; [&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;wmiclass&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;\\.\root\default:systemrestore&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; выбираем одно из нужных действий. Обратите внимание, что для изменения состояния&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; мониторинга всей системы скобки не должны быть пустые, а содержать пустые двойные кавычки&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$sysrestore&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Enable(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;""&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$sysrestore&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Enable(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;c:\&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$sysrestore&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Disable(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;""&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$sysrestore&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Disable(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;c:\&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Для создания новой точки воспользуемся методом &lt;A href="http://msdn.microsoft.com/en-us/library/aa378847(VS.85).aspx"&gt;CreateRestorePoint&lt;/A&gt;:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #800080"&gt;$sysrestore&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; [&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;wmiclass&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;\\.\root\default:systemrestore&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$sysrestore&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.CreateRestorePoint(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;MyRestorePoint&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;100&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #000000"&gt;где &lt;STRONG&gt;MyRestorePoint&lt;/STRONG&gt; - название точки восстановления, &lt;STRONG&gt;0&lt;/STRONG&gt; - тип точки восстановления (возможные значения можно посмотреть по ссылке на MSDN) и &lt;STRONG&gt;100&lt;/STRONG&gt; - тип события. Давайте создадим новую точку восстановления:&lt;/SPAN&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE style="FONT: 9pt courier new; COLOR: #fff; BACKGROUND-COLOR: black"&gt;&lt;FONT color=#009500&gt;&lt;SPAN black? background-color: #009500?;&gt;[System32] $sysrestore = [wmiclass]"\\.\root\default:systemrestore"
[System32] $sysrestore.CreateRestorePoint("MyRestorePoint", 0, 100)


__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     :
__DYNASTY        : __PARAMETERS
__RELPATH        :
__PROPERTY_COUNT : 1
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :
ReturnValue      : 0



[System32]&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Значение &lt;STRONG&gt;RetrunValue = 0&lt;/STRONG&gt; говорит, что точка восстановления создана. Убедимся в этом:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE style="FONT: 9pt courier new; COLOR: #fff; BACKGROUND-COLOR: black"&gt;&lt;FONT color=#009500&gt;&lt;SPAN black? background-color: #009500?;&gt;[System32] gwmi -Namespace "root\default" -class systemrestore | select -Last 1


__GENUS          : 2
__CLASS          : SystemRestore
__SUPERCLASS     :
__DYNASTY        : SystemRestore
__RELPATH        : SystemRestore.SequenceNumber=475
__PROPERTY_COUNT : 5
__DERIVATION     : {}
__SERVER         : THOR
__NAMESPACE      : root\default
__PATH           : \\THOR\root\default:SystemRestore.SequenceNumber=475
CreationTime     : 20081221183404.006675-000
Description      : MyRestorePoint
EventType        : 100
RestorePointType : 0
SequenceNumber   : 475



[System32]&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Вот теперь мы видим нашу точку восстановления с названием MyRestorePoint и её SequenceNumber стал на 1 больше. Чтобы откатиться на эту точку восстановления нужно выполнить метод Restore с указанием SequenceNumber:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #800080"&gt;$sysrestore&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; [&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;wmiclass&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;\\.\root\default:systemrestore&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$sysrestore&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Restore(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;475&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;BR&gt;(&lt;/SPAN&gt;&lt;SPAN style="FONT-WEIGHT: bold; COLOR: #5f9ea0"&gt;gwmi&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;win32_operatingsystem&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;).reboot()&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Для успешного завершения восстановления точки восстановления потребуется перезагрузка системы, которую мы проводим последней строчкой. Вот так просто можно включать, отключать создавать точки восстановления и откатывать систему до их состояния. Чтобы управлять дополнительными параметрами восстановления системы, как выделение места для них, время жизни и т.д. воспользуемся соседним классом:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE style="FONT: 9pt courier new; COLOR: #fff; BACKGROUND-COLOR: black"&gt;&lt;FONT color=#009500&gt;&lt;SPAN black? background-color: #009500?;&gt;[System32] gwmi -Namespace "root\default" -class systemrestoreconfig


__GENUS           : 2
__CLASS           : SystemRestoreConfig
__SUPERCLASS      :
__DYNASTY         : SystemRestoreConfig
__RELPATH         : SystemRestoreConfig.MyKey="SR"
__PROPERTY_COUNT  : 5
__DERIVATION      : {}
__SERVER          : THOR
__NAMESPACE       : ROOT\default
__PATH            : \\THOR\ROOT\default:SystemRestoreConfig.MyKey="SR"
DiskPercent       : 15
MyKey             : SR
RPGlobalInterval  : 86400
RPLifeInterval    : 4294967295
RPSessionInterval : 1



[System32]&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;тут всё просто. &lt;STRONG&gt;DiskPercent&lt;/STRONG&gt; показывает процент дискового пространства, которое выделяется под восстановление системы. &lt;STRONG&gt;RPGlobalInterval&lt;/STRONG&gt; показывает периодичность создания точек восстановления (&lt;U&gt;а для Windows Vista создание теневых копий&lt;/U&gt;) в секундах. &lt;STRONG&gt;RPLifeInterval&lt;/STRONG&gt; - время жизни точек восстановления (&lt;U&gt;и теневых копий для Windows Vista&lt;/U&gt;) в секундах (по умолчанию 90 дней). Эти параметры можно изменять простым переприсвоением и применением новых значений скриптметодом &lt;STRONG&gt;Put()&lt;/STRONG&gt;. К сожалению, провайдер SystemRestore не позволяет удалять точки восстановления (вообще это можно с использованием функции &lt;A href="http://msdn.microsoft.com/en-us/library/aa378934(VS.85).aspx"&gt;SRRemoveRestorePoint&lt;/A&gt;, но это уже совсем другая история программирования).&lt;/P&gt;
&lt;P&gt;Вот теперь мы готовы написать скрипт, который позволит в однострочном режиме управлять восстановлением системы.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#######################################################&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT face=Verdana size=2&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT face=Verdana size=2&gt; SystemRestore.ps1&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT face=Verdana size=2&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT face=Verdana size=2&gt; Version 1.0&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT face=Verdana size=2&gt;#
#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT face=Verdana size=2&gt; Functions for System Restore management&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT face=Verdana size=2&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT face=Verdana size=2&gt; Note: available for Windows XP and Windows Vista only!&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT face=Verdana size=2&gt;#
#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT face=Verdana size=2&gt; Vadims Podans (c) 2008&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT face=Verdana size=2&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT face=Verdana size=2&gt; http://www.sysadmins.lv/&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT face=Verdana size=2&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT face=Verdana size=2&gt;#######################################################&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; функция для преобразования кода возврата в текстовое значение&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #0000ff"&gt;function&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;_SysRestore_Get-Code&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Action&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;) {
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;switch&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Action&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.ReturnValue) {
   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; {&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Success&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;}
   default {&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Unknown error $Action.ReturnValue&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;}
   }
}

&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; простая функция получения списка всех доступных точек восстановления в табличном виде&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #0000ff"&gt;function&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;Get-SystemRestore&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt; {
&lt;/SPAN&gt;&lt;SPAN style="FONT-WEIGHT: bold; COLOR: #5f9ea0"&gt;gwmi&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-STYLE: italic"&gt;-Namespace&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;root\default&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-STYLE: italic"&gt;-class&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;systemrestore&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="FONT-WEIGHT: bold; COLOR: #5f9ea0"&gt;Select&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Description&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, @{n&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Date/Time&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;;
e&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;{([&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;System.Management.ManagementDateTimeconverter&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;]::&lt;/SPAN&gt;&lt;SPAN style="COLOR: #8b4513"&gt;ToDateTime&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.CreationTime)).tostring()}},
@{n&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Point number&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;; e&lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.SequenceNumber}} | &lt;/SPAN&gt;&lt;SPAN style="FONT-WEIGHT: bold; COLOR: #5f9ea0"&gt;ft&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-STYLE: italic"&gt;-AutoSize&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT face=Verdana size=2&gt;}

&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; функция включения или отключения System Restore для указанного диска или, если диск не указан&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT face=Verdana size=2&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT face=Verdana size=2&gt; то действие будет принято для всей системы в целом. А так же позволяет откатывать систему&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT face=Verdana size=2&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT face=Verdana size=2&gt; в более раннее состояние.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #0000ff"&gt;function&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;Set-SystemRestoreStatus&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Status&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$arg&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;) {
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; собственно, само действие включения или отключения System Restore&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #0000ff"&gt;switch&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$status&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;) {
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Enable&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; {&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$action&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; ([&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;wmiclass&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;\\.\root\default:systemrestore&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;).Enable(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;$arg&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)}
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Disable&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; {&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$action&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; ([&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;wmiclass&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;\\.\root\default:systemrestore&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;).Disable(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;$arg&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)}
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; процесс отката системы в более раннюю точку восстановления&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Restore&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; {&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$RP&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-WEIGHT: bold; COLOR: #5f9ea0"&gt;gwmi&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-STYLE: italic"&gt;-Namespace&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;root\default&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-STYLE: italic"&gt;-class&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;systemrestore&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="FONT-WEIGHT: bold; COLOR: #5f9ea0"&gt;?&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.SequenceNumber &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;-eq&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; [&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$arg&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;}
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; проверяем, что указанная точка восстановления существует.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$RP&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;) {
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; если существует, то проводим процесс восстановления в указанную точку&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$action&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; ([&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;wmiclass&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;\\.\root\default:systemrestore&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;).Restore(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;$arg&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)
        &lt;/SPAN&gt;&lt;SPAN style="FONT-WEIGHT: bold; COLOR: #5f9ea0"&gt;Write-Host&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Performing system restore to earlier status ...&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; получаем код возврата операции&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;_SysRestore_Get-Code&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$action&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; если восстановление системы прошло успешно, то принудительно перезагружаем систему &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; ($(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;_SysRestore_Get-Code&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$action&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;-eq&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Success&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;) {
            &lt;/SPAN&gt;&lt;SPAN style="FONT-WEIGHT: bold; COLOR: #5f9ea0"&gt;Write-Warning&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;To complete System Restore system will reboot in 15 sec&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT face=Verdana size=2&gt;            shutdown.exe -r -t &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;15&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;-f&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT face=Verdana size=2&gt;            }
        }&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&lt;FONT face=Verdana size=2&gt;else&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt; {
        &lt;/SPAN&gt;&lt;SPAN style="FONT-WEIGHT: bold; COLOR: #5f9ea0"&gt;Write-Host&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Specified restore point does not found!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT face=Verdana size=2&gt;        }
    }
    &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Create&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; {&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$action&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; ([&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;wmiclass&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;\\.\root\default:systemrestore&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;).CreateRestorePoint(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;$arg&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;100&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)}
}
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; здесь происходит только генерация сообщения о ходе выполнения операций&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$arg&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;-and&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Enable&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Disable&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;-contains&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$status&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)) {
    &lt;/SPAN&gt;&lt;SPAN style="FONT-WEIGHT: bold; COLOR: #5f9ea0"&gt;Write-Host&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Setting SystemRestore status to $status on&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$arg&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT face=Verdana size=2&gt;    &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;_SysRestore_Get-Code&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$action&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT face=Verdana size=2&gt;    } &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&lt;FONT face=Verdana size=2&gt;else&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt; {
    &lt;/SPAN&gt;&lt;SPAN style="FONT-WEIGHT: bold; COLOR: #5f9ea0"&gt;Write-Host&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Setting SystemRestore status to $status on all drives: &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT face=Verdana size=2&gt;    &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;_SysRestore_Get-Code&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$action&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT face=Verdana size=2&gt;    }
}

&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; функция для изменения настроек System Restore&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #0000ff"&gt;function&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;Set-SystemRestoreSetting&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$setting&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$value&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;) {
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; получаем текущие настройки&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #800080"&gt;$SRSetting&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-WEIGHT: bold; COLOR: #5f9ea0"&gt;gwmi&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-STYLE: italic"&gt;-Namespace&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;root\default&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-STYLE: italic"&gt;-class&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;systemrestoreconfig&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; проверяем выбранный параметр, который будет изменяться&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #0000ff"&gt;switch&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$setting&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;) {
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;DiskSpace&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt; {
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; т.к. дисковое место указывается в процентах, то проверяем, что указано число от 1% до 99%&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$value&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;-lt&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;99&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;-and&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$value&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;-gt&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;) {
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$SRSetting&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.DiskPercent &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$value&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT face=Verdana size=2&gt;        } &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&lt;FONT face=Verdana size=2&gt;else&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt; {
        &lt;/SPAN&gt;&lt;SPAN style="FONT-WEIGHT: bold; COLOR: #5f9ea0"&gt;Write-Warning&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Disk space percentage must be integer and vlaue must be between 1-99&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;}
    }
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; установка глубины точек восстановлений. Указывается в днях. По истечении этого времени&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT face=Verdana size=2&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT face=Verdana size=2&gt; точки восстановления удаляются, высвобождая место для более новых точек восстановления&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;HistoryDepth&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt; {
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$SRSetting&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.RPLifeInterval &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; [&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$value&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;86400&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT face=Verdana size=2&gt;    }
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; частота автоматического создания точек восстановлений&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Frequency&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt; {
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; извлекаем из заданного параметра периодичности последние 4 символа, которые образуют префикс&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT face=Verdana size=2&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT face=Verdana size=2&gt; в днях или часах и выставляем множитель для получения секунд. Если это часы, то множитель будет&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT face=Verdana size=2&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT face=Verdana size=2&gt; 3600, а если в днях, то множитель будет 86400 секунд&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$time&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$value&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.substring(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$value&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.length &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;-&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;4&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;4&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;switch&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$time&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;) {
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;hour&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; {&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$sec&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;3600&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;}
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;days&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; {&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$sec&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;86400&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;}
        }
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; извлекаем из заданного параметра периодичности все символы, чтобы получить целочисленное значение&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT face=Verdana size=2&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT face=Verdana size=2&gt; кроме последних 4, которые являются текстовыми и обозначают лишь префикс&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$SRSetting&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.RPGlobalInterval &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$sec&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$value&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.substring(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$value&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.length &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;-&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;4&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)
        }
    default {&lt;/SPAN&gt;&lt;SPAN style="FONT-WEIGHT: bold; COLOR: #5f9ea0"&gt;Write-Warning&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Parameter must be DiskSpace or HistoryDepth or Frequency&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;}
    }
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; применение новых параметров&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;&lt;FONT face=Verdana size=2&gt;$SRSetting&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;FONT face=Verdana size=2&gt;.Put()
}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Синтаксис функций может быть следующий:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Get-SystemRestore&lt;/FONT&gt; - показывает в табличном виде все существующие точки восстановления. Аргументов не принимает. 
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Set-SystemRestoreStatus Enable c:\&lt;/FONT&gt; - включает режим SystemRestore.&lt;BR&gt;где &lt;STRONG&gt;c:\&lt;/STRONG&gt; - диск, для которого включается мониторинг SystemRestore. Параметр опциональный. Если не указан, то включается для всех дисков. 
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Set-SystemRestoreStatus Disable c:\&lt;/FONT&gt; - отключает режим systemRestore.&lt;BR&gt;где &lt;STRONG&gt;c:\&lt;/STRONG&gt; - диск, для которого выключается мониторинг SystemRestore. Параметр опциональный. Если не указан, то выключается для всех дисков. 
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Set-SystemRestoreStatus Restore 5&lt;/FONT&gt; - производит откат системы до указанной точки восстановления. После отката произойдёт принудительная перезагрузка системы.&lt;BR&gt;где &lt;STRONG&gt;5&lt;/STRONG&gt; - номер точки восстановления. Номер можно получить выполнив функцию &lt;STRONG&gt;Get-SystemRestore&lt;/STRONG&gt;. 
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Set-SystemRestoreStatus Create "MyNewRestorePoint"&lt;/FONT&gt; - создаёт новую точку восстановления&lt;BR&gt;где &lt;STRONG&gt;MyNewRestorePoint&lt;/STRONG&gt; - название точки восстановления. 
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Set-SystemRestoreSetting DiskSpace 10&lt;/FONT&gt; - задаёт резервируемое место для точек восстановления в процентах от ёмкости диска.&lt;BR&gt;где &lt;STRONG&gt;10&lt;/STRONG&gt; - процент диска, которое отводится под SystemRestore. Может иметь значение от &lt;STRONG&gt;1&lt;/STRONG&gt; до &lt;STRONG&gt;99&lt;/STRONG&gt; 
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Set-SystemRestoreSetting HistoryDepth 10&lt;/FONT&gt; - задаёт время хранения точек восстановления&lt;BR&gt;где &lt;STRONG&gt;10&lt;/STRONG&gt; - количество дней, в течении которого будут храниться точки восстановления. Более старые будут автоматически удаляться. 
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Set-SystemRestoreSetting Frequence 5days&lt;/FONT&gt; - задаёт частоту автоматического создания точек восстановления.&lt;BR&gt;где &lt;STRONG&gt;5days&lt;/STRONG&gt; - периодичность создания точек восстановления в днях. Можно указывать и в часах, например, &lt;STRONG&gt;10hour&lt;/STRONG&gt; (будет делать автоматические точки восстановления каждые 10 часов). В общем смысле сначала идёт число и потом без пробелов суффикс &lt;STRONG&gt;days&lt;/STRONG&gt; или &lt;STRONG&gt;hour&lt;/STRONG&gt;.&lt;/LI&gt;&lt;/UL&gt;&lt;img width="0" height="0" src="http://www.sysadmins.lv/aggbug.ashx?id=6b653dd4-47f2-41b2-b13e-284c1270acd8"/&gt;&lt;br/&gt;&lt;hr/&gt;PowerShell Powered - http://www.sysadmins.lv&lt;/div&gt;</description>
      <comments>http://www.sysadmins.lv/CommentView,guid,6b653dd4-47f2-41b2-b13e-284c1270acd8.aspx</comments>
      <category>PowerShell</category>
      <category>PowerShell / WMI</category>
    </item>
    <item>
      <trackback:ping>http://www.sysadmins.lv/Trackback.aspx?guid=8684b90f-8e8a-43fe-89e8-cf8194c21c3d</trackback:ping>
      <pingback:server>http://www.sysadmins.lv/pingback.aspx</pingback:server>
      <pingback:target>http://www.sysadmins.lv/PermaLink,guid,8684b90f-8e8a-43fe-89e8-cf8194c21c3d.aspx</pingback:target>
      <dc:creator>Camelot</dc:creator>
      <wfw:comment>http://www.sysadmins.lv/CommentView,guid,8684b90f-8e8a-43fe-89e8-cf8194c21c3d.aspx</wfw:comment>
      <wfw:commentRss>http://www.sysadmins.lv/SyndicationService.asmx/GetEntryCommentsRss?guid=8684b90f-8e8a-43fe-89e8-cf8194c21c3d</wfw:commentRss>
      <title>Управление EventLog в PowerShell с использованием WMI</title>
      <guid isPermaLink="false">http://www.sysadmins.lv/PermaLink,guid,8684b90f-8e8a-43fe-89e8-cf8194c21c3d.aspx</guid>
      <link>http://www.sysadmins.lv/PermaLink,guid,8684b90f-8e8a-43fe-89e8-cf8194c21c3d.aspx</link>
      <pubDate>Tue, 09 Dec 2008 20:00:42 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;В &lt;a href="http://www.sysadmins.lv/PermaLink,guid,093ff83e-d892-4f04-b21c-a7fa234eaccd.aspx"&gt;предыдущей&lt;/a&gt; части мы рассмотрели возможности управления журналами событий средствами .NET Framework, а так же рассмотрели проблематику использования .NET (из моего предыдущего блога) - &lt;a href="http://vpodans.spaces.live.com/blog/cns!BB1419A2CFC1E008!212.entry"&gt;Странности Get-Eventlog&lt;/a&gt; и не совсем богатый функционал. В этом посте мы разберём данный вопрос, но с использованием WMI и все примеры будут выполняться системе под управлением Windows Vista.&lt;/p&gt; &lt;p&gt;В WMI за журнал событий отвечают следующие классы:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/aa394225(VS.85).aspx"&gt;Win32_NTEventlogFile&lt;/a&gt;  &lt;li&gt;&lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/aa394226(VS.85).aspx"&gt;Win32_NTLogEvent&lt;/a&gt;  &lt;li&gt;&lt;img src="http://i.msdn.microsoft.com/Global/Images/clear.gif"&gt;&lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/aa394227(VS.85).aspx"&gt;Win32_NTLogEventComputer&lt;/a&gt;  &lt;li&gt;&lt;img src="http://i.msdn.microsoft.com/Global/Images/clear.gif"&gt;&lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/aa394228(VS.85).aspx"&gt;Win32_NTLogEventLog&lt;/a&gt;  &lt;li&gt;&lt;img src="http://i.msdn.microsoft.com/Global/Images/clear.gif"&gt;&lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/aa394229(VS.85).aspx"&gt;Win32_NTLogEventUser&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;WMI, как и .NET поддерживает удалённую работу с использованием ключа &lt;em&gt;-ComputerName&lt;/em&gt;, поэтому на этом заострять внимание не будем. За публикацию списка журналов в системе отвечает класс &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/aa394225(VS.85).aspx"&gt;Win32_NTEventlogFile&lt;/a&gt;:&lt;/p&gt; &lt;blockquote&gt;&lt;pre style="background-color: black; font: 9pt courier new; color: #fff"&gt;&lt;font color="#009500"&gt;&lt;span black? background-color: #009500?;&gt;&lt;p&gt;[vPodans] gwmi Win32_NTEventlogFile

                     FileSize LogfileName                   Name                                        NumberOfRecords
                     -------- -----------                   ----                                        ---------------
                      8458240 Application                   C:\Windows\System32\Winevt...                         16154
                        69632 DFS Replication               C:\Windows\System32\Winevt...                             6
                        69632 HardwareEvents                C:\Windows\System32\Winevt...                             0
                        69632 Internet Explorer             C:\Windows\System32\Winevt...                             0
                        69632 Key Management Service        C:\Windows\System32\Winevt...                             0
                        69632 ODiag                         C:\Windows\System32\Winevt...                           267
                      1118208 OSession                      C:\Windows\System32\Winevt...                           524
                     20975616 System                        C:\Windows\System32\Winevt...                         42472
                     12652544 Windows PowerShell            C:\Windows\System32\Winevt...                         14208


[vPodans]&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;Стандартная процедура вывода списка журналов в системе. А теперь и сами эвенты:&lt;/p&gt;
&lt;blockquote&gt;&lt;pre style="background-color: black; font: 9pt courier new; color: #fff"&gt;&lt;font color="#009500"&gt;&lt;span black? background-color: #009500?;&gt;&lt;p&gt;[vPodans] gwmi win32_ntlogevent -filter "logfile='application'" | select -first 1


Category          : 0
Category String   :
Event Code        :
Event Identifier  :
Type Event        :
Insertion Strings :
Log File          :
Message           : The User Profile Service has started successfully.


Record Number     :
Source Name       :
Time Generated    :
Time Written      :
Type              : Information
User Name         :



[vPodans]&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;как бы информации не сильно много. Давайте немного приведём вид в более оперативный:&lt;/p&gt;
&lt;blockquote&gt;&lt;pre style="background-color: black; font: 9pt courier new; color: #fff"&gt;&lt;font color="#009500"&gt;&lt;span black? background-color: #009500?;&gt;&lt;p&gt;[vPodans] gwmi win32_ntlogevent -filter "logfile='application'" | select recordnumber, timegenerated, sourcename, eventc
ode, message -first 1 | ft -a

recordnumber timegenerated             sourcename                              eventcode message
------------ -------------             ----------                              --------- -------
           1 20070710111520.000000-000 Microsoft-Windows-User Profiles Service      1531 The User Profile Service ha...


[vPodans]&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;уже более читабельно, кроме вывода даты. Чтобы подвести вывод даты и времени в формат &lt;strong&gt;[datetime]&lt;/strong&gt; нужно воспользоваться конвертером времени:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="color: #000000"&gt;[&lt;/span&gt;&lt;span style="color: #008080"&gt;System.Management.ManagementDateTimeconverter&lt;/span&gt;&lt;span style="color: #000000"&gt;]::&lt;/span&gt;&lt;span style="color: #8b4513"&gt;ToDateTime&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;20070710111520.000000-000&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span style="color: #000000"&gt;Чтобы привести итоговый вывод времени в укороченный формат даты и времени к данному выражению достаточно применить метод &lt;strong&gt;ToString()&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="color: #000000"&gt;&lt;span style="color: #000000"&gt;([&lt;/span&gt;&lt;span style="color: #008080"&gt;System.Management.ManagementDateTimeconverter&lt;/span&gt;&lt;span style="color: #000000"&gt;]::&lt;/span&gt;&lt;span style="color: #8b4513"&gt;ToDateTime&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;20070710111520.000000-000&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;)).ToString()&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;pre style="background-color: black; font: 9pt courier new; color: #fff"&gt;&lt;font color="#009500"&gt;&lt;span black? background-color: #009500?;&gt;[vPodans] [System.Management.ManagementDateTimeconverter]::ToDateTime("20070710111520.000000-000")

otrdiena, 2007. gada 10. julija 14:15:20


[vPodans] ([System.Management.ManagementDateTimeconverter]::ToDateTime("20070710111520.000000-000")).ToString()
10.07.07. 14:15:20
[vPodans]&lt;/span&gt;&lt;/font&gt;&lt;p&gt;&lt;/p&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;А теперь всё сделаем так (с использованием хэш-таблиц), чтобы это всё на лету преобразовывалось и мы получили сразу готовый и более опрятный вывод:&lt;/p&gt;
&lt;blockquote&gt;&lt;pre&gt;&lt;font size="2"&gt;&lt;span style="color: #800080"&gt;$a&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;  &lt;/span&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;gwmi&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;win32_ntlogevent&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="font-style: italic; color: #5f9ea0"&gt;-filter&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;logfile='application'&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt; | &lt;/span&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;select&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="font-style: italic; color: #5f9ea0"&gt;-first&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #000000"&gt;1&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #000000"&gt;
&lt;/span&gt;&lt;font size="2"&gt;&lt;span style="color: #800080"&gt;$a&lt;/span&gt;&lt;span style="color: #000000"&gt; | &lt;/span&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;Select&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;recordnumber&lt;/span&gt;&lt;span style="color: #000000"&gt;, @{n&lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;timegenerated&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;span style="color: #000000"&gt;;
e&lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;{([&lt;/span&gt;&lt;span style="color: #008080"&gt;System.Management.ManagementDateTimeconverter&lt;/span&gt;&lt;span style="color: #000000"&gt;]::&lt;/span&gt;&lt;span style="color: #8b4513"&gt;ToDateTime&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #000080"&gt;$_&lt;/span&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;span style="color: #000000"&gt;.timegenerated)).tostring()}},
sourcename, eventcode, message | &lt;/span&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;ft&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="font-style: italic; color: #5f9ea0"&gt;-AutoSize&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;pre style="background-color: black; font: 9pt courier new; color: #fff"&gt;&lt;font color="#009500"&gt;&lt;span black? background-color: #009500?;&gt;[vPodans] $a =  gwmi win32_ntlogevent -filter "logfile='application'" | select -first 1
[vPodans] $a | Select recordnumber, @{n="timegenerated";
&amp;gt;&amp;gt; e={([System.Management.ManagementDateTimeconverter]::ToDateTime($_.timegenerated)).tostring()}},
&amp;gt;&amp;gt; sourcename, eventcode, message | ft -AutoSize
&amp;gt;&amp;gt;

recordnumber timegenerated      sourcename                              eventcode message
------------ -------------      ----------                              --------- -------
           1 10.07.07. 14:15:20 Microsoft-Windows-User Profiles Service      1531 The User Profile Service has start...


[vPodans]&lt;/span&gt;&lt;/font&gt;&lt;p&gt;&lt;/p&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;вот так при помощи костылей мы привели вывод в нечто более божеское. В остальном WMI не представляет ничего интересного, что могло бы представиться полезным (за исключением возможности бэкапа журналов, которую я разобрал в предыдущем посте). Разобрать работу &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/aa394229(VS.85).aspx"&gt;Win32_NTLogEventUser&lt;/a&gt; и &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/aa394227(VS.85).aspx"&gt;Win32_NTLogEventComputer&lt;/a&gt; в принципе можно уже и самостоятельно.&lt;/p&gt;
&lt;p&gt;Исходя из вышеизложенного можно понять, что WMI вариант управления эвентлогом не самый удобный и практичный. Но позволяет извлекать события из журналов Windows Vista/Windows Server 2008 в читабельном виде. При этом можно изменять различные параметры журналов событий которые описаны здесь: &lt;a title="http://msdn.microsoft.com/en-us/library/aa394225(VS.85).aspx" href="http://msdn.microsoft.com/en-us/library/aa394225(VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/aa394225(VS.85).aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Изменения делаются по одной общей схеме:&lt;/p&gt;
&lt;blockquote&gt;&lt;pre&gt;&lt;font size="2"&gt;&lt;span style="color: #800080"&gt;$EventLog&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;gwmi&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;Win32_NTEventlogFile&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="font-style: italic; color: #5f9ea0"&gt;-Filter&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;logfilename = '$logfilename'&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #000000"&gt;
&lt;/span&gt;&lt;font size="2"&gt;&lt;span style="color: #800080"&gt;$EventLog&lt;/span&gt;&lt;span style="color: #000000"&gt;.Property &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;New Property Value&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;/font&gt;&lt;span style="color: #000000"&gt;
&lt;/span&gt;&lt;font size="2"&gt;&lt;span style="color: #800080"&gt;$EventLog&lt;/span&gt;&lt;span style="color: #000000"&gt;.Put()&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;И в качестве последнего штриха приведу замеры скорости работы с эвентлогом с использованием .NET и WMI:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows Server 2003&lt;/li&gt;&lt;/ul&gt;
&lt;blockquote&gt;&lt;pre style="background-color: black; font: 9pt courier new; color: #fff"&gt;&lt;font color="#009500"&gt;&lt;span black? background-color: #009500?;&gt;[user name] (measure-command {gwmi win32_ntlogevent -filter "logfile='application' and eventcode=8194"}).totalseconds
13.0865344
[user name] (measure-command {(new-object diagnostics.eventlog("application")).Entries | ? {$_.EventID -eq 8194}}).totalseconds
20.7334336
[user name]&lt;/span&gt;&lt;/font&gt;&lt;p&gt;&lt;/p&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Windows Vista:&lt;/li&gt;&lt;/ul&gt;
&lt;blockquote&gt;&lt;pre style="background-color: black; font: 9pt courier new; color: #fff"&gt;&lt;font color="#009500"&gt;&lt;span black? background-color: #009500?;&gt;[vPodans] (measure-command {gwmi win32_ntlogevent -filter "logfile='application' and eventcode=8194"}).totalseconds
18,0120719
[vPodans] (measure-command {(new-object diagnostics.eventlog("application")).Entries | ? {$_.EventID -eq 8194}}).totalseconds
13,3134996
[vPodans]&lt;/span&gt;&lt;/font&gt;&lt;p&gt;&lt;/p&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;Как видим, для Windows Server 2003 более предпочтительным по скорости является WMI (от которого там толку не сильно много), а в Windows Vista - наоборот, .NET работает шустрее. Но из-за проблем с отображением событий журнала Security его польза в Windows Vista весьма сомнительна.&lt;/p&gt;&lt;img width="0" height="0" src="http://www.sysadmins.lv/aggbug.ashx?id=8684b90f-8e8a-43fe-89e8-cf8194c21c3d"/&gt;&lt;br/&gt;&lt;hr/&gt;PowerShell Powered - http://www.sysadmins.lv&lt;/div&gt;</description>
      <comments>http://www.sysadmins.lv/CommentView,guid,8684b90f-8e8a-43fe-89e8-cf8194c21c3d.aspx</comments>
      <category>PowerShell</category>
      <category>PowerShell / WMI</category>
    </item>
    <item>
      <trackback:ping>http://www.sysadmins.lv/Trackback.aspx?guid=815a5172-f8f3-4474-8929-c4ba6007be0a</trackback:ping>
      <pingback:server>http://www.sysadmins.lv/pingback.aspx</pingback:server>
      <pingback:target>http://www.sysadmins.lv/PermaLink,guid,815a5172-f8f3-4474-8929-c4ba6007be0a.aspx</pingback:target>
      <dc:creator>Camelot</dc:creator>
      <wfw:comment>http://www.sysadmins.lv/CommentView,guid,815a5172-f8f3-4474-8929-c4ba6007be0a.aspx</wfw:comment>
      <wfw:commentRss>http://www.sysadmins.lv/SyndicationService.asmx/GetEntryCommentsRss?guid=815a5172-f8f3-4474-8929-c4ba6007be0a</wfw:commentRss>
      <title>Архивирование и ротация журналов событий (EventLog) средствами PowerShell</title>
      <guid isPermaLink="false">http://www.sysadmins.lv/PermaLink,guid,815a5172-f8f3-4474-8929-c4ba6007be0a.aspx</guid>
      <link>http://www.sysadmins.lv/PermaLink,guid,815a5172-f8f3-4474-8929-c4ba6007be0a.aspx</link>
      <pubDate>Thu, 04 Dec 2008 21:55:32 GMT</pubDate>
      <description>&lt;div&gt;&lt;P&gt;Снова навеяно темой на форуме &lt;A target=_blank href="http://forums.microsoft.com/TechNet-RU/ShowPost.aspx?PostID=4208599&amp;amp;SiteID=40"&gt;TechNet-Ru&lt;/A&gt;. Уже не первый раз встречаю топики про архивирование журналов событий для последующего хранения в оффлайне. Безусловно не стоит пытаться скопировать .evt файл из папки Windows, поскольку файлы открыты и заблокированы (как и .pst файлы при запущенном MS Outlook). Для архивирования журнала скриптом нужно либо использовать Volume Shadow Copy либо использовать особые методы (например, вот так: &lt;A title=http://support.microsoft.com/kb/312571 href="http://support.microsoft.com/kb/312571"&gt;http://support.microsoft.com/kb/312571&lt;/A&gt;). В качестве особых методов можно так же выделить использование WMI, которое позволяет решить поставленную задачу и добавит нам удалённой управляемости.&lt;/P&gt;
&lt;P&gt;Полностью опираться на тему форума нельзя, ибо задача поставлена некорректно. Смысла в ежедневном удалении логов с машин без предварительного архивирования нету совсем (иначе вы потеряете точку отправления в решении проблемы, когда она возникнет и зачастую единственным выходом будет переинсталляция или восстановление из бакупа). Поэтому немного переформулируем задачу и напишем решение.&lt;/P&gt;
&lt;P&gt;Задача: проводить с некоторой периодичностью архивацию журнала событий в файл. Убедиться, что бэкап сделан и после этого очистить журналы. В противном случае сделать что-нибудь другое.&lt;/P&gt;
&lt;P&gt;За отправную точку возьмём класс &lt;A target=_blank href="http://msdn.microsoft.com/en-us/library/aa394225.aspx"&gt;Win32_NTEventlogFile&lt;/A&gt;. Давайте, вызовем его:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE style="BACKGROUND-COLOR: black; FONT: 9pt courier new; COLOR: #fff"&gt;&lt;FONT color=#009500&gt;&lt;SPAN black? background-color: #009500?;&gt;&lt;P&gt;[vPodans] gwmi Win32_NTEventlogFile

                     FileSize LogfileName                   Name
                     -------- -----------                   ----
                      8458240 Application                   C:\Windows\System32\Winevt...
                        69632 DFS Replication               C:\Windows\System32\Winevt...
                        69632 HardwareEvents                C:\Windows\System32\Winevt...
                        69632 Internet Explorer             C:\Windows\System32\Winevt...
                        69632 Key Management Service        C:\Windows\System32\Winevt...
                        69632 ODiag                         C:\Windows\System32\Winevt...
                      1118208 OSession                      C:\Windows\System32\Winevt...
                     20975616 System                        C:\Windows\System32\Winevt...
                     11603968 Windows PowerShell            C:\Windows\System32\Winevt...


[vPodans]&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Он показал список доступных журналов, с которыми мы можем работать. Давайте взглянем на методы данного класса:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE style="BACKGROUND-COLOR: black; FONT: 9pt courier new; COLOR: #fff"&gt;&lt;FONT color=#009500&gt;&lt;SPAN black? background-color: #009500?;&gt;&lt;P&gt;[vPodans] gwmi Win32_NTEventlogFile | gm -MemberType method


   TypeName: System.Management.ManagementObject#root\cimv2\Win32_NTEventlogFile

Name                        MemberType Definition
----                        ---------- ----------
BackupEventlog              Method     System.Management.ManagementBaseObject BackupEventlog(System.String ArchiveFi...
ChangeSecurityPermissions   Method     System.Management.ManagementBaseObject ChangeSecurityPermissions(System.Manag...
ChangeSecurityPermissionsEx Method     System.Management.ManagementBaseObject ChangeSecurityPermissionsEx(System.Man...
ClearEventlog               Method     System.Management.ManagementBaseObject ClearEventlog(System.String ArchiveFil...
Compress                    Method     System.Management.ManagementBaseObject Compress()
CompressEx                  Method     System.Management.ManagementBaseObject CompressEx(System.String StartFileName...
Copy                        Method     System.Management.ManagementBaseObject Copy(System.String FileName)
CopyEx                      Method     System.Management.ManagementBaseObject CopyEx(System.String FileName, System....
DeleteEx                    Method     System.Management.ManagementBaseObject DeleteEx(System.String StartFileName)
GetEffectivePermission      Method     System.Management.ManagementBaseObject GetEffectivePermission(System.UInt32 P...
Rename                      Method     System.Management.ManagementBaseObject Rename(System.String FileName)
TakeOwnerShip               Method     System.Management.ManagementBaseObject TakeOwnerShip()
TakeOwnerShipEx             Method     System.Management.ManagementBaseObject TakeOwnerShipEx(System.String StartFil...
Uncompress                  Method     System.Management.ManagementBaseObject Uncompress()
UncompressEx                Method     System.Management.ManagementBaseObject UncompressEx(System.String StartFileNa...


[vPodans]&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Здесь нас заинтересует 2 метода - &lt;A target=_blank href="http://msdn.microsoft.com/en-us/library/aa384808(VS.85).aspx"&gt;BackupEventlog&lt;/A&gt; и &lt;A target=_blank href="http://msdn.microsoft.com/en-us/library/aa389229(VS.85).aspx"&gt;ClearEventlog&lt;/A&gt; (там ещё есть ChangeSecurityPermissions - я бы не советовал с ним связываться &lt;img alt=":-D" src="/smilies/openmouth.gif"&gt;). В упрощённом варианте копирование и удаление будет сводиться к:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #800080"&gt;$LogName&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Application&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Eventlog&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;gwmi&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Win32_NTEventlogFile&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-STYLE: italic; COLOR: #5f9ea0"&gt;-Filter&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;LogFileName = '$LogName'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Eventlog&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.BackupEventLog(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;&lt;SPAN style="COLOR: #800000"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;F:\Eventlogs\$env:computername\$LogName&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;+&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;_&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;+&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;$(Get-Date -Format dd.MM.yyyy).evt&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$EventLog&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Clear()&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #000000"&gt;В данном случае с локальной машины заархивируем журнал Application в путь (после преобразований переменных) &lt;EM&gt;F:\Eventlogs\THOR\Application_04.12.2008.evt&lt;/EM&gt;, после чего данный журнал будет очищен. Ничего сложного нету совсем. Разве что кроме одной детали. Такой фокус не получится с журналом Security, поскольку это жрунал аудита. И для очистки журнала потребуется право &lt;STRONG&gt;Manage auditing and security log&lt;/STRONG&gt; привилегия &lt;STRONG&gt;SeAudit&lt;/STRONG&gt; (в общем смысле это будет административная учётная запись). Поэтому перед использованием метода ClearEventlog нужно подключить эти самые привилегии:&lt;/SPAN&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;SPAN style="COLOR: #800080"&gt;$EventLog&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.PSBase.Scope.Options.EnablePrivileges &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;$true&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;вот и всё. Осталось только решить задачу ротации журналов (удалять все файлы, которые старше 365 дней или 1 года):&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;dir&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;F&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;:\&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Eventlogs&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;\&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$env:computername&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-STYLE: italic; COLOR: #5f9ea0"&gt;-Recurse&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;?&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; {&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.lastwritetime &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;-gt&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;Get-Date&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;).AddDays(-&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;365&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)} | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;del&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-STYLE: italic; COLOR: #5f9ea0"&gt;-Force&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;В качестве последнего штриха стоит оформить всё в красивый скрипт:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE&gt;&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#######################################################&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; EventLog Backup Manager.ps1&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; Version 1.0&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#
#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; Eventlog archiving script&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#
#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; Vadims Podans (c) 2008&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; http://www.sysadmins.lv/&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt;#######################################################&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #0000ff"&gt;function&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;Backup-Eventlog&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt; {
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;param&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; ([&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;]&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Computer&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)
Begin {
    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; разово получаем текущую дату в простом формате для пристыковки даты к имени файла&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$date&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;Get-Date&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-STYLE: italic; COLOR: #5f9ea0"&gt;-Format&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;dd.MM.yyyy&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;    
    }
Process {
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; получение списка всех журналов событий на текущем компьютере&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Eventlog&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;gwmi&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Win32_NTEventlogFile&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-STYLE: italic; COLOR: #5f9ea0"&gt;-ComputerName&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Computer&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;    &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #800080"&gt;$Eventlog&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;%&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt; {
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; косметическая переменная для вставки имени лога в текстовые сообщения&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$CurrentName&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;.LogFileName
        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$CurrentLog&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; включение SeAudit привилегий&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.PSBase.Scope.Options.EnablePrivileges &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;$true&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; задаём путь, куда будут складываться архивы эвентлога&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$path&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;\\BackupServer\Eventlogs\$computer\$CurrentName&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;+&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;_&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;+&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$date&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;+&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;.evt&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;        &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;Write-Host&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Processing $CurrentName log on $computer ..&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; непосредственно сам бэкап&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Backup&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.BackupEventLog(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$path&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;)
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; проверка статуса бэкапа текущего журнала&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;        &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$Backup&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.ReturnValue &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;-eq&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;) {
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;Write-Host&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Success&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; если бэкап прошёл успешно, то можно удалять записи в журнале и командлетом Out-Null&lt;BR&gt;# подавляем ненужный вывод на экран&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800080"&gt;$CurrentLog&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.ClearEventlog() | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;out-null&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;            } &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;&lt;FONT size=2 face=Verdana&gt;else&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt; {
            &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;Write-Warning&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Unexpected error occured. Operation aborted&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;            }
        }
    }
End {
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #008000"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; эта часть обеспечивает удаление старых архивов и их ротацию после каждого запуска скрипта&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;FONT size=2 face=Verdana&gt;#&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;FONT size=2 face=Verdana&gt; стоит отметить, что данная секция выполняется только один раз и после проведения всей архивации&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;
&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;Write-Host&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;Purging old archives ..&lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;"&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;    &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;dir&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #800000"&gt;\\BackupServer\Eventlogs\$computer&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-STYLE: italic; COLOR: #5f9ea0"&gt;-Recurse&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;?&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; {&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000080"&gt;$_&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.lastwritetime &lt;/SPAN&gt;&lt;SPAN style="COLOR: #ff0000"&gt;-gt&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;Get-Date&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;).AddDays(-&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;365&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)} | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0; FONT-WEIGHT: bold"&gt;del&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-STYLE: italic; COLOR: #5f9ea0"&gt;-Force&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: #000000"&gt;
&lt;FONT size=2 face=Verdana&gt;    }
}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;/SPAN&gt;как бы и всё.&lt;/P&gt;&lt;img width="0" height="0" src="http://www.sysadmins.lv/aggbug.ashx?id=815a5172-f8f3-4474-8929-c4ba6007be0a"/&gt;&lt;br/&gt;&lt;hr/&gt;PowerShell Powered - http://www.sysadmins.lv&lt;/div&gt;</description>
      <comments>http://www.sysadmins.lv/CommentView,guid,815a5172-f8f3-4474-8929-c4ba6007be0a.aspx</comments>
      <category>PowerShell</category>
      <category>PowerShell / WMI</category>
    </item>
    <item>
      <trackback:ping>http://www.sysadmins.lv/Trackback.aspx?guid=22c0550d-0c46-44ca-97ce-2b0bccbb51de</trackback:ping>
      <pingback:server>http://www.sysadmins.lv/pingback.aspx</pingback:server>
      <pingback:target>http://www.sysadmins.lv/PermaLink,guid,22c0550d-0c46-44ca-97ce-2b0bccbb51de.aspx</pingback:target>
      <dc:creator>Camelot</dc:creator>
      <wfw:comment>http://www.sysadmins.lv/CommentView,guid,22c0550d-0c46-44ca-97ce-2b0bccbb51de.aspx</wfw:comment>
      <wfw:commentRss>http://www.sysadmins.lv/SyndicationService.asmx/GetEntryCommentsRss?guid=22c0550d-0c46-44ca-97ce-2b0bccbb51de</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <title>Управление принтерами в PowerShell (часть 3, заключительная)</title>
      <guid isPermaLink="false">http://www.sysadmins.lv/PermaLink,guid,22c0550d-0c46-44ca-97ce-2b0bccbb51de.aspx</guid>
      <link>http://www.sysadmins.lv/PermaLink,guid,22c0550d-0c46-44ca-97ce-2b0bccbb51de.aspx</link>
      <pubDate>Sat, 22 Nov 2008 18:11:28 GMT</pubDate>
      <description>&lt;div&gt;&lt;P&gt;Вот и пришло время закрыть тему управления принтерами и их списками ACL в PowerShell с использованием WMI. Я в блоге уже расписывал решение частных задач по основным задачам управления принтеров и по управлению их ACL списками. В этом посте я сложу все наработки по этому вопросу в единый концептуальный скрипт, который будет называться PrinterUtils.ps1 с достаточно объёмным набором функций, которые нацелены на упрощение для администраторов автоматизации принтеров с использованием PowerShell. Если кто-то захочет разобраться в работе скрипта и понять используемые приёмы, то предлагаю ознакомиться с следующими ссылками:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.sysadmins.lv/PermaLink,guid,41226cf5-e524-446f-85c0-4a958c6c769a.aspx"&gt;Управление принтерами в PowerShell (часть 1)&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://www.sysadmins.lv/PermaLink,guid,54cfbd81-dff6-4391-8ba0-13a17df9bc5f.aspx"&gt;Управление принтерами в PowerShell (часть 2)&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://www.sysadmins.lv/PermaLink,guid,4c56b6d6-b4d1-4d84-963e-a10d37140e9a.aspx"&gt;Странности метода SetSecurityDescriptor класса Win32_Printer (часть 1)&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://www.sysadmins.lv/PermaLink,guid,249809ac-0d9e-4b60-8109-5b756fba4496.aspx"&gt;Странности метода SetSecurityDescriptor класса Win32_Printer (часть 2)&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;В качестве основы я использовал свои предыдущие наработки с SecurityDescriptor в предыдущем блоге, когда разбирал вопрос управления SharePermissions из PowerShell:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://vpodans.spaces.live.com/blog/cns!BB1419A2CFC1E008!170.entry"&gt;Управление безопасностью общих папок (сетевых шар) в PowerShell (часть 1)&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://vpodans.spaces.live.com/blog/cns!BB1419A2CFC1E008!177.entry"&gt;Управление безопасностью общих папок (сетевых шар) в PowerShell (часть 2)&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://vpodans.spaces.live.com/blog/cns!BB1419A2CFC1E008!186.entry"&gt;Управление безопасностью общих папок (сетевых шар) в PowerShell (часть 3)&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://vpodans.spaces.live.com/blog/cns!BB1419A2CFC1E008!188.entry"&gt;Управление безопасностью общих папок (сетевых шар) в PowerShell (часть 4)&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Материала у меня на эту тему набралось достаточно много, чтобы проникнуться в идею работы классов WMI и SecurityDescriptor, который не раз пытался посадить меня в лужу :) Однако версия скрипта ShareUtils чётко говорит о том, что скрипт далеко не идеален и не оптимален, имеет свои недостатки, т.к. это был мой первый опыт работы с функциями. Сейчас я значительно переработал структуру работы скрипта (оставив только Core работы с SecurityDescriptor), добавив удалённое управление (в разумных пределах) и, главное (как мне кажется), реализовал работу функций в конвейере. Примеры использования скрипта распишу чуть ниже. Итак, представляю набор функций, которые реализованы в скрипте:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Подключение (маппинг) сетевого принтера к пользователю; 
&lt;LI&gt;Отключение маппинга сетевого принтера от пользователя; 
&lt;LI&gt;Получение сведений о принтерах; 
&lt;LI&gt;Установка принтера по умолчанию; 
&lt;LI&gt;Установка принтера для общего пользования (расшаривание принтера); 
&lt;LI&gt;Отмена принтера для общего пользования;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Данная секция представляет собой базовые возможности по управлению принтерами и полностью работоспособна в среде Windows XP/Windows Server 2003. А вот секция управления ACL списками принтеров доступна только в среде Windows Vista/Windows Server 2008. Сюда входят следующие функции:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Получение сведений о правах доступа на конкретный принтер, конкретный принтсервер или по списку компьютеров; 
&lt;LI&gt;Импорт сведений о правах доступа из внешнего источника. Это может быть и CSV и XML или другой формат; 
&lt;LI&gt;Добавление пользователя или группы в ACL список принтера или всех принтеров, которые подключены к принтсерверу; 
&lt;LI&gt;Удаление пользователя или группы из ACL списка принтера или всех принтеров, которые подключены к принтсерверу; 
&lt;LI&gt;Установка пользователя или группы в ACL список принтера или всех принтеров, которые подключены к принтеру. При этом все имеющиеся права доступа будут удалены и заменены только одним ACE с правом ManagePrinters.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Для этих функций полностью реализована поддержка удалённой работы и работа в конвейере. Синтаксис команд используется примерно следующий:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;New-NetworkPrinter -Computer &amp;lt;name&amp;gt; -name &amp;lt;name&amp;gt;&lt;BR&gt;&lt;/FONT&gt;где &lt;STRONG&gt;Computer&lt;/STRONG&gt; - имя компьютера, к которому подключён сетевой принтер&lt;BR&gt;&lt;STRONG&gt;Name&lt;/STRONG&gt; - сетевое имя принтера, который следует подключить к пользователю 
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Remove-NetworkPrinter -Name &amp;lt;name&amp;gt;&lt;BR&gt;&lt;/FONT&gt;где &lt;STRONG&gt;Name&lt;/STRONG&gt; - имя примапленного сетевого принтера (не обязательный параметр). Если параметр Name не указан, то будут отключены все примапленные сетевые принтеры. 
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Get-PrinterInfo -Computer &amp;lt;name&amp;gt; -Name &amp;lt;name&amp;gt;&lt;BR&gt;&lt;/FONT&gt;где &lt;STRONG&gt;Computer&lt;/STRONG&gt; - имя компьютера, к которому подключён принтер (не обязательный параметр. Если не указан, то будет использоваться локальная машина),&lt;BR&gt;&lt;STRONG&gt;Name&lt;/STRONG&gt; - имя принтера на удалённой или локальной машине, зависит от предыдущего параметра (не обязательный параметр. Если не указан, то будет выведена краткая справка о всех принтерах указанного компьютера. Если указан, то будет выведена подробная информация о принтере). Вывод данной команды не будет содержать сведений о правах доступа на принтер.&amp;nbsp; 
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Set-DefaultPrinter -Name &amp;lt;name&amp;gt;&lt;BR&gt;&lt;/FONT&gt;где &lt;STRONG&gt;Name&lt;/STRONG&gt; - имя (или путь) принтера, который должен стать для пользователя принтером по умолчанию. 
&lt;LI&gt;&lt;FONT color=#0000ff&gt;New-PrinterShare -Computer &amp;lt;name&amp;gt; -Name &amp;lt;name&amp;gt; -ShareName &amp;lt;name&amp;gt;&lt;BR&gt;&lt;/FONT&gt;где &lt;STRONG&gt;Computer&lt;/STRONG&gt; - имя компьютера, к которому подключён принтер (не обязательный параметр. Если не указан, будет использоваться локальная машина)&lt;BR&gt;&lt;STRONG&gt;Name&lt;/STRONG&gt; - имя принтера, который требуется предоставить для общего доступа&lt;BR&gt;&lt;STRONG&gt;ShareName&lt;/STRONG&gt; - сетевое имя принтера, т.е. имя, под которым принтер будет виден из сети 
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Remove-PrinterShare -Computer &amp;lt;name&amp;gt; -Name &amp;lt;name&amp;gt;&lt;BR&gt;&lt;/FONT&gt;где &lt;STRONG&gt;Computer&lt;/STRONG&gt; - имя компьютера, к которому подключён принтер (не обязательный параметр. Если не указан, будет использоваться локальная машина)&lt;BR&gt;&lt;STRONG&gt;Name&lt;/STRONG&gt; - имя принтера, для которого необходимо отключить общий доступ (не обязательный параметр. Если не указан, то общий доступ будет отменён для всех расшаренных принтеров на выбранном предыдущим параметром компьютере) 
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Get-Printer -Computer &amp;lt;name&amp;gt; -Name &amp;lt;name&amp;gt;&lt;BR&gt;&lt;/FONT&gt;где &lt;STRONG&gt;Computer&lt;/STRONG&gt; - имя компьютера, к которому подключён принтер (не обязательный параметр. Если не указан, будет использоваться локальная машина)&lt;BR&gt;&lt;STRONG&gt;Name&lt;/STRONG&gt; - имя принтера, для которого следует получить сведения о правах доступа (не обязательный параметр. Если не указан, то будут получены сведения об ACL всех принтеров на выбранном предыдущим параметром компьютере)&lt;BR&gt;Генерирует на выходе массив объектов с необходимыми сведениями о каждом ACE. Данный массив можно использовать как для изменения прав доступа, так и просто для экспорта во внешний файл. 
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Set-Printer&lt;BR&gt;&lt;/FONT&gt;не принимает никаких аргументов, а только получает данные по конвейеру. В качестве входных данных должны использоваться объекты, которые по свойствам соответствуют объектам, которые генерирует команда Get-Printer. Команда не может быть в начале строки, а только на выходе конвейера, с которого поступают объекты. Так же по конвейеру можно передавать объекты из внешних файлов (например, CSV, XML) 
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Add-PrinterPermission -User &amp;lt;name&amp;gt; -AceType &amp;lt;name&amp;gt; -AccessMask &amp;lt;name&amp;gt;&lt;BR&gt;&lt;/FONT&gt;где &lt;STRONG&gt;User&lt;/STRONG&gt; - имя пользователя/группы, которого следует добавить в ACL список принтера&lt;BR&gt;&lt;STRONG&gt;AceType&lt;/STRONG&gt; - тип доступа. Может быть &lt;STRONG&gt;Allow&lt;/STRONG&gt; или &lt;STRONG&gt;Deny&lt;/STRONG&gt;&lt;BR&gt;&lt;STRONG&gt;AccessMask&lt;/STRONG&gt; - маска доступа. Может иметь следующие значения: &lt;STRONG&gt;ManagePrinters&lt;/STRONG&gt;, &lt;STRONG&gt;ManageDocuments&lt;/STRONG&gt;, &lt;STRONG&gt;Print&lt;/STRONG&gt;, &lt;STRONG&gt;TakeOwnership&lt;/STRONG&gt;, &lt;STRONG&gt;ReadPermissions&lt;/STRONG&gt;, &lt;STRONG&gt;ChangePermissions&lt;/STRONG&gt;&lt;BR&gt;&lt;U&gt;Данная команда так же не может быть в начале строки, а должна находиться на выходе конвейера&lt;/U&gt;, с которого поступают объекты. В качестве входных данных должны использоваться объекты, которые по свойствам соответствуют объектам, которые генерирует команда Get-Printer. Команда не может быть в начале строки, а только на выходе конвейера, с которого поступают объекты. Так же по конвейеру можно передавать объекты из внешних файлов (например, CSV, XML) 
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Remove-PrinterPermission -User &amp;lt;name&amp;gt;&lt;BR&gt;&lt;/FONT&gt;где &lt;STRONG&gt;User&lt;/STRONG&gt; - имя пользователя/группы, которого следует удалить из списка ACL принтера&lt;BR&gt;&lt;U&gt;Данная команда так же не может быть в начале строки, а должна находиться на выходе конвейера&lt;/U&gt;, с которого поступают объекты. В качестве входных данных должны использоваться объекты, которые по свойствам соответствуют объектам, которые генерирует команда Get-Printer. Команда не может быть в начале строки, а только на выходе конвейера, с которого поступают объекты. Так же по конвейеру можно передавать объекты из внешних файлов (например, CSV, XML) 
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Set-PrinterPermission -User &amp;lt;name&amp;gt;&lt;/FONT&gt;&lt;BR&gt;где &lt;STRONG&gt;User&lt;/STRONG&gt; - имя пользователя/группы, для которого следует предоставить привилегированный доступ.&lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Важно:&lt;/FONT&gt;&lt;/STRONG&gt; &lt;EM&gt;&lt;U&gt;при использовании команды Set-PrinterPermission следует помнить, что указанный пользователь/группа будут иметь единственный доступ к принтеру с правом ManagePrinters. При этом вероятно, что вы после исполнения команды потеряете доступ к принтеру&lt;/U&gt;&lt;/EM&gt;&lt;BR&gt;&lt;U&gt;Данная команда так же не может быть в начале строки, а должна находиться на выходе конвейера&lt;/U&gt;, с которого поступают объекты. В качестве входных данных должны использоваться объекты, которые по свойствам соответствуют объектам, которые генерирует команда Get-Printer. &lt;BR&gt;&lt;BR&gt;Команда не может быть в начале строки, а только на выходе конвейера, с которого поступают объекты. Так же по конвейеру можно передавать объекты из внешних файлов (например, CSV, XML) &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;и несколько примеров использования:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;Get-Printer PrintSrv "MyPrinter" | export-csv C:\LaserJet.csv&lt;/FONT&gt; - экспортирует ACL списки принтера MyPrinter в CSV файл&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;Get-Printer PrintSrv | Remove-PrinterPermission Everyone&lt;/FONT&gt; - удаляет группу Everyone из списков ACL всех принтеров сервера PrintSrv&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;Import-Clixml C:\Printers.xml | Set-Printer&lt;/FONT&gt; - восстанавливает права для принтеров на те, которые содержатся в XML файле. При этом текущие списки ACL указанных в файле принтеров будут полностью перезаписаны списком ACL из файла.&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;Get-Content C:\Computers.txt | %{Get-printer $_ | Add-Printerpermission NewPrinterWorkers Allow Print}&lt;/FONT&gt; - даёт право печати на всех принтерах, которые подключены к компьютерам из списка computers.txt&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;New-NetworkPrinter PrintSrv "HP LaserJet 2100"&lt;/FONT&gt; - подключает пользователю в контексте котрого исполняется скрипт сетевой принтер HP LaserJet 2100, который физически подключен к компьютеру PrintSrv&lt;/P&gt;
&lt;P&gt;Это далеко не все варианты использования :) Вобщем, я старался создать достаточно широким функционалом, который обычно требуется в скриптах для принтменеджмента. Безусловно, он не охватывает все задачи и в нём реализованы только те функции, которые я посчитал актуальными. А вот, собственно и скрипт с небольшими комментариями по ходу дела:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT color=#009500&gt;########################################################&lt;BR&gt;# PrinterUtils.ps1&lt;BR&gt;# Version 0.1.0.0&lt;BR&gt;#&lt;BR&gt;# Functions for advanced printer management&lt;BR&gt;#&lt;BR&gt;# Vadims Podans (c) 2008&lt;BR&gt;# &lt;/FONT&gt;&lt;A href="http://www.sysadmins.lv/"&gt;&lt;FONT color=#009500&gt;http://www.sysadmins.lv/&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;&lt;FONT color=#009500&gt;########################################################&lt;/FONT&gt; 
&lt;P&gt;&lt;FONT color=#009500&gt;# внутренняя функция, которая преобразовывает числовой код возврата операции записи ACL&lt;BR&gt;# в текстовое значение.&lt;/FONT&gt;&lt;BR&gt;&lt;FONT color=#0000ff&gt;&lt;STRONG&gt;function _PrinterUtils_Get-Code&lt;/STRONG&gt; ($Write) {&lt;BR&gt;switch ($Write.ReturnValue) {&lt;BR&gt;&amp;nbsp;&amp;nbsp; "0" {"Success"}&lt;BR&gt;&amp;nbsp;&amp;nbsp; "2" {"Access Denied"}&lt;BR&gt;&amp;nbsp;&amp;nbsp; "8" {"Unknown Error"}&lt;BR&gt;&amp;nbsp;&amp;nbsp; "9" {"The user does not have adequate privileges to execute the method"}&lt;BR&gt;&amp;nbsp;&amp;nbsp; "21" {"A parameter specified in the method call is invalid"}&lt;BR&gt;&amp;nbsp;&amp;nbsp; default {"Unknown error $Write.ReturnValue"}&lt;BR&gt;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;} &lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#009500&gt;# функция получения списка (списков) ACL принтера или всех принтеров&lt;BR&gt;&lt;/FONT&gt;&lt;STRONG&gt;function Get-Printer&lt;/STRONG&gt; ($Computer = ".", $name) {&lt;BR&gt;&lt;FONT color=#009500&gt;# Если переменная $name пустая, то возвращается список всех локальных принтеров&lt;/FONT&gt;&lt;BR&gt;if ($name) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $Printers = gwmi&amp;nbsp; Win32_Printer -ComputerName&amp;nbsp; $Computer -Filter "name = '$name'"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $Printers = gwmi Win32_Printer -ComputerName $Computer -Filter "local = '$True'"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&lt;FONT color=#009500&gt;# объявление массива списков ACL&lt;BR&gt;&lt;/FONT&gt;$PrinterInfo = @()&lt;BR&gt;&lt;FONT color=#009500&gt;# извлечение списка ACL из каждого элемента массива списков ACL&lt;BR&gt;&lt;/FONT&gt;foreach ($Printer in $Printers) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($printer) {&lt;BR&gt;&lt;FONT color=#009500&gt;# в переменную $SD получаем дескриптор безопасности для каждого принтера и каждый элемент ACE (DACL)&lt;BR&gt;# и добавляем в $PrinterInfo&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $SD = $Printer.GetSecurityDescriptor()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $PrinterInfo += $SD.Descriptor.DACL | %{&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; $_ | Select @{e = {$Printer.SystemName}; n = 'Computer'},&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; @{e = {$Printer.name}; n = 'Name'},&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; AccessMask,&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; AceFlags,&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; AceType,&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; @{e = {$_.trustee.Name}; n = 'User'},&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; @{e = {$_.trustee.Domain}; n = 'Domain'},&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; @{e = {$_.trustee.SIDString}; n = 'SID'}&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; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&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; Write-Warning "Specified printer not found!"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&lt;FONT color=#009500&gt;# выдача сведений об ACL на выход функции для последующей подачи на конвейер&lt;/FONT&gt;&lt;BR&gt;$PrinterInfo&lt;BR&gt;} &lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#009500&gt;# функция записи в ACL принтера. Она не принимает никаких аргументов,&lt;BR&gt;# а только принимает данные с конвейера&lt;/FONT&gt;&lt;BR&gt;&lt;STRONG&gt;function Set-Printer&lt;/STRONG&gt; {&lt;BR&gt;&lt;FONT color=#009500&gt;# по конвейеру получаем массив ACE из внешнего источника&lt;/FONT&gt;&lt;BR&gt;$PrinterInfo = @($input)&lt;BR&gt;&lt;FONT color=#009500&gt;# расшиваем полученный массив по имени принтера и дальше по циклу подаём на&lt;BR&gt;# обработку только ACL одного принтера&lt;BR&gt;&lt;/FONT&gt;$PrinterInfo | Select -Unique Computer, Name | % {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $Computer = $_.Computer&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $name = $_.name&lt;BR&gt;&lt;FONT color=#009500&gt;# создаём новые объекты необходимых классов&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $SD = ([WMIClass] "Win32_SecurityDescriptor").CreateInstance()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ace = ([WMIClass] "Win32_Ace").CreateInstance()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $Trustee = ([WMIClass] "Win32_Trustee").CreateInstance()&lt;BR&gt;&lt;FONT color=#009500&gt;# теперь расшиваем каждый ACE уже отфильтрованного списка ACL из PrinterInfo и&lt;BR&gt;# заполняем форму SecurityDescriptor&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $PrinterInfo | ? {$_.Computer -eq $Computer -and $_.name -eq $name} | % {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $SID = new-object security.principal.securityidentifier($_.SID)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [byte[]] $SIDArray = ,0 * $SID.BinaryLength&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $SID.GetBinaryForm($SIDArray,0)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $Trustee.Name = $_.user&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $Trustee.SID = $SIDArray&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ace.AccessMask = $_.AccessMask&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ace.AceType = $_.AceType&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ace.AceFlags = $_.AceFlags&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ace.trustee = $Trustee&lt;BR&gt;&lt;FONT color=#009500&gt;# набор ACE поэтапно добавляем в DACL дескриптора безопасности&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $SD.DACL += @($ace.psobject.baseobject)&lt;BR&gt;&lt;FONT color=#009500&gt;# устанавливаем флаг SE_DACL_PRESENT, что будет говорить о том, что мы изменяем&lt;BR&gt;# только DACL и ничего более&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $SD.ControlFlags = 0x0004&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&lt;FONT color=#009500&gt;# когда полный список ACL для текущего принтера собран, выбираем имя текущего принтера&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $Printer = gwmi Win32_Printer -ComputerName $Computer -Filter "name = '$name'"&lt;BR&gt;&lt;FONT color=#009500&gt;# проверяется, что принтер для записи ACL найден и производится запись.&lt;BR&gt;# В противном случае запись ACL пропускается&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($Printer) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $Write = $Printer.SetSecurityDescriptor($SD)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host "Processing current printer: $name"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _PrinterUtils_Get-Code $Write&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Warning "Skipping non-present printer: $name"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;} &lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#009500&gt;# внутренняя функция, которая только формирует объект пользователя с набором прав&lt;BR&gt;# и возвращает объект в вызывающую функцию для последующих преобразований&lt;/FONT&gt;&lt;BR&gt;&lt;STRONG&gt;function _Create-SDObject&lt;/STRONG&gt; ( $user, $AceType, $AccessMask) {&lt;BR&gt;&lt;FONT color=#009500&gt;# преобразование текстового вида прав в числовые значения&lt;/FONT&gt;&lt;BR&gt;$masks = @{ManagePrinters = 983052; ManageDocuments = 983088; Print = 131080;&lt;BR&gt;TakeOwnership = 524288; ReadPermissions = 131072; ChangePermissions = 262144}&lt;BR&gt;$types = @{Allow = 0; Deny = 1}&lt;BR&gt;&lt;FONT color=#009500&gt;# создание необходимых свойств для объекта. Для поддержки удалённого управления&lt;BR&gt;# было добавлено свойство Computer, которое будет принимать от Get-Printer аналогичное&lt;BR&gt;# значение. Тем самым обеспечивается сквозная трансляция имени компьютера, где&lt;BR&gt;# подключен принтер, по конвейеру для последующей записи&lt;BR&gt;&lt;/FONT&gt;$AddInfo = New-Object System.Management.Automation.PSObject&lt;BR&gt;$AddInfo | Add-Member NoteProperty Computer&amp;nbsp; ([PSObject]$null)&lt;BR&gt;$AddInfo | Add-Member NoteProperty Name&amp;nbsp; ([PSObject]$null)&lt;BR&gt;$AddInfo | Add-Member NoteProperty AccessMask&amp;nbsp; ([uint32]$null)&lt;BR&gt;$AddInfo | Add-Member NoteProperty AceFlags&amp;nbsp; ([uint32]$null)&lt;BR&gt;$AddInfo | Add-Member NoteProperty AceType&amp;nbsp; ([uint32]$null)&lt;BR&gt;$AddInfo | Add-Member NoteProperty User&amp;nbsp; ([PSObject]$null)&lt;BR&gt;$AddInfo | Add-Member NoteProperty Domain&amp;nbsp; ([PSObject]$null)&lt;BR&gt;$AddInfo | Add-Member NoteProperty SID&amp;nbsp; ([PSObject]$null)&lt;BR&gt;&lt;FONT color=#009500&gt;# заполнение объекта данными, которые были указаны в качестве аргументов вызова функции и возврат&lt;BR&gt;# объекта в вызывающую функцию&lt;BR&gt;&lt;/FONT&gt;$AddInfo.Name = $name&lt;BR&gt;$AddInfo.User = $user&lt;BR&gt;$AddInfo.SID = (new-object security.principal.ntaccount $user).translate([security.principal.securityidentifier])&lt;BR&gt;$AddInfo.AccessMask = $masks.$AccessMask&lt;BR&gt;$AddInfo.AceType = $types.$AceType&lt;BR&gt;$AddInfo&lt;BR&gt;} &lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#009500&gt;# функция для установки разрешений на принтер. При её использовании, текущий ACL очищается&lt;BR&gt;# от всех записей и устанавливается только один ползователь/группа с правом ManagePrinters&lt;BR&gt;&lt;/FONT&gt;&lt;STRONG&gt;function Set-PrinterPermission&lt;/STRONG&gt; ($user) {&lt;BR&gt;&lt;FONT color=#009500&gt;# принимаются данные с конвейера&lt;/FONT&gt; &lt;BR&gt;$PrinterInfo = @($input)&lt;BR&gt;$AddInfo = _Create-SDObject $user Allow ManagePrinters&lt;BR&gt;&lt;FONT color=#009500&gt;# в этом цикле перебираются по именам все имена принтеров и для каждого из них&lt;BR&gt;# записывается указанный в аргументах пользователь с удалением текущих ACE из ACL принтера&lt;BR&gt;# это видно по тому, что никакая часть $PrinterInfo не передаётся по конвейеру на запись&lt;BR&gt;&lt;/FONT&gt;foreach ($Printer in ($PrinterInfo | select -Unique Computer, Name)) {&lt;BR&gt;$AddInfo.Computer = $Printer.Computer&lt;BR&gt;$AddInfo.Name = $Printer.name&lt;BR&gt;$AddInfo | Set-Printer&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;} &lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#009500&gt;# функция добавления пользователя/группу в имеющийся список ACL принтера. Основное отличие от&lt;BR&gt;# предыдущего варианта, что для каждого принтера ACE не устанавливается, а добавляется&lt;BR&gt;&lt;/FONT&gt;&lt;STRONG&gt;function Add-PrinterPermission&lt;/STRONG&gt; ($user, $AceType, $AccessMask) {&lt;BR&gt;$PrinterInfo = @($input)&lt;BR&gt;$AddInfo = _Create-SDObject $user $AceType $AccessMask&lt;BR&gt;foreach ($Printer in ($PrinterInfo | select -Unique Computer, Name)) {&lt;BR&gt;$AddInfo.Name = $Printer.name&lt;BR&gt;$AddInfo.Computer = $Printer.Computer&lt;BR&gt;&lt;FONT color=#009500&gt;# вот этой строкой мы из списка всех принтеров итеративно перебираем каждый принтер&lt;BR&gt;&lt;/FONT&gt;$PrinterInfoNew = $PrinterInfo | ?{$_.name -eq $Printer.name}&lt;BR&gt;&lt;FONT color=#009500&gt;# и в хвост списка ACL добавляем новый ACE&lt;BR&gt;&lt;/FONT&gt;$PrinterInfoNew += $AddInfo&lt;BR&gt;&lt;FONT color=#009500&gt;# и подаём на запись&lt;/FONT&gt;&lt;BR&gt;$PrinterInfoNew | Set-Printer&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;} &lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#009500&gt;# функция для удаления ACE пользователя/группы из ACL&lt;/FONT&gt;&lt;BR&gt;&lt;STRONG&gt;function Remove-PrinterPermission&lt;/STRONG&gt; ($user) {&lt;BR&gt;$Printers = @($input)&lt;BR&gt;&lt;FONT color=#009500&gt;# просто берём списки ACL, которые пришли по конвейеру и выкидываем оттуда все ACE,&lt;BR&gt;# в которых фигурирует указанный в аргументах пользователь/группа и записывем ACE обратно в ACL&lt;BR&gt;&lt;/FONT&gt;$printers | ? {$_.user -ne $user} | Set-Printer&lt;BR&gt;} &lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;STRONG&gt;function New-NetworkPrinter&lt;/STRONG&gt; ($Computer, $name) {&lt;BR&gt;([wmiclass]'Win32_Printer').AddPrinterConnection("\\$Computer\$name")&lt;BR&gt;} &lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;STRONG&gt;function Remove-NetworkPrinter&lt;/STRONG&gt; ($name) {&lt;BR&gt;if ($name) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (gwmi Win32_Printer -Filter "sharename='$name'").delete()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (gwmi Win32_Printer -Filter "local='$false'").delete()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;} &lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;STRONG&gt;function Set-DefaultPrinter&lt;/STRONG&gt; ($name) {&lt;BR&gt;if (!$name) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Warning "You must to specify printer name. Operation aborted!"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (gwmi win32_Printer -Filter "name='$name'") {&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; $SetDefault = (gwmi win32_Printer -Filter "name='$name'").SetDefaultPrinter()&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; switch ($SetDefault.ReturnValue) {&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; "0" {Write-Host "Now your default printer is $name"}&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; default {Write-Warning "Some error occur"}&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; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&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; Write-Warning "Specified printer not exist!"&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; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;} &lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;STRONG&gt;function Get-PrinterInfo&lt;/STRONG&gt; ($Computer = ".", $name) {&lt;BR&gt;&lt;FONT color=#009500&gt;# здесь я предлагаю получить как полный набор свойств, так и упрощённый вывод сведений.&lt;/FONT&gt; &lt;BR&gt;if ($name) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gwmi Win32_Printer -ComputerName $Computer -Filter "name='$name'" | select *&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gwmi Win32_Printer -ComputerName $Computer&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;} &lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;STRONG&gt;function New-PrinterShare&lt;/STRONG&gt; ($Computer = ".", $name, $ShareName) { &lt;BR&gt;$Printer = gwmi win32_Printer -ComputerName $Computer -Filter "name='$name'"&lt;BR&gt;if ($Printer) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $Printer.shared = $True&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $Printer.ShareName = $ShareName&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $Printer.put()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Warning "Specified printer not exist!"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;} &lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;STRONG&gt;function Remove-PrinterShare&lt;/STRONG&gt; ($Computer = ".", $name) {&lt;BR&gt;if ($name) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $filter = "name = '$name'"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $filter = "local = '$false'"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;gwmi Win32_Printer -ComputerName $Computer -Filter $filter | % {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $_.shared = $false&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $_.put()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;многовато, конечно же, но ничего космически сложного для разбора я тут не вижу. Главное - чёткое понимание структуры SecurityDescriptor и хотя бы базовые навыки работы с ним.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#ff0000&gt;Важно:&lt;/FONT&gt;&lt;/STRONG&gt; &lt;U&gt;если не указываете необязательные параметры, то указание последующих параметров в виде именованных (не позиционных) обязательна!&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;Даже не знаю, что ещё добавить сюда. Вроде все вопросы разобрал ранее, сейчас просто это всё собрал воедино. Вобщем, как обычно, если есть вопросы, замечания - кнопка Comments вам в помощь &lt;img alt=";)" src="/smilies/wink.gif"&gt;&lt;/P&gt;&lt;img width="0" height="0" src="http://www.sysadmins.lv/aggbug.ashx?id=22c0550d-0c46-44ca-97ce-2b0bccbb51de"/&gt;&lt;br/&gt;&lt;hr/&gt;PowerShell Powered - http://www.sysadmins.lv&lt;/div&gt;</description>
      <comments>http://www.sysadmins.lv/CommentView,guid,22c0550d-0c46-44ca-97ce-2b0bccbb51de.aspx</comments>
      <category>PowerShell</category>
      <category>PowerShell / ACL</category>
      <category>PowerShell / WMI</category>
    </item>
    <item>
      <trackback:ping>http://www.sysadmins.lv/Trackback.aspx?guid=249809ac-0d9e-4b60-8109-5b756fba4496</trackback:ping>
      <pingback:server>http://www.sysadmins.lv/pingback.aspx</pingback:server>
      <pingback:target>http://www.sysadmins.lv/PermaLink,guid,249809ac-0d9e-4b60-8109-5b756fba4496.aspx</pingback:target>
      <dc:creator>Camelot</dc:creator>
      <wfw:comment>http://www.sysadmins.lv/CommentView,guid,249809ac-0d9e-4b60-8109-5b756fba4496.aspx</wfw:comment>
      <wfw:commentRss>http://www.sysadmins.lv/SyndicationService.asmx/GetEntryCommentsRss?guid=249809ac-0d9e-4b60-8109-5b756fba4496</wfw:commentRss>
      <title>Странности метода SetSecurityDescriptor класса Win32_Printer (часть 2)</title>
      <guid isPermaLink="false">http://www.sysadmins.lv/PermaLink,guid,249809ac-0d9e-4b60-8109-5b756fba4496.aspx</guid>
      <link>http://www.sysadmins.lv/PermaLink,guid,249809ac-0d9e-4b60-8109-5b756fba4496.aspx</link>
      <pubDate>Wed, 19 Nov 2008 16:36:47 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;Итак, как я и обещал, я вернулся к вопросу изменения ACL принтеров в PowerShell. В первой части (&lt;a title="Странности метода SetSecurityDescriptor класса Win32_Printer" href="http://www.sysadmins.lv/PermaLink,guid,4c56b6d6-b4d1-4d84-963e-a10d37140e9a.aspx"&gt;Странности метода SetSecurityDescriptor класса Win32_Printer&lt;/a&gt;) я изложил проблематику вопроса. В конечном итоге я сегодня смог найти решение, которое оказалось не совсем понятным, но относительно предсказуемым.&lt;/p&gt; &lt;p&gt;Вернёмся снова к документации MSDN: &lt;a href="http://msdn.microsoft.com/en-us/library/aa393594(VS.85).aspx" target="_blank"&gt;SetSecurityDescriptor Method of the Win32_Printer Class&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Это, конечно же, было моим попустительством, что не указал флаг управления &lt;strong&gt;SE_DACL_PRESENT&lt;/strong&gt; и не включил привилегии &lt;strong&gt;SeSecurityPrivilege&lt;/strong&gt; ("&lt;em&gt;&lt;u&gt;умение читать - первое умение системного администратора&lt;/u&gt;&lt;/em&gt;" (c) &lt;strong&gt;Peter.G&lt;/strong&gt;). Понимание этого факта пришло после очередного прочтения поста о смене владельца папки (&lt;a href="http://www.sysadmins.lv/PermaLink,guid,243d77ee-4975-4335-9abf-ce8660e9439c.aspx"&gt;Смена владельца папки или файла в PowerShell (часть 2)&lt;/a&gt;). Что касается флагов управления, то выложу здесь значения флагов:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;SE_OWNER_DEFAULTED = 0x0001  &lt;li&gt;SE_GROUP_DEFAULTED = 0x0002  &lt;li&gt;&lt;strong&gt;SE_DACL_PRESENT = 0x0004&lt;/strong&gt;  &lt;li&gt;SE_DACL_DEFAULTED =&amp;nbsp; 0x0008  &lt;li&gt;SE_SACL_PRESENT = 0x0010  &lt;li&gt;SE_SACL_DEFAULTED = 0x0020  &lt;li&gt;SE_DACL_AUTO_INHERIT_REQ = 0x0100  &lt;li&gt;SE_SACL_AUTO_INHERIT_REQ =0x0200  &lt;li&gt;SE_DACL_AUTO_INHERITED = 0x0400  &lt;li&gt;SE_SACL_AUTO_INHERITED = 0x0800  &lt;li&gt;SE_DACL_PROTECTED = 0x1000  &lt;li&gt;SE_SACL_PROTECTED = 0x2000  &lt;li&gt;SE_RM_CONTROL_VALID = 0x4000  &lt;li&gt;SE_SELF_RELATIVE = 0x8000&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Здесь я выделил жирным тот флаг, который нам нужен.&lt;/p&gt; &lt;p&gt;Добавим эту строчку к скрипту и добавим включение привилегий. И мы должны будем получить примерно такой скрипт:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;$user = "everyone"&lt;br&gt;$SD = ([WMIClass] "Win32_SecurityDescriptor").CreateInstance()&lt;br&gt;$ace = ([WMIClass] "Win32_Ace").CreateInstance()&lt;br&gt;$Trustee = ([WMIClass] "Win32_Trustee").CreateInstance()&lt;br&gt;$SID = (new-object security.principal.ntaccount $user).translate([security.principal.securityidentifier])&lt;br&gt;[byte[]] $SIDArray = ,0 * $SID.BinaryLength&lt;br&gt;$SID.GetBinaryForm($SIDArray,0)&lt;br&gt;$Trustee.Name = $user&lt;br&gt;$Trustee.SID = $SIDArray&lt;br&gt;$ace.AccessMask = 393224&lt;br&gt;$ace.AceType = 0&lt;br&gt;$ace.AceFlags = 0&lt;br&gt;$ace.Trustee = $Trustee&lt;br&gt;$SD.DACL = $ace&lt;br&gt;&lt;strong&gt;$SD.ControlFlags = 0x0004&lt;/strong&gt;&lt;br&gt;$Printer = gwmi win32_printer -filter "name='CutePDF Writer'"&lt;br&gt;&lt;strong&gt;$Printer.psbase.Scope.Options.EnablePrivileges = $true&lt;/strong&gt;&lt;br&gt;$inParams = $Printer.psbase.GetMethodParameters("SetSecurityDescriptor")&lt;br&gt;$inParams.Descriptor = $SD&lt;br&gt;$Printer.SetSecurityDescriptor($inParams)&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Пробуем запустить его:&lt;/p&gt; &lt;blockquote&gt;&lt;pre style="font: 9pt courier new; color: #fff; background-color: black"&gt;&lt;font color="#009500"&gt;&lt;span  #009500?; background-color: black?&gt;&lt;p&gt;
[System32] $user = "everyone"
[System32] $SD = ([WMIClass] "Win32_SecurityDescriptor").CreateInstance()
[System32] $ace = ([WMIClass] "Win32_Ace").CreateInstance()
[System32] $Trustee = ([WMIClass] "Win32_Trustee").CreateInstance()
[System32] $SID = (new-object security.principal.ntaccount $user).translate([security.principal.securityidentifier])
[System32] [byte[]] $SIDArray = ,0 * $SID.BinaryLength
[System32] $SID.GetBinaryForm($SIDArray,0)
[System32] $Trustee.Name = $user
[System32] $Trustee.SID = $SIDArray
[System32] $ace.AccessMask = 393224
[System32] $ace.AceType = 0
[System32] $ace.AceFlags = 0
[System32] $ace.Trustee = $Trustee
[System32] $SD.DACL = $ace
[System32] $SD.ControlFlags = 0x0004
[System32] $Printer = gwmi win32_printer -filter "name='CutePDF Writer'"
[System32] $Printer.psbase.Scope.Options.EnablePrivileges = $true
[System32] $inParams = $Printer.psbase.GetMethodParameters("SetSecurityDescriptor")
[System32] $inParams.Descriptor = $SD
[System32] $Printer.SetSecurityDescriptor($inParams)


__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     :
__DYNASTY        : __PARAMETERS
__RELPATH        :
__PROPERTY_COUNT : 1
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :
ReturnValue      : 2147749896



[System32]&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;И снова мы получаем ошибку, которая указывает, что какой-то параметр вызова неверный. Снова посмотрев предыдущую статью, я стал понимать в чём тут дело. А дело в том, что метод &lt;strong&gt;SetSecurityDescripto&lt;/strong&gt;r в этом классе не принимает параметр &lt;strong&gt;Descriptor&lt;/strong&gt; (хотя он есть в выдаче команды &lt;strong&gt;GetSecurityDescriptor&lt;/strong&gt;) и в MSDN чётко указано:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;uint32 SetSecurityDescriptor( 
&lt;p&gt;[in] Win32_SecurityDescriptor &lt;em&gt;&lt;strong&gt;Descriptor&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;); &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;При этом, в методе &lt;a href="http://msdn.microsoft.com/en-us/library/aa393598(VS.85).aspx" target="_blank"&gt;SetShareInfo&lt;/a&gt; класса Win32_Share параметр Access я указывал и всё проходило на "ура". Здесь мы сталкиваемся с отсутствием единого формата использования метода SetSecurityDescriptor (отсутствие единого формата параметров я уже указывал в первой части) для различных WMI классов. И если один приём работает для одного класса, то, увы, далеко не гарантия, что этот же приём сработает для другого. Поэтому выкинем 2 предпоследние строчки из скрипта и в последней строке вместо аргумента &lt;strong&gt;$inParams&lt;/strong&gt; заменим на &lt;strong&gt;$SD&lt;/strong&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;pre style="font: 9pt courier new; color: #fff; background-color: black"&gt;&lt;font color="#009500"&gt;&lt;span  #009500?; background-color: black?&gt;&lt;p&gt;[System32] $user = "everyone"
[System32] $SD = ([WMIClass] "Win32_SecurityDescriptor").CreateInstance()
[System32] $ace = ([WMIClass] "Win32_Ace").CreateInstance()
[System32] $Trustee = ([WMIClass] "Win32_Trustee").CreateInstance()
[System32] $SID = (new-object security.principal.ntaccount $user).translate([security.principal.securityidentifier])
[System32] [byte[]] $SIDArray = ,0 * $SID.BinaryLength
[System32] $SID.GetBinaryForm($SIDArray,0)
[System32] $Trustee.Name = $user
[System32] $Trustee.SID = $SIDArray
[System32] $ace.AccessMask = 393224
[System32] $ace.AceType = 0
[System32] $ace.AceFlags = 0
[System32] $ace.Trustee = $Trustee
[System32] $SD.DACL = $ace
[System32] $SD.ControlFlags = 0x0004
[System32] $Printer = gwmi win32_printer -filter "name='CutePDF Writer'"
[System32] $Printer.psbase.Scope.Options.EnablePrivileges = $true
[System32] $Printer.SetSecurityDescriptor($SD)


__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     :
__DYNASTY        : __PARAMETERS
__RELPATH        :
__PROPERTY_COUNT : 1
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :
ReturnValue      : 0



[System32]&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;Вуаля! Мы получили ReturnValue=0, что означает успешное выполнение команды. Давайте убедимся, что группа Everyone имеет маску доступа 393224 (это &lt;strong&gt;ReadPermissions&lt;/strong&gt;, &lt;strong&gt;ChangePermissions&lt;/strong&gt; и &lt;strong&gt;Print&lt;/strong&gt;). Для этого снова вызовем метод GetSecurityDescriptor для нового образца класса Win32_Printer:&lt;/p&gt;
&lt;blockquote&gt;&lt;pre style="font: 9pt courier new; color: #fff; background-color: black"&gt;&lt;font color="#009500"&gt;&lt;span  #009500?; background-color: black?&gt;&lt;p&gt;[System32] $a = (gwmi win32_Printer -filter "name='cutepdf writer'").getsecuritydescriptor()
[System32] $a.descriptor.dacl[0]


__GENUS                 : 2
__CLASS                 : Win32_ACE
__SUPERCLASS            : __ACE
__DYNASTY               : __SecurityRelatedClass
__RELPATH               :
__PROPERTY_COUNT        : 7
__DERIVATION            : {__ACE, __SecurityRelatedClass}
__SERVER                :
__NAMESPACE             :
__PATH                  :
AccessMask              : 393224
AceFlags                : 0
AceType                 : 0
GuidInheritedObjectType :
GuidObjectType          :
TIME_CREATED            :
Trustee                 : System.Management.ManagementBaseObject



[System32] $a.descriptor.dacl[0].trustee


__GENUS          : 2
__CLASS          : Win32_Trustee
__SUPERCLASS     : __Trustee
__DYNASTY        : __SecurityRelatedClass
__RELPATH        :
__PROPERTY_COUNT : 6
__DERIVATION     : {__Trustee, __SecurityRelatedClass}
__SERVER         :
__NAMESPACE      :
__PATH           :
Domain           :
Name             : Everyone
SID              : {1, 1, 0, 0...}
SidLength        : 12
SIDString        : S-1-1-0
TIME_CREATED     :



[System32]&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;Вот теперь мы видим нашу маску доступа (&lt;strong&gt;AccessMask=393224&lt;/strong&gt;) в корне &lt;strong&gt;DACL&lt;/strong&gt; и нашего уважаемого &lt;strong&gt;everyone&lt;/strong&gt; в &lt;strong&gt;Trustee&lt;/strong&gt;. &lt;img alt="Rock" src="/smilies/blush.gif"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Примечание:&lt;/font&gt;&lt;/strong&gt; &lt;u&gt;данный скрипт удаляет все имеющиеся ACE из ACL принтера и записывает новый единственный ACE. Не забывайте об этом.&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;Теперь я закрываю этот вопрос. Что же дальше? А дальше будет вот что: я напишу готовый набор функций для управления ACL списками принтеров. Какой это будет набор - я пока в процессе разработки его структуры, но однозначно будут функции вида Get- Set- Add- Remove- PrinterPermission. Возможно будут добавлены функции для владельцев. Но об этом уже в следующий раз, так что продолжение следует однозначно &lt;img alt="happy" src="/smilies/veryhappy.gif"&gt;&lt;/p&gt;&lt;img width="0" height="0" src="http://www.sysadmins.lv/aggbug.ashx?id=249809ac-0d9e-4b60-8109-5b756fba4496"/&gt;&lt;br/&gt;&lt;hr/&gt;PowerShell Powered - http://www.sysadmins.lv&lt;/div&gt;</description>
      <comments>http://www.sysadmins.lv/CommentView,guid,249809ac-0d9e-4b60-8109-5b756fba4496.aspx</comments>
      <category>PowerShell</category>
      <category>PowerShell / ACL</category>
      <category>PowerShell / WMI</category>
    </item>
    <item>
      <trackback:ping>http://www.sysadmins.lv/Trackback.aspx?guid=243d77ee-4975-4335-9abf-ce8660e9439c</trackback:ping>
      <pingback:server>http://www.sysadmins.lv/pingback.aspx</pingback:server>
      <pingback:target>http://www.sysadmins.lv/PermaLink,guid,243d77ee-4975-4335-9abf-ce8660e9439c.aspx</pingback:target>
      <dc:creator>Camelot</dc:creator>
      <wfw:comment>http://www.sysadmins.lv/CommentView,guid,243d77ee-4975-4335-9abf-ce8660e9439c.aspx</wfw:comment>
      <wfw:commentRss>http://www.sysadmins.lv/SyndicationService.asmx/GetEntryCommentsRss?guid=243d77ee-4975-4335-9abf-ce8660e9439c</wfw:commentRss>
      <title>Смена владельца папки или файла в PowerShell (часть 2)</title>
      <guid isPermaLink="false">http://www.sysadmins.lv/PermaLink,guid,243d77ee-4975-4335-9abf-ce8660e9439c.aspx</guid>
      <link>http://www.sysadmins.lv/PermaLink,guid,243d77ee-4975-4335-9abf-ce8660e9439c.aspx</link>
      <pubDate>Mon, 17 Nov 2008 00:19:53 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;Как-то давно &lt;a href="http://stanky2.spaces.live.com/"&gt;Александр Станкевич&lt;/a&gt; просил у меня вариант скрипта, который бы менял владельца файла или папки из PowerShell. В своё время я занимался этим вопросом и результат моих исследований:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://vpodans.spaces.live.com/blog/cns!BB1419A2CFC1E008!155.entry" target="_blank"&gt;Управление ACL в PowerShell (часть 3)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://vpodans.spaces.live.com/blog/cns!BB1419A2CFC1E008!161.entry" target="_blank"&gt;Смена владельца (Owner) папки или файла&lt;/a&gt; (часть 1) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Что-то меня натолкнуло снова вернуться к этому вопросу. Учитывая проблематику, изложенных в предыдущих статьях, я перестал искать нативный способ изменения владельца в PowerShell через .NET и решил поискать его в WMI (что означает очередные мучения многострадального SecurityDescriptor &lt;img alt=":'(" src="/smilies/unhappy.gif"&gt; ). Итак, у WMI есть несколько классов для работы с &lt;strong&gt;ACL&lt;/strong&gt; (&lt;em&gt;AccessControlList&lt;/em&gt;) файлов и папок. Например:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa394130(VS.85).aspx" target="_blank"&gt;Win32_Directory&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa394180(VS.85).aspx" target="_blank"&gt;Win32_LogicalFileSecuritySetting&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Я для решения данной задачи решил использовать класс &lt;strong&gt;Win32_LogicalFileSecuritySetting&lt;/strong&gt; (хотя, можно и Win32_Directory использовать но после мелкой доработки. Но об этом я выскажусь в конце статьи).&lt;/p&gt;  &lt;p&gt;Итак, класс &lt;strong&gt;Win32_LogicalFileSecuritySetting&lt;/strong&gt; имеет те же методы, что и остальные классы, работающие со списками ACL - &lt;a href="http://msdn.microsoft.com/en-us/library/aa390773(VS.85).aspx" target="_blank"&gt;GetSecurityDescriptor&lt;/a&gt; и &lt;a href="http://msdn.microsoft.com/en-us/library/aa393592(VS.85).aspx" target="_blank"&gt;SetSecurityDescriptor&lt;/a&gt;. Я уже неоднократно поднимал вопрос работы с &lt;a href="http://msdn.microsoft.com/en-us/library/aa394577.aspx" target="_blank"&gt;SecurityDescriptor&lt;/a&gt; в PowerShell, поэтому приступим сразу к решению задачи.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://www.sysadmins.lv/content/binary/WindowsLiveWriter/PowerShell_F12F/SecurityDescriptor%20Structure_2.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" border="0" alt="SecurityDescriptor Structure" src="http://www.sysadmins.lv/content/binary/WindowsLiveWriter/PowerShell_F12F/SecurityDescriptor%20Structure_thumb.png" width="477" height="369" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Как видно из картинки, нас будет интересовать объект &lt;strong&gt;Owner&lt;/strong&gt; и &lt;strong&gt;ControlFlags&lt;/strong&gt;. Объект &lt;strong&gt;DACL&lt;/strong&gt; нас не будет интересовать совсем, поэтому работать с Win32_Ace нам не придётся, а только с Trustee:&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre&gt;&lt;span style="color: #800080"&gt;$SD&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; ([&lt;/span&gt;&lt;span style="color: #008080"&gt;WMIClass&lt;/span&gt;&lt;span style="color: #000000"&gt;] &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Win32_SecurityDescriptor&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;).CreateInstance()
&lt;/span&gt;&lt;span style="color: #800080"&gt;$Trustee&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; ([&lt;/span&gt;&lt;span style="color: #008080"&gt;WMIClass&lt;/span&gt;&lt;span style="color: #000000"&gt;] &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Win32_Trustee&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;).CreateInstance()&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Далее следует стандартная процедура преобразования имени пользователя в SID и получение байтового массива из SID'а:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre&gt;&lt;span style="color: #800080"&gt;$SID&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;new-object&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;security.principal.ntaccount&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$user&lt;/span&gt;&lt;span style="color: #000000"&gt;).translate([&lt;/span&gt;&lt;span style="color: #008080"&gt;security.principal.securityidentifier&lt;/span&gt;&lt;span style="color: #000000"&gt;])
[&lt;/span&gt;&lt;span style="color: #008080"&gt;byte&lt;/span&gt;&lt;span style="color: #000000"&gt;[]] &lt;/span&gt;&lt;span style="color: #800080"&gt;$SIDArray&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; ,&lt;/span&gt;&lt;span style="color: #000000"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$SID&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;BinaryLength&lt;/span&gt;&lt;span style="color: #000000"&gt;
&lt;/span&gt;&lt;span style="color: #800080"&gt;$SID&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;GetBinaryForm&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #800080"&gt;$SIDArray&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #000000"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Теперь $SIDArray и имя пользователя запишем в Trustee и поместим этот объект в свойство Owner дескриптора безопасности:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre&gt;&lt;span style="color: #800080"&gt;$Trustee&lt;/span&gt;&lt;span style="color: #000000"&gt;.Name &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$user&lt;/span&gt;&lt;span style="color: #000000"&gt;
&lt;/span&gt;&lt;span style="color: #800080"&gt;$Trustee&lt;/span&gt;&lt;span style="color: #000000"&gt;.SID &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$SIDArray&lt;/span&gt;&lt;span style="color: #000000"&gt;
&lt;/span&gt;&lt;span style="color: #800080"&gt;$SD&lt;/span&gt;&lt;span style="color: #000000"&gt;.Owner &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$Trustee&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Для того, чтобы заменить владельца папки нужно заполнить объект Control Flags, которые описаны здесь: &lt;a title="http://msdn.microsoft.com/en-us/library/aa394402(VS.85).aspx" href="http://msdn.microsoft.com/en-us/library/aa394402(VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/aa394402(VS.85).aspx&lt;/a&gt;. Не уверен, что стоит углубляться в этот момент (на практике очень редко приходится им пользоваться), поэтому скажу, что нас заинтересует флаг &lt;strong&gt;SE_SELF_RELATIVE&lt;/strong&gt;. Заполняется он одной строчкой:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre&gt;&lt;span style="color: #800080"&gt;$SD&lt;/span&gt;&lt;span style="color: #000000"&gt;.ControlFlags&lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;&lt;strong&gt;0x8000&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Его можно записывать как десятичное число (&lt;strong&gt;32768&lt;/strong&gt;), так и в HEX нотации. Я использую HEX. Вот и всё, дескриптор безопасности у нас готов. Теперь самое время получить ACL в формате SecurityDescriptor из имеющейся папки:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre&gt;&lt;span style="color: #800080"&gt;$wPrivilege&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;gwmi&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;Win32_LogicalFileSecuritySetting&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="font-style: italic; color: #5f9ea0"&gt;-filter&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;path='$path'&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Вот теперь мы вплотную подошли к нашей проблеме. К слову говоря, если этот скрипт использовать в Windows Vista/Windows Server 2008 с повышенными привилегиями (запустив консоль в привилегированном режиме), то можно добавлять последнюю строчку с записью нового владельца в папку. В системах, где есть UAC нету такой проблемы, которая описана в ссылках, которые приведены в начале поста, поскольку при запуске консоли с повышенными привилегиями UAC включает для нас все необходимые привилегии (в частности &lt;strong&gt;SeRestorePrivilege&lt;/strong&gt; и &lt;strong&gt;SeTakeOwnershipPrivilege&lt;/strong&gt;, которые необходимы для этой операции). Но в более ранних ОС при запуске консоли PowerShell эти права не включаются и их нужно включать отдельно. Если в .NET нету нативного метода включения этих привилегий, то в WMI они есть и вот они:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre&gt;&lt;span style="color: #800080"&gt;$wPrivilege&lt;/span&gt;&lt;span style="color: #000000"&gt;.psbase.Scope.Options.EnablePrivileges &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;$true&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;В Options помимо включения привилегий можно указывать имперсонализацию пользователя (Impersonate) и другие параметры. Чтобы посмотреть доступные свойства достаточно набрать в консоли:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre&gt;&lt;span style="color: #800080"&gt;$wPrivilege&lt;/span&gt;&lt;span style="color: #000000"&gt;.psbase.scope.options | &lt;/span&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;Get-Member&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Когда привилегии включены, можно уже записывать дескриптор в папку при помощи метода &lt;a href="http://msdn.microsoft.com/en-us/library/aa393592(VS.85).aspx" target="_blank"&gt;SetSecurityDescriptor&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre&gt;&lt;span style="color: #800080"&gt;$wPrivilege&lt;/span&gt;&lt;span style="color: #000000"&gt;.setsecuritydescriptor(&lt;/span&gt;&lt;span style="color: #800080"&gt;$SD&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Если имя папки указано верно, то в выводе &lt;strong&gt;ReturnValue&lt;/strong&gt; должен вернуть значение &lt;strong&gt;0&lt;/strong&gt;, что означает, что владелец сменён! &lt;img alt="Rock" src="/smilies/blush.gif"&gt; и мы небольшим (но для PowerShell'а это уже много, учитывая что многие вещи в нём делаются в одну строчку &lt;img alt=";)" src="/smilies/wink.gif"&gt; ) увеличением объёма кода можем полноценно изменять владельца файла или папки без установки дополнительных расширений, как PSCX или отдельных консольных утилит, как SubInAcl или SetAcl.&lt;/p&gt;

&lt;p&gt;Теперь это всё окультурим в готовый скрипт:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre&gt;&lt;span style="color: #0000ff"&gt;function&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;Set-Owner&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #800080"&gt;$user&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;/span&gt;&lt;span style="color: #800080"&gt;$Path&lt;/span&gt;&lt;span style="color: #000000"&gt;) {
    &lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #ff0000"&gt;!&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;Test-Path&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="font-style: italic; color: #5f9ea0"&gt;-LiteralPath&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$Path&lt;/span&gt;&lt;span style="color: #000000"&gt;)) {&lt;/span&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;Write-Warning&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Указан неверный путь к папке&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;}
    &lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt; {
        &lt;/span&gt;&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt; преобразовываем путь вида C:\Folder в C:\\Folder (к слешу пути добавляем ещё один&lt;/span&gt;&lt;span style="color: #008000"&gt;
&lt;/span&gt;&lt;span style="color: #000000"&gt;        &lt;/span&gt;&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt; для корректной работы класса Win32_LogicalFileSecuritySetting и эскейпим другие символы&lt;/span&gt;&lt;span style="color: #008000"&gt;
&lt;/span&gt;&lt;span style="color: #000000"&gt;        &lt;/span&gt;&lt;span style="color: #800080"&gt;$path&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$path&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;-replace&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;\\|'&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;\$0&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;
        &lt;/span&gt;&lt;span style="color: #800080"&gt;$Path&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$Path&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;-replace&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;\[&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;$([char]91)&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;
        &lt;/span&gt;&lt;span style="color: #800080"&gt;$Path&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$Path&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;-replace&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;\]&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;$([char]93)&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;
&lt;/span&gt;&lt;span style="color: #000000"&gt;        &lt;/span&gt;&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt; т.к. DACL мы не записываем, то объявляем только классы SecurityDescriptor и Trustee&lt;/span&gt;&lt;span style="color: #008000"&gt;
&lt;/span&gt;&lt;span style="color: #000000"&gt;        &lt;/span&gt;&lt;span style="color: #800080"&gt;$SD&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; ([&lt;/span&gt;&lt;span style="color: #008080"&gt;WMIClass&lt;/span&gt;&lt;span style="color: #000000"&gt;] &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Win32_SecurityDescriptor&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;).CreateInstance()
        &lt;/span&gt;&lt;span style="color: #800080"&gt;$Trustee&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; ([&lt;/span&gt;&lt;span style="color: #008080"&gt;WMIClass&lt;/span&gt;&lt;span style="color: #000000"&gt;] &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Win32_Trustee&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;).CreateInstance()
        &lt;/span&gt;&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt; преобразовываем имя пользователя в SID и заполняем необходимые поля в Trustee&lt;/span&gt;&lt;span style="color: #008000"&gt;
&lt;/span&gt;&lt;span style="color: #000000"&gt;        &lt;/span&gt;&lt;span style="color: #800080"&gt;$SID&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;new-object&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;security.principal.ntaccount&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$user&lt;/span&gt;&lt;span style="color: #000000"&gt;).translate([&lt;/span&gt;&lt;span style="color: #008080"&gt;security.principal.securityidentifier&lt;/span&gt;&lt;span style="color: #000000"&gt;])
        [&lt;/span&gt;&lt;span style="color: #008080"&gt;byte&lt;/span&gt;&lt;span style="color: #000000"&gt;[]] &lt;/span&gt;&lt;span style="color: #800080"&gt;$SIDArray&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; ,&lt;/span&gt;&lt;span style="color: #000000"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$SID&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;BinaryLength&lt;/span&gt;&lt;span style="color: #000000"&gt;
        &lt;/span&gt;&lt;span style="color: #800080"&gt;$SID&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;GetBinaryForm&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #800080"&gt;$SIDArray&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #000000"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;)
        &lt;/span&gt;&lt;span style="color: #800080"&gt;$Trustee&lt;/span&gt;&lt;span style="color: #000000"&gt;.Name &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$user&lt;/span&gt;&lt;span style="color: #000000"&gt;
        &lt;/span&gt;&lt;span style="color: #800080"&gt;$Trustee&lt;/span&gt;&lt;span style="color: #000000"&gt;.SID &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$SIDArray&lt;/span&gt;&lt;span style="color: #000000"&gt;
        &lt;/span&gt;&lt;span style="color: #800080"&gt;$SD&lt;/span&gt;&lt;span style="color: #000000"&gt;.Owner &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$Trustee&lt;/span&gt;&lt;span style="color: #000000"&gt;
        &lt;/span&gt;&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt; здесь мы добавляем флаг управления&lt;/span&gt;&lt;span style="color: #008000"&gt;
&lt;/span&gt;&lt;span style="color: #000000"&gt;        &lt;/span&gt;&lt;span style="color: #800080"&gt;$SD&lt;/span&gt;&lt;span style="color: #000000"&gt;.ControlFlags&lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;0x8000&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;
        &lt;/span&gt;&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt; выбираем сведения о безопасности необходимой папки&lt;/span&gt;&lt;span style="color: #008000"&gt;
&lt;/span&gt;&lt;span style="color: #000000"&gt;        &lt;/span&gt;&lt;span style="color: #800080"&gt;$wPrivilege&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;gwmi&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;Win32_LogicalFileSecuritySetting&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="font-style: italic; color: #5f9ea0"&gt;-filter&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;path='$path'&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;
        &lt;/span&gt;&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt; включаем привилегия для WMI. Для Windows Vista/Windows Server 2008,&lt;/span&gt;&lt;span style="color: #008000"&gt;
&lt;/span&gt;&lt;span style="color: #000000"&gt;        &lt;/span&gt;&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt; при запуске скрипта с повышенными привилегиями данная строка не обязательна&lt;/span&gt;&lt;span style="color: #008000"&gt;
&lt;/span&gt;&lt;span style="color: #000000"&gt;        &lt;/span&gt;&lt;span style="color: #800080"&gt;$wPrivilege&lt;/span&gt;&lt;span style="color: #000000"&gt;.psbase.Scope.Options.EnablePrivileges &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;$true&lt;/span&gt;&lt;span style="color: #000000"&gt;
        &lt;/span&gt;&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt; записываем SecurityDescriptor с новым владельцем в папку&lt;/span&gt;&lt;span style="color: #008000"&gt;
&lt;/span&gt;&lt;span style="color: #000000"&gt;        &lt;/span&gt;&lt;span style="color: #800080"&gt;$Return&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$wPrivilege&lt;/span&gt;&lt;span style="color: #000000"&gt;.setsecuritydescriptor(&lt;/span&gt;&lt;span style="color: #800080"&gt;$SD&lt;/span&gt;&lt;span style="color: #000000"&gt;)
        &lt;/span&gt;&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt; преобразовываем возвращаемый код в текстовое значение&lt;/span&gt;&lt;span style="color: #008000"&gt;
&lt;/span&gt;&lt;span style="color: #000000"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff"&gt;switch&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #800080"&gt;$Return&lt;/span&gt;&lt;span style="color: #000000"&gt;.ReturnValue) {
            &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;0&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt; {&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Успешно&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;}
            &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;2&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt; {&lt;/span&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;Write-Warning&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Отказано в доступе&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;}
            &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;8&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt; {&lt;/span&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;Write-Warning&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Неизвестная ошибка&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;}
            &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;9&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt; {&lt;/span&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;Write-Warning&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Отсутствуют привилегии&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;}
            &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;21&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt; {&lt;/span&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;Write-Warning&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Указан неправильный параметр&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;}
            &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;1307&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt; {&lt;/span&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;Write-Warning&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Указанный пользователь не может быть владельцем данного объекта&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;}
            &lt;/span&gt;&lt;span style="color: #0000ff"&gt;default&lt;/span&gt;&lt;span style="color: #000000"&gt; {&lt;/span&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;Write-Warning&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Произошла неизвестная ошибка с кодом:&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$Return&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #800000"&gt;Value&lt;/span&gt;&lt;span style="color: #000000"&gt;}
        }
    }
}

&lt;/span&gt;&lt;span style="color: #008000"&gt;#&lt;/span&gt;&lt;span style="color: #008000"&gt; эта часть совсем необязательна, я её включил лишь для наглядности &lt;/span&gt;&lt;span style="color: #008000"&gt;
#&lt;/span&gt;&lt;span style="color: #008000"&gt; и полноты скрипта &lt;/span&gt;&lt;span style="color: #008000"&gt;
&lt;/span&gt;&lt;span style="color: #0000ff"&gt;function&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;Get-Owner&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #800080"&gt;$path&lt;/span&gt;&lt;span style="color: #000000"&gt;) {(&lt;/span&gt;&lt;span style="color: #5f9ea0; font-weight: bold"&gt;Get-Acl&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$path&lt;/span&gt;&lt;span style="color: #000000"&gt;).owner}&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;div&gt;
  &lt;p style="border-bottom: silver 1px solid; position: relative; border-left: silver 1px solid; width: 240px; height: 66px; border-top: silver 1px solid; border-right: silver 1px solid"&gt;&lt;span style="font-family: verdana,arial,sans-serif; cursor: pointer"&gt;&lt;a style="border-right-width: 0px; width: 240px; border-top-width: 0px; border-bottom-width: 0px; height: 66px; border-left-width: 0px" href="http://www.sysadmins.lv/content/scripts/Set-Owner.ps1" target="_self"&gt;&lt;img style="border-right-width: 0px; width: 240px; border-top-width: 0px; border-bottom-width: 0px; height: 66px; border-left-width: 0px" alt="Download File" src="http://www.sysadmins.lv/images/buttons/transparent.gif" /&gt; &lt;/a&gt;&lt;a style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" href="http://www.sysadmins.lv/content/scripts/Set-Owner.ps1" target="_self"&gt;&lt;img style="position: absolute; top: 6px; left: 5px" alt="Download File" src="http://www.sysadmins.lv/images/buttons/pgui.png" width="48" height="45" /&gt; &lt;/a&gt;&lt;a style="text-decoration: none" href="http://www.sysadmins.lv/content/scripts/Set-Owner.ps1" target="_self"&gt;&lt;span style="position: absolute; width: 167px; white-space: nowrap; color: #555555; overflow: hidden; top: 7px; margin-right: 5px; left: 67px"&gt;&lt;span style="display: block; visibility: hidden"&gt;1&lt;/span&gt; &lt;span style="line-height: 1.25em; display: block; cursor: pointer; text-decoration: none; padding-top: 1px" title="Download file"&gt;PS1 file 
            &lt;br /&gt;8,62 KB &lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a style="position: absolute; width: 167px; white-space: nowrap; color: #0066a7; overflow: hidden; top: 7px; margin-right: 5px; text-decoration: none; left: 67px" href="http://www.sysadmins.lv/content/scripts/Set-Owner.ps1" target="_self" alt="Download File"&gt;Download File.ps1&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Примечание:&lt;/font&gt;&lt;/strong&gt; &lt;u&gt;При указании пути, который содержит пробелы, путь нужно заключать в кавычки!&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;и немного о стандартности использования методов SetSecurityDescriptor для различных объектов. Мне не понятно, почему в различных классах WMI используются различные именования свойств дескриптора безопасности, когда в этом явных причин нету? Например:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa394435(VS.85).aspx" target="_blank"&gt;Win32_Share&lt;/a&gt; для дескриптора использует свойство &lt;strong&gt;Access&lt;/strong&gt; метода &lt;em&gt;SetShareInfo&lt;/em&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa394363.aspx" target="_blank"&gt;Win32_Printer&lt;/a&gt; использует свойство &lt;strong&gt;Descriptor&lt;/strong&gt; метода &lt;em&gt;SetSecurityDescriptor&lt;/em&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa394130(VS.85).aspx" target="_blank"&gt;Win32_Directory&lt;/a&gt; использует &lt;strong&gt;SecurityDescriptor&lt;/strong&gt; метода &lt;em&gt;SetSecurityDescriptor&lt;/em&gt; (и для &lt;em&gt;SetSecurityDescrptorEx&lt;/em&gt;) &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa394180(VS.85).aspx" target="_blank"&gt;Win32_LogicalFileSecuritySetting&lt;/a&gt; использует &lt;strong&gt;Descriptor&lt;/strong&gt; метода &lt;em&gt;SetSecurityDescriptor&lt;/em&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Вот 4 WMI класса управления ACL списками различных объектов, с которыми я недавно работал и имеем 3 различных именования свойства дескриптора безопасности и Win32_Share использует даже другое название метода (SetShareInfo), хотя этот метод использует тот же Win32_SecurityDescriptor. Но это уже оффтопик и личные размышления. Вот :)&lt;/p&gt;&lt;img width="0" height="0" src="http://www.sysadmins.lv/aggbug.ashx?id=243d77ee-4975-4335-9abf-ce8660e9439c"/&gt;&lt;br/&gt;&lt;hr/&gt;PowerShell Powered - http://www.sysadmins.lv&lt;/div&gt;</description>
      <comments>http://www.sysadmins.lv/CommentView,guid,243d77ee-4975-4335-9abf-ce8660e9439c.aspx</comments>
      <category>PowerShell</category>
      <category>PowerShell / ACL</category>
      <category>PowerShell / WMI</category>
    </item>
    <item>
      <trackback:ping>http://www.sysadmins.lv/Trackback.aspx?guid=4c56b6d6-b4d1-4d84-963e-a10d37140e9a</trackback:ping>
      <pingback:server>http://www.sysadmins.lv/pingback.aspx</pingback:server>
      <pingback:target>http://www.sysadmins.lv/PermaLink,guid,4c56b6d6-b4d1-4d84-963e-a10d37140e9a.aspx</pingback:target>
      <dc:creator>Camelot</dc:creator>
      <wfw:comment>http://www.sysadmins.lv/CommentView,guid,4c56b6d6-b4d1-4d84-963e-a10d37140e9a.aspx</wfw:comment>
      <wfw:commentRss>http://www.sysadmins.lv/SyndicationService.asmx/GetEntryCommentsRss?guid=4c56b6d6-b4d1-4d84-963e-a10d37140e9a</wfw:commentRss>
      <title>Странности метода SetSecurityDescriptor класса Win32_Printer (часть 1)</title>
      <guid isPermaLink="false">http://www.sysadmins.lv/PermaLink,guid,4c56b6d6-b4d1-4d84-963e-a10d37140e9a.aspx</guid>
      <link>http://www.sysadmins.lv/PermaLink,guid,4c56b6d6-b4d1-4d84-963e-a10d37140e9a.aspx</link>
      <pubDate>Fri, 14 Nov 2008 19:21:45 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;В &lt;a href="http://www.sysadmins.lv/PermaLink,guid,41226cf5-e524-446f-85c0-4a958c6c769a.aspx" target="_blank"&gt;первой&lt;/a&gt; и &lt;a href="http://www.sysadmins.lv/PermaLink,guid,54cfbd81-dff6-4391-8ba0-13a17df9bc5f.aspx" target="_blank"&gt;второй&lt;/a&gt; части я рассказал про основные моменты управления принтерами в PowerShell и теперь хочу поговорить о правах на принтеры. Т.к. принтеры управляются с помощью классов WMI, то управление правами доступа к ним будет превращаться в очередную эпохальную эпопею, которую я исследовал при изучении безопасности Share Permissions (вот ссылка на эти статьи в моём прежнем блоге: &lt;a title="http://vpodans.spaces.live.com/lists/cns!BB1419A2CFC1E008!178" href="http://vpodans.spaces.live.com/lists/cns!BB1419A2CFC1E008!178"&gt;http://vpodans.spaces.live.com/lists/cns!BB1419A2CFC1E008!178&lt;/a&gt;). Однако, с принтерами оказалось всё печальней &lt;img alt=":'(" src="/smilies/unhappy.gif"&gt; Мне так и не удалось заставить работать метод &lt;a href="http://msdn.microsoft.com/en-us/library/aa393594(VS.85).aspx" target="_blank"&gt;SetSecurityDescriptor&lt;/a&gt;. Итак, я расскажу о своих кратких исследованиях и в чём же мы имеем проблему.&lt;/p&gt; &lt;p&gt;Для чтения прав доступа принтера потребуется метод &lt;a href="http://msdn.microsoft.com/en-us/library/aa390778(VS.85).aspx" target="_blank"&gt;GetSecurityDescriptor&lt;/a&gt;: &lt;/p&gt; &lt;blockquote&gt;&lt;pre style="font: 9pt courier new; color: #fff; background-color: black"&gt;&lt;font color="#009500"&gt;&lt;span black? background-color: #009500?;&gt;&lt;p&gt;[System32] $a=(gwmi win32_printer -filter "name='cutepdf writer'").getsecuritydescriptor()
[System32] $a 

__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     :
__DYNASTY        : __PARAMETERS
__RELPATH        :
__PROPERTY_COUNT : 2
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :
Descriptor       : System.Management.ManagementBaseObject
ReturnValue      : 0 


[System32] $a.Descriptor | fl [a-z]* 

ControlFlags     : 32780
DACL             : {System.Management.ManagementBaseObject, System.Management.ManagementBaseObject,System.Mana
gement.ManagementBaseObject, System.Management.ManagementBaseObject...}
Group            : System.Management.ManagementBaseObject
Owner            : System.Management.ManagementBaseObject
SACL             :
TIME_CREATED     : 

[System32] $a.descriptor.dacl[0] | fl [a-z]* 
AccessMask              : 983052
AceFlags                : 0
AceType                 : 0
GuidInheritedObjectType :
GuidObjectType          :
TIME_CREATED            :
Trustee                 : System.Management.ManagementBaseObject 


[System32] $a.descriptor.dacl[0].trustee | fl [a-z]* 

Domain       : Thor
Name         : Admin
SID          : {1, 5, 0, 0...}
SidLength    : 28
SIDString    : S-1-5-21-3020384060-3247076327-363933757-1000
TIME_CREATED : 
 
[System32]&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;Как видите, метод &lt;strong&gt;GetSecurityDescriptor&lt;/strong&gt; вернул нам единственный параметр - &lt;strong&gt;Descriptor&lt;/strong&gt;. Заглянув в &lt;strong&gt;Descriptor&lt;/strong&gt;, нам нужно было найти параметр &lt;strong&gt;DACL&lt;/strong&gt;, который уже содержит все пермишены. Подробнее материал изложен тут: &lt;a href="http://msdn.microsoft.com/en-us/library/aa394577.aspx" target="_blank"&gt;WMI Security Descriptor Objects&lt;/a&gt;. 
&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Примечание:&lt;/font&gt;&lt;/strong&gt; &lt;u&gt;методы &lt;strong&gt;GetSecurityDescriptor&lt;/strong&gt; и &lt;strong&gt;SetSecurityDescriptor&lt;/strong&gt; доступны только в ОС начиная от &lt;strong&gt;Windows Vista/Windows Server 2008&lt;/strong&gt; и выше.&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;Структура &lt;strong&gt;DACL&lt;/strong&gt; содержит в себе как права доступа (&lt;strong&gt;AccessMask&lt;/strong&gt;), так и сведения о пользователе, который имеет указаную AccessMask маску доступа (&lt;strong&gt;Trustee&lt;/strong&gt;). Я попробовал создать идентичную структуру &lt;strong&gt;SecurityDescriptor&lt;/strong&gt; (как описано в ссылке: &lt;a href="http://msdn.microsoft.com/en-us/library/aa394577.aspx" target="_blank"&gt;WMI Security Descriptor Objects&lt;/a&gt;) и получил вот такой скрипт:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;font color="#009500"&gt;# задаём пользователя, которому хотим предоставить доступ&lt;/font&gt;&lt;br&gt;$user = "everyone"&lt;br&gt;&lt;font color="#009500"&gt;# объявляем необходимые классы, которые описывают дескриптор безопасности&lt;/font&gt;&lt;br&gt;$SD = ([WMIClass] "Win32_SecurityDescriptor").CreateInstance()&lt;br&gt;$ace = ([WMIClass] "Win32_Ace").CreateInstance()&lt;br&gt;$Trustee = ([WMIClass] "Win32_Trustee").CreateInstance()&lt;br&gt;&lt;font color="#009500"&gt;# преобразовываем имя пользователя в строковый SID и массив байтов для Win32_Trustee&lt;br&gt;&lt;/font&gt;$SID = (new-object security.principal.ntaccount $user).translate([security.principal.securityidentifier])&lt;br&gt;[byte[]] $SIDArray = ,0 * $SID.BinaryLength&lt;br&gt;$SID.GetBinaryForm($SIDArray,0)&lt;br&gt;&lt;font color="#009500"&gt;# заполняем необходимыми данными класс Win32_Trustee&lt;/font&gt;&lt;br&gt;$Trustee.Name = $user&lt;br&gt;$Trustee.SID = $SIDArray&lt;br&gt;&lt;font color="#009500"&gt;# заполняем поля класса Win32_Ace, которые описывают права доступа и заворачиваем&lt;br&gt;# пользователя в лице класса Win32_Trustee&lt;br&gt;# AccessMask в контексте принтера может принимать значения:&lt;br&gt;# 524288 - Take ownership&lt;br&gt;# 131072 - read permissions&lt;br&gt;# 262144 - change permissions&lt;br&gt;# 983088 - manage documents&lt;br&gt;# 983052 - manage printers&lt;br&gt;# 131080 - print + read permissions&lt;/font&gt;&lt;br&gt;$ace.AccessMask = 983052&lt;br&gt;$ace.AceType = 0&lt;br&gt;$ace.AceFlags = 0&lt;br&gt;$ace.Trustee = $Trustee&lt;br&gt;&lt;font color="#009500"&gt;# заворачиваем полученный объект Win32_Ace в параметр DACL класса Win32_SecurityDescriptor&lt;br&gt;&lt;/font&gt;$SD.DACL = $ace&lt;br&gt;&lt;font color="#009500"&gt;# получаем объект принтера, с которым собираемся работать&lt;br&gt;&lt;/font&gt;$Printer = gwmi win32_printer -filter "name='CutePDF Writer'"&lt;br&gt;&lt;font color="#009500"&gt;# получаем свойства метода SetSecurityDescriptor, чтобы в соответствии с ними&lt;br&gt;# завернуть туда SecurityDescriptor&lt;br&gt;&lt;/font&gt;$inParams = $Printer.psbase.GetMethodParameters("SetSecurityDescriptor")&lt;br&gt;&lt;font color="#009500"&gt;# заворачиваем SecurityDescriptor в параметр Descriptor метода SetSecurityDescriptor&lt;/font&gt;&lt;br&gt;$inParams.Descriptor = $SD&lt;br&gt;&lt;font color="#009500"&gt;# применяем метод SetSecurityDescriptor&lt;/font&gt;&lt;br&gt;$Printer.SetSecurityDescriptor($inParams)&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;И попробуем его запустить:&lt;/p&gt;
&lt;blockquote&gt;&lt;pre style="font: 9pt courier new; color: #fff; background-color: black"&gt;&lt;font color="#009500"&gt;&lt;span black? background-color: #009500?;&gt;[System32] $user = "everyone"
[System32] $SD = ([WMIClass] "Win32_SecurityDescriptor").CreateInstance()
[System32] $ace = ([WMIClass] "Win32_Ace").CreateInstance()
[System32] $Trustee = ([WMIClass] "Win32_Trustee").CreateInstance()
[System32] $SID = (new-object security.principal.ntaccount $user).translate([security.principal.securityidentifier])
[System32] [byte[]] $SIDArray = ,0 * $SID.BinaryLength[System32] $SID.GetBinaryForm($SIDArray,0)
[System32] $Trustee.Name = $user
[System32] $Trustee.SID = $SIDArray
[System32] $ace.AccessMask = 983052
[System32] $ace.AceType = 0
[System32] $ace.AceFlags = 0
[System32] $ace.Trustee = $Trustee
[System32] $SD.DACL = $ace
[System32] $Printer = gwmi win32_printer -filter "name='CutePDF Writer'"
[System32] $inParams = $Printer.psbase.GetMethodParameters("SetSecurityDescriptor")
[System32] $inParams.Descriptor = $SD
[System32] $Printer.SetSecurityDescriptor($inParams)   

__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     :
__DYNASTY        : __PARAMETERS
__RELPATH        :
__PROPERTY_COUNT :
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :
ReturnValue      : 2147749896


[System32]&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;Как видно, ни одна строка не вернула ошибок, а последняя строка вернула значение &lt;strong&gt;2147749896&lt;/strong&gt;. Прогулявшись по MSDN нашёл описание этой ошибки: &lt;a title="Win32SDToSDDL Method of the Win32_SecurityDescriptorHelper Class" href="http://msdn.microsoft.com/en-us/library/Aa394056(VS.85).aspx"&gt;Win32SDToSDDL Method of the Win32_SecurityDescriptorHelper Class&lt;/a&gt; (практически везде данное значение в контексте SecurityDescriptor интерпретируются так):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One of the parameters to the call is not correct. &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;один из параметров вызова указан неверно. Давайте попробуем проанализировать, что мы сформировали и сравним с данными, которые получили методом GetSecurityDescriptor:&lt;/p&gt;
&lt;p&gt;
&lt;blockquote&gt;&lt;pre style="font: 9pt courier new; color: #fff; background-color: black"&gt;&lt;font color="#009500"&gt;&lt;span black? background-color: #009500?;&gt;[System32] $inparams 

__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     :
__DYNASTY        : __PARAMETERS
__RELPATH        :
__PROPERTY_COUNT : 1
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :
Descriptor       : System.Management.ManagementBaseObject


[System32] $inparams.Descriptor | fl [a-z]* ControlFlags :

DACL         : {System.Management.ManagementBaseObject}
Group        :
Owner        :
SACL         :
TIME_CREATED : 


[System32] $inparams.Descriptor.dacl[0] | fl [a-z]* 

AccessMask              : 983052
AceFlags                : 0
AceType                 : 0
GuidInheritedObjectType :
GuidObjectType          :
TIME_CREATED            :
Trustee                 : System.Management.ManagementBaseObject 


[System32] $inparams.Descriptor.dacl[0].trustee | fl [a-z]* 

Domain       :
Name         : everyone
SID          : {1, 1, 0, 0...}
SidLength    :
SIDString    :
TIME_CREATED : 
[System32]&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Если сравнивать с первым листингом, где мы получали текущий SecurityDescriptor, то мы сохранили структуру SecurityDescriptor и в соответствующие поля записали нужные данные. При этом я также пытался для Trustee записать строковый &lt;strong&gt;SIDString&lt;/strong&gt; и &lt;strong&gt;SIDLength&lt;/strong&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;$Trustee.SIDString = $SID.Value &lt;br&gt;$Trustee.SIDLength = $SID.BinaryLength&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;и получил уже такой Trustee:&lt;/p&gt;
&lt;p&gt;
&lt;blockquote class="postsub"&gt;&lt;pre style="font: 9pt courier new; color: #fff; background-color: black"&gt;&lt;font color="#009500"&gt;&lt;span black? background-color: #009500?;&gt;[System32] $inparams.Descriptor.dacl[0].trustee | fl [a-z]* 

Domain       :
Name         : everyone
SID          : {1, 1, 0, 0...}
SidLength    : 12
SIDString    : S-1-1-0
TIME_CREATED : 


[System32]&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;От этого результат не изменился. Попробовал вызвать несколько иначе метод SetSecurityDescriptor:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;$Printer.psbase.invokemethod("SetSecurityDescriptor", $inParams, $null)&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;pre&gt;&lt;/pre&gt;
&lt;p&gt;и всё по старому. Я попытался нагуглить этот вопрос поисковой фразой "setsecuritydescriptor win32_printer powershell" (да-да, каюсь, я пользуюсь гуглем, как это ни прискорбно). И он мне выдал меньше одной страницы и 2 вменяемые ссылки, одна из которых ведёт на MSDN, а вторая на какой-то французский сайт (в котором я без переводчика плохо понимаю, а жаль) - &lt;a href="http://powershell-scripting.com/index.php?option=com_joomlaboard&amp;amp;Itemid=76&amp;amp;func=view&amp;amp;id=2292&amp;amp;catid=6"&gt;http://powershell-scripting.com/index.php?option=com_joomlaboard&amp;amp;Itemid=76&amp;amp;func=view&amp;amp;id=2292&amp;amp;catid=6&lt;/a&gt;, но человек там творил что-то страшное и я понял, что там помощи не ждать.&lt;/p&gt;
&lt;p&gt;Вобщем, этот вопрос пока остаётся открытым. Что ему не нравится, я пока не могу понять. Управление SecurityDescriptor в WMI - это не самая удачная модель управления безопасностью в WMI, но пока это почти единственный способ добиться результата - приходится с этим работать. Хотя, на первый взгляд может показаться, что там всё страшно и ужасно, но на самом деле, если разобрать предметно вопрос и поупражняться, всё оказывается вполне понятным, хоть и не совсем логичным и не всегда это хочет работать как положено :)&lt;/p&gt;&lt;img width="0" height="0" src="http://www.sysadmins.lv/aggbug.ashx?id=4c56b6d6-b4d1-4d84-963e-a10d37140e9a"/&gt;&lt;br/&gt;&lt;hr/&gt;PowerShell Powered - http://www.sysadmins.lv&lt;/div&gt;</description>
      <comments>http://www.sysadmins.lv/CommentView,guid,4c56b6d6-b4d1-4d84-963e-a10d37140e9a.aspx</comments>
      <category>PowerShell</category>
      <category>PowerShell / ACL</category>
      <category>PowerShell / WMI</category>
    </item>
    <item>
      <trackback:ping>http://www.sysadmins.lv/Trackback.aspx?guid=54cfbd81-dff6-4391-8ba0-13a17df9bc5f</trackback:ping>
      <pingback:server>http://www.sysadmins.lv/pingback.aspx</pingback:server>
      <pingback:target>http://www.sysadmins.lv/PermaLink,guid,54cfbd81-dff6-4391-8ba0-13a17df9bc5f.aspx</pingback:target>
      <dc:creator>Camelot</dc:creator>
      <wfw:comment>http://www.sysadmins.lv/CommentView,guid,54cfbd81-dff6-4391-8ba0-13a17df9bc5f.aspx</wfw:comment>
      <wfw:commentRss>http://www.sysadmins.lv/SyndicationService.asmx/GetEntryCommentsRss?guid=54cfbd81-dff6-4391-8ba0-13a17df9bc5f</wfw:commentRss>
      <title>Управление принтерами в PowerShell (часть 2)</title>
      <guid isPermaLink="false">http://www.sysadmins.lv/PermaLink,guid,54cfbd81-dff6-4391-8ba0-13a17df9bc5f.aspx</guid>
      <link>http://www.sysadmins.lv/PermaLink,guid,54cfbd81-dff6-4391-8ba0-13a17df9bc5f.aspx</link>
      <pubDate>Fri, 14 Nov 2008 01:31:03 GMT</pubDate>
      <description>&lt;div&gt;&lt;p&gt;По некоторым причинам я пока не готов разговаривать об управлении безопасностью принтеров в PowerShell, поэтому продолжу начатую тему базового управления. Я обещал, что создам набор необходимых функций, для работы с принтерами и на данный момент приготовил следующие функции:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;New-NetworkPrinter&lt;/strong&gt; - добавляет (мапит) сетевой принтер к пользователю  &lt;li&gt;&lt;strong&gt;Remove-NetworkPrinter&lt;/strong&gt; - удаляет сетевой принтер у пользователя (удаляет только маппинг принтера)  &lt;li&gt;&lt;strong&gt;Set-DefaultPrinter&lt;/strong&gt; - устанавливает выбранный принтер принтером по умолчанию  &lt;li&gt;&lt;strong&gt;Get-Printer&lt;/strong&gt; - получение сведений о выбранном принтере. Как полный набор сведений, так и краткий  &lt;li&gt;&lt;strong&gt;New-PrinterShare&lt;/strong&gt; - расшаривает локальный принтер для общего сетевого доступа  &lt;li&gt;&lt;strong&gt;Remove-PrinterShare&lt;/strong&gt; - отменяет сетевой доступ к принтеру &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Примечание:&lt;/font&gt;&lt;/strong&gt; здесь я не буду подробно описывать всё подряд, а расскажу только о тех вещах, которые считаю важными для читателя. Остальное он и сам додумает ;)&lt;/p&gt; &lt;p&gt;Сразу хочу оговориться, что для первых 3-х функций реализована только локальная поддержка (т.е. использовать функции по отношению к другим компьютерам нельзя). Сделано это почему: дело в том, что все WMI операции выполняются (даже на удалённых машинах) в контексте того пользователя, который запустил скрипт. Очень сомнительный смысл мапить для себя принтер на другой машине. Ко всему прочему в классе Win32_Printer не реализована даже поддержка удалённого маппинга принтера. Сейчас я это продемонстрирую:&lt;/p&gt; &lt;p&gt;В классе &lt;a href="http://msdn.microsoft.com/en-us/library/aa394363.aspx" target="_blank"&gt;Win32_Printer&lt;/a&gt; есть замечательный метод &lt;a href="http://msdn.microsoft.com/en-us/library/aa384769(VS.85).aspx"&gt;&lt;strong&gt;AddPrinterConnection&lt;/strong&gt;&lt;/a&gt;, который подключает сетевой принтер к пользователю. Если в MSDN написано, что он есть, значит таконо и есть. Посмотрим:&lt;/p&gt; &lt;blockquote&gt;&lt;pre style="font: 9pt courier new; color: #fff; background-color: black"&gt;&lt;font color="#009500"&gt;&lt;span black? background-color: #009500?;&gt;[vPodans] gwmi Win32_Printer | gm -membertype method


   TypeName: System.Management.ManagementObject#root\cimv2\Win32_Printer

Name                  MemberType Definition
----                  ---------- ----------
CancelAllJobs         Method     System.Management.ManagementBaseObject CancelAllJobs()
GetSecurityDescriptor Method     System.Management.ManagementBaseObject GetSecurityDescriptor()
Pause                 Method     System.Management.ManagementBaseObject Pause()
PrintTestPage         Method     System.Management.ManagementBaseObject PrintTestPage()
RenamePrinter         Method     System.Management.ManagementBaseObject RenamePrinter(System.String NewPrinterName)
Reset                 Method     System.Management.ManagementBaseObject Reset()
Resume                Method     System.Management.ManagementBaseObject Resume()
SetDefaultPrinter     Method     System.Management.ManagementBaseObject SetDefaultPrinter()
SetPowerState         Method     System.Management.ManagementBaseObject SetPowerState(System.UInt16 PowerState, Syst...
SetSecurityDescriptor Method     System.Management.ManagementBaseObject SetSecurityDescriptor(System.Management.Mana...


[vPodans]&lt;/font&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;Здесь я выбрал список методов объекта Win32_Printer. &lt;em&gt;&lt;u&gt;Но метода AddPrinterConnection мы там не наблюдаем! Почему? А всё потому, что ни один объект Win32_Printer не содержит данный метод! &lt;strong&gt;Метод AddPrinterConnection есть только внутри самого класса Win32_Printer&lt;/strong&gt; и ни одним объектом не наследуется&lt;/u&gt;&lt;/em&gt;. Чтобы убедиться в этом, я вызову новый инстанс класса (не существующего объекта) и просмотрю его методы:&lt;/p&gt;&lt;blockquote&gt;&lt;pre style="font: 9pt courier new; color: #fff; background-color: black"&gt;&lt;font color="#009500"&gt;&lt;span black? background-color: #009500?;&gt;[vPodans] [wmiClass]'Win32_Printer' | gm -membertype method


   TypeName: System.Management.ManagementClass#ROOT\cimv2\Win32_Printer

Name                 MemberType Definition
----                 ---------- ----------
AddPrinterConnection Method     System.Management.ManagementBaseObject AddPrinterConnection(System.String Name)


[vPodans]&lt;/font&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;Вуаля, вот и наш метод! Ещё раз обратите внимание, что в первом случае я просматривал методы существующего объекта Win32_Printer, во втором же случае я просмотрел методы самого класса и увидел искомый метод. В принципе, можно создать новый инстанс класса на удалённой машине, но я, всё же, не вижу в этом реальной необходимости, поэтому я решил оставить это всё как есть. У кого энтузиазма больше - может поупражняться в этом.&lt;/p&gt;&lt;p&gt;Что касается удаления примапленного принтера, то я рассказывал об этом в первой части. Чтобы не было вопросов, откуда взялся метод Delete, которого мы здесь не увидели (а так же не увидим на сайте MSDN), то сразу отвечу, что это не чистый метод, а скриптметод. Его можно найти, выполнив лишь команду:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;font color="#0000ff"&gt;gwmi Win32_Printer | gm -membertype scriptmethod&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;И там он будет. Поехали дальше. Что касается расшаривания принтера для предоставления общего доступа и его отмены. Мы не имеем ни единого метода или скриптметода, который бы это делал. Но если ещё раз и внимательно изучить класс &lt;a href="http://msdn.microsoft.com/en-us/library/aa394363.aspx" target="_blank"&gt;Win32_Printer&lt;/a&gt; на MSDN (ещё раз даю ссылку), то можно заметить, что некоторые свойства объектов имеют &lt;strong&gt;Access Type: Read/Write&lt;/strong&gt;. Именно этим мы и воспользуется:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote class="postsub"&gt;&lt;pre style="font: 9pt courier new; color: #fff; background-color: black"&gt;&lt;font color="#009500"&gt;&lt;span black? background-color: #009500?;&gt;[System32] (gwmi Win32_Printer -Filter "name='CutePDF Writer'").shared
False
[System32] $a = gwmi Win32_Printer -Filter "name='CutePDF Writer'"
[System32] $a.shared = $True
[System32] $a.put()


Path          : \\localhost\root\cimv2:Win32_Printer.DeviceID="CutePDF Writer"
RelativePath  : Win32_Printer.DeviceID="CutePDF Writer"
Server        : localhost
NamespacePath : root\cimv2
ClassName     : Win32_Printer
IsClass       : False
IsInstance    : True
IsSingleton   : False



[System32] (gwmi Win32_Printer -Filter "name='CutePDF Writer'").shared
True
[System32]&lt;/font&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;Итак, что же я сделал. Первой строкой я просмотрел свойство &lt;strong&gt;Shared&lt;/strong&gt; для принтера &lt;em&gt;CutePDF Writer&lt;/em&gt; и получил его значение - &lt;strong&gt;False&lt;/strong&gt;. Это значит, что принтер просто локальный и не предоставлен в общий доступ. Далее, я изменил свойство &lt;strong&gt;Shared&lt;/strong&gt; на &lt;strong&gt;True&lt;/strong&gt;, предоставив его в общий доступ. Но это я только изменил свойство в переменной &lt;strong&gt;$a&lt;/strong&gt;, но не в самом объекте. Чтобы записать изменения в объект я выполняю скриптметод &lt;strong&gt;put()&lt;/strong&gt; и изменения уже записываются в сам объект принтера. Для верности я снова просмотрел свойство Shared и увидел мои изменения (вместо False получил &lt;strong&gt;True&lt;/strong&gt;), т.е. принтер расшарился. Отмена предоставления принтера в общий доступ делается с точностью наоборот, а именно - свойство &lt;strong&gt;Shared&lt;/strong&gt; выставляется обратно в &lt;strong&gt;False&lt;/strong&gt; и изменения записываются командой &lt;strong&gt;put()&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Примечание:&lt;/font&gt;&lt;/strong&gt; &lt;u&gt;при первом расшаривании принтера, кроме свойства Shared следует заполнить свойство ShareName&lt;/u&gt;, под которым он будет виден в сети. Так же выставив свойство Published в True мы можем опубликовать принтер в службе Active Directory.&lt;/p&gt;&lt;p&gt;На основе вышеизложенного материала напишем 6 несложных функций, которые обеспечивают базовый (это далеко не всё, что мы можем сделать с классом Win32_Printer) функционал по управлению принтерами:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;font color="#009500"&gt;######################################################## &lt;br&gt;# BasicPrinterUtils.ps1 &lt;br&gt;# Version 1.0 &lt;br&gt;# &lt;br&gt;# Functions for basic printer management &lt;br&gt;# &lt;br&gt;# Vadims Podans (c) 2008 &lt;br&gt;# &lt;/font&gt;&lt;a href="http://www.sysadmins.lv/"&gt;&lt;font color="#009500"&gt;http://www.sysadmins.lv/&lt;/font&gt;&lt;/a&gt;&lt;br&gt;&lt;font color="#009500"&gt;########################################################&lt;/font&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;function New-NetworkPrinter ($computer, $name) { &lt;br&gt;([wmiclass]'Win32_Printer').AddPrinterConnection("\\$computer\$name") &lt;br&gt;} &lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff"&gt;function Remove-NetworkPrinter ($name) { &lt;br&gt;if ($name) {(gwmi Win32_Printer -Filter "sharename='$name'").delete()} &lt;br&gt;else {(gwmi Win32_Printer -Filter "local='$false'").delete()} &lt;br&gt;} &lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff"&gt;function Set-DefaultPrinter ($name) { &lt;br&gt;if (!$name) {Write-Host "Не указано имя принтера. Операция прервана"} &lt;br&gt;else {$internal = gwmi win32_Printer -Filter "name='$name'" &lt;br&gt;$internal.setdefaultprinter()} &lt;br&gt;} &lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff"&gt;function Get-Printer ($computer, $name, $full) { &lt;br&gt;$internal = gwmi Win32_Printer -ComputerName $computer -Filter "name='$name'" &lt;br&gt;# здесь я предлагаю получить как полный набор свойств, так и упрощённый вывод сведений. &lt;br&gt;if ($full) {$internal | select *} else {Write-Host $internal} &lt;br&gt;} &lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff"&gt;function New-PrinterShare ($computer, $name, $ShareName) { &lt;br&gt;$internal = gwmi win32_Printer -ComputerName $computer -Filter "name='$name'" &lt;br&gt;if ($internal) {$internal.shared = $true; $internal.ShareName = $ShareName; $internal.put()} &lt;br&gt;else {Write-Host "Указано неверное имя принтера"} &lt;br&gt;} &lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff"&gt;function Remove-PrinterShare ($computer, $name) { &lt;br&gt;if ($name) {$internal = gwmi Win32_Printer -Filter "name='$name'"; $internal.shared = $false; $internal.put()} &lt;br&gt;else {gwmi Win32_Printer -Filter "shared='$true'" | %{$_.shared = $false; $_.put()}} &lt;br&gt;} &lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Полагаю, что здесь комментировать особо нечего, т.к. тут всё очень просто и понятно. На этом пока всё. Продолжение, полагаю, следует. :)&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.sysadmins.lv/content/binary/BasicPrinterUtils.ps1.txt"&gt;BasicPrinterUtils.ps1 (1,6 KB)&lt;/a&gt;&lt;img width="0" height="0" src="http://www.sysadmins.lv/aggbug.ashx?id=54cfbd81-dff6-4391-8ba0-13a17df9bc5f"/&gt;&lt;br/&gt;&lt;hr/&gt;PowerShell Powered - http://www.sysadmins.lv&lt;/div&gt;</description>
      <comments>http://www.sysadmins.lv/CommentView,guid,54cfbd81-dff6-4391-8ba0-13a17df9bc5f.aspx</comments>
      <category>PowerShell</category>
      <category>PowerShell / WMI</category>
    </item>
    <item>
      <trackback:ping>http://www.sysadmins.lv/Trackback.aspx?guid=41226cf5-e524-446f-85c0-4a958c6c769a</trackback:ping>
      <pingback:server>http://www.sysadmins.lv/pingback.aspx</pingback:server>
      <pingback:target>http://www.sysadmins.lv/PermaLink,guid,41226cf5-e524-446f-85c0-4a958c6c769a.aspx</pingback:target>
      <dc:creator>Camelot</dc:creator>
      <wfw:comment>http://www.sysadmins.lv/CommentView,guid,41226cf5-e524-446f-85c0-4a958c6c769a.aspx</wfw:comment>
      <wfw:commentRss>http://www.sysadmins.lv/SyndicationService.asmx/GetEntryCommentsRss?guid=41226cf5-e524-446f-85c0-4a958c6c769a</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <title>Управление принтерами в PowerShell (часть 1)</title>
      <guid isPermaLink="false">http://www.sysadmins.lv/PermaLink,guid,41226cf5-e524-446f-85c0-4a958c6c769a.aspx</guid>
      <link>http://www.sysadmins.lv/PermaLink,guid,41226cf5-e524-446f-85c0-4a958c6c769a.aspx</link>
      <pubDate>Mon, 10 Nov 2008 20:06:45 GMT</pubDate>
      <description>&lt;div&gt;&lt;P&gt;Ни для кого не секрет, что PowerShell умеет управлять принтерами. Для этого используются как WMI классы, так и COM объекты. При этом управление ими из PowerShell совсем не сложное. WMI представляет следующие классы:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa394363.aspx" target=_blank&gt;Win32_Printer&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa394364(VS.85).aspx" target=_blank&gt;Win32_PrinterConfiguration&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa394366(VS.85).aspx" target=_blank&gt;Win32_PrinterDriver&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa394367(VS.85).aspx" target=_blank&gt;Win32_PrinterDriverDll&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa394370(VS.85).aspx" target=_blank&gt;Win32_PrintJob&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Итак, самое простое - перечисление принтеров:&lt;/P&gt;&lt;PRE class=code style="WIDTH: 97.95%; HEIGHT: 70px"&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;&lt;FONT size=2&gt;Write-Host &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: maroon"&gt;"`tLocal Printers"
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;gwmi &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;win32_printer &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;-Filter &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;"Local='$true'" &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;| &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;ft &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;Drivername &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: black"&gt;-a
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;Write-Host &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: maroon"&gt;"`tNetwork Printers"
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;gwmi &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;win32_printer &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;-Filter &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;"Local='$false'" &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;| &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;ft &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;Drivername&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;ServerName &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;-a&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P&gt;Здесь я вывожу 2 списка принтеров - которые подключены локально и сетевые принтеры. Фильтрация осуществляется по свойству Local, которое может быть или &lt;STRONG&gt;$true&lt;/STRONG&gt; или &lt;STRONG&gt;$false&lt;/STRONG&gt;. Так же можно посмотреть, какие принтеры расшарены для других пользователей:&lt;/P&gt;&lt;PRE class=code style="WIDTH: 97.79%; HEIGHT: 34px"&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;&lt;FONT size=2&gt;Write-Host &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: maroon"&gt;"`tShared Printers"
&lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;gwmi &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;win32_printer &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;-Filter &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;"Shared='$true'" &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;| &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;ft &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;ShareName &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;-a&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P&gt;Безусловно, как и остальные классы WMI, класс Win32_Printer позволяет удалённо подключаться к принтсерверу с использованием параметра &lt;STRONG&gt;-ComputerName.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Так же можно посмотреть текущие настройки принтера:&lt;/P&gt;&lt;PRE class=code style="WIDTH: 97.81%; HEIGHT: 17px"&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;gwmi &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;Win32_PrinterConfiguration &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;| &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;ft &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;Caption&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;XResolution&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;YResolution&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;PaperSize &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;-a&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P&gt;Этой командой я увижу основные параметры качества печати и текущий размер используемой бумаги. Дополнительные свойства описаны в классе Win32_PrinterConfiguration и описывать их тут смысла нету.&lt;/P&gt;
&lt;P&gt;Классы Win32_PrinterDriver и Win32_PrinterDriverDll несут лишь справочную информацию о драйверах принтеров и реальное применение им я представляю слабо и рассматривать не буду.&lt;/P&gt;
&lt;P&gt;Класс &lt;STRONG&gt;Win32_PrintJob&lt;/STRONG&gt; показывает текущее состояние очереди печати принтера. Например, сейчас мой принтер печатает тестовую страницу:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE style="FONT: 9pt courier new; COLOR: #fff; BACKGROUND-COLOR: black"&gt;&lt;FONT color=#009500&gt;&lt;SPAN black? background-color: #009500?;&gt;[user name] gwmi Win32_Printjob | select *


Document         : Test Page
JobId            : 3
JobStatus        : Printing
Name             : Новая оргтехника, 3
PagesPrinted     : 0
Status           : OK
__GENUS          : 2
__CLASS          : Win32_PrintJob
__SUPERCLASS     : CIM_Job
__DYNASTY        : CIM_ManagedSystemElement
__RELPATH        : Win32_PrintJob.Name="Новая оргтехника, 3"
__PROPERTY_COUNT : 24
__DERIVATION     : {CIM_Job, CIM_LogicalElement, CIM_ManagedSystemElement}
__SERVER         : CAMELOT
__NAMESPACE      : root\cimv2
__PATH           : \\CAMELOT\root\cimv2:Win32_PrintJob.Name="Новая оргтехника, 3"
Caption          : Новая оргтехника, 3
DataType         : NT EMF 1.008
Description      : Новая оргтехника, 3
DriverName       : HP Photosmart D6100 series
ElapsedTime      :
HostPrintQueue   : \\CAMELOT
InstallDate      :
Notify           : user name
Owner            : user name
Parameters       :
PrintProcessor   : hpzpp4pi
Priority         : 1
Size             : 114944
StartTime        :
StatusMask       : 16
TimeSubmitted    : 20081110195514.849000+120
TotalPages       : 1
UntilTime        :
&lt;/FONT&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Здесь видно, на какой принтер идёт печать, имя документа, статус печати, размер документа, имя пользователя, от которого производится печать и др. Кстати говоря, параметр &lt;STRONG&gt;JobId&lt;/STRONG&gt; показывает количество отправленных заданий с момента последнего перезапуска спулера печати. Так же хочу заметить, что Win32_PrintJob возвращает информацию только при наличии заданий в спулере. Когда принтер простаивает, то данный класс ничего не возвращает.&lt;/P&gt;
&lt;P&gt;Теперь настало время поговорить, как подключать новые принтеры и удалять текущие принтеры. Подключать принтеры можно как с помощью &lt;STRONG&gt;WMI&lt;/STRONG&gt;, так и с помощью &lt;STRONG&gt;COM&lt;/STRONG&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;WMI&lt;/STRONG&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;PRE class=code style="WIDTH: 98.02%; HEIGHT: 18px"&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: black"&gt;([&lt;/SPAN&gt;&lt;SPAN style="COLOR: teal"&gt;wmiclass&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;]&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;'Win32_Printer'&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;).AddPrinterConnection(&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;"\\server\Printername"&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/PRE&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;COM&lt;/STRONG&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;PRE class=code style="WIDTH: 98.14%; HEIGHT: 15px"&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: black"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;New-Object -ComObject &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;WScript.Network&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;).AddWindowsPrinterConnection(&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;"\\Server\PrinterName"&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;EM&gt;&lt;U&gt;При этом важно отметить, что при получении объекта &lt;STRONG&gt;Win32_Printer&lt;/STRONG&gt; в нём метод &lt;STRONG&gt;AddPrinterConnection&lt;/STRONG&gt; не содержится, т.к. данный метод содержится в самом классе &lt;STRONG&gt;Win32_Printer&lt;/STRONG&gt;.&lt;/U&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Удаление принтера производится при помощи метода &lt;STRONG&gt;Delete&lt;/STRONG&gt;:&lt;/P&gt;&lt;PRE class=code style="WIDTH: 98.03%; HEIGHT: 17px"&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: black"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;gwmi &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;Win32_Printer &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;-Filter &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;"name='PrinterName'"&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;).delete()&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P&gt;Таким образом удаляется только один принтер. Все принтеры удаляются без указания фильтра:&lt;/P&gt;&lt;PRE class=code style="WIDTH: 97.88%; HEIGHT: 16px"&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: black"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;gwmi &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;Win32_Printer&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;).delete()&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P&gt;Например, недавно на ньюсгруппах был вопрос, как для развёртывания нового принтсервера удалить со всех компьютеров домена. Задача решалась в несколько строк:&lt;/P&gt;&lt;PRE class=code style="WIDTH: 98.01%; HEIGHT: 66px"&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: purple"&gt;$filter &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;= &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: maroon"&gt;"(objectcategory=computer)"
&lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;$ds &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;New-object &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;System.DirectoryServices.DirectorySearcher&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;([&lt;/SPAN&gt;&lt;SPAN style="COLOR: teal"&gt;ADSI&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;]&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;""&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;$filter&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: black"&gt;)
&lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;$computers &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;$ds&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;.Findall() | &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;%&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;$_&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: black"&gt;.properties.name}
&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;foreach &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;$computer &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;in &lt;/SPAN&gt;&lt;SPAN style="COLOR: purple"&gt;$computers&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;) {&lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;gwmi &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;win32_printer &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;-computername &lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;"$computer" &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;| &lt;/SPAN&gt;&lt;SPAN style="COLOR: #5f9ea0"&gt;%&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;$_&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: black"&gt;&lt;FONT size=2&gt;.delete()}
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/PRE&gt;На сегодня, я думаю, это всё. Во второй части я планирую поговорить о чтении и установке пермишенов на принтеры с использованием PowerShell.&lt;/SPAN&gt;&lt;img width="0" height="0" src="http://www.sysadmins.lv/aggbug.ashx?id=41226cf5-e524-446f-85c0-4a958c6c769a"/&gt;&lt;br/&gt;&lt;hr/&gt;PowerShell Powered - http://www.sysadmins.lv&lt;/div&gt;</description>
      <comments>http://www.sysadmins.lv/CommentView,guid,41226cf5-e524-446f-85c0-4a958c6c769a.aspx</comments>
      <category>PowerShell</category>
      <category>PowerShell / WMI</category>
    </item>
  </channel>
</rss>