Automation

 View Only
  • 1.  How to schedule the powercli script in task scheduler

    Posted Aug 17, 2017 10:59 AM

    Hello, Could any one suggest me for scheduling datastore script in task scheduler and Is there modification do i need to do in below script. And the script is getting credential and it works, We need to defined the credentials in that script but password should be encrypted. $head = @""@ $body = Get-Datastore |     Select @{N='Datastore';E={$_.Name}},     @{N='CapacityGB';E={[math]::Round($_.CapacityGB,1)}},     @{N='FreeSpaceGB';E={[math]::Round($_.FreeSpaceGB,1)}},     @{N='UsedPercent';E={[math]::Round(($_.CapacityGB - $_.FreeSpaceGB)/$_.CapacityGB*100,1)}},     @{N='FreePercent';E={         $p = [math]::Round((1 - ($_.CapacityGB - $_.FreeSpaceGB)/$_.CapacityGB)*100,1)         if($p -lt 10){"#br#$($p)"}         elseif($p -lt 30){"#by#$($p)"}         else{"#bg#$($p)"}     }} |     Sort-Object -Property UsedPercent -Descending |     ConvertTo-Html -Head $head $body = $body.Replace('>#br#',' bgcolor="red">').Replace('>#by#',' bgcolor="yellow">').Replace('>#bg#',' bgcolor="green">') $sMail = @{     To = 'vijay.venkatachalam@test.com'     From = 'vijay.venkatachalam@test.com'     Subject = 'Datastore Report'     BodyAsHtml = $true     Body = $body | Out-String     SmtpServer = 'owa.test.com' } Send-MailMessage @sMail Thanks in advanse!! Vijay



  • 2.  RE: How to schedule the powercli script in task scheduler

    Posted Aug 17, 2017 11:24 AM

    You use the New-CredentialStoreItem to enter the credentials under which the scheduled script will connect to the vCenter.

    This will allow you to connect to the vCenter without providing credentials.

    Note that you need to do this with the same account under which you will run the Scheduled Task!

    The script itself doesn't need a lot of changes.

    This should do

    Get-Module -Name VMware* -ListAvailable | Import-Module

    Connect-VIServer -Server 'YourvCenter'

    $head = @"

    "@

    $body = Get-Datastore |

        Select @{N='Datastore';E={$_.Name}},

             @{N='CapacityGB';E={[math]::Round($_.CapacityGB,1)}},

             @{N='FreeSpaceGB';E={[math]::Round($_.FreeSpaceGB,1)}},

             @{N='UsedPercent';E={[math]::Round(($_.CapacityGB - $_.FreeSpaceGB)/$_.CapacityGB*100,1)}},

             @{N='FreePercent';E={

                 $p = [math]::Round((1 - ($_.CapacityGB - $_.FreeSpaceGB)/$_.CapacityGB)*100,1)

                 if($p -lt 10){"#br#$($p)"}

                 elseif($p -lt 30){"#by#$($p)"}

                 else{"#bg#$($p)"}

             }} |

         Sort-Object -Property UsedPercent -Descending |

         ConvertTo-Html -Head $head

    $body = $body.Replace('>#br#',' bgcolor="red">').Replace('>#by#',' bgcolor="yellow">').Replace('>#bg#',' bgcolor="green">')

    $sMail = @{

         To = 'vijay.venkatachalam@test.com'

         From = 'vijay.venkatachalam@test.com'

         Subject = 'Datastore Report'

         BodyAsHtml = $true

         Body = $body | Out-String    

         SmtpServer = 'owa.test.com'

    }

    Send-MailMessage @sMail

    Disconnect-VIServer -Server 'YourvCenter' -Confirm:$false

    And finally you create the Scheduled Task.

    You can do this through the Task Scheduler GUI, or via a script.

    $script = 'C:\yourscript.ps1'

    $user = 'your_account'

    $pswd = 'your_password'

    $date = Get-Date (([datetime](Get-Date -Format g)).AddDays($_))-Format d

    $sAction = @{

      Execute = "powershell.exe"

      Argument = "-NonInteractive -NoLogo -NoProfile -ExecutionPolicy Bypass $($script)"

    }

    $Action = New-ScheduledTaskAction @sAction

    $interval = New-TimeSpan -Days 1

    $repetetion_timespan = New-TimeSpan -Days 1

    $sTrigger = @{

      Once = $true

      At = "$($date) 9:00am"

      RepetitionInterval = $interval

      RepetitionDuration = $repetetion_timespan

    }

    $Trigger = New-JobTrigger @sTrigger

    $sTask = @{

      TaskName = 'Daily Datastore Report'

      User = $user

      Password = $pswd

      RunLevel = 'Highest'

      Action = $Action

      Trigger = $Trigger

    }

    Register-ScheduledTask @sTask



  • 3.  RE: How to schedule the powercli script in task scheduler

    Posted Aug 17, 2017 12:31 PM

    Hi LucD, I try to schedule the script in GUI mode but script was keep on running state and there is no output. The last run result is (0x1). I don't have idea about schedule task  via script. Action tab: Program - C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe Add argument - -NonInteractive -NoLogo -NoProfile -ExecutionPolicy Bypass $(E:\Scripts\Datastore report5.ps1) Could you please guide me where i did the mistake. Thank!



  • 4.  RE: How to schedule the powercli script in task scheduler

    Posted Aug 17, 2017 12:41 PM

    Can you show a screenshot of the Task Scheduler forms?



  • 5.  RE: How to schedule the powercli script in task scheduler

    Posted Aug 25, 2017 02:01 PM

    Hi LucD Sorry for delay response, I have already sent you screenshot personally. Now i run the script in task scheduler,  it doesn't shows me error in last run rather than It shows me "The operation is completed successfully .(0x0)" But i didn't get output to my email address. could you please guide me to complete this task. Thanks in advance!!



  • 6.  RE: How to schedule the powercli script in task scheduler

    Posted Aug 25, 2017 02:22 PM

    Hi ,

    Could you please check below link , it should work to schedule scripts

    vSphere Advanced Technics: SCHEDULE A TASK IN POWERCLI



  • 7.  RE: How to schedule the powercli script in task scheduler

    Posted Aug 25, 2017 03:38 PM

    Hi Raj, thank you for sharing, But it doesn't work, i already try it. FYI, I am using VMware Powercli 6.5 release 1. Before adding add-pssnapin VMware.VimAutomation.Core,  i didn't get below error while running the script manually in powershell but when i add the line i got below error, add-pssnapin : The Windows PowerShell snap-in 'VMware.VimAutomation.Core' is not installed on this computer. At E:\Scripts\Datastore report5.ps1:1 char:1 + add-pssnapin VMware.VimAutomation.Core + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     + CategoryInfo          : InvalidArgument: (VMware.VimAutomation.Core:String) [Add-PSSnapin], PSArgumentException     + FullyQualifiedErrorId : AddPSSnapInRead,Microsoft.PowerShell.Commands.AddPSSnapinCommand



  • 8.  RE: How to schedule the powercli script in task scheduler

    Posted Aug 25, 2017 04:17 PM

    Where did you send that screenshot?
    In my VMTN mailbox?

    In any case, can you resend it?

    And if you are on PowerCLI 6.5R1 there are no more PSSnapin, hence the error.