我有一个包含所有服务器的txt列表。我想要的是以下内容:
此列表中的每个服务器都需要ping通。结果需要保存在文件中。
但是,问题是我不断收到错误消息/输出文件为空。
$ServerListFile = "c:\temp\ServerList.txt"
$ServerList = Get-Content $ServerListFile
$output = foreach ($s in $ServerList) {
if (Test-Connection -ComputerName $s -count 1 -Quiet ) {
"$S is alive"
}
else {
"$S is not responding"
}
}
Out-File -FilePath "C:\temp\ServerStatus.txt"
此代码给出错误:
Test-Connection : Cannot validate argument on parameter 'ComputerName'. The argument is null or empty. Provide an argument that is not null or empty, and then try the co mmand again. At line:5 char:37 + if (Test-Connection -ComputerName $s -count 1 -Quiet ) { "$S is ali ... + ~~ + CategoryInfo : InvalidData: (:) [Test-Connection], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.TestConnectionCommand
两次。
据我了解,变量$s
为空。
但是,此行应填充c:\temp\ServerList.txt
请对此提供一些见解(powershell初学者)
答案 0 :(得分:2)
$serverList
可能包含一个或多个空行,从而导致您看到错误。
您可以在Where-Object
循环声明中使用foreach()
过滤掉空白行和空白行。
$output = foreach ($s in $ServerList |Where-Object {$_.Trim() -ne ''}){
# ...
}
String.Trim()
方法将删除任何开头和结尾的空格字符,因此,如果$_.Trim()
等于空字符串''
,那么我们知道原始字符必须已经是空字符串或所有空格。 -ne
运算符表示 n ot e 质量。