AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1599726
Accepted
bluesquare
bluesquare
Asked: 2020-11-05 11:03:24 +0800 CST2020-11-05 11:03:24 +0800 CST 2020-11-05 11:03:24 +0800 CST

Qual é a diferença entre Powershell -command e -argumentlist?

  • 772

Então, eu queria apenas copiar este arquivo em Arquivos de Programas, onde ele precisa ser assim (precisar clicar com o botão direito do mouse, executar como Administrador):

Copy-Item \\Poplar\SuperSound -Destination 'C:\Program Files\' -Force -Recurse

mas eu precisava dele em um script powershell.

A maneira usual de elevar é com:

powershell -command "install_bananas.bat" -Verb runas

mas quando eu corro:

powershell -command "Copy-Item \\Zuul\IT\ffmpeg -Destination 'C:\Program Files\' -Force -Recurse" -Verb runas

...que deu um erro:

Copy-Item : A positional parameter cannot be found that accepts argument 'runas'.

Então, em vez disso, tenho que usar -argumentlist com Start-Process:

Start-Process powershell -Verb runas -argumentlist "Copy-Item \\Poplar\SuperSound -Destination 'C:\Program Files\' -Force -Recurse" 

Então eu acho que a lista de argumentos é usada apenas pelo Start-Process.

Então, o que é powershell -command versus Start-Process powershell -argumentlist e por que está tendo problemas com -Verb runas quando precisa executar um comando com vários argumentos como:

Copy-Item A -Destination B

?

NOTA: Acho que finalmente é hora de comprar um livro Powershell.

powershell command-line
  • 1 1 respostas
  • 5220 Views

