首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从远程服务器检索vhdx路径

从远程服务器检索vhdx路径
EN

Stack Overflow用户
提问于 2019-10-25 12:05:03
回答 1查看 50关注 0票数 1

嗨,我正在尝试从远程主机服务器中检索指定vmname的vhdx。

这里是脚本的一部分

代码语言:javascript
复制
$pth="C:\path\resize-vm"
    $list=gc $pth\list-host.txt
    foreach ($hostserver in $list) {
    $vm=(Invoke-Command -ComputerName $hostserver -ScriptBlock {Get-VM}).VMName
     Write-Host -NoNewline   " here the vm installed in "  $hostserver  `r`n $vm

    $vmname=Read-Host -Prompt "please chose a vmname to resize  "

#the issue in the last line 

    $pathvhd=Invoke-Command -ComputerName $hostserver -ScriptBlock {(Get-VMHardDiskDrive -VMName $vmname).path}

当我启动这个命令$vmname="dc-kozhan"时,我得到了这个错误

无法验证参数“VMName”上的参数。参数为空或空。提供一个非空或空的参数,然后再试一次该命令。+ CategoryInfo : InvalidData:(:) Get-VMHardDiskDrive,ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,PSComputerName +PSComputerName:h 3

但是当我指定dc-kozhan时,它确实有效

代码语言:javascript
复制
    PS C:\Users> Invoke-Command -ComputerName $hostserver -ScriptBlock {(Get-VMHardDiskDrive -VMName "DC-KOZAHAN")
    .path}
V:\DC-KOZAHAN\DC-KOZAHAN-SYSTEM.vhdx
V:\DC-KOZAHAN\DC-KOZAHAN-DIRECTORY.vhdx
V:\DC-KOZAHAN\DC-KOZAHAN-SYSVOL.vhdx
V:\DC-KOZAHAN\DC-KOZAHAN-BACKUP.vhdx

有人知道为什么在变量中指定它时不工作吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-25 12:25:03

您需要了解如何在scriptblock中传递参数。当您试图在scriptblock中传递值时,作用域是不同的。因此,$VMname在第一个语句中变为null。请将您现有的Invoke-command语句更改为以下语句:

代码语言:javascript
复制
Invoke-Command -ComputerName $hostserver -ScriptBlock {Param([string]$vmname)(Get-VMHardDiskDrive -VMName $vmname)} -ArgumentList $vmname

另外,我建议您阅读powershell中的argumentlist,以防invoke-command

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58558199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档