新しいファイルにデータを書き込むときに奇妙な問題が発生します。Create-VMwareconf() 関数を使用して解析し、データを返すデータを含むディレクトリ内のファイルのリストがあります。これにより、$t に割り当てたハッシュテーブルのデータが返されます。$t 関数から目的のフォルダーとファイル名を取得しましたが、ループを開始するたびに、最初のフォルダー作成で次のエラーが発生し、2 番目と 3 番目は正常に動作します。興味深いことに、最初のファイルにあるはずのデータが 2 番目のフォルダーに存在します。
スクリプトを再度実行すると、3 つのオブジェクトすべてが生成されますが、ファイル名と一致するファイル内のデータの順序が正しくありません。
次のエラーを停止する方法について、助けをいただければ幸いです。
$e = (Get-Childitem ".\a\*\*.ini")
Set-Location "C:\WindowsRoot\vmwareconfigfiles\"
ForEach($d in $e){
$vmwaredirectory = New-item -type directory -path .\ -name $dd -Force
$vmwarefile = New-Item -type file -path $vmwaredirectory -name $dd -Force
$t = Create-VMwareconf($d)
$dd = $t.Value["0"]
#Write contents to new file
$t | Out-File $vmwarefile
}
最初の実行でエラーを受け取りました。
New-Item : パス「C:\WindowsRoot\vmwareconfigfiles」へのアクセスが拒否されました。At C:\WindowsRoot\parsedisrec.ps1:93 char:15 + $vmwarefile = New-Item -type file -path $vmwaredirectory -name $dd -Force + ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : PermissionDenied: ( C:\WindowsRoot\vmwareconfigfiles:String) [New-Item], UnauthorizedAccessException + FullyQualifiedErrorId : NewItemUnauthorizedAccessError,Microsoft.PowerShell.Commands.NewItemCommand
Out-File : null であるため、引数をパラメーター 'FilePath' にバインドできません。C:\WindowsRoot\parsedisrec.ps1:97 文字:15 + $t | Out-File $vmwarefile + ~~~~~~~~~~~ + CategoryInfo : InvalidData: (:) [Out-File], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.OutFileCommand