这应该很容易,但我总是碰壁。我正在运行一个 Powershell 脚本,它对我的任务进行审核并将结果保存到 CSV。但我总是收到权限错误,我不知道我遗漏了什么。
这是我的代码:
Get-ScheduledTask |
Where State -ne "Disabled" |
Get-ScheduledTaskInfo |
Select TaskName,TaskPath,LastRunTime, LastTaskResult,NextRunTime,NumberofMissedRuns |
Where { $_.TaskName -like "test_*"} |
Export-Csv -NoTypeInformation -Path C:\temp\scheduled_tasks_audit
以下是我收到的回复:
Export-Csv : Access to the path 'C:\temp\scheduled_tasks_audit' is denied.
At C:\temp\scheduled_tasks_audit\example_task_audit.ps1:6 char:5
+ Export-Csv -NoTypeInformation -Path C:\temp\scheduled_tasks_audit
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (:) [Export-Csv], UnauthorizedAccessException
+ FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.ExportCsvCommand
我使用以下命令检查了 Powershell 的运行用户:
[Environment]::UserName
并确保该帐户对目标文件夹具有完全权限,但我仍然收到访问被拒绝错误。
我正在运行 Windows Server 2012 R2 和 Powershell 4.0
答案1
您的路径参数似乎指向您正在运行脚本的文件夹的名称,因此您运行该脚本,它会尝试创建一个名为 C:\temp\scheduled_tasks_audit 的文件,该文件已经作为文件夹存在。如果您运行 Get-Help Export-CSV -Full,您会看到 Path 参数需要文件的名称
-Path [<String>]
Specifies the path to the CSV output file. This parameter is required.
Required? false
Position? 1
Default value none
Accept pipeline input? false
Accept wildcard characters? false
将您的代码更改为
Get-ScheduledTask |
Where State -ne "Disabled" |
Get-ScheduledTaskInfo |
Select TaskName,TaskPath,LastRunTime, LastTaskResult,NextRunTime,NumberofMissedRuns |
Where { $_.TaskName -like "test_*"} |
Export-Csv -NoTypeInformation -Path C:\temp\scheduled_tasks_audit\output.csv
你就可以走了。
答案2
您需要在 -Path 变量的末尾指定一个文件名,如下所示:
C:\temp\scheduled_tasks_audit\audit.csv