Есть ли другие варианты использования скобок в powershell?
Будучи новичком в мире Powershell, иногда я застреваю в хитром синтаксисе. Вот почему я пытаюсь выяснить все возможные варианты использования скобок внутри языка.
Вы знаете еще? Вы можете добавить сюда?
Здесь мое (исключено базовое использование curly в конвейере и round в вызовах методов):
# empty array
$myarray = @()
# empty hash
$myhash = @{}
# empty script block
$myscript = {}
# variables with special characters
${very strange variable @ stack !! overflow ??}="just an example"
# Single statement expressions
(ls -filter $home\bin\*.ps1).length
# Multi-statement expressions inside strings
"Processes: $($p = “a*”; get-process $p )"
# Multi statement array expression
@( ls c:\; ls d:\)
6 ответов
Вызвать оператор, чтобы получить результат в выражении:
($x=3) + 5 # yields 8
При использовании дженериков, вы должны обернуть тип в [..]
:
New-Object Collections.Generic.LinkedList[string]
Для некоторых людей это может показаться запутанным, потому что это похоже на индексацию в массивах.
Оператор Param() (в функции, скрипте или блоке скрипта)
Вокруг условия в If (или в выражении Elseif)
Вокруг выражения в операторе switch.
Изменить: Забыл условие в заявлении в то время как.
Edit2: также $() для подвыражений (например, в строках).
Скобка очень сильно.
Предположим, что вы хотите собрать все выходные данные, включая ошибки, некоторого блока сценария и перенаправить в переменную или другую функцию для обработки этого... С круглыми скобками это простая задача:
$customScript = { "This i as test"; This will be procedure error! }
(. $customScript 2>&1 ) | %{"CAPTURING SCRIPT OUTPUT: "+$_}
Регулярные выражения, возможно, являются первоклассной конструкцией в Powershell.
Если мы собираем полный список, мы можем включить роль, которую квадратные и круглые скобки играют в регулярных выражениях.
Пример:
$obj.connectionString = $obj.connectionString -replace '(Data Source)=[^;]+', '$1=serverB\SQL2008_R2'
Благодаря поддержке XML вы можете зайти так далеко, чтобы включить квадратные скобки, используемые в XPath. (Это действительно тянет длинный лук, хотя:-)
select-xml $config -xpath "./configuration/connectionStrings/add[@name='LocalSqlServer']"
Это даже написано, но недостаточно ясно в первом коротком списке после "Выражений с несколькими выражениями внутри строк, которые я добавлю
# Var property inside a string
$a = get-process a*
write-host "Number of process : $a.length" # Get a list of process and then ".length
Number of process : System.Diagnostics.Process (accelerometerST) System.Diagnostics.Process (AEADISRV) System.Diagnostics.Process (agr64svc).length
write-host "Number of process : $($a.length)" # To get correct number of process
Number of process : 3