기능에서 기능으로 파워셸의 명령줄 $args 전달
이것은 제가 직면한 고약한 문제입니다.간단한 해결책이 있어도 놀라지 않을 것입니다. 단지 저를 따돌리고 있다는 것뿐입니다.
파워셸 스크립트로 변환해야 하는 배치 파일이 2개 있습니다.
file1.bat
---------
echo %1
echo %2
echo %3
file2.bat %*
file2.bat
--------
echo %1
echo %2
echo %3
명령줄에서 이를 C:> file1.bat one two two two two two two two two two two two two two two two two two two.
(이것은 조잡한 코드 샘플입니다.)
파워셸로 전환할 때는
file1.ps1
---------
Write-Host "args[0] " $args[0]
Write-Host "args[1] " $args[1]
Write-Host "args[2] " $args[2]
. ./file2.ps1 $args
file2.ps1
---------
Write-Host "args[0] " $args[0]
Write-Host "args[1] " $args[1]
Write-Host "args[2] " $args[2]
When I invoke this on powershell command line, I get
$> & file1.ps1 one two three
args[0] one
args[1] two
args[2] three
args[0] one two three
args[1]
args[2]
file1.ps 에서 사용되는 $args가 시스템이기 때문인 것으로 알고 있습니다.3개의 문자열 대신 개체[].
파일1.ps1에서 받은 $args를 파일2.ps1로 전달하는 방법이 필요합니다. 이는 .bat 파일에서 %*이 달성하는 방법과 거의 같습니다.
유감스럽게도, 제 예에서 파일 간 통화를 하는 것처럼 교차 기능 통화라고 해도 기존 방식이 깨질 것 같습니다.
몇 가지 조합을 시도해 보았지만 아무 것도 되지 않습니다.
도와주세요.대단히 감사하겠습니다.
PowerShell V2에서는 분할 작업이 매우 간단합니다. bar는 다음과 같습니다.
function bar { foo @args }
분할하면 배열 구성원이 단일 배열 인수로 전달되지 않고 개별 인수로 처리됩니다.
PowerShell V1에서는 복잡하기 때문에 위치 인수를 위한 방법이 있습니다.함수 fo가 주어지면:
function foo { write-host args0 $args[0] args1 $args[1] args2 $args[2] }
이제 바에서 전화해 보세요.Invoke()
foo 함수의 스크립트 블록 상의 메소드
function bar { $OFS=','; "bar args: $args"; $function:foo.Invoke($args) }
어떤 것이.
PS (STA) (16) > bar 1 2 3 막대 : 1,2,3 args01 args1 2 args2 3
사용할 때는.
# use the pipe, Luke!
file1.ps1
---------
$args | write-host
$args | .\file2.ps1
file2.ps1
---------
process { write-host $_ }
언급URL : https://stackoverflow.com/questions/1303921/passing-around-command-line-args-in-powershell-from-function-to-function
'source' 카테고리의 다른 글
ODBC 연결을 올바르게 만드는 방법MariaDB (0) | 2023.10.29 |
---|---|
파일을 문자열로 필요 (0) | 2023.10.29 |
네이티브 오브젝트를 확장하는 것이 나쁜 관행인 이유는 무엇입니까? (0) | 2023.10.24 |
MySQL 로컬 변수 (0) | 2023.10.24 |
설치 관리자가 파일을 인스턴스화할 수 없습니다...\KEY_XE.reg.파일이 존재하지 않는 것 같습니다. (0) | 2023.10.24 |