如何在具有管理员权限的Windows任务计划程序中设置Powershell脚本?

如何在具有管理员权限的Windows任务计划程序中设置Powershell脚本?,windows,powershell,gcloud,windows-task-scheduler,Windows,Powershell,Gcloud,Windows Task Scheduler,我正在运行下面的PowerShell脚本,该脚本创建一个Tableau备份,并使用Windows任务调度器将其上载到Google云存储 #Tableau Server backup &$tsm maintenance backup -f $Backups_file -d -u $User -p $Password CD "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin" $backups_folder = "D

我正在运行下面的PowerShell脚本,该脚本创建一个Tableau备份,并使用Windows任务调度器将其上载到Google云存储

#Tableau Server backup
&$tsm maintenance backup -f $Backups_file -d -u $User -p $Password


CD "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin"
$backups_folder = "D:\Tableau Server\data\tabsvc\files\backups\" #default backup path for Tableau installation #&$tsm configuration get -k basefilepath.backuprestore
$filename = get-childitem -path $backups_folder -Filter "*.tsbak" | where-object { -not $_.PSIsContainer } | sort-object -Property $_.CreationTime | select-object -last 1 
$fullpath = Join-Path $backups_folder $filename 
gsutil cp $fullpath  gs://my_bucket/backups #upload the latest backup to GCP
我使用命令:

powershell -Command  "start-process -verb runAs "powershell " -argumentlist "E:\Tableau\test.ps1""
这将提示以下消息:

它运行脚本,创建备份并将其成功上载到GCS

现在,我需要使用Windows任务计划程序自动执行此脚本,具体操作如下:

Program/script: powershell
Add arguments (optional): -Command  "start-process -verb runAs "powershell " -argumentlist "E:\Tableau\test.ps1""

我将任务设置为由用户系统以最高权限运行:

在这种情况下,什么也不会发生

我尝试了另一个创建备份的命令,但没有上传到GCS。当我在CMD上使用命令
powershell-executionpolicy bypass-file'E:\Tableau\Tableau Backup\test.ps1
手动运行它时,我得到以下错误:

PS D:\Tableau Server\data\tabsvc\files\backups> powershell -executionpolicy bypass -file 'E:\Tableau\Tableau Backup\test
.ps1'
CommandException: Error opening file "file://D:\Tableau Server\data\tabsvc\files\backups\TableauBackup-2020-06-06.tsbak"
: [Errno 13] Permission denied: u'D:\\Tableau Server\\data\\tabsvc\\files\\backups\\TableauBackup-2020-06-06.tsbak'.
显然,在使用gsutil命令时存在权限错误。当我以管理员身份手动启动cmd时,命令运行平稳

最后一个命令在从非管理员提升的CMD触发时工作正常,但在Windows任务计划程序中安装时不起作用:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -Command  "start-process -verb runAs "powershell " -argumentlist "E:\Tableau\test.ps1""
我还尝试了在任务计划程序上不起作用的命令,当运行到CMD时将手动运行,但也将失败,权限被拒绝,正如我前面列出的命令:

powershell.exe -NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File "E:\Tableau\test.ps1"

如何正确设置myWindows任务计划程序以成功运行此脚本?

这最终对我有效

Program/script: powershell
Add arguments (optional): -ExecutionPolicy Bypass -command "E:\Tableau\test.ps1 2>&1 > E:\Tableau\test_output.txt"
或者在从管理员提升的CMD运行的单个命令中:

powershell -ExecutionPolicy Bypass -command "E:\Tableau\test.ps1 2>&1 > E:\Tableau\test_output.txt"
真正的问题是我在谷歌云虚拟机上运行这个,我需要更改虚拟机的作用域以访问所有API


在我这样做之后,我能够成功地运行脚本。

我也无法启动脚本,在大量搜索之后,没有任何帮助。否-ExecutionPolicy、无命令、无文件以及“”和“”之间没有区别

我只是将我在powershell中运行的命令放在参数选项卡中:./scripts.ps1参数11参数2 xx等等。现在调度器工作了。 程序:Powershell.exe
在:C:/location/of/script/

中启动任务计划程序通常接受
cmd
code和
启动程序
,因此尝试将
程序/脚本
部分设置为powershell(有一个名为powershell的cmd命令),参数设置为
-file Pathtoscript.ps1
,其余参数不需要。将命令放在addarguments部分很重要,或者像您在问题中尝试的那样,它将不起作用。