В одном из своих скриптов мне нужно было задать массив строк, чтобы потом их по-одной перебирать:
$path_Disallowed = @(
'*.js',
'*.jse',
'*:\$Recycle.Bin',
'SKIPPED',
'vssadmin.exe',
'' #string without comma
)
for ($i = 1; $i -le $path_Disallowed.Count; $i++)
{
# Some activity
New-ItemProperty -Path $regPath -Name "ItemData" -PropertyType String -Value $path_Disallowed[$i] -Force | out-null
}
Но в случае массива строк можно было сделать ошибку, если добавить новую строку и при этом забыть поставить в конце ЗАПЯТУЮ!
Чтобы минимизировать шанс ошибки, я решил использовать другой подход.
В PowerShell есть такая замечательная штука, как Here-String.
@"
"Curiouser and curiouser!" cried Alice (she was so much surprised,
that for the moment she quite forgot how to speak good English);
"now I'm opening out like the largest telescope that ever was!
Good-bye, feet!"
"@
Но её нельзя выводить по индексу строки.
Пришлось использовать маленькие костыли:
$path_Disallowed = @"
*.js
*.jse
*:\`$Recycle.Bin
SKIPPED
vssadmin.exe
"@
foreach($line in $path_Disallowed -split '\r?\n')
{
# Some activity
New-ItemProperty -Path $regPath -Name "ItemData" -PropertyType String -Value $line -Force | out-null
}
Здесь мне пришлось использовать символ backtick (` ), чтобы вывести строку $Recycle.Bin, без него $Recycle воспринимается как переменная!
DenTNT недавно публиковал (посмотреть все)
- EVE-Online: Фильтры каналов - 23.11.2024
- Не приходит СМС для авторизации на сайте Госуслуги - 01.11.2024
- VSCode: Найти и удалить элементы xml - 29.10.2024