これは何百回も質問されていると思いますが、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