从Visual STudio外部工具,我想调用这样的powershell脚本:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command "{ Add-PSSnapin Microsoft.SharePOint.POwerShell -EA 0; & ""C:\a very long path to my script with spaces\my-script.ps1"" -ProjectFile ""c:\another very long path\to my visual studio project file\of a \customerprojet.csproj"" -WebPartDefinition ""c:\another very long path\to my visual studio project file\of a\file-in-my-customerproject.xml"" }"
实际上,我定义了我的外部工具来使用一些令牌:
-command { Add-PSSnapin Microsoft.SharePOint.POwerShell -EA 0; & ""C:\a very long path to my script with spaces\my-script.ps1"" -ProjectFile ""$(ProjectFileName)"" -WebPartDefinition ""$(ItemPath)"" }
但是,此命令行超出了Windows允许的260个字符限制,并且不起作用。似乎命令行被截断(在命令末尾缺少}
。
我该如何解决这个问题?
[编辑] 实际上,项目文件存在问题。令牌$(ProjectFileName)
不包含项目目录,因此我必须改为:
-command { Add-PSSnapin Microsoft.SharePOint.POwerShell -EA 0; & """C:\a very long path to my script with spaces\my-script.ps1""" -ProjectFile ""$(ProjectFileName)\$(ProjectFileName)"" -WebPartDefinition ""$(ItemPath)"" }
我也必须"三倍" ps1路径周围的引号(不理解为什么)
但这不起作用。这个论点太长了,视觉工作室禁止我把这个值。
[Edit2] 为确保语法,以下是我从命令行成功调用脚本的方法:
powershell -command "& { Add-PSSnapin Microsoft.SharePOint.POwerShell -EA 0; & """C:\path-to\myscript.ps1""" -ProjectFile """C:\Projects\someproject\someproject.csproj""" -WebPartDefinition """C:\Projects\someproject\somefolder\somefile.xml""" -Verbose }"
可以将其标记为:
powershell -command "& { Add-PSSnapin Microsoft.SharePOint.POwerShell -EA 0; & """C:\path-to\myscript.ps1""" -ProjectFile """$(ProjectFileName)\$(ProjectFileName)""" -WebPartDefinition """$(ItemPath)""" -Verbose }"
但命令行对于真实路径仍然太长:(
答案 0 :(得分:0)
我使用记忆博士遇到了类似的问题。
外部工具的Arguments字段只允许250个字符(我需要321个字符)。
我能够通过创建批处理文件来解决此问题。也许您可以将令牌作为参数传递给批处理文件,然后在批处理中构建完整命令并从那里调用?