簡體   English   中英

如何在具有管理員權限的 Windows 任務計划程序中設置 Powershell 腳本?

[英]How to setup a Powershell Script in Windows Task Scheduler with admin permissions?

我正在運行以下 PowerShell 腳本,該腳本創建 Tableau 備份並使用 Windows 任務計划程序將其上傳到 Google Cloud Storage。

#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""

命令設置

我將任務設置為由用戶 SYSTEM 以最高權限運行:

用戶和權限

在這種情況下,什么都不會發生。

我嘗試了另一個創建備份但不上傳到 GCS 的命令。 當我使用命令powershell -executionpolicy bypass -file 'E:\Tableau\Tableau Backup\test.ps1在 CMD 上手動運行它時,我收到以下錯誤:

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"

真正的問題是我在 Google Cloud VM 上運行它,我需要更改 VM 的范圍才能訪問所有 API。

在我這樣做之后,我能夠成功運行腳本。

經過大量搜索后,我也無法啟動腳本。 沒有 -ExecutionPolicy,沒有命令,沒有文件,“”和“”之間沒有區別。

我只是將我在 powershell 中運行的命令放在參數選項卡中:./scripts.ps1 parameter1 11 parameter2 xx 等等。 現在調度程序工作。 程序:Powershell.exe 開始於:C:/location/of/script/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM