Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 将所有输出写入文件_Powershell - Fatal编程技术网

Powershell 将所有输出写入文件

Powershell 将所有输出写入文件,powershell,Powershell,我使用下面的代码来获取具有IP地址的机器列表。它打印出主机名和IP地址。如果主机处于脱机状态,则表示$computername处于脱机状态。代码如下: $csv = Get-Content TEST_MACHINES.csv foreach ($computer in $csv) { try { Test-Connection $computer -Count 1 -ErrorAction Stop | Select Address, IPV4Address

我使用下面的代码来获取具有IP地址的机器列表。它打印出主机名和IP地址。如果主机处于脱机状态,则表示$computername处于脱机状态。代码如下:

$csv = Get-Content TEST_MACHINES.csv

foreach ($computer in $csv)
{
    try
    {
         Test-Connection $computer -Count 1 -ErrorAction Stop | Select Address, IPV4Address 
    }
    catch
    {
         "$computer is offline" 
    }
 }
它工作正常,输出数据如下:

地址ipv4地址

----------

测试机192.168.1.1

试验机2 192.168.1.2

TESTMACHINE3处于脱机状态

然而,再多的欺骗也不允许我将所有这些内容写入一个文件,即使它在控制台中显示为这样。它写入空白文件或仅写入异常


我怎样才能准确地捕获这个输出?

在我编写脚本的风格中,我会使用简单的if..then..else循环。在我看来这是最合乎逻辑的。你试过管道后的文件切换,是吗?。。。我刚刚在localhost和一些随机名称上运行了下面的程序,效果很好

$csv = Get-Content TEST_MACHINES.csv

foreach ($computer in $csv)
{
    if (Test-Connection $computer -Count 1 -Quiet)
    {
    Test-Connection $computer -Count 1 -ErrorAction Stop | Select Address, IPV4Address | Out-file -append "SomeFile.txt"
    }
    else
    {
    "$computer is offline" | Out-File -Append "SomeFile.txt"
    }
 }

在我编写脚本的风格中,我会使用简单的if..then..else循环。在我看来这是最合乎逻辑的。你试过管道后的文件切换,是吗?。。。我刚刚在localhost和一些随机名称上运行了下面的程序,效果很好

$csv = Get-Content TEST_MACHINES.csv

foreach ($computer in $csv)
{
    if (Test-Connection $computer -Count 1 -Quiet)
    {
    Test-Connection $computer -Count 1 -ErrorAction Stop | Select Address, IPV4Address | Out-file -append "SomeFile.txt"
    }
    else
    {
    "$computer is offline" | Out-File -Append "SomeFile.txt"
    }
 }
试试这个:

$csv = Get-Content TEST_MACHINES.csv
'' > foo.log
foreach ($computer in $csv)
{
    try
    {
         Test-Connection $computer -Count 1 -ErrorAction Stop | Select Address, IPV4Address >> foo.log
    }
    catch
    {
         "$computer is offline" >> foo.log
    }
 }
试试这个:

$csv = Get-Content TEST_MACHINES.csv
'' > foo.log
foreach ($computer in $csv)
{
    try
    {
         Test-Connection $computer -Count 1 -ErrorAction Stop | Select Address, IPV4Address >> foo.log
    }
    catch
    {
         "$computer is offline" >> foo.log
    }
 }

您可以使用与正在选择的测试连接字段相同的字段名创建自定义powershell对象,然后将成功和失败导出到CSV。请参见下面的示例:

$csv = Get-Content TEST_MACHINES.csv

foreach ($computer in $csv)
{
    try
    {
        Test-Connection $computer -Count 1 -ErrorAction Stop | Select Address, IPV4Address | Export-Csv -Path .\ConnectionTest.csv -Append
    }
    catch
    {
        $Output = New-Object PSObject -Property @{
            Address = $computer
            IPV4Address = "Offline"
        }

        $Output | Export-Csv -Path .\ConnectionTest.csv -Append
    }
 }

您可以使用与正在选择的测试连接字段相同的字段名创建自定义powershell对象,然后将成功和失败导出到CSV。请参见下面的示例:

$csv = Get-Content TEST_MACHINES.csv

foreach ($computer in $csv)
{
    try
    {
        Test-Connection $computer -Count 1 -ErrorAction Stop | Select Address, IPV4Address | Export-Csv -Path .\ConnectionTest.csv -Append
    }
    catch
    {
        $Output = New-Object PSObject -Property @{
            Address = $computer
            IPV4Address = "Offline"
        }

        $Output | Export-Csv -Path .\ConnectionTest.csv -Append
    }
 }

只写脚本的第一部分。它在控制台中的显示非常完美,但是如果我像./script.ps1>results.txt那样运行脚本,results.txt文件将为空。我如何才能让它将所有内容输出到结果文件?抱歉,此响应有点晚。如上所述,上面的代码不会向standard out生成任何输出,因此使用>results.txt重定向它确实会导致一个空results.txt文件。上述代码产生的所有标准输出都通过管道传输到Export Csv,这将把所有输出放在Export Csv-Path参数中指定的文件中。我希望这能有所帮助。这只是写剧本的第一部分。它在控制台中的显示非常完美,但是如果我像./script.ps1>results.txt那样运行脚本,results.txt文件将为空。我如何才能让它将所有内容输出到结果文件?抱歉,此响应有点晚。如上所述,上面的代码不会向standard out生成任何输出,因此使用>results.txt重定向它确实会导致一个空results.txt文件。上述代码产生的所有标准输出都通过管道传输到Export Csv,这将把所有输出放在Export Csv-Path参数中指定的文件中。我希望这有帮助。对我来说,这会生成一个空的somefile.txt当我发布命令时,我会用一些输入尝试它。。。我把localhost和www.google.com放在一个csv文件中,它给了我PS4.0的输出,你能分享csv文件的前3行吗?或者尝试使用每行正好包含1个条目的普通文件?编辑:奇怪,你从Brand脚本接收到空白文件……对我来说,这会产生一个空的文件。TXT当我发布命令时,我尝试输入一些…我把localhost和www.google.com放在一个csv文件中,它给了我PS4.0的输出,你能分享csv文件的前3行吗?或者尝试使用每行正好包含1个条目的普通文件?编辑:奇怪的是,你收到了白兰地脚本的空白文件,以及…