Group Policy Preferences –как различить 32-bit и 64-bit системы


 

На сегодняшний день все большее распространение получают 64-битные системы. Если XP x64 была экзотикой, Vista x64 приобрела большую популярность, но не получила широкого распространения из отсутствия драйверов к оборудованию и совместимого ПО, то Windows 7 x64 становится такой же популярной как и Windows 7 x86. Поэтому все чаще приходится применять разные политики к разным архитектурам: например, установить программу нужной версии или, в моем случае, скопировать dll-ку для обеспечения совместимости программы.

Для копирования dll-ки я применил GPP – это гораздо проще, быстрее и надежнее, чем применять логон-скрипт. Причем для разных архитектур копировать пришлось разные файлы и в разные места. И тут обнаружилось, что  GPP не различает архитектуры: GPP targeting для Operating system со свойством Edition не работает, если указать «64-bit Enterprise» – в логах пишет «Filter fail»!

clip_image001

 Пришлось искать заплатку. На удивление оказалось, что бага известна давно, но до сих пор не исправлена. Сотрудники Microsoft предлагают использовать WMI Filter: http://social.technet.microsoft.com/Forums/en/winserverGP/thread/12dbf06a-604d-4be6-9795-4bf433b7df81

Select * from Win32_OperatingSystem where OSArchitecture = ’64-bit’

который надо вставить в соответствующий ItemTargeting

clip_image002

После этого GPP применяется только к 64-битной системе.

Мне удалось обнаружить в Интернете еще один способ проверки на x64 http://www.grouppolicy.biz/tag/64bit/ Идея проста: надо проверить наличие ключа реестра HKEY_LOCAL_MACHINE\Software\Wow6432Node

clip_image003

Этот ключ реестра существует только на системах x64, и наша политика GPP будет применяться только к ним.

PS: Попутно в базе знаний Microsoft обнаружилось несколько Hotfix-ов для GPP (http://support.microsoft.com/kb/982051). Если у вас возникли проблемы с использованием GPP, обязательно сначала поищите свежий hotfix – возможно ваша проблема уже решена.

Удачи в использовании GPP!!!

Получить список открытых файлов на удаленном сервере


 

   Здесь собраны варианты, как  получить список открытых файлов на удаленном компьютере.

Вариант 1. Используем WMI

$server = "server"

$command = ‘cmd /k net file > c:\openfiles.txt’

([wmiclass]"\\$server\root\cimv2:Win32_Process").create($command)

Start-Sleep 2

Invoke-Item \\$server\c$\openfiles.txt

# Remove-Item \\$server\c$\openfiles.txt

__________________________________________________________

Вариант 2. Используем ADSI.

$server = "server"

$adsi = [adsi]"WinNT://$server/LanmanServer"

$users = $adsi.psbase.invoke("resources") | foreach {$_.gettype().invokeMember("user","GetProperty",$null,$_,$null)}

$paths = $adsi.psbase.invoke("resources") | foreach {$_.gettype().invokeMember("path","GetProperty",$null,$_,$null)}

for($i = 0;$i -lt $users.length; $i++) { "{0}: {1}" -f $users[$i],$paths[$i] }

_____________________________________________________________

Вариант 3. Используем WS-Management.

winrm -r:fs C:\Windows\System32\openfiles.exe

Вариант 4. Сергей (AKA ShS) обратил мое внимание, что работает:

C:\Windows\System32\openfiles.exe /query /S <ComputerName>

____________________________________________________________

Дополнение. Шары открытые пользователями.

Get-WmiObject -ComputerName $server win32_serverconnection | Format-Table connectionid,username,computername,sharename,activetime,number* -auto

Создание файла нужного размера


 

По мотивам вопроса Паши Нагаева: как создать файл нужного размера?

1. Использование стандартной утилиты:

fsutil file createnew d:\temp\out.txt 1000000

2. Использование Powershell

$f=new-object System.IO.FileStream out.txt, Create, ReadWrite;

$f.SetLength(10MB);

$f.close()

3. Более компактный вариант:

set-content -value (new-object byte[] 1mb) -encoding byte out.txt

4. Заполнение файла мусором:

$randArray = new-object Byte[] 1mb

$randObj = new-object System.Random

$randObj.NextBytes($randArray)

set-content -value $randArray -encoding byte out.txt

___________________________________________________________________________________

Удачи в ваших начинаниях!