세션을 생성 한 후 다음을 호출합니다.
Invoke-Command -Session $s -ScriptBlock $Function:ReaddRoutes -ArgumentList $Global:_DeviceNumberInfoIP.ServiceNetGW
위는 원격 서버에서 다음 기능을 실행합니다.
function ReaddRoutes {
if ($Global:datacentre -like '(PINK3)') {
route delete 10.252.0.0
route delete 10.191.192.0
route add -p 10.252.0.0 mask 255.255.255.0 $args[0]
route add -p 10.191.192.0 mask 255.255.192.0 $args[0]
}
}
이제 문제는 if
명령문을 제거 하면 함수가 실행된다는 것입니다. 하지만 그에 따라 경로를 비교하고 추가 할 데이터 센터가 꽤 많습니다. 나는 -like
연산자 의 많은 변형을 시도했다 .
변수 $global:datacentre
에는 'Panther (Pink3)'와 유사한 것이 포함됩니다.
invoke-command에서 이것을 호출하고 다르게 작동하기 때문일 수 있습니까?
나는 그것을 알아!
이 함수는 원격 서버에서 호출되기 때문에 데이터 센터 변수를 구문 분석해야했습니다.
잠을 잘 자고 다시 시도한 후에는 이해가됩니다. 따라서 원격 서버에서 실행되는 모든 함수는 -argument 목록에 있어야합니다.
Invoke-Command -Session $s -ScriptBlock $Function:ReaddRoutes -ArgumentList $Global:_DeviceNumberInfoIP.ServiceNetGW,$Global:datacentre
그리고 기능 :
if ($args[1] -like '*(LON3)'){
route delete 10.252.0.0
route delete 10.191.192.0
#Arg[0] is the Servicenet GW
Route add -p 10.252.0.0 mask 255.255.255.0 $args[0]
Route add -p 10.191.192.0 mask 255.255.192.0 $args[0]
}
이것이 다른 사람에게 도움이되기를 바랍니다!
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다