下面是我的代码:
function setParameterb () {
$Name = $args[0]
"Arg1: $Name"
}
Write-Output "### Starte AlertlogRotate ###"
$folders = @('d:', 'e:', 'f:', 'g:', 'h:', 'i:', 'j:', 'k:', 'l:')
foreach ($i in $folders) {
$filenames = Get-ChildItem -Path $i*log -ErrorAction SilentlyContinue -Recurse -Filter alert_*.log | Select-Object FullName
}
setParametersb函数现在只是用于测试,应该只打印结果。之后,我将使用它来压缩太大的日志文件。
我需要将这个powershell对象的结果转换为字符串,以便为每行调用函数。对象看起来像这样:
FullName
--------
D:AREAlogdiagrdbmsareaareatracealert_area.log
D:CONSlogdiagrdbmsconsconstracealert_cons.log
D:DEV01logdiagrdbmsdev01dev01tracealert_dev01.log
G:TEST01LOGdiagrdbmstest01test01tracealert_test01.log
G:TEST02logdiagrdbmstest02test02tracealert_test02.log
我知道,我必须裁剪标题"FullName",行"--------"还有一些空行,但现在这不是我的问题了。我的问题是将对象$filename转移到一个数组中,以便能够从输出的每一行调用函数setParameterb。
尝试了很多其他的东西,但最后这解决了我的问题:
$filenames |ForEach-Object { setParameterb $_.FullName }
试试
function setParameterb () {
param (
[Parameter(Mandatory=$true)]
$names,
)
foreach($name in $names){
"Arg1: $name"
}
}