C# 如何在c中运行powershell命令#
因此,我试图更改C#中文本文件的创建日期。用户将输入文件的创建日期,然后将文本文件创建日期更改为用户输入的日期。问题是,它不断添加“由于某种原因导致错误消息,它正在调用Powershell来完成此操作:C# 如何在c中运行powershell命令#,c#,string,visual-studio,powershell,C#,String,Visual Studio,Powershell,因此,我试图更改C#中文本文件的创建日期。用户将输入文件的创建日期,然后将文本文件创建日期更改为用户输入的日期。问题是,它不断添加“由于某种原因导致错误消息,它正在调用Powershell来完成此操作: public partial class Form6 : Form { public Form6() { InitializeComponent(); } private void text
public partial class Form6 : Form
{
public Form6()
{
InitializeComponent();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
string dir = textBox1.Text;
PowerShell ps = PowerShell.Create();
ps.AddCommand("Get-ChildItem c:\\encryptedmessagehere.txt | % {$_.CreationTime = '"+ dir + "'}");
ps.Invoke();
}
}
}
问题是,在“}”)之后;,它会自动添加另一个',不更正powershell命令以更改日期。有没有办法阻止它在结尾加上'
返回的错误为:
System.Management.Automation.CommandNotFoundException
HResult=0x8013151
Message=术语“Get-ChildItem C:\encryptedmessagehere.txt |%{$\u0.CreationTime='06/12/12 09:27:03 AM'}”未被识别为cmdlet、函数、脚本文件或可操作程序的名称。请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试
谢谢。首先,您需要使用
PowerShell.AddScript
方法,而不是PowerShell.AddCommand
方法
其次,您可以尝试以下Powershell
代码来更改文件的创建时间
(Get-ChildItem d:\Test\new.txt).CreationTime = '2020/09/23'
最后,您可以尝试下面的c代码示例在c中调用powershell代码
Get-ChildItem
“有没有办法阻止它在末尾添加“at-end?”据我所知,这只是错误消息中的一个分隔符。不是实际命令字符串的一部分。谢谢,我刚刚试过。问题仍然存在,在结尾添加了“谢谢。真的有必要为此使用PowerShell吗?”?是否有什么东西阻止了您使用FileInfo
对象并使用它来更新日期?如果在这个解决方案中,您使用PowerShell的唯一目的就是使用datetime格式,那么您将事情弄得太复杂了。@Keiferly,我很高兴听到您的问题已经解决,您可以单击'✔' 把我的回答记为回答。
private void button1_Click(object sender, EventArgs e)
{
string datetime= textBox1.Text;
PowerShell ps = PowerShell.Create();
string script = string.Format("(Get-ChildItem d:\\New.txt).CreationTime = '{0}'", datetime);
ps.AddScript(script);
ps.Invoke();
MessageBox.Show("Test");
}