Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 使用invoke命令Powershell调用函数中的函数_Function_Powershell_Invoke Command - Fatal编程技术网

Function 使用invoke命令Powershell调用函数中的函数

Function 使用invoke命令Powershell调用函数中的函数,function,powershell,invoke-command,Function,Powershell,Invoke Command,我希望在invoke命令中调用函数中的函数。看来我做得不对。我得到“get-group_用户”是无法识别的错误。所有内容都在一个ps1脚本中 截断的脚本: function get-session { $session = New-PSSession -ComputerName $ip -Credential $cred -Auth CredSSP $ComputerName = $cred.Replace('\Admin',"") $csv = "C:\Scripts\Serverlists\

我希望在invoke命令中调用函数中的函数。看来我做得不对。我得到“get-group_用户”是无法识别的错误。所有内容都在一个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\u users
函数。如果有人认为这有助于解释一切,我可以把它贴出来。这是一个长的。另外,我省略了
$xmlwriter
定义

get-groups\u users
在COMP1上运行时工作,但一旦我输入
PSSession
并尝试在子comp的invoke命令中使用它,它就无法识别它


我忘记了什么?

调用
Invoke命令时,必须在
-ScriptBlock
参数中包含
get-groups\u用户
函数定义。如果不知道,则远程会话不知道
get-groups\u 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

那么,我是否必须将get-groups\u users函数放在内部,而它也必须放在外部?(用于与会话功能分开运行)您还必须将其留在外部,否则本地会话将不知道它。