Ich versuche also, das Erstellungsdatum einer Textdatei in C# zu ändern. Der Benutzer gibt das Erstellungsdatum der Datei ein und ändert dann das Erstellungsdatum der Textdatei in das, was der Benutzer eingegeben hat. Das Problem ist, dass es aus irgendeinem Grund immer wieder ein ' hinzufügt, was zu einer Fehlermeldung führt. Es fordert Powershell auf, dies zu erreichen:
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();
}
}
}
Das Problem ist, dass nach dem "'}"); automatisch ein weiteres ' hinzugefügt wird, wodurch der Powershell-Befehl zum Ändern des Datums falsch ist. Gibt es eine Möglichkeit zu verhindern, dass das ' am Ende hinzugefügt wird?
Der zurückgegebene Fehler ist:
System.Management.Automation.CommandNotFoundException HResult=0x80131501 Message=Der Begriff 'Get - ChildItem C:\encryptedmessagehere.txt | % {$_.CreationTime = '06/12/12 09:27:03 AM'} ' wird nicht als Name eines Cmdlets, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens oder überprüfen Sie, ob der Pfad korrekt ist, und versuchen Sie es erneut, falls ein Pfad enthalten war.
Danke.
Lösung des Problems
Zuerst müssen Sie Powershell.AddScript
Methode anstelle von Powershell.AddCommand
Methode verwenden.
Zweitens können Sie den folgenden Powershell
Code ausprobieren, um die Erstellungszeit der Datei zu ändern.
(Get-ChildItem d:\Test\new.txt).CreationTime = '2020/09/23'
Schließlich können Sie das folgende c#-Codebeispiel ausprobieren, um Powershell-Code in c# aufzurufen.
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");
}
Keine Kommentare:
Kommentar veröffentlichen