.net Try-Catch语句正在破坏我的代码
这是一小段Powershell脚本,要递归获取所有文件夹/子文件夹和文件,我不能使用.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
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
{
$_
}
...
这样,如果出现错误,它将作为对象向上传递到管道中,执行将继续。非常感谢。初学者错误:)