String 快速创建字符串列表

String 快速创建字符串列表,string,powershell,String,Powershell,考虑下面的例子。您已将服务器名称列表复制到剪贴板 如何快速创建包含字符串列表的PowerShell变量 现在我知道您只是将下面看到的字符串用单引号括起来,但是如何通过编程实现呢 样本: $list = @( One Two Three ) 您可以使用System.Windows.Forms命名空间中的类: Add-Type -Assembly System.Windows.Forms | Out-Null $clp = [Windows.Forms.Clipboard]::GetText()

考虑下面的例子。您已将服务器名称列表复制到剪贴板

如何快速创建包含字符串列表的PowerShell变量

现在我知道您只是将下面看到的字符串用单引号括起来,但是如何通过编程实现呢

样本:

$list = @(
One
Two
Three
)
您可以使用
System.Windows.Forms
命名空间中的类:

Add-Type -Assembly System.Windows.Forms | Out-Null

$clp = [Windows.Forms.Clipboard]::GetText() -split "`r`n"
剪贴板内容作为单个字符串返回,因此需要在换行处拆分它以获得一个行数组

另一个选项是
InternetExplorer.Application
COM对象:

$ie = New-Object -COM 'InternetExplorer.Application'
$ie.Navigate("about:blank")
while ($ie.ReadyState -ne 4) { Start-Sleep -Milliseconds 100 }

$clp = $ie.Document.parentWindow.clipboardData.getData('text') -split "`r`n"

$ie.Quit()
但是,要使其起作用,您必须将
about:blank
放在安全区域中,允许对脚本进行编程剪贴板访问:


@PetSerAl谢谢你的提醒。修正了。我想我有一个更快的方法。ISE
$list=@'
中的第1行,然后根据需要增加行数。最后一行是
@
现在
$list
包含字符串列表。例如,
$list.ToUpper()?更不用说多行字符串仍然是单个字符串,而不是字符串列表了。@AnsgarWiechers我的错,我太匆忙了。我的目标是将多行粘贴到ISE中,并使用这些字符串创建一个变量。例如,粘贴到
1.txt
中,然后粘贴
$var=Get Content 1.txt
,然后粘贴到
foreach($var中的a){“a上的某物”}
@user4317867我发布的代码已经为您提供了
Get Content
将返回的内容,而无需绕道先将其写入文件。或者,您的意思是想要一种将剪贴板文本作为定义字符串列表的变量粘贴到IDE中的方法?这将是一个与您所问的完全不同的问题。转到+1@AnsgarWiechers的答案,因为该方法适用于PowerShell版本。这也是一个有用的答案,Powershell V5可以执行gcb->获取剪贴板,并且还有一个设置剪贴板。