Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 注册计划任务在工作站上完全有效_Powershell_Powershell 5.0 - Fatal编程技术网

Powershell 注册计划任务在工作站上完全有效

Powershell 注册计划任务在工作站上完全有效,powershell,powershell-5.0,Powershell,Powershell 5.0,在测试期间,这个脚本在我的工作站上运行得非常好。它从CSV中获取用户名disable date time和enable date and time,然后创建一个计划任务,使帐户在特定锁定时间内过期。然后,它将在启用过程中解锁帐户。我已经在服务器上安装了Windows 2012 R2,现在收到一个错误 我已经运行了更新模块-force,还尝试了PowerShell 7 # Set RUN AS user and Password if($credentials -eq $null){ $c

在测试期间,这个脚本在我的工作站上运行得非常好。它从CSV中获取用户名disable date time和enable date and time,然后创建一个计划任务,使帐户在特定锁定时间内过期。然后,它将在启用过程中解锁帐户。我已经在服务器上安装了Windows 2012 R2,现在收到一个错误

我已经运行了更新模块-force,还尝试了PowerShell 7

# Set RUN AS user and Password
if($credentials -eq $null){
    $credentials = Get-Credential 
}



# Set Args
$scriptDefaultArgs = '-executionpolicy bypass'
$csvFilePath = "C:\SCHEDULED_TASKS\VacationUsers\vacation.csv"

# static Scheduled Task settings
$STSettings = New-ScheduledTaskSettingsSet -RunOnlyIfNetworkAvailable -StartWhenAvailable 
$STSettings.DeleteExpiredTaskAfter = "PT0S"
$STPrinciple = New-ScheduledTaskPrincipal -LogonType S4U -RunLevel Highest -UserId $credentials.UserName 

# Import CSV 
$accounts = Import-Csv $csvFilePath 





foreach ($account in $accounts){
    if($account.entered -eq "completed" -or !$account ){continue}
    if((get-date $account.DisableDate) -lt (get-date)){$account.DisableDate = (get-date).AddMinutes(1).ToString("MM/dd/yyyy HH:mm:ss")}
    if((get-date $account.EnableDate) -lt (get-date)){$account.EnableDate = (get-date).AddMinutes(2).ToString("MM/dd/yyyy HH:mm:ss")}
    # Created Scheduled Task #
   
    # Enable User Task
    $STactionEnableUser = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "$scriptDefaultArgs -command `"clear-adaccountexpiration -identity $($account.user)`"" 
    $STEnableTrigger = New-ScheduledTaskTrigger  -Once -At $account.enableDate  
    $STEnableTrigger.EndBoundary = (get-date $account.EnableDate).AddMinutes(1).ToString("yyyy-MM-dd'T'HH:mm:ss")
    $STDef = New-ScheduledTask  -Action $STactionEnableUser -Trigger $STEnabletrigger -Settings $STSettings -Description "enable $($account.user)"
    $task = Register-ScheduledTask -TaskName "Enable $($account.user)" -InputObject $STDef -User $credentials.UserName -Password $credentials.GetNetworkCredential().Password
    
    
    $STactionDisableUser = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "$scriptDefaultArgs -command set-adaccountexpiration -identity $($account.user) -datetime $($account.disableDate)`""
    $STDisableTrigger = New-ScheduledTaskTrigger -Once -At $account.disableDate
    $STDisableTrigger.EndBoundary = (get-date $account.DisableDate).AddMinutes(1).ToString("yyyy-MM-dd'T'HH:mm:ss") 
    $STDef = New-ScheduledTask  -Action $STactionDisableUser -Trigger $STDisabletrigger -Settings $STSettings -Description "disable $($account.user)"
    $task = Register-ScheduledTask -TaskName "Disable $($account.user)" -InputObject $STDef -User $credentials.UserName -Password $credentials.GetNetworkCredential().Password

    $account.entered = "Completed"
    
}

$accounts | Export-Csv -Path $csvFilePath -Force -NoTypeInformation
错误

