Out-File:无法验证参数“Encoding”的参数

Out-File:无法验证参数“Encoding”的参数

我正在编写一个自动化脚本,在其中,我将操作记录到文本文件中。我使用以下内容生成了 $logFile 名称:

$logFile = "\\server\e$\LogPath\log-$(Get-Date -Format 'yyMMdd-HHmmss').log"

然后我使用以下语法写入日志文件:

"Beginning migrations..." | Out-File -FilePath $logFile

这工作正常,我可以在生成的日志文件中看到输出。但是,一旦我设置好一切,我就会进入 foreach 循环来完成实际工作,并记录正在发生的事情,如下所示:

foreach ($system in $systemList) {
  if ($address = Resolve-DnsName -Name $system) {
    "test" | Out-File FilePath $logFile -Append
    "Hostname $system resolves to $($address.IPAddress -join ',')" | Out-File FilePath $logFile -Append
  }
}

此时,脚本开始抱怨文件名字符串编码:

Out-File : Cannot validate argument on parameter 'Encoding'. The argument "\\server\e$\LogPath\log-180719-101053.log" does not belong to the set "unknown,string,unicode,bigendianunicode,utf8,utf7,utf32,ascii,default,oem" specified by the
ValidateSet attribute. Supply an argument that is in the set and then try the command again.
At C:\users\username\SharePoint\Site\Path\script.ps1:133 char:32
+     "test" | Out-File FilePath $logFile -Append
+                                ~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Out-File], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.OutFileCommand**strong text**

谁能告诉我我做错了什么以及如何解决这个问题?

答案1

您缺少-之前的内容FilePath,因此FilePath字符串绑定到第一个位置参数,而$logfile绑定到第二个位置参数,即Encoding

相关内容