从C#运行PowerShell脚本时,Get-ChildItem无法正常工作

时间:2016-09-14 08:28:16

标签: c# powershell

我有一个PowerShell脚本,它使用Get-ChildItem cmdlet从远程文件夹中获取文件列表(该命令需要很长时间,因为它是一个大文件夹)。 当我在服务器上运行脚本时,一切正常 脚本:

$serverip = someremoteip
$mainbackuplocation= someremotelocation
$folder = someremotefolder

$remotefolder = Get-ChildItem "\\$serverip\\d$\\$mainbackuplocation\\$folder\\wwwroot" |
                Out-File d:\log.txt

但是如果我试图通过C#运行脚本,那么该文件根本没有输出。

SecureString securepassword = String2SecureString(password);
PSCredential credential = new PSCredential(userName, securepassword);
WSManConnectionInfo connectionInfo = new WSManConnectionInfo(target,shell,credential);
Runspace remote = RunspaceFactory.CreateRunspace(connectionInfo);
remote.Open();
PowerShell PowerShellInstance = PowerShell.Create();
PowerShellInstance.Runspace = remote;
PowerShellInstance.AddScript("D:\\backup\\test.ps1");
var result = PowerShellInstance.Invoke();

我可以看到日志文件是在服务器上创建的,因此PowerShell脚本正在运行,但dir命令什么都不做。

想知道我做错了什么。

1 个答案:

答案 0 :(得分:0)

如果您正在使用上面写的代码 - 那么就有一个小包。 Get-ChildItem之后没有空间 - 由于这个错误 - 没有创建log.txt文件。

尝试:

$remotefolder = Get-ChildItem "\\$serverip\\d$\\$mainbackuplocation\\$folder\\wwwroot" | Out-File d:\log.txt