2

呼び出しコマンドの関数内で関数を呼び出したいと思っています。私はこれを適切に行っていないようです。「get-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_usersCOMP1で実行すると機能しますが、サブコンプPSSessionのinvoke-commandで入力して使用すると、認識されません。

私は何を忘れていますか?

4

1 に答える 1

3

を呼び出すときはget-groups_users、パラメーター内に関数定義を含める必要があります。そうしないと、リモート セッションは関数を認識しません。-ScriptBlockInvoke-Commandget-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
于 2014-02-28T00:26:26.893 に答える