使用Powershell进行.lnk不起作用

本文关键字:不起作用 lnk 进行 Powershell 使用 | 更新日期: 2023-09-27 18:36:58

我希望我的 scvmm 加载项自动创建指向我的虚拟机烘焙杯的快捷方式。我在主机上使用 powershell-cmdlets:

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 { } });

不过似乎有些不对劲,因为我无法正确执行,即使如果我在 shell 中尝试它,它也能正常工作。有什么想法吗?

使用Powershell进行.lnk不起作用

您忘记了字符串中"shell"变量之前的"$"。格式

尝试:

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);