Powershell腳本的計劃任務

Powershell腳本的計劃任務

所以我試著按計劃執行 powershell 腳本。每天早上 6 點,每小時重複一次。這是腳本本身:

Get-Content C:\Users\administrator\Desktop\users.txt | ForEach-Object {
    Set-AdUser -Identity $_ -LogOnWorkstations $null
}

現在,當我自己執行該腳本時,該腳本可以完美運行。但似乎腳本在計劃執行時無法正常運作。我的想法是,執行策略在運行腳本之前不斷詢問運行腳本是否安全。如果其他人同意這可能是腳本無法自行啟動的原因,您能否為我提供解決此障礙的解決方案?

答案1

預定的任務在哪裡?在 GPO 上還是在本機上?腳本和它應該運行的機器是否在同一網路中?

試著像這樣安排它(如果你還沒有這樣做):

Programm/Script: PowerShell.exe

Arguments: -ExecutionPolicy Bypass -Command "& 'FilePathToScript.ps1'"

編輯:另外,我不太確定是否必須在要執行腳本的工作站上安裝 AD-PS-Module,因為可能Set-ADUser無法找到該命令。

答案2

執行策略很容易查看,正常登入時可以作為腳本運行嗎?如果沒有,則從管理 powershell 會話執行的「set-executionpolicyremotesigned」將為 hte 伺服器全域設定該原則。

執行排程任務的使用者需要對執行該任務的電腦具有「批次登入」權限。鑑於這是一個 AD 模組,我假設您正在網域控制站上運行它,在這種情況下,您將需要修改預設網域控制器 GPO 以將正確的「批次登入」指派給您的使用者。如果它在具有 RSAT 的工作站或成員伺服器上執行,您需要使用本機安全性原則來指派此權限 (SecPol.MSC)。

執行腳本的使用者需要有權存取 Active Directory,達到可以修改使用者物件的等級。一般來說,如果您登入網域控制器,網域管理員會給您此權利,但如果您建立了服務帳戶,它可能沒有正確的權限。您需要調查所需的權限等級並將其套用至 AD 網域的相關區域。小心這一點。

我敢打賭,這是登入批次正確,它讓我陷入了幾次困境,而且當它阻止你時並不明顯。

如果您需要進一步調查「規劃任務」歷史記錄標籤可以提供協助,事件檢視器也可以。

答案3

執行策略是機器範圍的。如果它以互動方式工作,那麼作為計劃任務運行時似乎不會出現問題。

您在這裡缺少的是資訊。您不會透過兩個命令且沒有日誌記錄來獲得任何資訊。而且您沒有載入 Active Directory 模組,因此這可以解釋一些事情。

以下是如何將 PowerShell 腳本作為排程任務啟動並記錄輸出的範例:

Program/Script: PowerShell  
Arguments:  
-NonInteractive -WindowStyle minimized -c "powershell -c C:\Apps\AppName\SomeScript.ps1 -verbose > C:\Apps\AppName\Logs\SomeScript.log 2>&1"  

以下是載入 Active Directory 模組的範例:

$startTime = Get-Date
$logDateFormat = "yyyy-MM-dd HH:mm:ss"
[console]::WriteLine("{0} Loading Active Directory Module", [datetime]::Now.ToString($logDateFormat))
import-module ActiveDirectory  

Get-Content C:\Users\administrator\Desktop\users.txt | ForEach-Object {  
    [console]::WriteLine("{0} Clearing workstations for user: {1}", [datetime]::Now.ToString($logDateFormat), $_)
    Set-AdUser -Identity $_ -LogOnWorkstations $null
}

$endTime = Get-Date
[console]::WriteLine("{0} Finished.  Time Required: {1}", [datetime]::Now.ToString($logDateFormat), $endTime.Subtract($startTime).ToString())

答案4

它將類似於這個程式/腳本Powershell.exe 參數和路徑

 -ExecutionPolicy Bypass -File "C:\alert.ps1"

在此輸入影像描述

相關內容