文件外留空

时间:2019-01-03 13:51:02

标签: powershell

我有一个包含所有服务器的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初学者)

1 个答案:

答案 0 :(得分:2)

$serverList可能包含一个或多个空行,从而导致您看到错误。

您可以在Where-Object循环声明中使用foreach()过滤掉空白行和空白行。

$output = foreach ($s in $ServerList |Where-Object {$_.Trim() -ne ''}){
    # ...
}

String.Trim()方法将删除任何开头和结尾的空格字符,因此,如果$_.Trim()等于空字符串'',那么我们知道原始字符必须已经是空字符串或所有空格。 -ne运算符表示 n ot e 质量。