В одном из своих скриптов мне нужно было задать массив строк, чтобы потом их по-одной перебирать:
$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 недавно публиковал (посмотреть все)
- C#: Добавить поддержку перезапуска приложения - 21.02.2025
- EVE-Online: Отобразить информацию о соединении и fps - 20.02.2025
- WPF: Отображение прогресса с помощью async/await - 13.02.2025