none
Список изменений в PowerShell v2 -> v3. RRS feed

  • Вопрос

  • Где можно посмотреть наиболее полный список изменений в PowerShell v3? Интересуют не новые возможности, а изменения, которые влияют на результат выполнения кода.
    29 октября 2012 г. 15:23

Ответы

Все ответы

  • В целом, механизм работы остался неизменным. Однако советую обратить внимание на обсуждение http://social.technet.microsoft.com/Forums/da-DK/winserverpowershell/thread/8abdd7fc-13f6-41e6-992f-1a1653499b63 и ссылки в нем - есть пара неочевидных моментов.

    В крайнем случае, как вы наверное уже знаете, вы можете просто запустить PS v2 даже после установки v3, чтобы избежать проблем с совместимостью. Делается это путем добавления ключа -Version 2 к файлу Powershell.exe.


    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий
    Follow us on TwitterFollow MSTechnetForum on Twitter

    Посетите Блог Инженеров
    Доклады на Techdays: http://www.techdays.ru/speaker/Vinokurov_YUrij.html

    • Помечено в качестве ответа PetSerAl 11 ноября 2012 г. 1:34
    30 октября 2012 г. 7:33
    Модератор
  • Проблема не в миграции скриптов, а в миграции знаний. Даже если опустить моменты, которые по сути являются исправлением ошибок, как например свойство PSObject, которое теперь всегда ссылается на системное свойство:
    @{PSObject=1}.PSObject
    то всё-равно остаются узкие моменты, например код:
    $Replacement=@(
        'asd'
        'fgh'
        'jkl'
    )
    $i=0
    [Regex]::Replace('A___B___C___D','___',{$Replacement[$i++]})
    даёт разные результаты в v2 и в v3, так как делегаты созданные из ScriptBlock'а в v3 создают новый Scope, а в v2 работают в текущем. Для v3 этот код надо записывать таким образом:
    $Replacement=@(
        'asd'
        'fgh'
        'jkl'
    )
    $i=0
    [Regex]::Replace('A___B___C___D','___',{$Replacement[([ref]$i).Value++]})
    Просто хочется не нахотить такие моменты методом проб и ошибок, подолгу возясь с непонятным поведением, а сразу писать код расчитанный на v3. А Вам спасибо за ссылку, нашёл парочку интересных моментов.
    30 октября 2012 г. 18:33
  • А в PowerShell V3 много багов и со Scope уже не первый,поэтому можете написать на connect.microsoft.com.Таких моментов будет полно и те которые тянутся с PowerShell v1.Очень многим хочется понять внутреннюю структуру,но это врятли случится в скором времени,т.к. разработчикам не хватает время документировать встроенные возможности не говоря уже о детальной архитектуре.Как только возникает серьезные вещи,то PowerShell отбрасывают в сторону и переходят на C# и другие языки.И то что -Version 2 позиционирует,как обратная совместимость,то тут приходится долго тестрировать,при использовании -Version 2 правили баги,да и поведение изменили,так что совместимость далеко не во всем.Многие пользуются PowerShell V1 не говоря уже о V3. Для вашего кода,как вариант использовать область global: [Regex]::Replace('A___B___C___D','___',{$Replacement[$global:i++]}).

    PowerShell позиционировался для IT специалистов,так и остается,многие вещи работаю странно,но не дотягивают:делегаты,работа с Com и т.д.

    Ps. Это будет еще долгое время,пройдет не один релиз и с каждым релизом все новые проблемы ,и сложности. 

    30 октября 2012 г. 19:28
    Отвечающий
  • Свои заморочки есть везде. Просто хочется их видеть в одном месте, а не дёргать с миру по нитке. Да и Microsoft Connect я регулярно просматриваю.
    31 октября 2012 г. 17:08
  • Свои заморочки есть везде. Просто хочется их видеть в одном месте, а не дёргать с миру по нитке. Да и Microsoft Connect я регулярно просматриваю.

    Покажите хотя бы один ресурс про конкретную технологию,где собраны все тонкие моменты?
    31 октября 2012 г. 17:30
    Отвечающий
  • Так я же не прошу, чтобы были прямо все тонкие моменты. Я лишь прошу поделится ссылкой на наиболее полный список, который Вы видели.
    31 октября 2012 г. 17:46