Я видел упоминания о улучшенном синтаксисе PowerShell 3.0, но пока не показан, как он будет выглядеть?У PowerShell 3.0 должен быть более чистый синтаксис, как он выглядит?
ответ
У Powershell уже есть довольно чистый синтаксис, поэтому нет необходимости в улучшении.
одно новое дополнение, которое я люблю это Hash Table as objects
, где вы можете создавать объекты, передавая hastable с его свойствами:
[<ClassName>]$Variable = @{<Property>=<Value>;<Property>=<Value>}
Так новый, более емким способом создания пользовательских объектов является:
$obj = [PSCustomObject]@{a=1; b=2; c=3; d=4}
Перенаправление увеличено. У вас теперь есть потоки для подробных, отладочных и предупреждений в дополнение к нормальным (конвейер) и ошибкам, и поэтому вы можете выполнять перенаправления, например 5>&1
Вы можете использовать переменную предпочтения $PSDefaultParameterValues
для установки значений параметров по умолчанию для командлетов.
Существует новый [ordered]
ускоритель создать упорядоченную hastable (словарь):
$a = [ordered]@{a=1;b=2;d=3;c=4}
С другой ответ здесь в SO, я понял, что -in
нового в Powershell v3.0:
Так вы сделайте что-нибудь вроде 1 -in 1,2,3
. Раньше у нас было только -contains
Cmdlets:
Вы можете обновить справку с Update-Help
командлета. Есть связанные с сетью командлеты, такие как Invoke- WebRequest
. Вы также можете обрабатывать JSON с помощью командлетов ConverTo-JSON
и ConvertFrom-JSON
.
«Приказано hastable (dictionary)»: я думал, что «словарь» и «хэш-таблица» были синонимы. Может быть, меня путают с питонами Питона, но словари не навязывают порядок, не так ли? Можете ли вы это уточнить? –
Вот пример:
dir | where length -lt 10
до 3,0, это был бы
dir | where {$_.length -lt 10}
редактировать: еще один пример, на этот раз с Еогеасп-объекта
dir | foreach-object length
+1 - Не замечал этого раньше. – manojlds
Согласен с автором. Это то, что я ожидал увидеть в некоторых сообщениях, потому что это упрощает чтение скриптов. Я не думаю, что мне это нравится. –
Некоторые общие командлеты *-Object
используют несколько наборов параметров для выполнения упрощенного синтаксиса. Посмотрите на это в V3:
C:\PS> Get-Command Where-Object -Syntax
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] [-EQ] [<CommonParameters>]
Where-Object [-FilterScript] <scriptblock> [-InputObject <psobject>] [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CGT [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CNE [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -LT [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CEQ [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -NE [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -GT [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CLT [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -GE [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CGE [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -LE [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CLE [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -Like [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CLike [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -NotLike [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CNotLike [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -Match [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CMatch [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -NotMatch [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CNotMatch [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -Contains [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CContains [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -NotContains [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CNotContains [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -In [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CIn [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -NotIn [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -CNotIn [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -Is [<CommonParameters>]
Where-Object [-Property] <string> [[-Value] <Object>] [-InputObject <psobject>] -IsNot [<CommonParameters>]
ПРИМЕЧАНИЕ: Проверьте новые операторы -NotIn
и -In
например:
C:\PS> 1 -In 1..5
C:\PS> 10 -NotIn 1..5
Так упрощенный синтаксис хорош для «общих» дел, но смотреть, как вы можете легко упасть в острые камни и лаву, например:
C:\PS> Get-ChildItem | Where LastWriteTime.Year -eq 2010
Это ничего не возвращает, и даже хуже, нет никакой ошибки, так что вы думаете, что результирующий набор «правильно» пустой, когда на самом деле этот синтаксис просто не работает, как вы могли бы ожидать. То есть вы не можете получить доступ к свойству свойства. В приведенном выше примере PowerShell ищет свойство, называемое LastWriteTime.Year
, которого не существует.
Также отметим, что в рамках упрощенного синтаксиса вы можете использовать $PSItem
вместо $_
в случае, если вы или те, писать скрипты для иметь какую-то аллергическая реакция на $_
. :-)
И хотя это не обязательно связано с упрощенным синтаксисом, я считаю, что это упрощает мою жизнь, и я люблю его:
C:\PS> Get-ChildItem -Directory
C:\PS> Get-ChildItem -File
C:\PS> dir -ad
C:\PS> Get-ChildItem -Attributes System+Hidden+Directory+!Archive
+1 для '$ PSItem'. Кстати, как вы узнаете об этих вещах? Все ли документировано? – manojlds
Да, мне не нравится упрощенный синтаксис с тем, где и т. Д. ... больше проблем, чем выигрыш, я думаю. – manojlds
Я немного беспокоюсь об упрощенном синтаксисе. Я понимаю желание облегчить для администраторов доступ к PowerShell, но я не уверен, что это нечто большее, чем «приманка и переключатель». Время покажет, я думаю. Что касается узнавания об этих вещах, то у MVP есть свои привилегии. :-) Серьезно, однако, взаимодействие между командой PowerShell и их MVP было неплохим, так как они начали присуждать MVP в PowerShell еще в 2006 году. –
- 1. Синтаксис SSL - как он выглядит?
- 2. SOAP синтаксис в Powershell 3.0
- 3. Выделенный шрифт выглядит смелее, чем он должен быть
- 4. Более чистый синтаксис для тернар с let?
- 5. Попытка создать более чистый синтаксис SQL
- 6. PHP Синтаксис должен быть выключен
- 7. страница выглядит больше, чем он должен
- 8. Как выглядит этот синтаксис?
- 9. У сеттеров должен быть аргумент
- 10. Вызов делегата C# из F # - Есть ли более чистый синтаксис?
- 11. Должен быть более простой способ
- 12. iphone приложение смена шрифта не выглядит, как он должен
- 13. Возвращаемый указатель undefined, хотя он должен быть
- 14. Как запустить PowerShell 3.0?
- 15. Как установить PowerShell 3.0
- 16. Чистый пользователь в PowerShell
- 17. Как установить счетчик циклов while? Когда он должен быть 1, а когда он должен быть 0?
- 18. Как получить глубину каталога в PowerShell 3.0?
- 19. Зачем использовать обратные вызовы javascript, когда доступен более чистый синтаксис?
- 20. Более чистый код, альтернативный полиморфизму
- 21. C#, Linq2SQL: Как долго должен быть CommandTimeout и где он должен быть установлен?
- 22. Почему у Flume должен быть источник AMQP?
- 23. Этот код C# пахнет .. кажется, что должен быть более чистый способ написать это
- 24. Ajax json timeout/должен быть более эффективным
- 25. нужен чистый синтаксис в пакете
- 26. Как выглядит синтаксис bash в этом примере?
- 27. Чистый базовый класс должен быть экспортирован из DLL?
- 28. вертикальный слайдер должен быть более настроенным
- 29. он должен быть StackOverflowError или OOME
- 30. фон прокрутки он должен быть постоянным?
Какая часть этого не была полезной? Похоже, вы можете скачать его. http://social.technet.microsoft.com/Forums/en-AU/ITCG/thread/4807949e-58e6-4533-b35d-580d938dfbb2 –