下面的代码段将跳转到正确的函数“ ORD_LOG_PROCESS”,将CD传送到路径,但此后将不存储变量。 $ ordfiles及其之后的每个变量都不会存储。 $ ordlogpath目录中有一个文件,如果我在shell上执行了此命令(gci $ ordlogpath |%{$ _。name}),它可以工作,但是由于某种原因,它不会通过脚本保存。
$ordlogpath = "C:\test_environment\ORD_REPO\ORD_LOGS\"
$ordlogexist = gci "C:\test_environment\ORD_REPO\ORD_LOGS\*.log"
FUNCTION ORD_LOG_PROCESS
{
cd $ordlogpath
$ordfiles = (gci $ordlogpath |% {$_.name})
FOREACH ($ordfile in $ordfiles)
{
$ordlogimport = Import-Csv $ordfile
$ordloggrep = $ordfile
exit
}
}
FUNCTION NO_FILES
{
write-host "NO FILES TO PROCESS"
EXIT
}
IF (!$ordlogexist)
{
NO_FILES
}
else
{
ORD_LOG_PROCESS
}
答案 0 :(得分:1)
如果在函数内部声明变量,则它们将在该函数本地。这意味着变量不在函数外部。
但是,..为什么要使用这样的功能呢?
您不能简单地执行以下操作吗?
$ordlogpath = "C:\test_environment\ORD_REPO\ORD_LOGS\*.log"
if (!(Test-Path -Path $ordlogpath)) {
Write-Host "NO FILES TO PROCESS"
}
else {
Get-ChildItem -Path $ordlogpath -File | ForEach-Object {
$ordlogimport = Import-Csv $_.FullName
# now do something with the $ordlogimport object,
# otherwise you are simply overwriting it with the next file that gets imported..
# perhaps store it in an array?
# it is totally unclear to me what you intend to do with this variable..
$ordloggrep = $_.Name
}
Write-Host "The log name is: $ordloggrep"
Write-Host
Write-Host 'The imported variable ordlogimport contains:'
Write-Host
$ordlogimport | Format-Table -AutoSize
}