1

出力ファイル名をファイル名と同じにし、最後に「_new.log」を追加するこの関数があります。これは私のスクリプトです。それは動作しません。

Function IIS-CleanUp1($file)
{
Get-Content $file | ? { $_ -match $control -and $_ -notmatch '^\#'} | Out-File $file + "_new.log"
}

IIS-CleanUp1 "u_ex130801.log"

次のエラーがスローされます。

Out-File : Cannot validate argument on parameter 'Encoding'. The argument "+" does not belong to the set "unicode,utf7,
utf8,utf32,ascii,bigendianunicode,default,oem" specified by the ValidateSet attribute. Supply an argument that is in th
e set and then try the command again.
At C:\ShiyamTemp\IIS_CCHECK_AUG\IIS.ps1:3 char:79
+ Get-Content $file | ? { $_ -match $control -and $_ -notmatch '^\#'} | Out-File <<<<  $file + "_new.log"
    + CategoryInfo          : InvalidData: (:) [Out-File], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.OutFileCommand

どんな助けでも大歓迎です:

  • T
4

1 に答える 1

3

+の 2 番目の引数としてをとっています。Out-Fileこれは であり、それがEncoding上記のエラーを参照する理由です。次のようなものを試してください:

.. | Out-File $($file + "_new.log")

次のように、ファイル名と拡張子をより適切に処理する必要がある場合があります。

$f = get-item $file
$newpath = join-path $f.directoryname $($f.basename + "_new" + $f.extension) 
get-content $f | ... | out-file $newpath
于 2013-09-05T14:59:04.427 に答える