공백과 따옴표가있는 매개 변수를 사용하여 PowerShell에서 EXE 파일을 실행하는 방법
PowerShell에서 다음 명령을 어떻게 실행합니까?
C : \ Program Files \ IIS \ Microsoft Web Deploy \ msdeploy.exe -verb : sync -source : dbfullsql = "Data Source = mysource; Integrated Security = false; 사용자 ID = sa; Pwd = sapass!; Database = mydb;" -dest : dbfullsql = "데이터 소스 =. \ mydestsource; 통합 보안 = 거짓; 사용자 ID = sa; Pwd = sapass!; Database = mydb;", computername = 10.10.10.10, username = administrator, password = adminpass "
PowerShell은 문자열로 시작하는 명령을 볼 때 문자열을 평가합니다. 즉, 일반적으로 다음과 같이 화면에 에코합니다.
PS> "Hello World"
Hello World
PowerShell이 문자열을 명령 이름으로 해석하도록하려면 다음과 같이 호출 연산자 (&)를 사용하십시오.
PS> & 'C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe'
그 후에 공백이나 인용 부호가 포함 된 매개 변수 / 인수 쌍만 인용하면됩니다. 복잡한 명령 줄 인수를 사용하여 이와 같은 EXE 파일을 호출 할 때 PowerShell에서 인수를 EXE 파일로 보내는 방법을 보여주는 도구를 사용하는 것이 일반적으로 매우 유용합니다. PowerShell을 커뮤니티 확장은 이러한 도구가 있습니다. 이를 echoargs라고합니다. EXE 파일을 echoargs로 바꾸면됩니다. 모든 인수는 그대로두고 EXE 파일이 인수를받는 방법을 보여줍니다.
PS> echoargs -verb:sync -source:dbfullsql="Data Source=mysource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;" -dest:dbfullsql="Data Source=.\mydestsource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;",computername=10.10.10.10,username=administrator,password=adminpass
Arg 0 is <-verb:sync>
Arg 1 is <-source:dbfullsql=Data>
Arg 2 is <Source=mysource;Integrated>
Arg 3 is <Security=false;User>
Arg 4 is <ID=sa;Pwd=sapass!;Database=mydb;>
Arg 5 is <-dest:dbfullsql=Data>
Arg 6 is <Source=.\mydestsource;Integrated>
Arg 7 is <Security=false;User>
Arg 8 is <ID=sa;Pwd=sapass!;Database=mydb; computername=10.10.10.10 username=administrator password=adminpass>
echoargs를 사용하면 다음과 같이 올바르게 얻을 때까지 실험 할 수 있습니다.
PS> echoargs -verb:sync "-source:dbfullsql=Data Source=mysource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;"
Arg 0 is <-verb:sync>
Arg 1 is <-source:dbfullsql=Data Source=mysource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;>
연결 문자열 주위에 큰 따옴표를 유지하기 전에 너무 열심히 노력한 것으로 나타났습니다. cmd.exe조차도 그것들을 제거하기 때문에 필요하지 않습니다.
BTW, PowerShell 팀을 싫어합니다. 내부 큰 따옴표를 그대로 유지 해야하는 경우 원하는 결과를 얻기 위해 작은 따옴표와 큰 따옴표의 특정 주문을 표시하는 데 매우 도움이되었습니다. :-) 그들은 또한 이것이 고통의 영역이라는 것을 알고 있지만, 특정 이슈에 영향을받는 사람들의 수에 의해 주도됩니다. 이것이 어려운 영역이라면이 PowerShell 버그 제출에 투표하십시오 .
PowerShell 구문 분석 방법에 대한 자세한 내용은 효과적인 PowerShell 블로그 시리즈 , 특히 항목 10- "PowerShell 구문 분석 모드 이해"를 참조하십시오.
2012 년 4 월 4 일 업데이트 :이 상황은 PowerShell V3에서 훨씬 쉽게 처리 할 수 있습니다. 자세한 내용은이 블로그 게시물을 참조하십시오 .
.exe 이름 앞에 & 연산자를 추가하십시오 . 다음은 자동 모드로 SQL Server Express를 설치하는 명령입니다.
$fileExe = "T:\SQLEXPRADV_x64_ENU.exe"
$CONFIGURATIONFILE = "T:\ConfSetupSql2008Express.ini"
& $fileExe /CONFIGURATIONFILE=$CONFIGURATIONFILE
명령과 매개 변수에 공백이 있었고 이것이 나를 위해 일한 것입니다.
$Command = "E:\X64\Xendesktop Setup\XenDesktopServerSetup.exe"
$Parms = "/COMPONENTS CONTROLLER,DESKTOPSTUDIO,DESKTOPDIRECTOR,LICENSESERVER,STOREFRONT /PASSIVE /NOREBOOT /CONFIGURE_FIREWALL /NOSQL"
$Prms = $Parms.Split(" ")
& "$Command" $Prms
기본적으로 Akira의 답변과 동일하지만 명령 매개 변수를 동적으로 작성하고 변수에 넣는 경우 작동합니다.
이것은 나를 위해 일했다 :
& 'D:\Server\PSTools\PsExec.exe' @('\\1.1.1.1', '-accepteula', '-d', '-i', $id, '-h', '-u', 'domain\user', '-p', 'password', '-w', 'C:\path\to\the\app', 'java', '-jar', 'app.jar')
하나의 배열 항목에 경로 또는 연결 문자열을 넣고 다른 배열 항목을 각각 하나의 배열 항목으로 나누십시오.
여기에 다른 많은 옵션이 있습니다 : https://social.technet.microsoft.com/wiki/contents/articles/7703.powershell-running- executables.aspx
Microsoft는이 방법을 더 간단하고 명령 프롬프트 구문과 호환해야합니다.
이 페이지를 참조하십시오 : https://slai.github.io/posts/powershell-and-external-commands-done-right/
vshadow를 외부 실행 파일로 사용한 요약 :
$exe = "H:\backup\scripts\vshadow.exe"
&$exe -p -script=H:\backup\scripts\vss.cmd E: M: P:
누군가가 실행 파일을 실행하는 방법을 궁금해하는 경우 :
.....>. \ file.exe
또는
......> full \ path \ to \ file.exe
이를 수행하는 데 사용할 수있는 몇 가지 방법이 있습니다.
호출 연산자 ( & ), Invoke-Expression cmdlet 등을 사용하는 것과 같은 다른 방법이 있지만 안전하지 않은 것으로 간주됩니다. Start-Process 사용을 권장 합니다.
방법 1
간단한 예
Start-Process -NoNewWindow -FilePath "C:\wamp64\bin\mysql\mysql5.7.19\bin\mysql" -ArgumentList "-u root","-proot","-h localhost"
당신의 경우
Start-Process -NoNewWindow -FilePath "C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe" -ArgumentList "-verb:sync","-source:dbfullsql=`"Data Source=mysource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;`"","-dest:dbfullsql=`"Data Source=.\mydestsource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;`"","computername=10.10.10.10","username=administrator","password=adminpass"
이 방법에서는 쉼표를 사용하여 ArgumentList의 각 매개 변수를 구분합니다.
방법 2
간단한 예
Start-Process -NoNewWindow -FilePath "C:\wamp64\bin\mysql\mysql5.7.19\bin\mysql" -ArgumentList "-u root -proot -h localhost"
당신의 경우
Start-Process -NoNewWindow -FilePath "C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe" -ArgumentList "-verb:sync -source:dbfullsql=`"Data Source=mysource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;`" -dest:dbfullsql=`"Data Source=.\mydestsource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;`",computername=10.10.10.10,username=administrator,password=adminpass"
이 방법은 매개 변수를 한 번에 입력 할 수 있으므로 더 쉽습니다.
powershell 에서 문자열에 따옴표 ( ")를 표시 하려면 억음 악센트 (`)를 삽입해야 합니다 (미국 키보드의 Tab 키 위에있는 키임).
-NoNewWindow 매개 변수는 현재 콘솔 창에 새 프로세스를 표시하는 데 사용됩니다. 기본적으로 Windows PowerShell은 새 창을 엽니 다.
참고 자료 : Powershell / Scripting / Start-Process
다음 접근법을 사용하여 비슷한 명령을 작동시킬 수있었습니다.
msdeploy.exe -verb=sync "-source=dbFullSql=Server=THESERVER;Database=myDB;UID=sa;Pwd=saPwd" -dest=dbFullSql=c:\temp\test.sql
당신의 명령 (지금은별로 도움이되지는 않음)의 상황은 다음과 같습니다.
msdeploy.exe -verb=sync "-source=dbfullsql=Server=mysource;Trusted_Connection=false;UID=sa;Pwd=sapass!;Database=mydb;" "-dest=dbfullsql=Server=mydestsource;Trusted_Connection=false;UID=sa;Pwd=sapass!;Database=mydb;",computername=10.10.10.10,username=administrator,password=adminpass
핵심 사항은 다음과 같습니다.
- 소스 인수 주위에 따옴표를 사용하고 연결 문자열 주위에 포함 된 따옴표를 제거하십시오.
- 공백이없는 SQL 연결 문자열을 작성할 때 대체 키 이름을 사용하십시오. 예를 들어 "User Id"대신 "UID", "Data Source"대신 "Server", "Integrated Security"대신 "Trusted_Connection"등을 사용하십시오. 연결 문자열에서 모든 공백을 제거한 후에 만 작동시킬 수있었습니다.
명령 줄 끝에 "computername"부분을 추가하지 않았지만이 정보가이 정보를 읽는 다른 사람들이 원하는 결과에 더 가까이 다가 가기를 바랍니다.
새로운 V3 언어 기능 에서 인용 한 PowerShell V3의 새로운 이스케이프 문자열 :
Cmd.exe에서 더 쉬운 명령 줄 재사용
웹에는 Cmd.exe 용으로 작성된 명령 줄이 가득합니다. 이 명령 줄은 PowerShell에서 자주 작동하지만 세미콜론 (;), 달러 기호 ($) 또는 중괄호와 같은 특정 문자를 포함하는 경우 약간의 따옴표를 추가하여 변경해야합니다. 이것은 많은 경미한 두통의 원천 인 것 같습니다.
이 시나리오를 해결하기 위해 명령 줄 구문 분석을 "이스케이프"하는 새로운 방법을 추가했습니다. 매직 매개 변수-%를 사용하면 명령 줄의 일반적인 구문 분석이 중지되고 훨씬 간단한 것으로 전환됩니다. 우리는 따옴표와 일치하지 않습니다. 우리는 세미콜론에 멈추지 않습니다. PowerShell 변수는 확장하지 않습니다. Cmd.exe 구문 (예 : % TEMP %)을 사용하는 경우 환경 변수를 확장합니다. 그 외에는 라인 끝 (또는 파이프 인 경우 파이프)까지의 인수가 그대로 전달됩니다. 예를 들면 다음과 같습니다.
PS> echoargs.exe --% %USERNAME%,this=$something{weird}
Arg 0 is <jason,this=$something{weird}>
모든 제안을 시도했지만 여전히 msiexec.exe
공백이 포함 된 매개 변수 로 실행할 수 없었습니다 . 그래서 내 솔루션은 다음을 사용하여 끝났습니다 System.Diagnostics.ProcessStartInfo
.
# can have spaces here, no problems
$settings = @{
CONNECTION_STRING = "... ..."
ENTITY_CONTEXT = "... ..."
URL = "..."
}
$settingsJoined = ($settings.Keys | % { "$_=""$($settings[$_])""" }) -join " "
$pinfo = New-Object System.Diagnostics.ProcessStartInfo
$pinfo.WorkingDirectory = $ScriptDirectory
$pinfo.FileName = "msiexec.exe"
$pinfo.RedirectStandardError = $true
$pinfo.RedirectStandardOutput = $true
$pinfo.UseShellExecute = $false
$pinfo.Arguments = "/l* install.log /i installer.msi $settingsJoined"
$p = New-Object System.Diagnostics.Process
$p.StartInfo = $pinfo
$p.Start() | Out-Null
$p.WaitForExit()
$stdout = $p.StandardOutput.ReadToEnd()
이것은 나를 위해 일했다 :
PowerShell.exe -Command "& ""C:\Some Script\Path With Spaces.ps1"""
핵심은 전체 명령이 외부 인용 부호로 묶여 있고 "&"앰퍼샌드가 다른 하위 명령 파일이 실행되도록 지정한 다음 경로 / 파일 이름 주위에 공백으로 이스케이프 처리 된 (더블-더블-) 인용하는 것 같습니다. 당신은 처음부터 실행하고 싶었습니다.
-File이 0이 아닌 리턴 코드를 전달하지 않고 -Command가 유일한 대안이라는 MS 연결 문제에 대한 유일한 해결 방법도 완료되었습니다. 그러나 지금까지는 -Command의 한계는 공백을 지원하지 않는 것으로 생각되었습니다. 그 의견 항목도 업데이트했습니다.
다른 대답은 Base64로 인코딩 된 명령 스위치 를 사용하는 것입니다 .
powershell -EncodedCommand "QwA6AFwAUAByAG8AZwByAGEAbQAgAEYAaQBsAGUAcwBcAEkASQBTAFwATQBpAGMAcgBvAHMAbwBmAHQAIABXAGUAYgAgAEQAZQBwAGwAbwB5AFwAbQBzAGQAZQBwAGwAbwB5AC4AZQB4AGUAIAAtAHYAZQByAGIAOgBzAHkAbgBjACAALQBzAG8AdQByAGMAZQA6AGQAYgBmAHUAbABsAHMAcQBsAD0AIgBEAGEAdABhACAAUwBvAHUAcgBjAGUAPQBtAHkAcwBvAHUAcgBjAGUAOwBJAG4AdABlAGcAcgBhAHQAZQBkACAAUwBlAGMAdQByAGkAdAB5AD0AZgBhAGwAcwBlADsAVQBzAGUAcgAgAEkARAA9AHMAYQA7AFAAdwBkAD0AcwBhAHAAYQBzAHMAIQA7AEQAYQB0AGEAYgBhAHMAZQA9AG0AeQBkAGIAOwAiACAALQBkAGUAcwB0ADoAZABiAGYAdQBsAGwAcwBxAGwAPQAiAEQAYQB0AGEAIABTAG8AdQByAGMAZQA9AC4AXABtAHkAZABlAHMAdABzAG8AdQByAGMAZQA7AEkAbgB0AGUAZwByAGEAdABlAGQAIABTAGUAYwB1AHIAaQB0AHkAPQBmAGEAbABzAGUAOwBVAHMAZQByACAASQBEAD0AcwBhADsAUAB3AGQAPQBzAGEAcABhAHMAcwAhADsARABhAHQAYQBiAGEAcwBlAD0AbQB5AGQAYgA7ACIALABjAG8AbQBwAHUAdABlAHIAbgBhAG0AZQA9ADEAMAAuADEAMAAuADEAMAAuADEAMAAsAHUAcwBlAHIAbgBhAG0AZQA9AGEAZABtAGkAbgBpAHMAdAByAGEAdABvAHIALABwAGEAcwBzAHcAbwByAGQAPQBhAGQAbQBpAG4AcABhAHMAcwAiAA=="
디코딩하면 모든 인수와 큰 따옴표가 보존 된 OP의 원본 스 니펫임을 알 수 있습니다.
powershell.exe -EncodedCommand
Accepts a base-64-encoded string version of a command. Use this parameter
to submit commands to Windows PowerShell that require complex quotation
marks or curly braces.
원래 명령 :
C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe -verb:sync -source:dbfullsql="Data Source=mysource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;" -dest:dbfullsql="Data Source=.\mydestsource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;",computername=10.10.10.10,username=administrator,password=adminpass"
Base64로 인코딩되면 다음과 같이 바뀝니다.
QwA6AFwAUAByAG8AZwByAGEAbQAgAEYAaQBsAGUAcwBcAEkASQBTAFwATQBpAGMAcgBvAHMAbwBmAHQAIABXAGUAYgAgAEQAZQBwAGwAbwB5AFwAbQBzAGQAZQBwAGwAbwB5AC4AZQB4AGUAIAAtAHYAZQByAGIAOgBzAHkAbgBjACAALQBzAG8AdQByAGMAZQA6AGQAYgBmAHUAbABsAHMAcQBsAD0AIgBEAGEAdABhACAAUwBvAHUAcgBjAGUAPQBtAHkAcwBvAHUAcgBjAGUAOwBJAG4AdABlAGcAcgBhAHQAZQBkACAAUwBlAGMAdQByAGkAdAB5AD0AZgBhAGwAcwBlADsAVQBzAGUAcgAgAEkARAA9AHMAYQA7AFAAdwBkAD0AcwBhAHAAYQBzAHMAIQA7AEQAYQB0AGEAYgBhAHMAZQA9AG0AeQBkAGIAOwAiACAALQBkAGUAcwB0ADoAZABiAGYAdQBsAGwAcwBxAGwAPQAiAEQAYQB0AGEAIABTAG8AdQByAGMAZQA9AC4AXABtAHkAZABlAHMAdABzAG8AdQByAGMAZQA7AEkAbgB0AGUAZwByAGEAdABlAGQAIABTAGUAYwB1AHIAaQB0AHkAPQBmAGEAbABzAGUAOwBVAHMAZQByACAASQBEAD0AcwBhADsAUAB3AGQAPQBzAGEAcABhAHMAcwAhADsARABhAHQAYQBiAGEAcwBlAD0AbQB5AGQAYgA7ACIALABjAG8AbQBwAHUAdABlAHIAbgBhAG0AZQA9ADEAMAAuADEAMAAuADEAMAAuADEAMAAsAHUAcwBlAHIAbgBhAG0AZQA9AGEAZABtAGkAbgBpAHMAdAByAGEAdABvAHIALABwAGEAcwBzAHcAbwByAGQAPQBhAGQAbQBpAG4AcABhAHMAcwAiAA==
집에서 복제하는 방법은 다음과 같습니다.
$command = 'C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe -verb:sync -source:dbfullsql="Data Source=mysource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;" -dest:dbfullsql="Data Source=.\mydestsource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;",computername=10.10.10.10,username=administrator,password=adminpass"'
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
$encodedCommand
# The clip below copies the base64 string to your clipboard for right click and paste.
$encodedCommand | Clip
powershell 다른 방법으로 exe 파일을 실행할 수 있습니다. 예를 들어 unrar.exe를 실행하고 .rar 파일을 추출하려면 powershell에 다음과 같이 간단히 쓸 수 있습니다.
$extract_path = "C:\Program Files\Containing folder";
$rar_to_extract = "C:\Path_to_arch\file.rar"; #(or.exe if its a big file)
C:\Path_here\Unrar.exe x -o+ -c- $rar_to_extract $extract_path;
그러나 때로는 작동하지 않으므로 위와 같이 & 매개 변수를 사용해야합니다. 예를 들어 vboxmanage.exe (가상 상자 가상 시스템을 관리하는 도구)를 사용하면 문자열 외부에서 매개 변수를 따옴표없이 다음과 같이 호출해야합니다.
> $vmname = "misae_unrtes_1234123"; #(name too long, we want to change this)
> & 'C:\Program Files\Oracle\VirtualBox\VBoxManage.exe' modifyvm $vmname --name UBUNTU;
winrar 보관 파일을 .exe 파일로 간단히 호출하려는 경우 invoke-command cmdlet 및 Silent 매개 변수 / S를 사용하여 압축을 풀 수도 있습니다 (압축 된 폴더와 동일한 폴더에 자동 압축 풀림).
> Invoke-Command -ScriptBlock { C:\Your-path\archivefile.exe /S };
따라서 powershell에서 인수와 함께 .exe 파일을 실행하는 몇 가지 방법이 있습니다.
때로는 제대로 작동하려면 해결 방법을 찾아야합니다. .exe가 컴파일되었거나 제작자에 의해 만들어진 방식에 따라 추가 노력과 고통이 필요할 수 있습니다.
랩톱에서 다음 코드가 완벽하게 작동했습니다.
& $msdeploy `
-source:package="$publishFile" `
-dest:auto,computerName="$server",includeAcls="False",UserName="$username",Password="$password",AuthType="$auth" `
-allowUntrusted `
-verb:sync `
-enableRule:DoNotDeleteRule `
-disableLink:AppPoolExtension `
-disableLink:ContentExtension `
-disableLink:CertificateExtension `
-skip:objectName=filePath,absolutePath="^(.*Web\.config|.*Environment\.config)$" `
-setParam:name=`"IIS Web Application Name`",value="$appName"
그런 다음 한 서버에서 직접 실행하려고하면 해당 오류가 발생하기 시작했습니다. "Unrecognized argument ...etc.... All arguments must begin with "-". "
가능한 모든 해결 방법 (성공하지 않음)을 시도한 후 서버의 Powershell (Windows 2008 R2) 버전이 3.0이고 랩톱에는 5.0이 있음을 알았습니다. ( "$ PSVersionTable"을 사용하여 버전을 볼 수 있습니다).
Powershell 을 최신 버전으로 업그레이드 한 후 다시 작동하기 시작했습니다.
그래서 비슷한 문제가 발생하여 대신 다음과 같이 해결하기로 결정했습니다.
- 따옴표 (`)로 따옴표 ( ") 문자를 이스케이프 처리
- 새 표현을 따옴표 ( ")로 묶습니다.
- 호출 연산자 (&)
invoke-expression
를 사용하여 새 문자열 에서 명령 을 실행하십시오.
솔루션 예 :
& {invoke-expression "C : \ Program Files \ IIS \ Microsoft Web Deploy \ msdeploy.exe -verb : sync -source : dbfullsql =`"Data Source = mysource; Integrated Security = false; 사용자 ID = sa; Pwd = sapass !; Database = mydb;` "-dest : dbfullsql =`"Data Source =. \ mydestsource; Integrated Security = false; 사용자 ID = sa; Pwd = sapass!; Database = mydb;` ", computername = 10.10.10.10, username = administrator, password = adminpass` ""}}
실행 파일 이름의 경우 공백을 처리하거나 실행 파일을 $ PATH 환경에 추가하지 않아도되도록 new-alias cmdlet을 사용할 수 있습니다.
PS> new-alias msdeploy "C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe"
PS> msdeploy ...
PS 별칭을 나열하거나 수정하려면 다음을 참조하십시오.
PS> get-alias
PS> set-alias
다른 답변은 논쟁을 해결합니다.
이 간단하고 깨끗하며 효과적인 방법을 사용합니다.
배열 당 인수를 한 줄에 하나씩 배치합니다. 이런 식으로 읽고 편집하는 것이 매우 쉽습니다. 그런 다음 큰 따옴표 안의 모든 인수를 하나의 단일 매개 변수가있는 함수에 전달하는 간단한 트릭을 사용합니다. 배열을 포함하여 배열을 단일 문자열로 병합 한 다음 PS의 'Invoke-Expression'을 사용하여 실행합니다. 이 지시문은 특히 문자열을 실행 가능한 명령으로 변환하도록 설계되었습니다. 잘 작동합니다 :
# function with one argument will flatten
# all passed-in entries into 1 single string line
Function Execute($command) {
# execute:
Invoke-Expression $command;
# if you have trouble try:
# Invoke-Expression "& $command";
# or if you need also output to a variable
# Invoke-Expression $command | Tee-Object -Variable cmdOutput;
}
# ... your main code here ...
# The name of your executable app
$app = 'my_app.exe';
# List of arguments:
# Notice the type of quotes - important !
# Those in single quotes are normal strings, like 'Peter'
$args = 'arg1',
'arg2',
$some_variable,
'arg4',
"arg5='with quotes'",
'arg6',
"arg7 \ with \ $other_variable",
'etc...';
# pass all arguments inside double quotes
Execute "$app $args";
당신이 사용할 수있는:
Start-Process -FilePath "C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe" -ArgumentList "-verb:sync -source:dbfullsql="Data Source=mysource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;" -dest:dbfullsql="Data Source=.\mydestsource;Integrated Security=false;User ID=sa;Pwd=sapass!;Database=mydb;",computername=10.10.10.10,username=administrator,password=adminpass"
여기서주의해야 할 점은 도움말 안내에 따라 FilePath가 0 위치에 있어야한다는 것입니다. 커맨드 렛에 대한 도움말 가이드를 호출하려면을 입력하십시오 Get-Help <Commandlet-name> -Detailed
. 이 경우는 Get-Help Start-Process -Detailed
입니다.
'development' 카테고리의 다른 글
동기화 된 (this)을 사용할 수 있다면 왜 ReentrantLock을 사용합니까? (0) | 2020.03.14 |
---|---|
Git 브랜치를 검색하여 파일이나 디렉토리를 찾으려면 어떻게해야합니까? (0) | 2020.03.14 |
Pyplot 산점도 마커 크기 (0) | 2020.03.14 |
Visual Studio 2010-권장 확장명 (0) | 2020.03.14 |
Swift의 'open'키워드는 무엇입니까? (0) | 2020.03.14 |