我正在开发一个带有函数和工作流的Powershell脚本。不幸的是,我无法访问函数内部的变量。这是一个例子:
$location = "c:\temp"
function PingComputer
{
Param($ip)
$res = Test-Connection -ComputerName $ip -quiet -Count 1
If ($res -eq "true")
{
Try
{
#Some tasks if pings are ok
#For example : copy-item -path $location -destination $dest -force -recurse
}
Catch
{
#Catch exceptions
}
}
Else
{
#Ping fail
}
}
workflow parallelPingCOmputer {
Param($ips)
$i=0
foreach -parallel($ip in $ips)
{
PingComputer($ip)
$workflow:i++
$count = $ips.Count
InlineScript {
#write-host "$using:i : " $using:ips.count " : $using:ips "
Write-Progress -Activity "Poste : $using:ip" -Status "Postes effectués : $using:i sur $using:count" -PercentComplete (($using:i / $using:Count) * 100)
sleep -s 1
}
}
}
$request = parallelPingComputer -ips $ip_list | Select-object date, computer, result | out-gridview
这是我当前脚本的简化版本。但是,正如您所看到的,在我的函数PingComputer中无法访问变量$ location。我试图将其范围修改为全局或脚本,但没有任何作用。
我从copy-item获得的消息是“path is null”...如何使我的变量可访问?
答案 0 :(得分:0)
如果要重复使用该功能,只需复制工作流程中的功能并将其保留在外部。否则,复制工作流程中的功能并删除外部的功能,如下面的代码。它可以在不使用工作流程内的功能的情况下解决您的问题。
α = Number