从文本文件中删除空白 space

Remove blank space from text file

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

有什么方法可以从文件中删除空格?

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

顶住圣地亚哥的相关替补comment/approach。您的问题的原因可能是:

通常,Out-* cmdlet 会强制对象通过 PowerShell 的显示格式化系统。您可以从一开始就使用 Set-Content 来避免这种情况,但是您不能简单地 select 名称 属性 这样做将创建具有单个 属性 名为“名称”的对象。当 Set-Content 看到它会将 hash/object 语法写入试图表示该对象的文件,如:

@{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