Powershell パスへのアクセスが拒否されました

Powershell パスへのアクセスが拒否されました

これは何百回も質問されていると思いますが、PowerShell でこの簡単なコマンドを実行できない理由がわかりません。

PS> new-item -path c:\users\me\desktop\testfolder -name (get-date).txt -value (get-date).toString() -itemtype file

次のエラーが常に発生します:

New-Item : Access to the path 'C:\Users\Me\desktop\testfolder' is denied.

... PermissionDenied: ... UnauthorizedAccessException
... FullyQualifiedErrorId: NewItemUnauthorizedAccessError,Microsoft.PowerShell...

ともかく、

以下のことをすべて試しましたが、効果はありませんでした。

  • PowerShell を管理者として実行する (つまり、「管理者として実行」)
  • Set-ExecutionPolicy リモート署名
  • フォルダの「所有権を取得」
  • フォルダのセキュリティ設定を「everyone > フルコントロール」に設定します
  • -力

次は一体どこで答えを探せばいいのでしょうか? 私はローカル マシンの管理者です。くだらないテキスト ファイルを作成するという簡単なことを行う権限がないのは、非常にイライラします...

髪の毛を抜く...

答え1

によって返される DateTime 文字列形式には、Get-Dateファイル名に使用できない文字が含まれています。次のようにしてみてください。

new-item -path .\desktop\testfolder -name "$(get-date -format 'yyyyMMdd_HHmm').txt" `
        -value (get-date).toString() -itemtype file

ニーズに合わせてフォーマット文字列を変更するだけです。

答え2

問題は、-name (get-date).txtが と同じではないことです(get-date) + ".txt"。前者は、返されたSystem.DateTimeオブジェクトの「txt」という名前のプロパティを読み取ろうとしますが、後者は日付の文字列表現に文字列「.txt」を追加します。前者では、プロパティとしての .txt は$null存在​​しないため、 を返します。つまり、new-item -path .\desktop\folderフォルダーが既に存在するためアクセスが拒否される を実際に実行しようとしていることになります。

答え3

読み取り専用フラグが原因でこのエラーも発生しました。これは、次の方法で修正できます。

Set-ItemProperty -Path c:\users\me\desktop\testfolder -Name IsReadOnly -Value $true

関連情報