invoke-command powerShellを使用して関数内の関数を呼び出す
-
24-12-2019 - |
質問
invoke-commandの関数内で関数を呼び出すことを望んでいます。私は正しくこれをしていないようです。「GROUP-GROUP_USERS」が認識されないエラーを取得します。すべてが1つの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
を入力して、サブCOMPのinvoke-commandでそれを使用してそれを認識しません。
私は何を忘れていますか?
解決
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