〜3KBの.txtファイルを含む約10個のフォルダを、数秒の遅延でリモートファイル共有にコピーしようとしています。私はこのようなPowershells Copy-Item
を使用しています:リモートファイルサーバー上のコピーアイテムを使用したUnauthorizedAccessException
try
{
Copy-Item -Path $source -Destination $destination -Recurse -ErrorAction Stop
}
catch
{
Write-Error $_.Exception.ToString()
}
スクリプトを実行しているユーザーが読み取った、ファイルサーバーの共有にし、ローカルソースのパーミッションを書き込み、実行します。
最初の実行では、保存先フォルダは空です。すべてうまく動作します。 2回目の実行では、ファイルとフォルダは既に存在します。したがって、上記のコードを実行する前に、私が最初にTest-Path
を使用してチェックを実行した場合にフォルダがこのようなRemove-Item
を使用して、削除を存在:他に
try
{
if(Test-Path -Path $path -ErrorAction Stop)
{
Remove-Item -Recurse -Path $path -ErrorAction Stop
}
}
catch
{
Write-Error $_.Exception.ToString()
}
誰もそれらのファイルを編集しません。しかし、何度もスクリプトを実行すると、私が理解できない理由のために、私は突然取得していますUnauthorizedAccessExceptionコピー中にいくつかのフォルダのエラーが発生しました。正確なエラーは次のとおりです。
System.UnauthorizedAccessException:アクセスが ---> System.ComponentModel.Win32Exception拒否されました:アクセスがMicrosoft.PowerShell.Commands.FileSystemProvider.NativeDirectoryExistsで を否定 システムでの(文字列 パス)。 Management.Automation.SessionStateInternal.IsItemContainer(CmdletProvider providerInstance、文字列のパス、CmdletProviderContextコンテキスト
注意してください:私は、リモート上の古いファイルの削除後、これらのエラーを取得していますfileserverが正常に完了しました。
、。あなたは単純なテキスト生成コマンドで非オブジェクト指向のコードを混在させています。このようなエラー処理には多くの欠点があります。コマンドレットを使用すると、後で使用できるオブジェクトが返されます。 * test-connection *を取得したときに* ping *を使うようなものです。 – masi