1 respostas

  • Voted
  1. Best Answer
    postanote
    2020-11-06T10:37:02+08:002020-11-06T10:37:02+08:00

    Embora obter um livro lhe dê coisas, acesse os arquivos de ajuda primeiro , pois eles são gratuitos e estão bem na sua frente. ;-}

    # Get specifics for a module, cmdlet, or function
    (Get-Command -Name Start-Process).Parameters
    (Get-Command -Name Start-Process).Parameters.Keys
    # Results
    <#
    FilePath
    ArgumentList
    Credential
    WorkingDirectory
    LoadUserProfile
    NoNewWindow
    PassThru
    RedirectStandardError
    RedirectStandardInput
    RedirectStandardOutput
    Verb
    WindowStyle
    Wait
    UseNewEnvironment
    Verbose
    Debug
    ErrorAction
    WarningAction
    InformationAction
    ErrorVariable
    WarningVariable
    InformationVariable
    OutVariable
    OutBuffer
    PipelineVariable
    #>
    
    Get-help -Name Start-Process -Examples
    # Results
    <#
    Start-Process -FilePath "sort.exe"
    Start-Process -FilePath "myfile.txt" -WorkingDirectory "C:\PS-Test" -Verb Print
    Start-Process -FilePath "Sort.exe" -RedirectStandardInput "Testsort.txt" -RedirectStandardOutput "Sorted.txt" -RedirectStandardError 
    Start-Process -FilePath "notepad" -Wait -WindowStyle Maximized
    Start-Process -FilePath "powershell" -Verb runAs
    $startExe = New-Object System.Diagnostics.ProcessStartInfo -Args PowerShell.exe
    $startExe.verbs
    Start-Process -FilePath "powershell.exe" -Verb open
    Start-Process -FilePath "powershell.exe" -Verb runas
    
    #>
    Get-help -Name Start-Process -Full
    Get-help -Name Start-Process -Online
    
    
    powershell /?
    # Results
    <#
    
    PowerShell[.exe] [-PSConsoleFile <file> | -Version <version>]
        [-NoLogo] [-NoExit] [-Sta] [-Mta] [-NoProfile] [-NonInteractive]
        [-InputFormat {Text | XML}] [-OutputFormat {Text | XML}]
        [-WindowStyle <style>] [-EncodedCommand <Base64EncodedCommand>]
        [-ConfigurationName <string>]
        [-File <filePath> <args>] [-ExecutionPolicy <ExecutionPolicy>]
        [-Command { - | <script-block> [-args <arg-array>]
                      | <string> [<CommandParameters>] } ]
    
    ...
    
    -Command
        Executes the specified commands (and any parameters) as though they were
        typed at the Windows PowerShell command prompt, and then exits, unless 
        NoExit is specified. The value of Command can be "-", a string. or a
        script block.
    
        If the value of Command is "-", the command text is read from standard
        input.
    
        If the value of Command is a script block, the script block must be enclosed
        in braces ({}). You can specify a script block only when running PowerShell.exe
        in Windows PowerShell. The results of the script block are returned to the
        parent shell as deserialized XML objects, not live objects.
    
        If the value of Command is a string, Command must be the last parameter
        in the command , because any characters typed after the command are 
        interpreted as the command arguments.
    
        To write a string that runs a Windows PowerShell command, use the format:
        "& {<command>}"
        where the quotation marks indicate a string and the invoke operator (&)
        causes the command to be executed.
    
    ...
    #>
    

    Iniciar-Processo (Microsoft.PowerShell.Management... https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-7

    Parâmetros

    -ArgumentList Especifica parâmetros ou valores de parâmetros a serem usados ​​quando este cmdlet inicia o processo. Os argumentos podem ser aceitos como uma única string com os argumentos separados por espaços ou como uma matriz de strings separadas por vírgulas.

    Se os parâmetros ou valores de parâmetro contiverem um espaço, eles precisam estar entre aspas duplas com escape. Para obter mais informações, consulte about_Quoting_Rules.

    Executar o comando por meio de um cmdlet ou powershell.exe são duas coisas diferentes. Cada um tem suas especificidades de cotação. Você obtém esses tipos de erros devido à sintaxe incorreta, que inclui as cotações necessárias.

    Então, para o seu caso de uso, Start-Process seria algo assim:

    $ConsoleCommand = "Copy-Item \\Zuul\IT\ffmpeg -Destination 'C:\Program Files\' -Force -Recurse"
    Start-Process powershell -ArgumentList '-NoExit',"-Command  &{ $ConsoleCommand }" 
    

    Para PowerShell.exe, algo assim:

    PowerShell -Command {Copy-Item \\Zuul\IT\ffmpeg -Destination 'C:\Program Files\' -Force -Recurse}
    

    Ou isto

    PowerShell -Command "& {Copy-Item \\Zuul\IT\ffmpeg -Destination 'C:\Program Files\' -Force -Recurse}"
    

    Thye pode ser combinado, digamos, se você estiver no ISE/VScode e quiser enviar um comando para uma nova instância enquanto permanece no ISE/VSCode, algo assim:

    Function Start-ConsoleCommand
    {
        [CmdletBinding(SupportsShouldProcess)]
    
        [Alias('scc')]
    
        Param  
        ( 
            [string]$ConsoleCommand,
            [switch]$PoSHCore
        )
    
        If ($PoSHCore)
        {Start-Process pwsh -ArgumentList "-NoExit","-Command  &{ $ConsoleCommand }" -Wait}
        Else
        {Start-Process powershell -ArgumentList "-NoExit","-Command  &{ $ConsoleCommand }" -Wait}
    
    }
    
    • 2

relate perguntas

  • Adicionando cor de primeiro plano ao perfil do Powershell?

  • Qual seria o equivalente em lote do argumento "pass" do Python?

  • Não é possível ativar o Microsoft Print to PDF depois de desativado

  • Posso fazer com que este script do PowerShell aceite vírgulas?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 Por que uma conexão de Internet gigabit/s via cabo (coaxial) não oferece velocidades simétricas como fibra? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    fixer1234 O "HTTPS Everywhere" ainda é relevante? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve