powershell不包括文件
我在 5.1 版的 powershell 中运行脚本时出现以下错误
下面是我的简单脚本,用于删除超过 180 天的文件,我尝试了一些解决方案,但我没有发现可能是什么错误。 ( 以下错误从葡萄牙语翻译成英语 )
“Out-File:无法验证‘Encoding’参数中的参数。 “files\DeleteLogFile_21_01_2020.log”参数不属于集合“未知;字符串;unicode;bigendianunicode;utf8;utf7;utf32;ascii;默认; oem“由ValidateSet属性指定。提供集合中的参数,然后重试该命令。在行:1个字符:36 + $ Log | Out-File -Append D:\Program files\DeleteLogFile_ $ LogDate.log + ~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CategoryInfo: InvalidData: (:) [Out-File], ParameterBindingValidationException + FullyQualifiedErrorId: ParameterArgumentValidationError, Microsoft .PowerShell.Commands.OutFileCommand“
$logPath = "D:\Program files\NICE Systems\Logs"
$nDays = 10
$startTime = Get-Date
$Extensions = "*.*"
$LogDate = (Get-Date).ToString("dd_MM_yyyy")
$Files = Get-Childitem $LogPath -Include $Extensions -Recurse | Where-Object {$_.LastWriteTime -le (Get-Date).AddDays(-$nDays)}
foreach ($File in $Files)
{
if ($NULL -ne $File )
{
$Log = "`nData e Hora da Deleção: " + $startTime + ". O arquivo " + $File + " foi deletado do sistema."
$Log | Out-File -Append D:\Program files\DeleteLogFile_$LogDate.log
Remove-Item $File.FullName | out-null
}
}
您的日志文件路径没有引号,因此它会在第一个空格处将其截断。您可以使用双引号,变量仍会展开。单引号则不会。
$Log | Out-File -Append "D:\Program files\DeleteLogFile_$LogDate.log"
默认情况下,Windows 也不允许您写入程序文件文件夹,这通常不是好的做法。
在
Out-File
行中,路径中有一个空格,并且没有用引号括起来。在 PowerShell 以及大多数脚本语言中,您必须考虑
位置参数
。任何不在字符串中或后面没有参数/前面没有参数的空格(例如
-FileName C:\FileName.txt
)都将被视为位于位置参数之前。
话虽如此,它试图使用“D:\Program”作为路径,使用“files\DeleteLogFile_$LogDate.log”作为编码类型,这显然是无效的。要解决此问题,只需将路径放在引号中,使其成为字符串,如下所示:
$Log | Out-File -Append "D:\Program files\DeleteLogFile_$LogDate.log"