【问题标题】:How to handle the result of a Powershell Object to call a function如何处理 Powershell 对象的结果以调用函数
【发布时间】:2021-08-19 08:16:58
【问题描述】:

这是我的代码:

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:\AREA\log\diag\rdbms\area\area\trace\alert_area.log        
D:\CONS\log\diag\rdbms\cons\cons\trace\alert_cons.log    
D:\DEV01\log\diag\rdbms\dev01\dev01\trace\alert_dev01.log            
G:\TEST01\LOG\diag\rdbms\test01\test01\trace\alert_test01.log        
G:\TEST02\log\diag\rdbms\test02\test02\trace\alert_test02.log

我知道,我必须裁剪标题“FullName”、行“--------”和一些空行,但这不是我现在的问题。 我的问题是将对象 $filenames 转移到一个数组中,以便能够使用输出中的每一行调用函数 setParameterb。

【问题讨论】:

  • $filenames |ForEach-Object { setParameterb $_.FullName }
  • 嗨,马蒂亚斯,非常感谢。这就是我一直在寻找的 :-) 尝试了很多东西,包括转换为字符串和数组,但这个有效!

标签: function powershell object


【解决方案1】:

尝试了很多其他的东西,但最终这解决了我的问题:

$filenames |ForEach-Object { setParameterb $_.FullName } 

【讨论】:

  • 请将此问题标记为已解决,因为您不再需要任何帮助...
【解决方案2】:

尝试类似的东西

function setParameterb () {
param (
    [Parameter(Mandatory=$true)]
    $names,
)
    
foreach($name in $names){
  "Arg1: $name"
}
 
 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    相关资源
    最近更新 更多