Как определить подпрограмму в PowerShell
В С# a RemoveAllFilesByExtenstion
подпрограмма может быть, например, расширена следующим образом:
void RemoveAllFilesByExtenstion(string targetFolderPath, string ext)
{
...
}
и используется как:
RemoveAllFilesByExtenstion("C:\Logs\", ".log");
Как я могу defne и вызвать подпрограмму с той же сигнатурой из файла PowerShell script (ps1)?
Ответы
Ответ 1
Довольно просто преобразовать это в PowerShell:
function RemoveAllFilesByExtenstion([string]$targetFolderPath, [string]$ext)
{
...
}
Но вызов должен использовать разделенные пространством аргументы, но не требует кавычек, если в строке не указан специальный символ PowerShell:
RemoveAllFilesByExtenstion C:\Logs\ .log
OTOH, если функция указывает на то, что вы хотите сделать, это легко сделать в PowerShell:
Get-ChildItem $targetFolderPath -r -filter $ext | Remove-Item
Ответ 2
В PowerShell нет подпрограмм, вам нужна функция:
function RemoveAllFilesByExtenstion
{
param(
[string]$TargetFolderPath,
[string]$ext
)
... code...
}
Чтобы вызвать его:
RemoveAllFilesByExtenstion -TargetFolderPath C:\Logs -Ext *.log
Если вы не используете функцию для возврата какого-либо значения, убедитесь, что вы захватили любые результаты, возвращаемые командами внутри функции.
Ответ 3
Семантика всем. Давайте назовем это Whirlygig! или Doom-a-flotch! кусок кода вызывает базовый ввод и базовый вывод