powercli script vs cronjob schtasks

时间:2017-11-20 08:30:01

标签: powercli schtasks.exe schtasks

我有一个简单的PowerShell脚本 file.ps1 ,可以在没有任何问题的情况下从powershell cli运行但是不能从schtasks运行,请你帮我找出我做错的地方?

file.ps1

$vDomain="192.168.1.1"
$vUser="user"
$vPassword="password"


#Connect to vCenter Server
PowerShell -Command "Connect-viserver -Server $vDomain -user $vUser  password $vPassword -WarningAction 0 | out-null"

#write down datastore_space_swindon
PowerShell -Command "Get-Datacenter | Get-Datastore | where {$_.Name -notlike "*ISO*" -and $_.Name -notlike "*template*" } | sort -Property FreeSpaceGB -Descending  > .\Datastore\htdocs\datastore_space_swindon"


# Disconnect from vCenter Server
#write-host "Disconnecting to vCenter Server $vcenter" -foreground green
PowerShell -Command "disconnect-viserver -confirm:$false | out-null"

来自powercli(好):

  

PS C:\ Users \ USER \ Desktop> \ file.ps1       断开与vCenter Server的连接       PS C:\ Users \ USER \ Desktop>

来自schtasks(不行):调度程序任务只是在记事本中打开文件而不运行它。

schtasks /create /tn "Datastore Space" /tr "C:\Users\USER\Desktop\file.ps1 \"" /sc minute /MO 1

我也试过这个命令(不行):

  

PS C:\ Users \ USER \ Desktop> schtasks / create / tn“2”/ tr   “C:\ WINDOWS \ system32 \ windowspowershell \ v1.0 \ powershell.exe”&“   C:\ Users \ USER \ Desktop \ file.ps1“”/ sc minute / MO 1       不允许使用&符号。 &运营商留作将来使用;用“&”将&符号作为字符串传递。       在行:1字符:91

我讨厌Windows Server !!

1 个答案:

答案 0 :(得分:0)

要创建任务,请尝试

schtasks /create /tn "Datastore Space" /tr "powershell.exe & C:\Users\USER\Desktop\file.ps1" /sc minute /mo 1

在最近的操作系统上,New-ScheduledTask是schtasks.exe的一种替代方案。

您还需要将VMware模块(或管理单元,具体取决于版本)加载到Powershell会话中,以便识别PowerCLI命令Connect-VIServer和Get-Datacenter。矫枉过正,但这是我一直在使用的功能:

function Enable-VMwarePowerCLI {
  if (Get-Module -ListAvailable VMware.VimAutomation.Core) 
  {
    Import-Module VMware.VimAutomation.Core # #vmware's module (6.5u2 > version > 6.1) defined its own prompt function and sets this var here "C:\program Files (x86)\VMware\Infrastructure\PowerCLI\Modules\VMware.VimAutomation.Sdk\VMware.VimAutomation.Sdk.ps1"
    if ((Get-Module Vmware.VimAutomation.Core).Version.Revision -lt 6234650)` 
    { $Function:prompt = $originalPromptFunction }
  }
  else {Add-PSSnapin VMware.VimAutomation.Core}
  (get-host).ui.RawUI.ForegroundColor = "Green"
  $host.ui.rawui.WindowTitle='PowerCLI'
}

在您的file.ps1中,我不确定PowerShell -Command的目的是什么。