Remote Tools don’t work in Windows 7 x64 client

On my current project I found weird thing when SCCM Remote Tools work without any problem on Windows 7 x32 client but failed to run or ask me about local admin credentials to connect to Windows x64 client.

I fixed this by changing permissions for RCLaunch.exe file. I granted Read/Execute permissions for “ConfigMgr Remote Control Users”  group to the file located in Windows 7 x64 OS \Windows\SysWOW64\CCM\clicomp\RemCtrl\RCLaunch.exe.

After that Remote Tolls started to work fine.

Distribution of application package with huge folder structure took too long on BITS enabled DP

During my current project I run into problem when tried to distribute Adobe Acrobat Pro 9.3.4 package from BITS enabled DP to Windows 7 x86 client computer and it took up to 10 hours. Package itself contains 1017 folders and 12552 files and 1.6 GB size. I tried different ideas to solve this issue and eventually I found in MSFT knowledge database similar case but with IIS 7.0. My environment was built on Windows Server 2008 R2 with IIS 7.5 so ideas from this case didn’t work at all. I took only one solution from the case which decreases overall distribution time from 10 hours up to 3 hours but anyway it wasn’t acceptable by customer. Customer also opened case with PSS and they confirmed that there is a bug in the IIS 7.0 and IIS 7.5 and you need to do following:

1. For IIS 7.0 you should apply KB957001 and this KB is already included to IIS 7.5

2. You need to configure ‘maxAllowedXmlRequestLength’ attribute which specifies the maximum length, in bytes, of the request XML body for WebDAV requests. By default it’s 1000000 byte. Additional info you can find here

You can do this by running appcmd.exe command and set max length to 2Mb:

appcmd.exe set config "Default Web Site" -section:system.webServer/webdav/authoring /maxAllowedXmlRequestLength:2097152 /commit:apphost

To check that settings are applied successfully you can run following command:

appcmd list config "Site_Name_Here" -section:system.webServer/webdav/authoring

Note that this is size of XML response size and not number of files or the size of files.

As I mentioned earlier it didn’t help too much but for someone it could be good solution.

I solved this problem by wrapped up all files and folders to one EXE file with total size of 600Mb and as result decrease distribution time from 3 hours to 5 min Smile

Миграция сетевых принтеров из Windows XP в Windows 7

В нынешнем проекте столкнулся с интересной задачей – необходимо было мигрировать все настроенные принтера из профиля пользователя из Windows XP в Windows 7. Все это надо реализовать через два сценария – refresh или in place, это когда мы проводим установку Windows 7 из Windows XP с миграцией всех пользовательских данных в SCCM State Migration Point (SMP) и второй – replace или side by side, это когда есть два компьютера: один с Windows XP и второй с Windows 7, при этом SMP не используем (идея не моя, а Заказчика, я бы сделал все через SCCM), а данные мигруем через ручной запуск USMT и все пользовательское барахло складываем на внешний винт. Далее подключаем этот винт в Windows 7 и запускаем скрипт USMT для восстановления данных. Почему был выбран ручной метод – потому что не во всех удаленных офисах Заказчика есть SCCM, а мигровать надо. Ну да ладно, мне только лучше, т.к. задачка интересная и к тому времени я ее уже решил с помощью SCCM, а теперь вот надо все это повторить в скриптованном виде.

Для решения первой задачи воспользовался статьей с Технета «When using USMT 4 in a Configuration Manager 2007 SP2 OSD Task Sequence, files are captured successfully but settings are not» http://support.microsoft.com/kb/2018593. После добавления соответствующего шага в Task Sequence, я получил требуемый результат – все принтера из пользовательского профиля успешно перекочевали в Windows 7.

