3

我收到一条错误消息,说我有一个重复的命令行参数...任何人都知道为什么会发生这种情况以及解决方法是什么?

在此处输入图像描述

$fileServer = 'server.contoso.local'
$MediaPath = "\\$fileServer\Deployment\Software\AppFabric\"
$MediaName = "WindowsServerAppFabricSetup_x64_6.1.exe"


$cmd = Join-Path $MediaPath -ChildPath $MediaName
$cmd += " /install CachingService , CacheClient , CacheAdmin /SkipUpdates /logfile "
$cmd += " F:\Logs\AppFabric\AppFabricInstallLog.txt "
Invoke-Expression -Command $cmd

这是 $cmd 的输出:

\\server.contoso.local\Deployment\Software\AppFabric\WindowsServerAppFabricSetup_x64_6.1.exe /i CachingService , CacheClient , CacheAdmin /SkipUpdates /logfile  F:\Logs\AppFabric\AppFabric\InstallLog.txt 

在此处输入图像描述

我已将其范围缩小到在安装程序之后调用的参数。“CachingService、CacheClient、CacheAdmin”。如果我删除“CachingService , CacheClient , CacheAdmin”,其他一切都有效

还要补充一点……如果我在 CMD.exe 中运行这个完全相同的命令,它就会正常工作。但是,我的任务是使用 DSC(期望状态配置)在 PowerShell 中自动化

4

2 回答 2

3

如果我通过 echoargs.exe(来自 PowerShell 社区扩展的实用程序)运行您的命令,我会看到逗号被删除:

C:\PS> echoargs /i CachingService , CacheClient , CacheAdmin /SkipUpdates /logfile  F:\Logs\AppFabric\AppFabric\InstallLog.txt
Arg 0 is </i>
Arg 1 is <CachingService>
Arg 2 is <CacheClient>
Arg 3 is <CacheAdmin>
Arg 4 is </SkipUpdates>
Arg 5 is </logfile>
Arg 6 is <F:\Logs\AppFabric\AppFabric\InstallLog.txt>

Command line:
"C:\Program Files (x86)\PowerShell Community Extensions\Pscx3\Pscx\Apps\EchoArgs.exe"  /i CachingService CacheClient CacheAdmin /SkipUpdates /logfile F:\Logs\AppFabric\AppFabric\InstallLog.txt

如果您使用的是 PowerShell V3 或更高版本,请使用 --% 将 PowerShell 置于简化(哑)参数解析模式,例如:

$cmd += " --% /install CachingService , CacheClient , CacheAdmin /SkipUpdates /logfile "

社区扩展的链接是http://pscx.codeplex.com。如果您正在试用 PowerShell 5.0 预览版,您可以从 PSGet 库安装它。

于 2014-07-11T20:27:37.377 回答
2

为了解决为 SharePoint 2016 或 2013 安装先决条件的问题,我使用以下脚本绕过提到的重复命令错误(在 Windows 2012 R2 中)

C:\>.\WindowsServerAppFabricSetup_x64.exe/i CacheClient","CachingService","CacheAdmin /gac
于 2017-04-29T16:03:41.983 回答