从文本文件中删除空格

时间:2021-06-26 19:26:15

标签: powershell hyper-v

我有一个脚本可以将虚拟机的名称从 hyper-v 导入到 txt 文件。 问题是有时名称后面有空格,当我尝试用脚本关闭或打开它们时,由于空格,它找不到那些机器。

有什么办法可以去掉文件中的空格?

$vm = Get-VM | select name | Out-File -FilePath $ListVM 
(Get-Content $ListVM | Select-Object -Skip 3) | ? {$_.trim() -ne ""} | Set-Content $ListVM

1 个答案:

答案 0 :(得分:2)

忍受圣地亚哥的相关替代评论/方法。问题的原因可能是:

通常,Out-* cmdlet 将通过 PowerShell 的显示格式系统强制对象。您可以从一开始就使用 Set-Content 来避免这种情况,但是您不能简单地选择 name 属性,否则会创建具有名为“name”的单个属性的对象。当 Set-Content 看到它会将哈希/对象语法写入尝试表示对象的文件中,例如:

@{Name=MachineName}

为避免这种情况,只需扩展您要存储在文件中的属性:

Get-VM | 
Select-Object -ExpandProperty Name | 
Set-Content -FilePath $ListVM

或者:

(Get-VM).Name | Set-Content -FilePath $ListVM

注意:您将 $VM 分配给输出,但这将导致 $VM 为空。我不确定意图是什么,但如果您希望将结果列表存储在变量中,请添加 -PassThru 参数,如:

$vm = (Get-VM).Name | Set-Content -FilePath $ListVM -PassThru
相关问题