Invoke-Command PowerShell과 함수 내에서 함수 호출
-
24-12-2019 - |
문제
Invoke-Command의 함수 내에서 함수를 호출하기를 희망합니다.나는 이것을 제대로하지 않는 것처럼 보입니다."get-group_users"가 인식되지 않습니다.모든 것이 하나의 PS1 스크립트에 있습니다.
잘린 스크립트 :
function get-session {
$session = New-PSSession -ComputerName $ip -Credential $cred -Auth CredSSP
$ComputerName = $cred.Replace('\Admin',"")
$csv = "C:\Scripts\Serverlists\" + $ComputerName + ".txt"
$subcomps = import-csv $csv | foreach-object {$_.Name}
foreach ($ComputerName in $subcomps)
{
$ComputerName
$xmlWriter.WriteStartElement("Computer",$ComputerName)
Invoke-Command -Session $session -ScriptBlock { (get-groups_users -ComputerName $ComputerName) } -ArgumentList $ComputerName
$xmlWriter.WriteEndElement()
}
Remove-PSSession -ComputerName $ip
}
$ip = '172.16.24.11'
$ComputerName = "COMP1"
$user = '\Admin'
$cred = $ComputerName + $user
(get-groups_users -ComputerName $ComputerName)
(get-session -Credential $cred -ComputerName $ip)
.
그래서, get-groups_users
기능을 남겨두고 있습니다.누군가가 모든 것을 설명하는 데 도움이 될 것이라고 생각하면 게시 할 수 있습니다.그것은 긴 것입니다.또한 $xmlwriter
정의를 벗어나고 있습니다.
get-groups_users
가 Comp1에서 실행될 때 작동하지만 PSSession
를 입력하고 하위 경기에 대한 invoke-command에서 invoke-moded에서 사용해보십시오.
뭔가 잊어 버리고 있습니까?
해결책
get-groups_users
를 호출 할 때 -ScriptBlock
매개 변수에 Invoke-Command
함수 정의를 포함시켜야합니다.그렇지 않은 경우 원격 세션에는 get-groups_users
함수에 대한 지식이 없습니다.
여기를 고치는 방법은 다음과 같습니다.
$ScriptBlock = {
function get-groups_users {
############ Put your function's code here ############
}
(get-groups_users -ComputerName $ComputerName)
};
Invoke-Command -Session $session -ScriptBlock $ScriptBlock -ArgumentList $ComputerName
. 제휴하지 않습니다 StackOverflow