前奏:我已经阅读了所有C#-PowerShell-Process-StartInfo链接,并在我的代码中进行了尝试,没有任何作用。
我正在编写一个小型个人应用程序,以将2012 R2 VM(已关闭)从同一服务器的一个位置复制到另一个位置。我运行应用程序“作为管理员”,使用“ XCOPY”将整个VM文件夹从源复制到目标,删除旧的SYMLINK并创建指向新XML文件的新SYMLINK,从而为VM和子文件夹“每个人”“完全访问权限”-仅为了安全。除了在XML文件中分配新的VHD位置以外,其他所有方法都工作正常。
首先,我尝试编辑XML文件并放置VHD的NEW路径,但这是行不通的-还有一些其他基础内容-不要走那条路。
从控制台应用程序手动执行的操作:如果此命令为“以管理员身份运行”,它将更改VM的VHD位置
A)PowerShell:Set-VMHardDiskDrive -VMName C -Path'O:\ Virtual Machines \ C \ Virtual Hard Disks \ C.vhdx'
B)CommandPromt:PowerShell.exe设置-VMHardDiskDrive -VMName C-路径'O:\ Virtual Machines \ C \ Virtual Hard Disks \ C.vhdx'
C)使用以下命令创建一个PS1文件:Set-VMHardDiskDrive -VMName C -Path'O:\ Virtual Machines \ C \ Virtual Hard Disks \ C.vhdx',从PowerShell中调用PS1文件
D)使用以下命令创建BAT文件:PowerShell.exe Set-VMHardDiskDrive -VMName C -Path'O:\ Virtual Machines \ C \ Virtual Hard Disks \ C.vhdx'
不幸的是,每当我尝试上述A,B,C和D时,我的OWN C#WinForm应用程序(.net 4.6.2)都无法正常工作。对于每个a,b,c,d,我都尝试了ShowNoWindow True / False,使用/不使用Runas,用户名/密码-几乎所有组合-均无效。它不会出错,但VHD位置不会改变。如果我只是自己从cmd / powershell运行命令,则它确实会更改XML中的VHD路径,并且可以在VM Manager应用程序中看到更改。
如果任何人都可以阐明一点,那将很有帮助。谢谢。