gpt4 book ai didi

powershell - Hyper-V脚本无法识别远程虚拟机

转载 作者:行者123 更新时间:2023-12-02 23:55:59 29 4
gpt4 key购买 nike

我正在创建一个PowerShell脚本以作为计划任务运行。目的是在每个星期一在我们的每个虚拟机上创建一个快照。我为每个VM创建了一个简短的脚本。与本地Hyper-V服务器建立远程 session 后,它只需找到我们的虚拟机并创建快照即可。这是测试时的样子:

PS C:\Users\crhoden\Documents\Scripts\HyperV Snapshot Job> .\win7

Name State CPUUsage(%) MemoryAssigned(M) Uptime Status Version
---- ----- ----------- ----------------- ------ ------ -------
Windows 10 Professional Off 0 0 00:00:00 Operating normally 7.0
Windows 7 Professional Pre-Alpha Saved 0 0 00:00:00 Operating normally 7.0
Windows 8.1 Professional Pre-Alpha Off 0 0 00:00:00 Operating normally 7.0
Windows Server 2012 R2 Off 0 0 00:00:00 Operating normally 7.0
Get-VMSnapshot : Hyper-V was unable to find a virtual machine with name "Windows 7 Pro".
At C:\Users\crhoden\Documents\Scripts\HyperV Snapshot Job\Win7.ps1:6 char:1
+ Get-VMSnapshot -VMName $vmname | Where-Object {$_.CreationTime -lt (G ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (:) [Get-VMSnapshot], VirtualizationException
+ FullyQualifiedErrorId : ObjectNotFound,Microsoft.HyperV.PowerShell.Commands.GetVMSnapshot

Checkpoint-VM : Hyper-V was unable to find a virtual machine with name "Windows 7 Pro".
At C:\Users\crhoden\Documents\Scripts\HyperV Snapshot Job\Win7.ps1:7 char:1
+ Checkpoint-VM -Name $vmname -SnapshotName "Weekly Snapshot $((Get-Dat ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (:) [Checkpoint-VM], VirtualizationException
+ FullyQualifiedErrorId : ObjectNotFound,Microsoft.HyperV.PowerShell.Commands.CheckpointVM



[hypervserver]: PS C:\Users\crhoden\Documents> get-vm

Name State CPUUsage(%) MemoryAssigned(M) Uptime Status
---- ----- ----------- ----------------- ------ ------
Windows 10 Pro Running 1 1172 1.00:49:27 Operating normally
Windows 7 Pro Running 0 1024 10:54:07 Operating normally
Windows 8 Pro Running 0 1159 16.22:02:43 Operating normally
Windows 8.1 Pro Running 1 1716 16.21:43:03 Operating normally


[hypervserver]: PS C:\Users\crhoden\Documents>

如您所知,当我手动运行“get-vm”时,远程计算机运行正常。但是当作为脚本运行时,它仍然搜索我的工作站。以下是脚本的内容:
Enter-pssession -computername hypervserver
start-sleep -s 10
cd C:\
$vmname = 'Windows 7 Pro'
get-vm
Get-VMSnapshot -VMName $vmname | Where-Object {$_.CreationTime -lt (Get-Date).AddDays(-15) } | Remove-VMSnapshot
Checkpoint-VM -Name $vmname -SnapshotName "Weekly Snapshot $((Get-Date).toshortdatestring())"

我添加了start-sleep命令作为尝试的修复程序,以为命令在建立连接之前就已触发。没有这种运气。最重要的是,如果我逐行运行此脚本,则效果很好。任何帮助表示赞赏。编辑:完整粘贴整个脚本的内容时,它也很完美。

最佳答案

Enter-PSSession仅适用于交互式 session ,因此可以进行交互式工作或粘贴到 session 中,但不能在本质上非交互式的脚本中使用。

你可以

  • 远程执行脚本或
  • 使用-ComputerNameGet-VMSnapShot参数

  • 正如您自己发现的那样,使用的cmdlet必须与Hyper-Vserver版本匹配。

    关于powershell - Hyper-V脚本无法识别远程虚拟机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45040104/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com