【问题标题】:Running cmd.exe through start-process but unable to pass the command to cmd.exe通过启动进程运行 cmd.exe 但无法将命令传递给 cmd.exe
【发布时间】:2018-05-16 09:22:11
【问题描述】:

我想在另一个用户下使用cmd.exe 运行一个 groovy 脚本。

我用过Start-Process,当脚本被执行时,它只是在屏幕上用不同的用户打开提示,但不处理$command

所以我的问题是“如何在使用 PowerShell 运行 cmd.exe 后传递命令?

这是我目前所拥有的:

$username = "abc"
$pwd = ConvertTo -SecureString "xyz" -AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username $pw

$command = "filepath/.groovy"

try {
    Start-Process 'cmd' -Credential $cred -ArgumentList $command
    Write-Host $LASTEXITCODE
    if($LASTEXITCODE -ne 0) {
        throw "Error occured"
    } else {
        return 0
    }
} catch {
    Write-Error "Error Desc:$_Error.InnerException.Message";
}

【问题讨论】:

  • @Clijsters 感谢您使其更具可读性。我会确保,下次我发布问题时,我会以正确、有序和时尚的方式发布。

标签: powershell start-process


【解决方案1】:

基于CMD documentation,可以指定参数/c/k来执行命令。

Start-Process 'cmd' -Credential $cred -ArgumentList "/c $command"

【讨论】:

    猜你喜欢
    • 2021-06-22
    • 2020-09-08
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多