PowerShell 5.1中Here-String与Split函数使用:拆分后出现空元素
解决PowerShell拆分Here-String后出现空元素的问题
拆分Here-String后数组出现空元素,是因为原字符串包含换行、空格和空行,直接用Split(',')会保留这些无效内容,导致Invoke-Command因无效计算机名报错。以下是几种解决方法:
方法一:使用Split的重载参数过滤空元素
$csv = @" computer1, computer2 "@ # 拆分时移除空字符串 $computers = $csv.Split(',', [System.StringSplitOptions]::RemoveEmptyEntries) # 清理每个元素的前后空白 $computers = $computers | ForEach-Object { $_.Trim() }
方法二:用ConvertFrom-Csv解析CSV格式内容
更适合处理类CSV结构的字符串,避免手动拆分的问题:
$csv = @" computer1, computer2 "@ # 补全CSV表头后解析 $computers = @" ComputerName $csv "@ | ConvertFrom-Csv | Select-Object -ExpandProperty ComputerName # 清理空白 $computers = $computers | ForEach-Object { $_.Trim() }
方法三:正则表达式匹配有效内容
直接提取非空白的计算机名,一步到位:
$csv = @" computer1, computer2 "@ $computers = [regex]::Matches($csv, '\S+') | ForEach-Object { $_.Value }
处理后的$computers数组仅包含有效的计算机名,可直接传给Invoke-Command -ComputerName $computers执行命令。
内容的提问来源于stack exchange,提问作者Rod
相关产品推荐
相关产品推荐

