我有一个简单的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 !!
答案 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
的目的是什么。