Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#PowerShell在桌面上创建空白文本文件_C#_Powershell - Fatal编程技术网

C#PowerShell在桌面上创建空白文本文件

C#PowerShell在桌面上创建空白文本文件,c#,powershell,C#,Powershell,我正在尝试使用C#中的PowerShell在桌面上创建新文件。在终端中,您将执行以下操作: cd desktop $null >> newfile.txt 所以我试着用C语言来模仿前面的语句: using (PowerShell PowerShellInstance = PowerShell.Create()) { PowerShellInstance.AddScript("cd desktop; $null >> newfile.txt"); PowerSh

我正在尝试使用C#中的PowerShell在桌面上创建新文件。在终端中,您将执行以下操作:

cd desktop
$null >> newfile.txt
所以我试着用C语言来模仿前面的语句:

using (PowerShell PowerShellInstance = PowerShell.Create())
{
  PowerShellInstance.AddScript("cd desktop; $null >> newfile.txt");

  PowerShellInstance.Invoke();
}
此操作运行时没有任何异常,但文件不是在桌面上创建的。有人能指出我用
AddScript
做了什么错事吗

编辑

问题似乎来自于使用cd,然后按顺序创建

我可以通过做一些事情来让它工作

PowerShellInstance.AddScript("$null >> C:\\users\\me\\Desktop\\newfile.txt");

如果有人知道如何执行cd命令,然后执行另一个命令,请告诉我。

在我看来,命令
cd desktop
本身不起作用。如果打开powershell控制台,那么它打开时的默认路径是
C:\Users\user\u name\
,很可能是从C中打开的,它不是以该路径打开的,而是以当前项目的调试文件夹即工作目录打开的;[如@Nived所评论]

您当前的代码没有问题。只需将脚本语句更改为下面的,它就可以正常工作

cd C:\Users\user_name\desktop; $null >> newfile.txt
因此,您的C#代码应该是

using (PowerShell PowerShellInstance = PowerShell.Create())
 {
  PowerShellInstance.AddScript(@"cd C:\Users\user_name\desktop; $null >> newfile.txt");

 PowerShellInstance.Invoke();
}

您也可以使用环境变量来查找桌面

using (PowerShell PowerShellInstance = PowerShell.Create())
{
   PowerShellInstance.AddScript(@"cd (Join-Path (Join-Path $env:HOMEDRIVE $env:HOMEPATH) desktop); $null >> newfile.txt");

   PowerShellInstance.Invoke();
}

只是想澄清一下:您特别想使用PowerShell来实现这一点?你不想要一个C文件解决方案吗?是的,我基本上是在测试如何从C在PowerShell中执行操作,因为我稍后将使用它来运行git命令。@Nived抱歉,但我永远不会在控制台中(重定向
$null
)创建新文件
newitem$HOME\Desktop\newfile.txt
@MathiasR.Jessen这主要是一个测试,了解如何从C#在PowerShell中运行命令。这个想法只是为了弄清楚如何转到一个特定的目录并执行一个命令,重定向只是一个示例命令,它会转到您当前项目的调试文件夹,您将从该文件夹开始执行。因此,您必须指定完整路径或使用
~
来执行此操作。@Nived,很高兴知道。如果愿意,您可以编辑我的答案并包含这段信息。在.NET中,您还可以使用
Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)
等工具获取“桌面”项所在文件夹的完整路径。@Jeppe或在Powershell中,即
[Environment]::GetFolderPath([环境+特殊文件夹]::桌面)