【问题标题】:Converting Dos Command to Power Shell command将 Dos 命令转换为 Powershell 命令
【发布时间】:2011-03-07 00:59:01
【问题描述】:

我正在使用带有 Psake 1.4 的 PowerShell 2.0

这是我想要转换为 PowerShell 的正在运行的 dos 命令。

"C:\Program Files\Borland\StarTeam 2005 R2\stcmd.exe" co -p "rubble.barney:dinno@HostName:4455/MySolution/WebApp" -is  -fp "D:\FooBar\MySolution\Source"

请注意,stcmd 的路径中有一个空格
请注意,在 barney:dinno
之间有一个 : 注意那里有三个带引号的字符串。

这是我的脚本属性和注释

$AppName = "我的解决方案"
$StarExe = "C:\Program Files\Borland\StarTeam 2005 R2\stcmd.exe"
$StarProject = "rubble.barney:dinno@HostName:4455/$AppName/WebApp"
$StarOutDir = "D:\FooBar\$AppName\Source"
$StarCommand = """$StarExe"" co -p ""$StarProject"" -is -nologo -q -fp ""$StarOutDir"""

任务默认 - 依赖 GetSource

任务初始化{
“处理 $AppName”
$ErrorActionPreference = '停止'
}

任务 GetSource -depends Init {
'从明星队得到酸'
正确使用调用?应该是 & 还是 exec { }
调用项目 $StarCommand }

任何帮助都会很棒。

【问题讨论】:

    标签: powershell dos starteam psake


    【解决方案1】:

    试试:

    & $starexe co -p $StarProject -is -nologo -q -fp $StarOutDir
    

    我假设您使用的是 powershell 2.0。 powershell 1.0 版的本机命令* 参数解析方式更加古怪。

    • 本机命令 = exe、com、bat 文件等

    -奥辛

    【讨论】:

    • 我试过 & $StarExe co -p $StarProject -is -nologo -q -fp $StarOutDir 并得到:找不到驱动器。名为“C”的驱动器不存在。
    • 奇怪。你有没有用非常简单的参数测试它,比如“& $prog”,其中 $prog 是,嗯,说“c:\windows\system32\cmd.exe”?
    • 这是变量中路径的引号问题,doh!
    【解决方案2】:

    试试这个:

    & $StarExe co -p $StarProject -is -nologo -q -fp $StarOutDir
    

    免责声明:我没有使用 psake,但我不确定为什么需要在变量周围使用这么多双引号。 FWIW 如果在 PowerShell 脚本中执行上述命令应该可以工作。

    【讨论】:

    • 这些天你必须像鹰一样观察 PowerShell 标签才能得到答案。 :-)
    • 这些天我什至无法在这里回答任何问题 :-( – 嗯,还有 batch 标签 :-)
    • 嘿,是的,这也有帮助。 :-)
    猜你喜欢
    • 2010-10-22
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    相关资源
    最近更新 更多