C#PowerShell在桌面上创建空白文本文件
我正在尝试使用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
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([环境+特殊文件夹]::桌面)