在此对象上找不到属性“EndBoundary”。验证该属性是否存在并可以设置。
第33行字符:5
+$STEnableTrigger.EndBoundary=(获取日期$account.EnableDate)。添加。。。
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+CategoryInfo:InvalidOperation:(:)[],运行时异常
+FullyQualifiedErrorId:PropertyAsignmentException
Register ScheduledTask:任务XML缺少必需的元素或属性。
(43,4):端边界:
第35行字符:13
+$task=注册ScheduledTask-TaskName“启用$($account.user)。。。
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+CategoryInfo:NotSpecified:(PS_ScheduledTask:Root/Microsoft/…S_ScheduledTask)[注册
-ScheduledTask]异常
+FullyQualifiedErrorId:HRESULT 0x80041319,注册ScheduledTask
在此对象上找不到属性“EndBoundary”。请验证该属性是否存在并可以设置。
第40行字符:5
+$STDisableTrigger.EndBoundary=(获取日期$account.DisableDate)。A。。。
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+CategoryInfo:InvalidOperation:(:)[],运行时异常
+FullyQualifiedErrorId:PropertyAsignmentException
Register ScheduledTask:任务XML缺少必需的元素或属性。
(43,4):端边界:
第42行字符:13
+$task=注册ScheduledTask-TaskName“禁用$($account.user。。。
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+CategoryInfo:NotSpecified:(PS_ScheduledTask:Root/Microsoft/…S_ScheduledTask)[注册
-ScheduledTask]异常
+FullyQualifiedErrorId:HRESULT 0x80041319,注册ScheduledTask

就我个人而言,我从来没有真正喜欢PowerShell cmdlet用于调度任务操作,更喜欢将ComObject用于调度程序。其中一些方法有点难以理解,但查看方法重载并使用
Get Member
cmdlet查找对象类型,然后在internet上搜索这些类型以查找docume在我处理事情的过程中,Nitation通常会处理出现的问题。下面是一个你正在做的示例:

$Scheduler = New-Object -ComObject Schedule.Service
$Scheduler.Connect()
$RootFolder = $Scheduler.GetFolder("\")

#Define Enable User Task (general settings, user specific settings happen in loop)
$Task = $Scheduler.NewTask(0)
$Task.RegistrationInfo.Author = [Security.Principal.WindowsIdentity]::GetCurrent().Name
$Task.Settings.Enabled = $true
$Task.Settings.Hidden = $false
$Task.Settings.RunOnlyIfNetworkAvailable = $true
$Task.Settings.StartWhenAvailable = $true
$Task.Settings.DeleteExpiredTaskAfter = 'PT0S'
$Task.Principal.RunLevel = 1
$Action = $Task.Actions.Create(0)
$Action.Path = 'powershell.exe'
$Trigger = $Task.Triggers.Create(1)

foreach ($account in $accounts){
    if($account.entered -eq "completed" -or !$account ){continue}
    if((get-date $account.DisableDate) -lt (get-date)){$account.DisableDate = (get-date).AddMinutes(1).ToString("MM/dd/yyyy HH:mm:ss")}
    if((get-date $account.EnableDate) -lt (get-date)){$account.EnableDate = (get-date).AddMinutes(2).ToString("MM/dd/yyyy HH:mm:ss")}
    # Created Scheduled Task #
   
    # Enable User Task
    $Task.RegistrationInfo.Description = "enable $($account.user)"
    $Action.Arguments = "$scriptDefaultArgs -command `"clear-adaccountexpiration -identity $($account.user)`""
    $Trigger.StartBoundary = $account.enableDate  
    $Trigger.EndBoundary = (get-date $account.EnableDate).AddMinutes(1).ToString("yyyy-MM-dd'T'HH:mm:ss")
    $RootFolder.RegisterTaskDefinition("Enable $($account.user)",$Task,6,$credentials.UserName,$credentials.GetNetworkCredential().Password,1)

    
    $Task.RegistrationInfo.Description = "Disable $($account.user)"
    $Action.Arguments = "$scriptDefaultArgs -command set-adaccountexpiration -identity $($account.user) -datetime $($account.disableDate)`""
    $Trigger.StartBoundary = $account.disableDate
    $Trigger.EndBoundary = (get-date $account.DisableDate).AddMinutes(1).ToString("yyyy-MM-dd'T'HH:mm:ss") 
    $RootFolder.RegisterTaskDefinition("Disable $($account.user)",$Task,6,$credentials.UserName,$credentials.GetNetworkCredential().Password,1)

    $account.entered = "Completed"
    
}