PowerShell Core 6.1 Preview4


Вышла новая предварительная версия PowerShell 6.1 Preview4.

https://github.com/PowerShell/PowerShell/releases

RTM версия ожидается через несколько недель в августе.

На что стоит обратить внимание?

1. Add support to experimental features
https://github.com/PowerShell/PowerShell/pull/7242

Этот механизм позволит реализовывать альтернативные возможности в предварительных версиях. Пользователи смогут выключать и выключать их на свое усмотрение для тестирования.

2. Add ThreadJob module package and tests
https://github.com/PowerShell/PowerShell/pull/7169

Это ещё одна возможность распараллеливания выполнения скриптов. Рекомендую потестировать и написать отзывы, чтобы в августе получить обновленный вариант в RTM версии.

3. Enable UseShellExecute on all platforms
https://github.com/PowerShell/PowerShell/pull/7198

Теперь на Unix системах Invoke-Item будет работать как на Windows системах и запускать приложения в зависимости от расширения файла. Так Invoke-Item file.txt запустит текстовый редактор.

Остальное смотрите в Release Notes — ссылка выше.

Реклама

О пользе скобок


Почему надо правильно форматировать код и использовать скобки, чтобы не вызывать конец света, демонстрирует давний (по современным меркам) баг в iPhone.

Так что никогда не ленитесь писать:


if ( a == 1 )
{
   b = 2;
}

вместо опасного:

if ( a == 1 )
   b = 2;

А вы нигде не забыли скобки?

Путь развития PowerShell Core


В настоящее время есть два PowerShell — Windows PowerShell и PowerShell Core. Сразу возникает вопросы: как они соотносятся? что будет в будущем с каждой версией?

PowerShell Core это «fork» или ответвление Windows PowerShell сделанное в определенный момент с целью портирования на Unix системы.

Windows PowerShell базируется на .Net Framework — внутренней реализации стандарта .Net Standard компанией Microsoft. Читать далее

PowerShell Core достиг фазы Beta.3


Уже в ближайшее время вы сможете загрузить и установить PowerShell Core 6.0 Beta.3.

Выполнено множество улучшений. В частности вы можете оценить скорость загрузки — она потрясающая! А повторные запуски практически мгновенны.

Главное новшество — добавлена поддержка модулей Windows PowerShell! Это открывает огромные возможности по использования PowerShell Core.

Не всё так гладко с этим. Во-первых, PowerShell Core не поддерживает PSSnaIn модули и не будет их поддерживать — они ушли в прошлое. Во-вторых, модули в формате PS1XML из-за проблем в .Net CoreFX пока не работают, но вскоре это будет исправлено.

Многие существущие модули созданы именно в формате PSSnaIn и должны быть переделаны. Например, один из самых востребованных модулей — ActiveDirectory. Как не печально, но мы не можем его загрузить в PowerShell Core, пока разработчики его не перепишут. Я проверил модули SCCM и SharePoint — они также не работают.

Тогда я провел простой тест и попробовал загрузить все доступные модули на Windows 10 с установленным RSAT. Результат был более чем позитивным: более половины из 120 модулей загрузились!

Самое время и вам загрузить PowerShell Core 6.0 Beta.3 и протестировать модули, которые вы разработали или которыми вы просто пользуетесь. Результаты нужно разместить в теме FullCLR modules not compatible with PSCore6. Не откладывайте это на потом: PowerShell Core является следующим поколением PowerShell и в скором времени заменит Windows PowerShell — вам будет досадно, если вы не сможете ео использовать на всю мощь из-за поздно обнаруженных проблем.

Exchange Server 2016 и Windows Server 2016


С выходом CU3 Exchange Server 2016 должна была появится поддержка установки на Windows Server 2016. Она и появилась. Только тут же выявилась проблема: IIS стал падать. В результате продуктовая группа рекомендовала отложить внедрение Exchange Server на Windows Server 2016 до выхода исправления.

Такое обновление для Windows Server 2016 выпущено и доступно KB3206632. Теперь мы можем внедрять Exchange на Windows Server 2016. Хотя для критически важных внедрений лучше не торопиться, помониторить форумы и подождать очередной волны обновлений.

Идентифицирована проблема с TMG 2010 киентом на Windows 10 1607


Наконец-то установили причину, почему не работает TMG 2010 клиент на Windows 10. Клиент пишет: «authentication error«.  Это началось примерно в феврале 2016 года в сборках Preview и проблема перешла в версию 1607. Теперь причина проблемы установлена » root cause to be due to a change in the negotiate/kerberos code with how callers provide credential handle or context handle for each call».

Обещан фикс в очередных сборках Windows 10 Preview RS1 (Redstone). Скорее всего уже после новогодних праздников.

Powershell 6 — новый командлет Get-Uptime


Да теперь моими усилиями в Powershell 6 есть командлет Get-Uptime, который, как можно легко понять, возвращает длительность работы ОС или время старта системы.

Как оказалось это нетривиальная задача. Основная проблема в том, что командлет должен работать на всех системах Windows, OSX и Linux. Например Windows мы можем получить зачение Uptime несколькими способами: 1. используя WMI класс Win32_OperatingSystem — это выполняется медленно и работает только на Windows, 2. используя счётчик производительности «System Uptime» — это наиболее правильный способ для Windows, но он не работает на других системах.

В конечном итоге оказалось возможным использовать класс .Net Stopwatch Class (System.Diagnostics). Это нецелевое использование этого класса. Тем не менее нашёлся хитрый вариант, который работает. Подробности можно найти по ссылке #2497.