C#服务不´;t打开脚本

C#服务不´;t打开脚本,c#,powershell,C#,Powershell,(对不起,英语不好,我是德国人) 我正在为一个更大的项目编写一个服务,它的任务是检查文件夹中的文件,然后调用Powershell脚本并给它文件名。这部分有点不干净,因为我使用Powershellinstance打开Powershell脚本。服务本身正在工作,我用不同的代码对其进行了测试,调用脚本的代码在正常程序执行时也能工作,但当我让服务调用脚本时,他似乎跳过了这一部分。脚本的执行策略不是问题所在。我发布了应该打开脚本的代码部分。有什么想法吗 static void Do() {

(对不起,英语不好,我是德国人) 我正在为一个更大的项目编写一个服务,它的任务是检查文件夹中的文件,然后调用Powershell脚本并给它文件名。这部分有点不干净,因为我使用Powershellinstance打开Powershell脚本。服务本身正在工作,我用不同的代码对其进行了测试,调用脚本的代码在正常程序执行时也能工作,但当我让服务调用脚本时,他似乎跳过了这一部分。脚本的执行策略不是问题所在。我发布了应该打开脚本的代码部分。有什么想法吗

static void Do()
        {
            Thread.Sleep(5000);
            DirectoryInfo dir = new DirectoryInfo(@"C:\RecosDienstTest");               // Anpassen (json)

            try
            {
                foreach (var datei in dir.EnumerateFiles())
                {
                    using (PowerShell PowerShellInstance = PowerShell.Create())
                    {
                        PowerShellInstance.AddScript("C:\\Users\\ZO066\\Desktop\\test.ps1 " + datei.FullName); // Anpassen (PS-Script)
                        PowerShellInstance.Invoke();
                        if (PowerShellInstance.Streams.Error.Count > 0) { break; }
                    }
                    File.Move(datei.FullName, @"C:\RecosDienstTest2\" + datei.Name);    // Anpassen
                }
            } catch {}
            Do(); 
        }

孩子们,我终于明白了!我现在觉得自己很愚蠢。。。在修复这个问题的过程中,我经常修改代码,使用不同的方法打开脚本,甚至破坏了我的VisualStudio,不得不重新安装它。在某个时候,我决定打开txt文件而不是PS脚本,但遇到了完全相同的问题:没有发生任何事情,也没有任何错误。原因是,当一个服务打开某个东西时,它只是在后台运行,不管它是什么(我打开了几百个Notepadinstances)。奇怪的是,我没有想到这一点的原因是:这发生在整个链条上。该服务打开了一个打开txt文件的脚本,但由于该脚本是由该服务启动的,因此也会在后台打开txt文件。我不知道这是为什么,但我很高兴我至少找到了fck什么都没发生的原因。

文件在你的用户文件夹中,服务没有使用你的凭据运行,因此无法获取文件。也许可以检查抛出的异常,而不是用你的空
catch{}悄悄吞下它们
block?路径不是问题所在,现在我只是在我的计算机上测试它,看看structur是否工作,try-and-catch是否存在,以防有两个同名文件,因为这样服务就会停止。移动文件的行始终被执行,因此不会出现导致服务跳转到catch的错误。“路径不是问题”-您不知道-如果powershell脚本由于在操作文件时遇到错误而退出,则
break
语句将隐藏itAs@Mathias noted,由于
break
catch{}
的原因,您不允许任何异常浮出水面。由于它只是在您自己的机器上,请尝试删除它们,看看是否可以抛出任何错误。您也可以尝试在调试器中运行。