0

我在任務計劃程序中添加了一個powershell腳本任務,將用戶帳戶設置爲管理員,然後將該選項設置爲「僅在用戶登錄時運行」。計劃的Powershell任務不被執行

當我手動運行此任務時,它會正確執行,但是當我將選項設置爲「運行用戶是否已登錄」時,它會執行但未成功完成任務。

在這兩種情況下均啓用「以最高權限運行」。似乎在發生什麼?如何在不需要登錄的情況下運行任務?

編輯:

腳本將文件從掛載的驅動器複製到本地目錄。當我使用Powershell而不是任務調度程序逐行運行腳本時,它可以正常運行(在普通和提升的Powershell上)。

$currentDate = (Get-Date).AddDays(-1).ToString('yyyyMMdd'); 

gci "C:\some_directory" | where-object { ($_.Name -match $currentDate) -and (! $_.PSIsContainer) } | Copy-Item -Destination "Y:\" -force; 

和任務調度:PowerShell的-Command 「C:\腳本\ my_script.ps1」

+0

你能添加腳本做什麼呢? –

+0

嗨,我已更新我的帖子。 – Bahamut

+0

將日誌記錄語句添加到腳本中,以查看腳本失敗的步驟。使用'Write-Eventlog'來登錄事件日誌或'Add-Content'來登錄文件。 – vonPryz

回答

0

對於錯誤日誌,腳本需要被分裂成更易於管理的塊。一個班輪是討厭的互動會議,但不容易維護。

$currentDate = (Get-Date).AddDays(-1).ToString('yyyyMMdd') 
$log = "c:\temp\logfile.txt" 
$errorCount = $Error.Count 

# Save the source files into an array 
$files = @(gci "C:\some_directory" | ? { 
    ($_.Name -match $currentDate) -and (! $_.PSIsContainer) 
}) 

# Log about source to see if $files is empty for some reason  
Add-Content $log $("Source file count: {0}" -f $files.Count) 
# Check that Y: drive is available 
Add-Content $log $("Testing access to destination: {0}" -f (test-path "y:\")) 

$files | % { 
    # Check the error count for new errors and log the message 
    if($Error.Count -gt $errorCount) { 
    Add-Content $log $Error 
    $errorCount = $Error.Count 
    } 
    Copy-Item $_.FullName -Destination $(join-path "y:" $_.Name) -force 
} 
+0

Copy-Item $ _ -Destination「y:\」-force在腳本的文件夾中搜索文件而不是C:\ some_directory。我是新的PowerShell,所以我如何做一個Copy-Item $目錄+ $ filename -Destination「Y:\」-force – Bahamut

+0

@Bahamut,查看更新的'Copy-Item'命令,它使用FullName和Name propeties。 – vonPryz