사용자 지정 PowerShell cmdlet을 만들었으며 이에 대한 테스트 스크립트를 작성 중입니다.
cmdlet 목록을 가져 와서 문자열이 아닌 유형의 개체를 전달해야합니다. Invoke-Expression을 사용해 보았지만 매개 변수 값에 문자열 이름을 사용하는 경우 오류가 발생합니다.
$cmd = @()
$cmd += Get-Cmdlet1
$cmd += Get-Cmdlet2
$cmd += Get-Cmdlet3
foreach($c in $cmd)
{
$ret1 = $c + " -connection "
$ret = Invoke-Expression "$ret1 $($conn)"
$ret >> C:\Output.txt
}
$ conn은 사용자 지정 SSH 연결 개체입니다 (PowerShell 개체 유형이 아님). 오류가 발생합니다
Invalid input: System.String is not supported
Parameter name: Connection
동적으로 추가 된 이름 및 개체 매개 변수를 사용하여 이러한 명령을 호출하려면 어떻게해야합니까?
다음과 같이 시도하십시오.
$cmd = @()
$cmd += Get-Command Get-Cmdlet1
$cmd += Get-Command Get-Cmdlet2
$cmd += Get-Command Get-Cmdlet3
foreach($c in $cmd)
{
&$c -connection $conn >> C:\output.txt
}
당신이 넣으면 $conn
이중 인용 된 문자열에, PowerShell은 문자열로 해당 개체를 변환합니다. 또한,이 $cmd = Get-Cmdlet1
실행한다 Get-Cmdlet1
. foreach 루프 내에서 cmdlet을 실행하려는 것처럼 의도 한 것인지 확실하지 않습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다