2010-01-04 34 views
9

Bất kỳ ai cũng có thể cho tôi biết cách tạo nhiệm vụ theo lịch sử dụng PowerShell chạy trên hệ thống cục bộ hoặc dịch vụ cục bộ?Powershell - Tạo tác vụ theo lịch để chạy dưới dạng hệ thống/dịch vụ cục bộ

Mọi thứ đều hoạt động tốt ngoại trừ lệnh gọi tới ITaskFolder.RegisterTaskDefinition().

Nếu tôi vượt qua $ null hoặc "", so với các cuộc gọi bom nói tên người dùng hoặc mật khẩu không hợp lệ. Bất kỳ suy nghĩ"

$ Rootfolder.RegisterTaskDefinition ("Test", $ taskdef, 6, "DỊCH VỤ ĐỊA PHƯƠNG", "", 3)

Trả lời

2

Tôi nghĩ rằng bạn sẽ cần phải sử dụng "nt quyền \ LocalService" như tên người dùng

Kindness,

Dan

5

đoạn mã này sẽ sử dụng mô-đun Task Scheduler các 's PowerShellPack để sắp xếp một nhiệm vụ để chạy như HỆ THỐNG ngay:.

New-Task | 
    ForEach-Object { 
     $_.Principal.Id = "NTAuthority\SYSTEM" 
     $_.Principal.RunLevel = 1 
     $_ 
    } | 
    Add-TaskAction -Script { 
     "SystemTask" > C:\myTest.txt 
    } | 
    Add-TaskTrigger -OnRegistration | 
    Register-ScheduledTask SystemTask 
+0

Cảm ơn phương tiện. Tôi sẽ kiểm tra điều này vào ngày mai. – devlife

3

Đối với những người có thể sử dụng PowerShell 3.0 trên Windows 8 hoặc Windows Server 2012, cmdlet mới sẽ cho phép bạn làm điều đó một cách đơn giản khi đăng ký nhiệm vụ theo lịch trình của bạn với cmdlet Register-ScheduledTask và như là đối số -User "System"

Dưới đây là một nhiệm vụ lên kế hoạch tạo ra hoàn toàn với PS, mục đích của nó là để khởi động lại một dịch vụ dịch vụ của tôi, sử dụng tài khoản SYSTEM, 3 phút sau khi hệ thống đã bắt đầu:

$taskname = "Restart My Service" 
$taskdescription = "Restart My Service after startup" 
$action = New-ScheduledTaskAction -Execute 'Powershell.exe' ` 
    -Argument '-NoProfile -WindowStyle Hidden -command "& Restart-Service -displayname \"My Service\""' 
$trigger = New-ScheduledTaskTrigger -AtStartup -RandomDelay (New-TimeSpan -minutes 3) 
$settings = New-ScheduledTaskSettingsSet -ExecutionTimeLimit (New-TimeSpan -Minutes 2) -RestartCount 3 -RestartInterval (New-TimeSpan -Minutes 1) 
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName $taskname -Description $taskdescription -Settings $settings -User "System" 

NB: bạn sẽ cần chạy PowerShell với tư cách quản trị viên cho tập lệnh đó.

+0

Tôi chỉ nhận được: Register-ScheduledTask: Truy cập bị từ chối. Tại dòng: 7 char: 1 + Register-ScheduledTask -Action $ action -Tích hoạt $ trigger -TaskName $ taskname -De ... + ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ + CategoryInfo: PermissionDenied: (PS_ScheduledTask: Root/Microsoft/... S_ScheduledTask) [Đăng ký-ScheduledTask], CimException + FullyQualifiedErrorId: HRESULT 0x80070005, Đăng ký-ScheduledTask –

+1

Không sao .... Bạn phải có lời nhắc lệnh powershell chạy như quản trị viên. –

+0

@ColinMackay Tôi đã cập nhật câu trả lời của mình để thêm một lưu ý nhỏ về việc chạy tập lệnh dưới dạng quản trị viên. Hạnh phúc là nó đã giúp bạn mặc dù và cảm ơn cho bình luận của bạn – Djidiouf

Các vấn đề liên quan