2015-01-09 26 views
0

我想我的我的scvmm加载项自动创建我的vm bakcups的快捷方式。 我使用PowerShell的cmdlet在主机上:使powershell不工作.lnk

string command2 = "$shell = New-Object -ComObject WScript.Shell;"; 
foreach (var vm in VMs) 
{ 
    command2 = command2 + string.Format("${1} = shell.CreateShortcut(\"{0}\\{1}\\{2}.lnk\"); ${1}.TargetPath = \"..\\_VMBackup\\{2}\\{1}\"; ${1}.Save();", backupDir, vm.Name, date); 
} 

我这是怎么调用它们:

PowerShellContext.ExecuteScript<Host>(string.Format("Invoke-SCScriptCommand -Executable \"{0}\" -VMHost (Get-SCVMHost -ID \"{1}\") -CommandParameters \"{2}\" -RunAsynchronously -TimeoutSeconds 360000", PowershellPath, VMs.First(), command2), (vms, error) => { if (error != null) { } else { } }); 

东西似乎是错的,因为我将无法正常运行,即使它的工作原理如果我在壳中尝试它。有什么想法?

回答

0

你的 “壳” 变前的String.format忘记一个 “$”

尝试:

command2 = command2 + string.Format("${1} = $shell.CreateShortcut(\"{0}\\{1}\\{2}.lnk\"); ${1}.TargetPath = \"..\\_VMBackup\\{2}\\{1}\"; ${1}.Save();", backupDir, vm.Name, date); 

相反的:

command2 = command2 + string.Format("${1} = shell.CreateShortcut(\"{0}\\{1}\\{2}.lnk\"); ${1}.TargetPath = \"..\\_VMBackup\\{2}\\{1}\"; ${1}.Save();", backupDir, vm.Name, date); 
+0

嗯.. 现在,我得到一个错误消息,说明“(”在行“.. .Save();”后面的一个参数 究竟是什么错误?我尝试了powershell脚本成功完美地在我的桌面上 - 它的工作原理。 为什么我从主机上得到这个错误? – 000000000000000000000

+0

..也就是说“)”在“.150112-0859.önl”;“是一个意外的标记。 – 000000000000000000000