2015-01-09 2 views
0

Я хочу, чтобы моя моя надстройка scvmm создавала ярлыки для моих vm bakcups автоматически. Я использую Powershell-командлеты на хосте:создание .lnk с powershell не работает

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

Try:

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

Hm .. Теперь я получаю сообщение об ошибке, что аргумент после «(« в строке ».. .Save();» ожидался. Что именно не так? Я пробовал сценарий powershell sucece ssfully на моем рабочем столе - это работает. Почему я получаю эту ошибку от хоста? – 000000000000000000000

+0

.. также говорит «)« на »..150112-0859.önl); является неожиданным токеном. – 000000000000000000000

 Смежные вопросы

  • Нет связанных вопросов^_^