有没有办法避免将参数传递给函数,例如“-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
- 这可以做得更优雅吗?我有不同的想法:
创建一个包装函数,它将所需的参数传递给Out-File命令 - 已经尝试过,但是我遇到了使其与管道兼容的问题
将所有输出写入字符串变量,并将所有命令末尾的内容写入文件 - 需要大量内存
创建类似输出 - 编写器 - 对象的东西,它只在初始化时接收一次必要的参数 - 尚未尝试
非常感谢你的帮助!
答案 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