从文本文件中删除空白 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
我有一个脚本可以将虚拟机的名称从 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