Существуют ли другие применения скобок в powershell?
как новичок в мире Powershell, иногда я застрял в сложном синтаксисе. Вот почему я пытаюсь выяснить все возможные варианты использования скобок внутри языка.
вы знаете еще? Вы можете добавить здесь?
здесь mine (осталось базовое использование 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 $homebin*.ps1).length
# Multi-statement expressions inside strings
"Processes: $($p = “a*”; get-process $p )"
# Multi statement array expression
@( ls c:; ls d:)
6 ответов
при использовании дженериков, вам необходимо заключить в [..]
:
New-Object Collections.Generic.LinkedList[string]
для некоторых людей это может выглядеть запутанным, потому что он похож на индексацию в массивах.
оператор Param () (в функции, скрипте или scriptblock)
вокруг условия в выражении If (или elseif)
вокруг выражения в операторе switch.
Edit: забыл условие в инструкции while.
Edit2: также $ () для подвыражений (например, в строках).
регулярные выражения, возможно, являются первоклассной конструкцией в Powershell.
если мы собираем полный список, мы можем включить роль, которую квадратные и круглые скобки играют в регулярных выражениях.
пример:
$obj.connectionString = $obj.connectionString -replace '(Data Source)=[^;]+', '=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
скобки наиболее сильно.
предположим, что вы хотите собрать все выходные данные, включая ошибки, некоторого scriptblock и перенаправить на переменную или другие функции для обработки этого... В скобках это простая задача:
$customScript = { "This i as test"; This will be procedure error! }
(. $customScript 2>&1 ) | %{"CAPTURING SCRIPT OUTPUT: "+$_}