当前位置: 首页 > 知识库问答 >
问题:

无法使用powershell运行内部代码-命令开关。exe

卢俊发
2023-03-14

我有一个PowerShell代码,我正在通过PowerShell调用它。exe。代码会进行一些验证,然后调用主脚本来完成实际的工作。

代码如下:

powershell.exe -NoProfile -ExecutionPolicy Bypass -Command {
    $trademark = 'MMFSL'
    $product = 'OSHardening'
    $version = '3.0'

    Add-Type -AssemblyName System.Windows.Forms
    #Checks if the current powershell session is running in Administrative Mode
    $currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
    if (!($currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator))) {
        [System.Windows.Forms.MessageBox]::Show('Please run the file using Run as Administrator', "$($trademark)-$($product)-v$($version)", 'Ok', 'Error')
        break;
    }

    Expand-Archive -Path .\Windows.zip -DestinationPath $env:ProgramData\$($trademark)\$($product)\$($version) -Force

    Set-Location -Path $env:ProgramData\$($trademark)\$($product)\$($version)

    .\main.ps1
}

下面是错误消息:

powershell.exe -NoProfile -ExecutionPolicy Bypass -Command {
Missing closing '}' in statement block or type definition.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : MissingEndCurlyBrace

共有1个答案

葛磊
2023-03-14

感谢@JS2010;我通过添加分号(;)将代码格式化为一行。另外,添加了下的代码"

下面是修改后的代码:

powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "& {$trademark = 'MMFSL';$product = 'OSHardening';$version = '3.0';Add-Type -AssemblyName System.Windows.Forms;$PCWD = (Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain;if($PCWD -eq $true){[System.Windows.Forms.MessageBox]::Show('This is application is supported on Workgroup/Non-Domain Joined computers only.', "$($trademark) + '-' + $($product) + '-v' + $($version)", 'Ok', 'Error');break;}elseif ($PCWD -eq $false){Expand-Archive -Path .\Windows.zip -DestinationPath $env:ProgramData\$($trademark)\$($product)\$($version) -Force;Set-Location -Path $env:ProgramData\$($trademark)\$($product)\$($version);Invoke-Expression -Command .\main.ps1;}}"

 类似资料:
  • 我正在使用Visual Studio Code,但我无法运行“在路径中安装代码命令”选项,因为当我键入Shift Ctrl P时,此命令不会出现。我正在使用Windows 10和最新版本的Visual Studio Code。 我尝试了许多步骤来解决我的问题,但没有成功。以下是我所做的: 重新安装了Visual Studio Code(最新版本),并检查了要添加到PATH变量的选项。不起作用。 打

  • 线程“main”java.io.ioException中出现异常:无法运行程序“java” 但是当我从终端上运行任何java命令时,它们都工作得很好。 我发现的另一件事是,当我在终端中运行命令:并使用ProcessBuilder()时,它们会显示不同的输出。即ProcessBuilder命令中不显示jdk/bin的路径。 我如何解决这个问题?

  • 尝试使用JDBC运行db2命令。下面是java代码和异常

  • 我没有得到“你好”:请想知道为什么和做什么

  • 我是owlapi的新手,我正尝试在debian上编写一个java代码示例,以加载我已经使用Protégé构建的本体。我正在使用“owlapi-osgiDistribution-4.0.2.jar”,但总是得到这个错误: 我试图使用maven进行依赖,但徒劳。谁能告诉我如何解决这个问题,谢谢。

  • 我正在使用linux的Windows子系统,到目前为止,最好的文本编辑器体验是VS Code-内部人员和他们的WSL远程插件。然而,尽管反复努力,我只在复制功能方面取得了部分成功,在我的WSL(zsh)终端中,我可以键入或来打开代码中的目录。我确实有一个功能可以使用,在代码内部人员中打开WSL目录,但它不通过WSL接口,所以我使用的是powershell/windows环境,我想要所有的linux