我已编写以下代码使用ping命令ping多台计算机,我想捕获以下值:
此功能正常工作,但是,如果我尝试将其返回值设为CSV,则无法执行此操作。
# Declaration of the function name and expected parameters
Function Ping-Check{
[cmdletbinding()]
PARAM (
[Parameter(Mandatory=$True,
ValueFromPipeline=$True,
ValueFromPipelineByPropertyName=$True,
HelpMessage='Enter the name of the remote host.')]
[String]$ObjCompName
)
Begin{
# Setup the Process startup info
$pinfo = New-Object System.Diagnostics.ProcessStartInfo
$pinfo.FileName = "ping.exe"
$pinfo.Arguments = " -a " + $ObjCompName + " -n 2"
$pinfo.UseShellExecute = $false
$pinfo.CreateNoWindow = $true
$pinfo.RedirectStandardOutput = $true
$pinfo.RedirectStandardError = $true
}
Process{
$p = New-Object System.Diagnostics.Process
$p.StartInfo = $pinfo
$p.Start() | Out-Null
$p.WaitForExit()
# Redirect the Output
$stdout = $p.StandardOutput.ReadToEnd()
$stderr = $p.StandardError.ReadToEnd()
}
End{
Write-Output "stdout: $stdout"
Write-Output "stderr: $stderr"
Write-Output "exit code: " + $p.ExitCode
}
}
答案 0 :(得分:0)
Test-Connection
中有一个powershell cmdlet,它返回一个包含您可以使用的属性的对象数组。如果您不想坚持尝试,请注意您必须自己解析输出。