PowerShell 错误:命令行太长

4
我正在编写一个PowerShell脚本,需要将字符串作为参数传递。该字符串是一组以逗号分隔的用户名列表。当用户数量超过100时,我会遇到错误。但是,如果该字符串中的用户数小于100,则不会出现错误。我已经尝试使用数组来传递此值,但没有成功。这个参数的字符限制是什么?我应该如何解决这个问题?我在ServiceNow Run PowerShell脚本中使用它。该参数的值由ServiceNow使用逗号分隔的值传递。
Param(
    [string]$itil_users_a = "A.Syafiq,Aaron.Brown,Aaron.Reynnie,Abd.Jalil,Abdu.Hijazi,Abdul.Onny,Abdullah.Ammar,Abel.Muataco"    
    )

你有一个尾随的方括号。这是打字错误吗?你从哪里调用这个脚本? - Matt
我问这个问题是因为这可能不是PowerShell的限制,而是cmd.exe的限制。此外,您可以考虑使用文本文件输入来处理类似的内容。 - Matt
是的,那是一个笔误,我已经更正了。我正在 ServiceNow 中使用它来运行 PowerShell 脚本。该参数的值由 ServiceNow 使用逗号分隔的值传递。 - deshergan
命令行长度通常由调用者确定。你是如何启动脚本的?批处理文件的限制比PowerShell脚本短。 - Ryan Bemrose
你有那个错误文本的例子吗? - Booga Roo
相关:https://dev59.com/tbvoa4cB1Zd3GeqPvwdz - Gabriel Devillers
2个回答

10

是的,这正是我所经历的。我只是认为对于Power Shell可能不是这种情况。感谢您的回答。 - deshergan
11
仍然要面对这样的限制,实在是Windows 10的遗憾。 - Nabil
3
有没有绕过这个问题的想法,而不仅仅是分解这个命令? - niico
有没有其他人尝试在Windows终端中使用PowerShell运行较长的命令?我今天早些时候尝试了一个超过9000个字符的命令,据我回忆,在那里运行成功了。不过,如果Windows终端找到了绕过该限制的方法,那就有点奇怪了,所以也许我记错了。 - Venryx
6
这个答案是在2015年发布的,现在是2021年。关于如何解决这个问题是否有任何更新? - Ray
@Ray 你可以使用管道来解决这个问题。请参阅我的答案以获取更多详细信息。 - dns

1

你可以使用管道来解决这个问题。

我可以使用管道向sqlite3.exe插入一百万行数据。

不要使用sqlite.exe .\ex1.db $sql,因为会返回错误。你可以使用这个命令:$sql | sqlite.exe .\ex1.db

$sql变量可能有超过一百万行(超过8191个字符)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接