我有一个查询来保留批量IP地址,但无法找到将输出写入txt或csv文件的方法。我尝试使用export-csv和out-file cmdlet但它不起作用。
Foreach ($line in (Import-Csv -header Scope,IP,MAC,Hostname -Path C:\temp\NewDHCP.csv))
{
Add-DhcpServerv4Reservation -ComputerName dhcp server-ScopeId $line.scope -IPAddress $line.IP -ClientId $line.MAC -HostName $line.hostname -Description "Reservation for Printer"| outfile c:\temp\result.txt
}
Result.txt文件为空。
希望看到输出成功完成预订或是否有错误。
由于 萨姆
答案 0 :(得分:1)
将Out-File
移到foreach括号外:
Foreach($line in $stuff) {Do-Stuff $line} | Out-File c:\temp\result.txt
如果将Out-File
留在foreach
循环内,默认行为将在每次迭代时覆盖该文件。
此外,如果删除Out-File
修改强>
迈克是对的,上一个命令不会被删除。 我通常这样做,这确实有效:$stuff | %{Do-Stuff $_} | Out-File c:\temp\result.txt
答案 1 :(得分:1)
大部分只是一个FYI,但你所拥有的应该有效,但可能有两点值得一提:
OutFile
应该只是Out-File
-Append
开关可能会得到你正在寻找的结果。另外-Encoding ASCII
取决于您的输出。我不熟悉cmdlet Add-DhcpServerv4Reservation
,但只要将结果发送到标准输出,这一切都会起作用。
答案 2 :(得分:0)
@Jon很接近,但你不能像这样管道一个foreach循环。
但是你可以将它括在$()中。这看起来很讨厌,但它确实有效。
$(Foreach ($line in (Import-Csv -header Scope,IP,MAC,Hostname -Path C:\temp\NewDHCP.csv))
{
Add-DhcpServerv4Reservation -ComputerName dhcp server-ScopeId $line.scope -IPAddress $line.IP -ClientId $line.MAC -HostName $line.hostname -Description "Reservation for Printer"
} ) | out-file c:\temp\result.txt