【问题标题】:Powershell script to create scheduled tasks from csv file用于从 csv 文件创建计划任务的 Powershell 脚本
【发布时间】:2011-02-26 16:29:19
【问题描述】:

我想使用 Powershell 在服务器上创建几个计划任务。我已经从现有计划的

我已经加载了 csv 文件,将它传送到一个选择中,并从 csv 文件中检索了我需要的所有信息。但是我不确定如何将这些结果传递给外部非 powershell 命令。

Import-Csv .\listoftasks.csv | Select 'Run As User','RP','Scheduled Type','TaskName','Task To Run','Repeat: Every','Repeat: Until: Duration' 

我想做的是这样的:

Import-Csv .\listoftasks.csv | Select 'Run As User','RP','Scheduled Type','TaskName','Task To Run','Repeat: Every','Repeat: Until: Duration' | schtasks /create /RU ....

【问题讨论】:

    标签: powershell scheduled-tasks


    【解决方案1】:

    尝试使用ForEach-Object

    Import-Csv .\listoftasks.csv | 
    Select-Object 'Run As User','RP','Scheduled Type','TaskName','Task To Run','Repeat: Every','Repeat: Until: Duration' | 
    ForEach-Object { Invoke-Expression "schtasks /create /RU ..." }
    

    另外,请注意名称中包含空格的属性。如果名称包含空格,您可以像这样访问它们:

    $_.'Run As User'
    

    【讨论】:

      【解决方案2】:

      发布我收到的建议的最终结果,希望其他人也可以使用它。 :)

      #Added a column to the csv with heading RP - contains the password if you have to use
      #hardcoded account \ passwords and cant use the system accounts
      $ListOfTasks = Import-Csv ListOfTasksExport.csv |   Select 
                                                         'Run As User' `
                                                      ,'RP' `
                                                      ,'Scheduled Type' `
                                                      ,'TaskName' `
                                                      ,'Task To Run' `
                                                      ,'Repeat: Every' `
                                                      ,'Repeat: Until: Duration' `
                                                      ,'Start Time' `
                                                      , 'HostName' 
      
      ForEach($item in $ListOfTasks)
      {
          $dateOfItem = [DateTime]::Parse($item.'Start Time')
          $stringOfDateOfItem = $dateOfItem.ToString("HH:mm")
          $tr = $item.'Task To Run'
          $user = $item.'Run as User'
          $UserPassword = $item.'RP'
          $scheduledType = $item.'Scheduled Type'
          $taskName = $item.'TaskName'
          $taskToRun = $item.'Task To Run'
          $hostName = $item.'HostName'
          $serviceAccount = 'domain\serviceAccount'
          $serviceAccountPassword = 'HardCodedPassword'
      
         #Debugging
         #Write-Host -BackgroundColor yellow $taskName
         #Write-Host $stringOfDateOfItem
         #Write-Host $tr
         #Write-Host $user
         #Write-Host $UserPassword
         #Write-Host $scheduledType
         #Write-Host $taskName
         #Write-Host $taskToRun
      
        #Checks if the user is nt authority, it does not put the password field in
      if($env:computername.Contains($hostName))
      {
          if($user.Contains("NT AUTHORITY"))
          {
              schtasks /create /RU $user /SC $scheduledType /TN $taskName /TR $taskToRun /ST $stringOfDateOfItem /F 
          }
          else
          {
              schtasks /create /RU $user /RP $UserPassword /SC $scheduledType /TN $taskName /TR $taskToRun /ST $stringOfDateOfItem /F 
          }
      }
      else
      {
          if($user.Contains("NT AUTHORITY"))
          {
              schtasks /create /s $hostName /U $serviceAccount /P $serviceAccountPassword /RU $user /SC $scheduledType /TN $taskName /TR $taskToRun /ST $stringOfDateOfItem /F 
          }
          else
          {
              schtasks /create /s $hostName /U $serviceAccount /P $serviceAccountPassword /RU $user /RP $UserPassword /SC $scheduledType /TN $taskName /TR $taskToRun /ST $stringOfDateOfItem /F 
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-25
        • 1970-01-01
        • 1970-01-01
        • 2019-05-02
        • 2020-08-07
        相关资源
        最近更新 更多