使用-File将PowerShell复制到剪贴板

使用-File将PowerShell复制到剪贴板,powershell,Powershell,我有一个应用程序,可以在调用/执行Powershell的同时发送命令 不幸的是,我需要它发送的部分命令包含带引号的多行文本 因此,我的解决方案需要将该数据存储到变量/文件中,当应用程序发送命令参数时,可以通过powershell引用该变量/文件 我可以将其存储为Copy.PS1 $command = 'Set-Clipboard -Value @" Final text Text also here "@' $bytes = [System.Text.Encoding]::Unicode.Ge

我有一个应用程序,可以在调用/执行Powershell的同时发送命令

不幸的是,我需要它发送的部分命令包含带引号的多行文本

因此,我的解决方案需要将该数据存储到变量/文件中,当应用程序发送命令参数时,可以通过powershell引用该变量/文件

我可以将其存储为Copy.PS1

$command = 'Set-Clipboard -Value @"
Final text
Text also here
"@'

$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
然后我尝试调用Powershell,同时发送参数:

powershell -ExecutionPolicy bypass -EncodedCommand $encodedCommand -File "Copy.PS1"
这个过程不起作用。也没有显示任何错误。它只是不更新剪贴板

但是,当我打开Powershell ISE并在不引用文件的情况下运行它时,一切正常:

$command = 'Set-Clipboard -Value @"
Final text
Text also here
"@'

$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)

powershell -ExecutionPolicy bypass -EncodedCommand $encodedCommand

有人能解释为什么这种行为如此不同吗?

我建议尽量简单。如果您想让一个字符串跨多行运行,并复制到剪贴板,请执行以下操作。。。仅此而已:

$HereString = @'
Some arbitrary
String running
accross multiple
lines
'@
Set-Clipboard -Value $HereString
将其保存到文件“Copy.PS1”并使用以下命令行运行:

powershell -ExecutionPolicy bypass -File Copy.PS1

启动Powershell并提供编码命令和文件?为什么?我期待其中一个,而不是两个。我建议使用here字符串并将其复制到剪贴板。嗯。。。我不太明白。已编码的命令无效,因此变量$command完全转义,因为它可以包含其他命令/HTML。您从何处调用PowerShell CLI(
PowerShell.exe
)?我以为
$encodedCommand
Copy.ps1
文件中,为什么还要通过CLI传递它呢?请澄清您的要求。OP希望对命令进行编码。你的例子完全不同。@WasifHasan你确定OP想要什么吗?;-)我觉得他甚至不知道自己想要什么。让我们等待他的回答。当然,只是想把它拼凑起来。谢谢大家的帮助。我不需要经过编码的信息,只要这有助于将数据发送到Powershell。通常需要对信息进行编码,否则特殊字符可能会有问题。@Mrbobdou确定。你有没有尝试过目前为止你得到的建议?它起作用了吗?其中一个?都是吗?哪一个是你喜欢的?如果没有-什么不起作用?你能至少给出一个状态吗?非常感谢所有人的帮助。你的解决方案Olaf正是我需要做的。我认为我的数据$HereString可以被编码,然后被编码发送,以确保如果碰巧有任何东西因为坏字符而损坏,那么它将是好的,因为它被编码了。这里不需要吗?