.net Try-Catch语句正在破坏我的代码

.net Try-Catch语句正在破坏我的代码,.net,powershell,try-catch,.net,Powershell,Try Catch,这是一小段Powershell脚本,要递归获取所有文件夹/子文件夹和文件,我不能使用get ChildItem,因为它在UNC网络路径上太慢,所以我的想法是使用[Microsoft.VisualBasic.FileIO.FileSystem]::使用PSSession远程执行GetFiles,它可以工作 使用PsSession远程执行此代码后,我的try/catch语句工作正常,我可以将结果放入$GetRemoteFolderCheck变量中 $path_folder = "C:\sources

这是一小段Powershell脚本,要递归获取所有文件夹/子文件夹和文件,我不能使用
get ChildItem
,因为它在UNC网络路径上太慢,所以我的想法是使用
[Microsoft.VisualBasic.FileIO.FileSystem]::使用PSSession远程执行GetFiles
,它可以工作

使用PsSession远程执行此代码后,我的try/catch语句工作正常,我可以将结果放入
$GetRemoteFolderCheck
变量中

$path_folder = "C:\sources\sql"

    $session = New-PSSession -ComputerName $ipsqlserver -Credential $credentials
        Invoke-Command -Session $session -ScriptBlock {
        [reflection.assembly]::loadwithpartialname("Microsoft.VisualBasic") | Out-Null
        }

        $GetRemoteFolderCheck = Invoke-Command -Session $session -ScriptBlock {
           try
           {
            [Microsoft.VisualBasic.FileIO.FileSystem]::GetFiles(
            $using:path_folder,
            [Microsoft.VisualBasic.FileIO.SearchOption]::SearchAllSubDirectories)
           }
           catch
           {
               return $_
           }
        }
但是当我在本地执行相同的代码时,如果不使用PSSession,它就不工作了,它正在破坏我的代码。。。因为
写入主机
不显示在我的shell中

$path_folder = "C:\sources\sql"

$GetLocalFolderCheck =  try{[Microsoft.VisualBasic.FileIO.FileSystem]::GetFiles(
        $path_folder,
        [Microsoft.VisualBasic.FileIO.SearchOption]::SearchAllSubDirectories) }
        catch
        {
           return $_
        }

    Write-Host "toto"
我不明白为什么它不能按预期工作,我的
$GetlocalFolderCheck
应该包含异常,并且不会破坏我的代码


感谢您的帮助

,因为您使用的是
return
语句,这是预期的行为<代码>写入主机“toto”实际上是不可访问的,因为无论调用成功还是抛出错误,都返回一个值。如果是C代码,则会出现编译警告
检测到无法访问的代码

通过将挡块更改为:

...
catch
       {
           $_
       }
...

这样,如果出现错误,它将作为对象向上传递到管道中,执行将继续。

非常感谢。初学者错误:)