Решение второй части через скрипты заняло у меня какое-то время и предыдуший совет не работал. Все мигровалось, кроме принтеров. Помощь пришла неожидано – от коллеги Alexey Semibratov’а (http://blogs.msdn.com/b/alex_semi). Я давненько почитываю его блог, но решения моей задачи там не было. Не долго думая я нашел его в майкрософтовском OCS’е и «постучался» с вопросом. Ответа он не знал, но дал очень занимательную переписку из внутреннего дистрибьюшен листа (на который я сразу же подписался), информация из которого и дала мне ключ к разгадке. Так вот, для использования USMT 4.0 с ручным запуском команд scanstate и loadstate, необходимо подготовить отдельный XML файл, я назвал его custom.xml, куда поместил следующий код:

<?xml version=”1.0″ encoding=”UTF-8″?>
<migration urlid=”http://www.microsoft.com/migration/1.0/migxmlext/miguser/NetworkPrinters”>
<component context=”UserAndSystem” type=”System” defaultSupported=”FALSE”>
<displayName _locID=”migsys.Printer”>Printer</displayName>
<role role=”Settings”>
<detects>
<detect>
<condition>MigXmlHelper.DoesOSMatch(“NT”,”*”)</condition>
</detect>
</detects>
<rules>
<destinationCleanup>
<objectSet>
<pattern type=”Registry”>HKCU\Printers\* [*]</pattern>
<pattern type=”Registry”>HKCU\software\microsoft\windows NT\currentVersion\Windows\* [*]</pattern>
</objectSet>
</destinationCleanup>
<include>
<objectSet>
<pattern type=”Registry”>HKCU\Printers\* [*]</pattern>
<pattern type=”Registry”>HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices\* [*]</pattern>
<pattern type=”Registry”>HKCU\software\microsoft\windows NT\CurrentVersion\printerPorts\* [*]</pattern>
<pattern type=”Registry”>HKCU\software\microsoft\windows NT\CurrentVersion\Windows\* [*]</pattern>
<pattern type=”Registry”>HKLM\software\microsoft\Windows NT\CurrentVersion\Print\Printers\* [*]</pattern>
<pattern type=”Registry”>HKLM\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows NT x86\Drivers\* [*]</pattern>
<pattern type=”Registry”>HKLM\SYSTEM\ControlSet001\Control\Print\Environments\Windows NT x86\Drivers\* [*]</pattern>
<pattern type=”Registry”>HKLM\SYSTEM\CurrentControlSet\Control\Print\Printers\* [*]</pattern>
<pattern type=”Registry”>HKLM\SYSTEM\ControlSet001\Control\Print\Printers\* [*]</pattern>
<pattern type=”Registry”>HKLM\SYSTEM\CurrentControlSet\Services\lanmanserver\Shares\* [*]</pattern>
<pattern type=”Registry”>HKLM\SYSTEM\ControlSet001\Services\lanmanserver\Shares\* [*]</pattern>
</objectSet>
</include>
</rules>
</role>
</component>
</migration>

 

Далее я запустил следующую команду на Windows XP:

scanstate.exe .\UserDataStore /o /localonly /c /efs:copyraw /all /progress:.\scanstateprogress.log /i:. \x86\migapp.xml /i:.\x86\miguser.xml /i:.\x86\custom.xml

Все данные пользователя мигранули в папку UserDataStore\USMT, в файл USMT.MIG. После этого переключил внешний винт в Windows 7 и запустил следующую команду:

loadstate.exe .\UserDataStore /c /all /progress:.\loadstateprogress.log /i:.\x86\migapp.xml /i:.\x86\miguser.xml /i:.\x86\custom.xml

Загрузился под пользовательским аккаунтом и как результат – подключенные принтера.

SCCM 2007 SP2 R2 и App-V 4.6 (x86). Проблема с доставкой виртуальных приложений

У заказчика реализовал один из сценариев интеграции App-V с SCCM – local delivery (download and execute). Все вроде шло нормально, пререквизиты для App-V 4.6 клиента и самого клиента поставил через командный файл. При попытке распространить пакет с виртуальным приложением, который содержит в себе MSI и SFT файлы, получил в логах вот такую ошибку:

The program for advertisement “P1020047” failed (“P100006C” – “Install Package”). A failure exit code of 1603 was returned.

User context: NT AUTHORITY\SYSTEM

Possible cause: Systems Management Server (SMS) determines status for each program it executes. If SMS cannot find or correlate any installation status Management Information Format (MIF) files for the program, it uses the program’s exit code to determine status. An exit code of 1603 is considered a failure.

Командная строка запуска приложения выглядит так: MSIEXEC /I package.msi /qn. Если запускаю эту же команду на клиентской машине, из под SYSTEM аккаунта, то все устанавливается без ошибок.

Неделю я бился над этой проблемой, даже открыл запрос в MSFT Premier Support (на который они кстати до сих пор не ответили!). Помогли ребята из MGSI, которые собственно и занимаются подготовкой виртуальных приложений для моего заказчика. Решение очень простое, необходимо добавит %~dp0 перед именем MSI файла и создать командный файл с этой строкой, который и необходимо запускать из пакета SCCM. Финальная строка выглядит следующим образом – MSIEXEC /I %~dp0package.msi /qn.

Согласно их утверждениям, это проблема MSI файла, который был создан через сиквенсер (sequencer). В момент когда пакет загружается в кэш клиентской машины, полный путь к SFT файлу не передается SFTMIME. Подстановка %~dp0 передает полный путь к MSI файлу.

Asset Intelligence SCCM 2007 SP2 проблема импорта не Майкрософт лицензий

На проекте столкнулся с багом в SCCM 2007 SP2 Asset Intelligence. При импорте CSV файла с данными о не Майкрософт софте происходит сбой импорта. Подробное исследование файла CSV показало, что AI в SCCM 2007 SP2 «не понимает» разницы между major и minor версиями софта и считает их дублем. Например, есть две строки в CSV файле, которые воспринимаются командой импорта (через GUI или mvlsimport.exe) как одна и та же версия:
Name,Publisher,Version,Language,Effective Quantity,PONumber,Reseller
Ad-aware 6 Personal,Lavasoft,6.0.1.181,,,,,,,,
Ad-aware 6 Personal,Lavasoft,6.0.,,,,,,,,

Тест на версии SCCM 2007 SP1 показал, что такой проблемы нет. Мой заказчик уже вплотную поработал с Microsoft Enterprise Support инженером и полученный ответ не обрадовал – это баг в AI SCCM SP2. Пока решения нет. Предложили workaround – добавлять недостающие нули, чтобы сделать поле Version уникальным. Если выйдет патч, обещали сообщить, а пока заказчик все записи с такими «дублями» вычищает из своего CSV файла.