Powershell - 避免重复Out-File

时间:2015-10-28 11:45:44

标签: powershell arguments

有没有办法避免将参数传递给函数,例如“-Append $ outfile”到Out-File,每次?我有一个从系统收集数据的脚本,如:

... collect OS information ... | Out-File -Append $output
... collect local users ... | Out-File -Append $output
... collect logfile permissions ... | Out-File -Append $output
etc. 

管道中的最后一个命令大部分时间是Out-File -Append $output - 这可以做得更优雅吗?我有不同的想法:

  1. 创建一个包装函数,它将所需的参数传递给Out-File命令 - 已经尝试过,但是我遇到了使其与管道兼容的问题

  2. 将所有输出写入字符串变量,并将所有命令末尾的内容写入文件 - 需要大量内存

  3. 创建类似输出 - 编写器 - 对象的东西,它只在初始化时接收一次必要的参数 - 尚未尝试

  4. 非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

你似乎没有使用很多论据来提供非常有用的建议,但是建议使用splatting。我添加了一些参数,以说明代码在保持功能的同时显示的干净程度。

$options = @{
    Append = $True
    FilePath = $output
    Encoding = "Unicode"
    Width = 400
}

构建一个hastable of options和splat cmdlet及其

... collect OS information ... | Out-File  @options
... collect local users ... | Out-File  @options
... collect logfile permissions ... | Out-File @options

除此之外,一个包装函数(过滤器,如果它更容易),你建议将是另一种选择。 Look at the options in this answer。特别是filter