2

我希望在调用命令中调用函数内的函数。看来我没有正确执行此操作。我收到“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并尝试在调用命令中为子组合使用它,它就无法识别它。

我忘记了什么?

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 回答